Musewoods · GroveThe Musewoods Field Manual

Resonance System

Resonance is Musewoods' audience-relationship and circulation system. It begins where canonical publishing and semantic navigation have established what the Explorer is being invited into. Stories, Journals, Viewgraphs, and Groves remain the places where canonical editorial work is authored and owned. Trailhead v2 authors journeys and Trailmap v9 authors innovation fields in the Navigation System. Resonance then decides how selected work can travel outward, how a reader can explicitly Follow an inquiry, and how a later Return can be recognized without turning Musewoods into an account-centric application.

That placement is an architectural boundary, not a naming preference. Resonance is not a fifth publishing field, and it is not the semantic owner of Venture Trailmaps or current v2 Trailheads. It does not acquire a field manifest comparable to Journals, Viewgraphs, or Groves and does not become a new home for canonical essays, frames, research, or graph topology. content/resonance/ contains circulation sources and the supported v1 Trailhead edition. Canonical work continues to live in the four publishing fields, while v2 Trailhead and v9 Trailmap sources are validated through the Navigation System.

The normative editorial reference is the unlisted Musewoods Resonance Grove at content/groves/musewoods-resonance/. When implementation work changes a frozen Resonance responsibility, the implementation and that normative Grove move together. This Field Manual explains the code and operational boundaries; the Resonance Grove explains the product doctrine.

Where Resonance Sits

canonical-work

Stories, Journals, Viewgraphs, and Groves continue to own their content, routes, previews, visibility, and editorial identity. Resonance references those objects instead of copying their titles, excerpts, or bodies into a parallel content store.

circulation

Resonance asks what is alive now and which canonical work or authored journey should be brought back into attention. Where the established v1 email/web edition is used, the four-role Path remains the circulation grammar. Where a v2 Trailhead already exists, Resonance may point toward or distribute that journey without redefining its eleven semantic roles.

relationship

A Follow is explicit and revocable. Version 1 supports only the whole Musewoods scope and a Grove-specific scope. Verification and suppression belong to the relationship plane; they are not inferred from anonymous reading behavior.

signals

Resonance records a bounded event grammar using opaque actor identifiers. The event plane exists to understand movement through the inquiry, not to become a generic analytics collector or an alternate identity database.

The Resonance Loop

  1. 01 Select What Is Alive

    Musewoods begins with canonical work, semantic journeys, and explorable fields. Resonance adds an editorial circulation question: what is alive now, and what should be brought back into relationship with an audience? That choice should not alter the underlying Story, Grove, Trailhead, or Trailmap.

  2. 02 Project The Circulation Edition

    The established v1 Trailhead edition remains one versioned circulation source that can project to web and email without creating two competing editions of the same act. This is a compatibility responsibility of Resonance, not the definition of the current Trailhead concept. New semantic journeys are authored with musewoods.trailhead/v2.

  3. 03 Carry The v1 Path

    Where v1 circulation is used, the Path carries the reader through canonical objects using the closed roles entry, deepen, see, and follow. Each step points to the source of record; Resonance may supply a hook for the circulation journey, but it does not duplicate the underlying object or invent Trailmap topology.

  4. 04 Follow

    After the editorial question, a reader may choose Follow this inquiry. That action creates an explicit relationship, verified by email and revocable without an account or password. The content role named follow and the reader relationship named Follow are deliberately separate concepts.

  5. 05 Return

    A later re-entry closes the loop. Return is interpreted through a versioned window policy while raw timestamps remain available, so the meaning of "returned" can evolve without rewriting the historical record.

    Figure 1

    Rendering diagram…

Three Operational Planes

PlaneOwnsPrimary implementation territory
Circulation contentv1 edition, Path, typed content references, web/email projectionslib/resonance/content-ref*, path*, v1 trailhead/*, web/*, email/*
RelationshipFollower, Follow, consent, verification, suppression, delivery eligibilitylib/resonance/follow/*, relationship stores
SignalBounded journey events, engagement/return policy, rollupslib/resonance/signals/*, rollups/*, event/rollup stores

The planes are separated because they answer different questions. Circulation content asks what should be brought outward and in what v1 Path order. Relationship asks what the reader has explicitly asked Musewoods to remember. Signal asks what happened in the journey. Keeping those responsibilities apart prevents transport, analytics, and identity concerns from quietly collapsing into one database or one provider-specific abstraction.

Identity And Behaviour Stay Separate

  1. Event payloads do not carry email addresses

    The signal plane uses opaque actor identifiers. validateEvent rejects an email address in an event payload, preserving a hard boundary between journey measurement and relationship identity rather than relying on convention or review discipline.

  2. The mapping point is deliberately narrow

    The only actor-to-follower mapping point is the entry boundary. After that boundary, journey events can remain pseudonymous while Follow state remains in the relationship plane. This gives the implementation a small place to reason about identity rather than allowing identity to leak into every event and projection.

  3. Trailhead links carry no personal data

    Attribution is first-party, but the link itself does not encode an email address or other personal identity. The /r/<token> entry route resolves attribution and then redirects to the clean canonical URL, keeping the canonical content route independent of circulation mechanics.

The Bounded Event Grammar

EventMeaning in the journey
trailhead.deliveredA Trailhead edition was delivered through the circulation boundary
path.enteredA reader entered the curated Path
content.engagedEngagement satisfied the current versioned engagement policy
path.deepenedThe reader moved into a deeper Path step
field.crossedThe journey crossed from one publishing field to another
grove.reachedThe journey reached a Grove destination
follow.createdA verified Follow relationship was created
inquiry.returnedA later entry satisfied the current versioned return policy

The event names are registered in lib/resonance/signals/events.mjs; an unregistered event is rejected. Two meanings are intentionally policy-driven: content.engaged is decided by the versioned engagement policy and inquiry.returned by the versioned return policy. Code should therefore ask the policy modules what those events mean rather than re-creating thresholds in routes, components, or analytics queries.

Persistence And Transport

Musewoods owns the records

Store interfaces in the Resonance store contract isolate Followers, Follows, sends, raw events, and rollups from the physical persistence adapter. Tests can use memory, development can use the on-disk .musewoods/resonance/ store, and production or an explicit object configuration can use @vercel/blob through the object adapter.

Production persistence must fail visibly when it is not configured. An object store without BLOB_READ_WRITE_TOKEN raises STORE_UNCONFIGURED; the runtime must never pretend a relationship, send, or signal was persisted when it was not. Raw events are sharded by UTC day because the current object store is a whole-document store rather than a true append log.

Environment And Persistence Controls

VariablePurpose
RESONANCE_STOREmemory or object; otherwise development uses the file adapter
RESONANCE_MAIL_PROVIDERSelects a registered transport; otherwise the development outbox is used
RESONANCE_ADMIN_SECRETBearer secret for explicit production send
RESONANCE_DELIVERY_SECRETBearer secret for provider delivery feedback
RESONANCE_LINK_SECRETHMAC secret for /r/<token> entry links
RESONANCE_PUBLIC_URLAbsolute public base used when rendering email links

Runtime Boundaries

RouteKindResponsibility
/trailheads, /trailheads/<slug>staticTrailhead web experience; remains available when relationship/signal runtime services are unavailable, with v1/v2 semantics owned by their respective source generations
/r/<token>dynamicFirst-party attribution, then 302 to a clean canonical content URL
/api/resonance/follow, /follow/verify, /follow/revokedynamicExplicit Follow, email verification, and one-click revocation
/api/resonance/events, /journey, /engageddynamicBounded first-party journey events with server-side semantics
/api/resonance/send, /deliverydynamicBearer-guarded production send and provider feedback
/resonance-labdevelopment-onlyTrailhead stress specimens and geometry validation

Static Trailheads, static Trailmaps, and runtime relationship services are intentionally not one availability domain. A failure in the event store, mail provider, or Follow API must not make an authored Trailhead or Venture Trailmap disappear. That static-first boundary is part of the product contract, not merely a deployment optimization.

Operational Invariants

  1. Building or deploying never sends email

    The static Trailhead and Trailmap route graphs do not import the production send path. Publishing an edition, running a build, or marking an edition Ready cannot cause a production delivery as a side effect.

  2. Ready is not Send

    The authoring lifecycle stops at a Ready state until an explicit, bearer-guarded call reaches POST /api/resonance/send. Production send is idempotent by productionKey, defaulting to the edition id, so a repeated call returns the existing immutable send record rather than delivering twice.

  3. Runtime failure does not rewrite editorial truth

    Canonical content remains in its field, while Trailhead and Trailmap projections remain independent of relationship persistence. Runtime systems may add attribution, relationship state, delivery, and signals, but they cannot become prerequisites for resolving the underlying editorial object.

Fieldwork, Not V1

Deferred Resonance surface

fieldwork

Personalized Trailheads or Trailmaps, autonomous circulation selection, A/B testing, send-time optimization, drip campaigns, lead scoring, member accounts, a composite Resonance score, tracking pixels, generic analytics collection, and newsletter card grids are intentionally outside the v1 contract. Their absence is a boundary to preserve, not a backlog invitation to add them opportunistically.

Continue Into Navigation