Musewoods · GroveThe Musewoods Field Manual

Authoring Grammar

Musewoods authoring starts with ordinary Markdown structure and a small amount of explicit field grammar. A ## heading establishes a section, ### creates a nested block, and #### creates an item where the active motif expects one. Recognized **Key:** value fields are consumed by the motif or field model; unsupported render names and structurally impossible shapes fail validation rather than being silently ignored. Where the grammar permits inference, Musewoods may resolve a motif from authored shape so authors do not have to repeat presentation metadata that the structure already makes obvious.

The governing idea is semantic reuse. A motif names an editorial, analytical, or navigational responsibility — framing a proposition, carrying evidence, showing sequence, comparing alternatives, or opening controlled interaction — rather than the page that first happened to need that treatment. This keeps the vocabulary portable and makes renderer changes possible without rewriting content around page-specific CSS.

Vertical rhythm follows the same rule. Authors create paragraph boundaries with ordinary Markdown blank lines; they do not add empty paragraphs, <br>, or spacer content to control layout. The renderer and CSS own paragraph spacing, object spacing, and motif transitions, and those are different responsibilities rather than one universal gap.

This page is a decision guide and specimen map, not a substitute for the machine-generated vocabulary reference. The exhaustive Story contract remains docs/storyboard-vocabulary.md, generated from the registry by npm run docs:vocabulary. The grouped sections below explain why motif families exist, show representative live specimens, and keep the remaining reference forms close enough to the production examples that an author can move from intent to valid source without guessing.

The Motif Families

Structure & Framing

Shapes an argument can sit inside: a two-column callout, a framed exhibit, a panel, or subordinate context in the margin.

  • Bounded editorial structures

Narrative Openers & Voice

Patterns for beginning a movement, establishing tone, and lifting language out of running prose without fragmenting the narrative.

  • Openings, emphasis, and voice

Editorial Argument

Structured argumentative moves such as summary maps, proof surfaces, comparisons, sequences, and compact figures.

  • Claims, evidence, and comparison

Long-Form & Reference Collections

Patterns for essays, channels, references, rosters, timelines, ledgers, and other repeated material whose order and labeling matter.

  • Repeated reference structures

Navigation & Interaction

Patterns where a reader's selection changes the visible interpretation or provides a bounded next step without turning the page into an application.

  • Deliberate reader-controlled state

Shared Cross-Field Motifs

Editorial and analytical contracts implemented once and hosted by Stories, Journals, and Groves without forking their behavior.

  • Shared semantics, field-native voice

Structure & Framing — Live

Purpose

A two-column composition — prose in the wide column, a short nested block in the narrow one.

Authoring

### Two Voices
**Render:** callout
**Treatment:** editorial-callout
**Title:** A callout places an argument beside its terms.
A callout is a two-column composition.

#### Terms
**Render:** chips
Signal · Pattern · Evidence

Live Result

A callout places an argument beside its terms.

A callout is a two-column composition: prose in the wider column, a short nested block — most often chips — in the narrower one.

Signal · Pattern · Evidence

Contract & Implementation

`**Treatment:** takeaway` is only valid on `callout`; otherwise unconstrained.

  • lib/render/motifs.mjs
  • components/render/Motifs.tsx

Structure & Framing — Reference

The rest of this family

A section rendered inside another act, separated by a rule rather than a new full-bleed ground.

An editorial frame around one sourced analytical motif, referenced by `**Source:**` rather than duplicated.

Bounded editorial prose for one proposition that should read as an intact unit — no list, no fragmentation.

The act's main statement: a label, a title, a premise, and prose, allowed to be the most prominent thing on the page.

A ruled mini-argument beside the main column — a label, a title, a line or two, never the weight of the act.

Subordinate context anchored in source order, placed in the margin on wide screens and inline on narrow ones.

A compact continuation to one deeper place — a label, a title, a link, and a short note.

Narrative Openers & Voice — Live

Purpose

Lifts one phrase out of the running prose for emphasis, sharing the same type scale as `thesis`.

Authoring

> A pull-quote lifts one phrase out of the prose for emphasis.

Live Result

A pull-quote lifts one phrase out of the prose for emphasis, using the shared quote type scale.

Contract & Implementation

A single blockquote; no required fields.

  • lib/render/motifs.mjs
  • components/render/Motifs.tsx

Narrative Openers & Voice — Reference

The rest of this family

The universal fallback: any section falls to it when nothing tells the renderer a more specific shape.

The standfirst opener — a claim, a working question, and a lede paragraph.

The Story's H1 opener — overline, headline, deck, and a read-on link.

A top-level act: anchored, full-bleed ground, holds its own blocks and any interludes.

Opens an act with a movement number, a kicker, a title, and a deck.

The same parts as title-block, one register down, for an interlude or a nested act.

Ordinary body copy at reading measure — the default shape a section falls to when it carries paragraphs alone.

The opening paragraph of an act, with a drop cap — the same job as `lead`, one register more formal.

Sets opening prose large without the drop cap, for an act that begins mid-thought.

A compact inline sequence of terms, set apart by a rule.

A ruled quote shell — the same type scale as `pull-quote`, given a rule and more gravity.

Editorial Argument — Live

Purpose

An executive argument map — two to eight titled moves, each with an optional number and note. Never navigation.

Authoring

### Argument Map
**Render:** summary
**Title:** Three moves
A summary is an executive argument map.

#### 01
**Title:** State the signal
**Note:** What should the reader notice first.

Live Result

Three moves

A summary is an executive argument map: two to eight titled moves, each with optional number and note. It is never navigation.

  1. State the signal

    What should the reader notice first.

  2. Show the pattern

    Where the structure is.

  3. Make it inspectable

    The evidence a reader can check.

Contract & Implementation

2–8 items; each item needs a title.

  • lib/render/motifs.mjs
  • components/render/Motifs.tsx

Editorial Argument — Reference

The rest of this family

A claim paired with concrete evidence — value, label, context, and credit.

An editorial comparison across 2–4 declared columns.

A ruled row of a short title and one line about it, repeated.

A row of figures — a value and a label per item.

Peer objects — a bounded set of equal-weight ideas, distinct from a sidecar's subordinate context.

An ordered conceptual progression, one step per item.

A portable Musewoods Chart as a narrative exhibit — the shared D3 engine at a Story safe area.

Long-Form & Reference Collections — Live

Purpose

Long-form entries: number, label, title, premise, body, and a closing question — one entry at a time.

Authoring

### Essay Set
**Render:** essays

#### 01
**Number:** 01
**Title:** Long-form entries carry their own premise and question.
**Premise:** essays is for reasoning that needs room.
**Question:** When does a note need to become an essay?

Live Result

Essay

01

Long-form entries carry their own premise and question.

essays is for reasoning that needs room — a title, a premise, body prose, and a closing question.

QuestionWhen does a note need to become an essay?

An essays collection is the motif for that longer form, one entry at a time.

Contract & Implementation

Each item needs at least a title; premise and question are optional.

  • lib/render/motifs.mjs
  • components/render/Motifs.tsx

Long-Form & Reference Collections — Reference

The rest of this family

Ruled entries for outward publication — the only motif Living Content latest-link enrichment attaches to.

Numbered references — an unclamped title link over a muted metadata line.

A ruled, numbered register — quieter than roster, keyed by the item's own name.

Ruled steps: a short label beside one passage.

Repeated items, each rendering its own fields, prose, and children — items are items only when each carries copy of its own.

Tall ruled rows with an index column: the item's key, its timeframe, then the passage.

Ruled rows keyed by a timeframe in the left column.

Dense structured information — a Markdown table, or ruled register rows.

Exactly two short title-plus-note cards, side by side.

A compact inline row of short terms.

A short numbered run of steps, quieter than sequence.

Shared Cross-Field Motifs — Live

feature-band, quote-panel, and reel (editorial) plus lens, matrix, and drilldown (analytical) are one semantic contract each, shared verbatim by Stories, Journals, and Groves. The field owns only spacing, width, and accent — never the behaviour. See Architecture & Validation for how the shared layer is structured.

Feature Band

Purpose

A wide image band pairing a title and body with a link — one shared model, rendered natively in each field.

Authoring

**Image:** /images/viewgraphs/lab-panoramic.svg
**Alt:** A wide abstract editorial study.
**Title:** The shared layer landed across three fields
**Body:** One normalized model, one renderer.

Live Result

A wide abstract editorial study.

The shared layer landed across three fields

One normalized model, one renderer.

Contract & Implementation

Requires an image; title, body, and link are optional.

  • lib/motifs/feature-band.mjs
  • components/motifs/FeatureBand.tsx

Quote Panel

Purpose

Gives a whole voice room to speak — an attributed or unattributed composed quotation.

Authoring

**Quote:** A quote-panel gives a whole voice room to speak.
**Attribution:** The shared motif layer
**Role:** lib/motifs

Live Result

A quote-panel gives a whole voice room to speak.

The shared motif layerlib/motifs

Contract & Implementation

`**Quote:**` is required; Attribution, Role, Avatar, Source, and Href are optional.

  • lib/motifs/quote-panel.mjs
  • components/motifs/QuotePanel.tsx

From A Single Artifact To A Sequence

feature-band and quote-panel each compose one editorial moment. reel changes the unit of reading: it lets several authored images, or canonical Viewgraph frames, unfold as one bounded sequence without turning the page into a gallery application.

Reel

Purpose

A manual or autoplaying image sequence — or, in `Kind: viewgraph` mode, a live Viewgraph frame sequence.

Authoring

**Kind:** images

#### 01
**Image:** /images/viewgraphs/lab-architecture.svg
**Alt:** A layered architecture study.
**Caption:** Where it started.

Live Result

A layered architecture study.

Where it started.

Contract & Implementation

`Kind: images` needs at least one frame with an image; `Kind: viewgraph` resolves a real Viewgraph by slug.

  • lib/motifs/reel.mjs
  • components/motifs/Reel.tsx

From Editorial To Analytical

feature-band, quote-panel, and reel above form the shared editorial family. lens, matrix, and drilldown below form the shared analytical family: a compact vocabulary for moving from interpretation to structured evidence without turning every analytical section into a chart.

Lens

Purpose

The same analytical object, read through 2–3 authored interpretations without changing the underlying object.

Authoring

**Default:** authority

#### authority
**Label:** Authority
Who may act, and how far.

#### exposure
**Label:** Exposure
What is at stake if they act.

Live Result

Who may act, and how far.

Contract & Implementation

2–3 panels; every panel labelled and non-empty; `**Default:**` must resolve.

  • lib/analytics/lens.mjs
  • components/analytics/Lens.tsx

Matrix

Purpose

Categorical or ordinal state across two dimensions — a semantic evidence surface, not a spreadsheet.

Authoring

**Columns:** Sense | Act
**Scale:** presence

#### copilot
**Label:** Copilot
**Cells:** full | absent

Live Result

Live specimen — 1 rows by 2 columns.
fullabsent
fullpartialabsent

Contract & Implementation

`**Columns:**` required; a scale or `**States:**` declares the vocabulary; every row needs one cell per column.

  • lib/analytics/matrix.mjs
  • components/analytics/Matrix.tsx

From Pattern To Inspectable Evidence

lens changes the authored interpretation and matrix exposes categorical structure. drilldown takes the next step: it preserves a compact overview while placing the evidence for an individual case one deliberate action away.

Drilldown

Purpose

Every item expandable — title, summary, and detail; one row open at a time.

Authoring

#### copilot
**Title:** Copilot
**Summary:** Assisted, human-triggered.
Detail: bounded to one task, no autonomous initiation.

Live Result

Assisted, human-triggered.

Contract & Implementation

Every item needs a Title, a Summary, and detail content.

  • lib/analytics/drilldown.mjs
  • components/analytics/Drilldown.tsx

Journal-Native Markers — Live

Purpose

A banded Markdown table — the one supported Journal table treatment.

Authoring

> [!table-banded]
> | Motif | Field |
> |---|---|
> | highlight | Journal |

Live Result

Publishing fieldStructural parserField registry and notes
StoriesparseStoryboard`lib/render/motifs.mjs` — motif registry, treatments, and the field spacing adapter
JournalsparseMarkdownDocumentlib/journal/sidecars.mjs — the editorial-marker promotion pass, including this [!table-banded] treatment
ViewgraphsloadViewgraphsFromPathlib/viewgraphs/model.mjs — fixed 1600×900 logical geometry, its own Mermaid theme
GrovesparseGrovePagelib/groves/motifs.mjs — native motifs plus the live-specimen Developer Guide infrastructure

Contract & Implementation

A `[!table-banded]` marker wraps an ordinary Markdown table; no other table treatment is supported.

  • lib/journal/sidecars.mjs
  • components/render/ContentBlocks.tsx

Journal-Native Markers — Reference

The rest of the Journal-only markers

Marginal content on the left, with an optional accent variant (`-red`, `-green`, `-blue`).

The same contract, on the right.

A callout marking one passage as worth a second look.

A small bounded set of cards inside Journal flow.

Grove-Native Motifs

MotifJobLive on
thresholdOpening identity, proposition, atmosphereGrove Runtime
statementOne idea, strong spatial authorityThis page, Start Here
artifactAn object dominates the sectionGrove Runtime
evidenceClaim plus concrete evidenceArchitecture & Validation
sequenceOrdered conceptual progressionArchitecture & Validation
passageMovement through statesGrove Runtime
fieldLandscape of related domainsThis page, Publishing Fields
constellationRelationships among conceptsArchitecture & Validation
ledgerDense structured informationThis table
outcomesA small number of high-value quantitiesExtending Musewoods
voicesPeople and perspectivesGrove Runtime
originLong-form origin prose, never fragmentedStart Here
principlesNamed enduring commitmentsExtending Musewoods
portalDeliberate navigation, not CTA buttonsStart Here
growThe living, editorial edgeGrove Runtime, Publishing Fields
collectionExisting content, referenced not copiedGrove Runtime

Reference Matrix

Public authoring surfaces, at a glance
Reference Matrix — 3 rows by 2 columns.
fullfull
fullfull
fullfull
fullpartialabsent

Current counts belong to System Health; this Matrix tracks whether each public authoring surface is both explained and exercised.

Ground Is Metadata, Not A Motif

  1. Story Ground belongs on the metadata section

    A Story may choose one of the governed Ground values at the page boundary. The field is optional; omission resolves to soil. Ground is not a section motif, not a per-movement treatment, and not browser dark mode.

    ## Meta
    
    **Render:** metadata
    
    **Title:** Example Story
    **Canonical:** https://musewoods.com/example-story
    **Ground:** forest-floor
  2. Grove Ground belongs in `manifest.yaml`

    A Grove declares the same environmental choice as ground.mode. The shared vocabulary is the same, but the authoring location follows the local-site contract rather than Story metadata. Components consume semantic tokens; they do not branch into a second component tree merely because the resolved Ground is Forest Floor.

    ground:
      mode: forest-floor
  3. Viewgraph surface remains a separate contract

    Viewgraphs may vary their visual surface through the Viewgraph model, but that is not another spelling of Story/Grove Ground. Embedded Viewgraph frames reassert their own canonical presentation tokens so a surrounding Forest Floor Story or Grove cannot accidentally re-tone the frame.

Coverage

tests/developer-guide-coverage.test.mjs compares the Guide coverage ledger with the live capability model in both directions. The important rule is that a renderable capability earns live coverage only from a production **Render:**/**Chart:** directive or an explicitly registered live specimen; a fenced source example by itself is documentation, not execution.

That distinction keeps this page useful as a reference without confusing code samples with regression evidence. Public Story and Journal capabilities can be covered through their dedicated production specimens, while Grove-native capabilities can point to real renders inside this Guide. System Health then reports the current registry counts and whether those coverage relationships still hold.