Mandate 2038: Components

Mandate 2038 keeps player-visible writing separate from mechanics and from generated output. Edit the source that owns the kind of change you are making.

SourceOwnsDo not put here
content/copy/Printable component, box, card, and player-aid copyNumeric mechanics, IDs, or internal notes
content/data/Stable IDs, timing, quantities, mechanics, and machine contractsFlavor, tone rules, art briefs, or player-facing prose
content/runtime/Browser labels, instructions, messages, simulation labels, and guide copyPrinted card copy or mechanical rules
experimental/copy/ and experimental/data/Deferred optional-module copy and mechanicsBaseline-game material
content/graph.jsonSource-to-output declarations and semantic contextsAuthored game prose
dist/Compiler-produced runtime JSON, printable documents, site pages, and kitsAny hand edits

content/copy/ is a sparse copy overlay: its IDs bind player-facing fields to their mechanical record in content/data/. The compiler performs a fail-closed keyed merge and rejects unknown identities or incompatible shapes.

Copy sourcePlayer-facing surfaceMechanical source
content/copy/world-copy.jsonBox, world primer, tokens, declarations, endingscontent/data/world-copy.json
content/copy/reference-cards.jsonGovernance Board Era panels and foldout player-aid panelscontent/data/reference-cards.json
content/copy/factions.jsonFaction boards and abilitiescontent/data/factions.json
content/copy/game-config.jsonActions, Eras, map, resources, Training, and Powercontent/data/game-config.json
content/copy/mandates.jsonEra Mandatescontent/data/mandates.json
content/copy/headlines.jsonHeadline cardscontent/data/headlines.json
content/copy/escalations.jsonShared Program cardscontent/data/escalations.json
experimental/copy/*.jsonDeferred modulesmatching experimental/data/*.json

The player-readable document templates are content/copy/core-rules.md and content/copy/world-and-institutions.md. They compile to dist/docs/ and are then rendered into the site reader. Begin a broad lore pass with content/copy/world-copy.json; revise the world companion once the short premise is settled; revise the rulebook for play instruction rather than lore or internal rationale.

content/player-copy-contract.json records the player surface that consumes each copy subtree. After changing content, run:

npm run content:build
npm run content:check
npm run content:validate

Never edit dist/runtime/, dist/docs/, dist/site/, or dist/physical-kit/ by hand.