docs(content): create the content roadmap — Spine, BOM, Backlog

Implements the docs restructure half of the content-track design (the
currency item is code and stays unbuilt). Content stops being unbounded:
the work is now a countable checklist with an end.

content/roadmap.md — new. Three sections, only one of which is ever the
work:
  Spine     Greywater Docks + one dungeon, patron Ghaul the Yoke; the
            cosmology touching ground. Plus what is already canon.
  BOM       ~57 discrete pieces for a complete, playable game, per
            milestone. Numbers, not vibes.
  Backlog   Everything the slice does not need. Not a debt — where ideas
            go to be safe.

Its rule: never author anything that is not in the Bill of Materials.

The BOM carries a Fixed/Variable column — the seven-campaign saga spec's
only ask of this table. ~37 fixed / ~20 variable: a second town costs the
20, not the 57. That is also the exact split v2 generation would need.

content/lore/canon-roadmap.md becomes a pointer (older specs and plans
reference the old path). An items-and-prices table does not belong under
lore/.

docs/roadmap.md — M4..M9 each gain a "Content it consumes →" line into
the BOM.

world-building skill — SKILL.md and evals.json now point at
content/roadmap.md, and the skill is told to respect the BOM rule: ideas
that arrive during authoring go to the Backlog, not into the world.

Build + --check green; generated content/world and content/server are
byte-identical. No Python touched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 17:31:30 -05:00
parent ef335a93c3
commit 9e8fc55a44
6 changed files with 207 additions and 66 deletions

View File

@@ -1,64 +1,11 @@
# Canon Roadmap
# Moved
The world's answer to `docs/roadmap.md`: what is authored vs pending, and the
order the Margreave is being written. Source of truth is `content/lore/*.md`;
`content/world` + `content/server` are BUILT from it (`python -m content_build`).
The canon roadmap is now the **content roadmap**: [`content/roadmap.md`](../roadmap.md).
## Authored (status: canon)
It grew past canon — it holds the Spine, a Bill of Materials (items, prices,
quests, the map), and a Backlog. An items-and-prices table does not belong under
`lore/`. See the
[content-track design](../../docs/superpowers/specs/2026-07-12-content-track-design.md).
- **cosmology.md** — the overarching theme: the Warden (distant good god), the
Sent (his angels), the Seven (demonic host), and the two economies +
possession (`rule.the-pact`, `rule.blood-price`, `rule.possession`). The
backdrop every future piece of content reconciles against.
- **the-seven.md** — the seven demon kings, one `person.*` each: Kareth (Red
King), Vael (Quiet Knife), Morren (Grey Mother), Ghaul (the Yoke), Ishri (Open
Mouth), Nuun (Hollow Choir), Draeth (Crowned Worm).
- **FTH-axis callings** (folded into the cosmology, from the races/classes
spec): the Bonesetter channels the Warden, the **Bloodsworn** (resolves the
warlock's former `[CANON-TBD]` name) pacts one of the Seven. Applying `Bloodsworn` to calling
data and a Bloodsworn's patron choice are M4; any Luck effect is an M5/
Improviser reconcile.
- **mechanics.md** — hosts `rule.disposition-ladder` (the required-once gate
vocabulary), reparented out of the retired Duncarrow scaffolding.
- **specimen.md** — a synthetic `status: candidate` disposition-gate specimen
(validated by `--check`, emitted nowhere); the world-building skill's structure
example. Not game canon. The Duncarrow scaffolding (Crell chain, Mera Fenn) is
deleted.
## Lesson from the Duncarrow purge
Generated content under `content/world/` has a client-side consumer:
`client/scripts/content/content_db.gd` (loaded via `client/scripts/harness/npc_harness.gd`)
and its GUT tests in `client/tests/unit/test_content_db.gd`. Deleting generated
content — a whole namespace of topics/npcs/canon — is a **client change**, not
just a content change; check `client/` before purging.
## The seven-campaign saga — what it asks of content
The saga direction spec
([`docs/superpowers/specs/2026-07-12-character-reuse-seven-arc-design.md`](../../docs/superpowers/specs/2026-07-12-character-reuse-seven-arc-design.md))
authors **no content** and adds **no BOM line**. It asks two things of the content
track, both of which land inside work already sequenced:
- **`tier: 1..7` on the entry envelope**, validated by the build tool — added at the
moment the `item` and `quest` namespaces land (already an M7/M8 prerequisite in the
content-track design). Schema, not content.
- **When the Bill of Materials is written, mark each line fixed vs variable.**
*Fixed substrate* (identical in every campaign): currency, the price table,
abilities, callings, the cosmology, the Seven, the disposition ladder.
*Per-campaign variable*: the town, its NPCs, their gated knowledge, the quest
chain, the king. This tells you which BOM lines town #2 reuses verbatim — useful
now, and the exact split v2 generation will need.
Pleasant accident: **the Greywater slice is already campaign 1** — tier 1, patron
Ghaul the Yoke. Nothing in the content-track design changes.
## Pending (not yet authored)
- Per-town knowledge that grounds the cosmology: possessed NPCs, blood-harvest
sites, shrine fronts — authored as gated `rumor`/`fact`/`secret`.
- The Barbarian ⚔ calling name (`[CANON-TBD]`); the Bloodsworn's patron-choice
detail (M4). Regions/towns of the Margreave beyond the scaffolding.
- **Backlog (saga, tiers 27):** the other six kings as campaign patrons; tiered
enemy families; the three story-shapes (cult cell → cult that owns a city → the
king). Parked, not lost.
This pointer exists because older specs and plans reference the old path. It holds
no canon and emits nothing.