Grove Presentation Laboratory
A small, bounded site is still a first-class publishing primitive.
- 17 registered motifs
- 1 renderer registry
- 0 parallel frameworks
This laboratory exists for the same reason the Viewgraphs and Storyboard laboratories exist: to prove, in one place, that every registered visual treatment renders from ordinary Markdown at realistic density — long labels, several items, embedded tables, local assets, and transitions from one motif into the next.
Where This Came From
Musewoods already had three ways to publish: Stories that tell, Journals that examine, and Viewgraphs that reveal. None of them were the right shape for a small idea that needed its own identity, its own navigation, and room to keep changing — a venture thesis, a research field, or a piece of standing infrastructure that deserved more than one article but far less than a general-purpose website.
A Grove fills that gap without inventing a second content framework. It reuses the same Markdown parser that already turns headings into an ordered tree, the same **Key:** value field convention that Viewgraphs and Stories authors already know, and the same discipline of registering a fixed vocabulary of motifs rather than accepting arbitrary layout. What changes is the unit of publication: instead of one document, a Grove owns a namespace, a manifest, and a small set of pages that share one shell.
The name follows the metaphor the rest of Musewoods already uses. Stories tell, Journals examine, Viewgraphs reveal, and Groves grow — a Grove is deliberately small at first, with an explicit growing edge, rather than a finished institution wearing a website.
What This Proves
Seventeen motifs, one registry, and zero bespoke React components per Grove.
Every section on this page is ordinary Markdown. A **Render:** field names a registered motif; an unregistered name fails the build with a source-anchored error instead of falling back to a generic layout. Nothing about the visual result required touching a template for this specific Grove — only the motif components already shipped with the platform.
The Foundry Diagram
The processing pipeline never lets a React component touch the filesystem or a loader touch JSX. Discovery reads directories; the manifest loader reads manifest.yaml; the Markdown parser turns one page into an ordered tree; normalization and validation turn that tree into a typed model; only then does a motif component receive data it can render without reinterpreting a single line of Markdown.
Why a Registry, Not a Parallel Framework
One array, seventeen names
lib/groves/motifs.mjs exports a single frozen list of registered motif names. Adding an eighteenth motif means adding one name to that list and one component to the registry map — never a new conditional buried in a page template.
Unknown motifs fail loudly
Typing **Render:** feature-cards on a Grove section does not silently fall back to a default layout. It raises a GroveError naming the unknown motif, the source file, and the line, the same way an unregistered Viewgraph render name does today.
Reused, not duplicated, parsing
Every Grove page is parsed with the same Storyboard parser that already powers Stories and Viewgraphs: one required H1, ## sections, ### items, and **Key:** value fields. Groves did not need a second Markdown grammar.
How a Page Becomes a Site
01 Discover
The filesystem walk finds one directory per Grove and one Markdown file per page, without recursing into
images/orartifacts/.02 Load the Manifest
manifest.yamlis parsed and validated:name,kind: grove, and anavigationlist are required; every navigation entry must reference a page that actually exists.03 Parse
Each page's Markdown becomes an ordered tree of sections and items, exactly one H1 deep, with fields, prose, lists, quotes, tables, and images already classified.
04 Normalize
Sections and items are converted into the typed
GroveSection/GroveItemmodel this laboratory is built from — Doors, Signals, and fields all become predictable shapes rather than raw strings.05 Validate
Unknown motifs, malformed motif-specific structures, missing navigation targets, and unsafe or missing local assets all fail the build with a source-anchored message.
06 Render
A motif component consumes the normalized model and nothing else. It never inspects raw Markdown and never reaches into the filesystem.
From Markdown Source to Rendered Shell
Markdown Source
A page begins as an author's
.mdfile: one H1, a handful of##sections, each declaring a motif.Parsed Tree
The Storyboard parser turns headings, fields, and body content into an ordered, addressable tree.
Validated Model
Normalization and validation turn that tree into a
GrovePage, with every motif checked against its structural contract.Rendered Shell
The Grove shell wraps the page in shared identity, navigation, and footer, and the page becomes HTML.
The Motif Landscape
Openers
Threshold and Statement give a page — or a section mid-page — spatial authority: an oversized proposition, a dominant image, and generous negative space instead of a hero-and-button cluster.
Evidence & Structure
Artifact, Evidence, Ledger, and Outcomes carry the argument: a dominant object, a claim paired with proof, dense editorial tables, and a small number of large numbers.
Progression
Sequence and Passage both move a reader through an order — one conceptual, one about state — and both collapse from a horizontal flow into a vertical one on narrow screens.
Relationship
Field and Constellation describe a landscape and the relationships inside it: an asymmetric arrangement of domains, and a deterministic diagram of concepts with an always-available linear reading order.
Voice & Commitment
Voices, Origin, and Principles carry the human and institutional register: quoted perspectives, cohesive long-form prose that refuses to fragment into cards, and enduring commitments numbered visually rather than by hand.
Growth & Navigation
Grow, Portal, and Collection keep a Grove connected to the rest of Musewoods and to its own unfinished edges: an editorial growing-edge log, deliberate doors elsewhere, and content surfaced — never copied — from Journal, Stories, and Viewgraphs.
How the Motifs Relate
manifest
The manifest supplies the navigation the shell renders and the pages the parser is asked to load.
Relates to parser, shell
parser
The parser turns one page's Markdown into the tree normalization reads; it never asks which motif a section will use.
Relates to manifest, motif-registry
motif-registry
The registry is the only place that maps a
**Render:**name to a component; validation and rendering both read it, and neither hardcodes a motif name elsewhere.Relates to parser, shell
collections
Collections resolve Journal, Story, Viewgraphs, and Grove content into one normalized shape the
collectionmotif renders without touching any other loader.Relates to motif-registry, shell
shell
The shell owns identity, navigation, ground, and footer for every page in a Grove; no individual motif is allowed to replace it.
Relates to manifest, collections
validation
Validation runs after normalization and before rendering, checking every motif's structural contract and every navigation target before a page is allowed to render.
Relates to parser, motif-registry
Every Registered Motif, At a Glance
| Motif | Requires | Typical use |
|---|---|---|
| Threshold | Optional dominant image | Opening identity and proposition |
| Statement | Cohesive prose | One idea given spatial authority |
| Artifact | An image, SVG, or diagram | Letting an object dominate a section |
| Chart | A chart type, Alt, and data | One data relationship as shared analytical evidence |
| Evidence | One or more claim/proof items | Claim paired with concrete evidence |
| Sequence | Two or more ordered items | An ordered conceptual progression |
| Passage | Two or more state items | Movement through states or stages |
| Field | Two or more domain items | A landscape of related domains |
| Constellation | Three or more concept items | Relationships among concepts |
| Ledger | A table or register items | Dense editorial structured information |
| Outcomes | One or more landmark items | A small number of high-value quantities |
| Voices | One or more voice items | People and perspectives |
| Origin | Prose, no items | Long-form origin or history |
| Principles | One or more commitment items | Named enduring commitments |
| Portal | Doors or links | Deliberate paths onward |
| Grow | One or more edge items | The living, growing edge |
| Collection | A valid content Type | Existing Musewoods content, referenced |
By the Numbers
16
Registered motifs in the v1 vocabulary — the same seventeen demonstrated on this page.
1
Renderer registry per content type. Groves keep their own, distinct from Stories and Viewgraphs, because the same motif name can mean a different shape in each.
0
Copies of Journal, Story, or Viewgraphs prose. Every Collection on this site references existing content by URL.
What People Keep Asking
"The hardest part was resisting an eighteenth motif for something a Ledger with a table already did perfectly well."
A Grove author
Internal note · Musewoods Press
"It reads like a field notebook, not a landing page. That's the point — nobody should mistake a Grove for a SaaS marketing site."
An editor reviewing the first draft
Editorial review · Musewoods Press
What Must Stay True
The Markdown is the site
A Grove page's Markdown source is the canonical description of that page. Nothing about its content lives only inside a component.
Only registered motifs render
An author cannot invent an eighteenth motif by typing its name.
**Render:**either names something in the registry or the build fails.Motifs affect presentation, not information hierarchy
The same heading structure — H1,
##sections,###items — is valid regardless of which motif a section declares.Existing content is referenced, never copied
A Collection surfaces Journal, Story, Viewgraphs, or other Grove content by URL. It never duplicates that content's prose into this Grove.
Accessibility survives visual sophistication
A Constellation's diagram is decorative; the same relationships are always available as an ordinary list a screen reader can read in document order.
The Growing Edge
Nested page hierarchies
dormant
v1 keeps Grove routing shallow — one Grove, one level of pages. Whether a second level of pages earns its complexity is an open question rather than a planned feature.
A theme editor
dormant
ground.theme and ground.density are closed vocabularies today. A visual theme editor is an explicit non-goal for the foreseeable future — Groves stay inside Musewoods rather than becoming a general-purpose site builder.
Resonance instrumentation
seed
Nothing in this pipeline calls out to analytics. The extension point exists — a Grove already has one page-render call site — but no Resonance logic is wired into it yet.
Editorial Primitives in a Grove
feature-band, quote-panel, and reel are shared Musewoods editorial primitives. The same semantic contract renders in Stories, Journals, and Groves; only spacing, editorial width, and the restrained field accent change. The sections below run those three motifs inside Grove Ground — nothing here is a component demo, and none of it looks imported from Story or Journal.
An Update, As a Feature Band
What shipped this week
The shared motif layer now carries feature-band, quote-panel, and reel across all three publishing fields from one normalized model and one renderer.
An Outcome, As a Feature Band
The artifact, in the ground
A feature-band on Ground reads as an artifact or an outcome — image-led, subordinate to the surrounding argument, with a single editorial link onward.
A Founder Voice, Attributed
We were sending emails like it was the 1990s to twenty suppliers; doing that by hand across a thousand parts is inviting mistakes.
A Field Statement, Unattributed
A Grove does not become a venture merely because it can be observed growing; it becomes one when someone decides to tend it.
Field Observations, As an Image Reel
A bounded sequence of field observations. Manual navigation is always present; nothing moves on its own here.
First observation.
A Referenced Viewgraph, As a Reel
Reel reference
Where the pattern begins
A title frame, reused whole inside a Reel viewport.
Three canonical frames from an existing Viewgraph, embedded frame by frame. The Viewgraph stays the source of record; the Reel shows a bounded view of it, never a copy.
From the Journal
- Ana: When Retrieval Was No Longer EnoughA development Fieldnote tracing Ana from its GraphRAG-oriented beginnings through governed knowledge formation, memory, Knowledge Spaces, Domain Packs, Workbench, canonical reference integrity, and cross-canon contracts.
- Context Is Part of the RuntimeAn engineering Fieldnote on what Codex operating practices reveal about context entropy, working memory, tool exposure, handoffs, skills, and the emerging discipline of engineering the runtime around an intelligent agent.
- The Executive Becomes a Systems ComposerA Fieldnote prompted by Bob Morse's experiment with Claude Code, examining what happens when deep domain judgment can increasingly become executable and what that may mean for the RPM Machine.
- When Everyone Has the Same LeverI came across an article today about game theory that stayed with me for reasons quite different from its stated subject. It begins with Martin Shubik's dollar auction, where in...