Musewoods · GroveGrove Presentation Laboratory

Grove Presentation Laboratory

A small, bounded site is still a first-class publishing primitive.

  • 17 registered motifs
  • 1 renderer registry
  • 0 parallel frameworks
An abstract woodland canopy of overlapping arcs above a single seed

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

Six boxes connected by arrows: Filesystem, Manifest, Parser, Normalize, Validate, Render

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.

Authority Exposure, As Evidence

Where automated authority concentrates
Exposure score by control surface, from the 2025 governance review.Bar chart of exposure score by control surface; model decision authority is highest at 26.1 and rollback capability lowest at 7.1.0510152025Data provenanceModel decision authorityAutomated commit scopeHuman review coverageRollback capabilityAudit trail completenessEscalation latency18.426.122.79.37.112.815.6Fit: FITPlot: 515 × 384 (70% of frame)Labels: 14 rendered · 0 moved · 0 clipped · 0 unresolvedAxes: x 6 · y 0

Exposure score by control surface, from the 2025 governance review.

Source Studio analysis

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

  1. 01 Discover

    The filesystem walk finds one directory per Grove and one Markdown file per page, without recursing into images/ or artifacts/.

  2. 02 Load the Manifest

    manifest.yaml is parsed and validated: name, kind: grove, and a navigation list are required; every navigation entry must reference a page that actually exists.

  3. 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.

  4. 04 Normalize

    Sections and items are converted into the typed GroveSection/GroveItem model this laboratory is built from — Doors, Signals, and fields all become predictable shapes rather than raw strings.

  5. 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.

  6. 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

  1. Markdown Source

    A page begins as an author's .md file: one H1, a handful of ## sections, each declaring a motif.

  2. Parsed Tree

    The Storyboard parser turns headings, fields, and body content into an ordered, addressable tree.

  3. Validated Model

    Normalization and validation turn that tree into a GrovePage, with every motif checked against its structural contract.

  4. 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 collection motif 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

MotifRequiresTypical use
ThresholdOptional dominant imageOpening identity and proposition
StatementCohesive proseOne idea given spatial authority
ArtifactAn image, SVG, or diagramLetting an object dominate a section
ChartA chart type, Alt, and dataOne data relationship as shared analytical evidence
EvidenceOne or more claim/proof itemsClaim paired with concrete evidence
SequenceTwo or more ordered itemsAn ordered conceptual progression
PassageTwo or more state itemsMovement through states or stages
FieldTwo or more domain itemsA landscape of related domains
ConstellationThree or more concept itemsRelationships among concepts
LedgerA table or register itemsDense editorial structured information
OutcomesOne or more landmark itemsA small number of high-value quantities
VoicesOne or more voice itemsPeople and perspectives
OriginProse, no itemsLong-form origin or history
PrinciplesOne or more commitment itemsNamed enduring commitments
PortalDoors or linksDeliberate paths onward
GrowOne or more edge itemsThe living, growing edge
CollectionA valid content TypeExisting 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

  1. 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.

  2. 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.

  3. Motifs affect presentation, not information hierarchy

    The same heading structure — H1, ## sections, ### items — is valid regardless of which motif a section declares.

  4. 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.

  5. 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

Six boxes connected by arrows: Filesystem, Manifest, Parser, Normalize, Validate, Render.

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.

Read the field notes

An Outcome, As a Feature Band

A minimal canopy mark rendered as a laboratory placeholder figure.

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.

AlexOperations, Hyphen

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

First field observation, a placeholder study on warm paper.

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.

© Musewoods Press01 / 05

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

Continue From Here