# Cosmology — the Warden and the Seven — Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Author the good-god / seven-demon-lords cosmology as canon content and bake it into the world-building skill, so every future authoring pass reconciles against it. **Architecture:** The cosmology is *public, believed world-furniture* — it authors as ordinary **canon entities** (secrecy 0) in two new lore-bible files, which the `content_build` tool compiles to `content/world/` + `content/server/` JSON. No engine, UI, prompt, or combat code changes. The world-building **skill** gains a cosmology reference and two hooks so it enforces the backdrop. **Tech Stack:** Markdown lore bibles with ` ```yaml ` blocks (`content/lore/*.md`); the `content_build` Python tool (`tools/content_build/`, run with `PYTHONPATH=tools`); the project venv (`.venv`). ## Global Constraints - **Charter §2 — code owns state, AI owns text.** This pass adds only text the AI narrates from. No new mechanic, no schema change, no "class" entity. Verbatim. - **Tone (charter §3 + `references/tone.md`):** gritty, not grim; dry narrator, never winks, never preaches, never confirms the god. The cosmology is the *hidden engine*, not epic surface text. "Distant & contested." - **Luck (charter §7):** visible in prose, **never a number**; the player must never be able to *calculate* they are cursed. Blessing/curse express through Luck's *flavor* only. No Luck mechanic is built this pass. - **Every canon entity is `secrecy: 0`** (the resolver hard-fails otherwise). Every `related` id must resolve or the build fails. - **Never hand-edit generated JSON** under `content/world/` or `content/server/` — fix the bible source and rebuild. - **Git:** all work on branch `feature/cosmology-theme` off `dev`. Do not touch `master`. Merge to `dev` only after the human confirms and the build is green. - **Do NOT remove or edit any existing Duncarrow content** (`content/lore/duncarrow.md` and its generated output). It stays intact this pass — it hosts the required-once `rule.disposition-ladder` and is the skill's format specimen. **Build/verify commands (used by every task):** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build # regenerate world/ + server/ from lore/ PYTHONPATH=tools python -m content_build --check # must exit 0 PYTHONPATH=tools python -m pytest tools/content_build/tests -q ``` (If `python` is missing, the venv isn't active — use `.venv/bin/python`.) --- ## File structure | File | Responsibility | Created/Modified | |---|---|---| | `content/lore/cosmology.md` | The cosmic frame: the Warden, the Sent, the Seven (host), the two economies, possession | **Create** | | `content/lore/the-seven.md` | The seven demon lords, one `person.*` each | **Create** | | `.claude/skills/world-building/references/cosmology.md` | The backdrop every future author reconciles against + authoring rules | **Create** | | `.claude/skills/world-building/SKILL.md` | Add cosmology to step 2 (reconcile) + the reference list | **Modify** | | `.claude/skills/world-building/references/tone.md` | Add "The cosmic backdrop" section | **Modify** | | `content/lore/canon-roadmap.md` | Record Warden/Seven authored, FTH-axis mapping + `Bloodsworn`, Duncarrow flagged scaffolding | **Modify** | | `content/world/canon/*.json`, `content/server/*` | Regenerated build output (committed, not hand-written) | **Generated** | Dependency order: `cosmology.md` defines `faction.the-seven`, `rule.blood-price`, `rule.possession`; `the-seven.md`'s lords relate *up* to those. So `cosmology.md` builds green standalone, then `the-seven.md`. No cross-file back-reference is authored on the cosmology side (Nuun is named in prose there, but the id-relation to `rule.possession` lives on Nuun's own entry). --- ## Task 0: Branch - [ ] **Step 1: Create the working branch off `dev`** ```bash git checkout dev git pull --ff-only # optional; skip if offline git checkout -b feature/cosmology-theme ``` - [ ] **Step 2: Confirm the build is green before any change (baseline)** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build --check ``` Expected: exits 0 (no output or a success line). If it fails here, stop — the tree was already broken; fix or report before proceeding. --- ## Task 1: The cosmic frame — `content/lore/cosmology.md` **Files:** - Create: `content/lore/cosmology.md` - Generated (commit after build): `content/world/canon/the-warden.json`, `content/world/canon/the-sent.json`, `content/world/canon/the-seven.json`, `content/world/canon/the-pact.json`, `content/world/canon/blood-price.json`, `content/world/canon/possession.json` **Interfaces:** - Produces canon ids consumed by Task 2 and by all future content: `person.the-warden`, `faction.the-sent`, `faction.the-seven`, `rule.the-pact`, `rule.blood-price`, `rule.possession`. - Every `related` in this file resolves *within this file* — it does not depend on Task 2. - [ ] **Step 1: Write the file exactly** Create `content/lore/cosmology.md` with this content verbatim: ````markdown # COSMOLOGY — the Warden and the Seven — status: canon > The overarching theme of the Margreave: a distant good god, his angels, and > the seven demon kings who work against him. Public, believed world-furniture — > all `secrecy: 0`, bodies ship to the client. WHO is possessed, WHICH road is > bled, are authored later as gated `rumor`/`fact`/`secret` per-town; this file > never names a victim. > > Tone: distant & contested. The narrator never confirms the Warden, never goes > epic. The war is the hidden engine under the grime. --- ## THE WARDEN — the good god (distant) ```yaml id: person.the-warden type: person status: canon secrecy: 0 related: [faction.the-sent, faction.the-seven, rule.the-pact] body: > The god most of the Margreave professes, though few claim to have felt him. He is called only the Warden; no living mouth speaks his name, and the priests who might have known it are a long time dead. What the faithful hold is simple: he made the races, he loves them, and he wards the world against the Seven. What he asks in return is worship, and what he gives for it is blessing — rarely, and never where you can point to it and be sure. He does not come when called. Whether that is because he is good and restrained, or absent, or dead, is the oldest argument there is, and the Margreave has never settled it. ``` ## THE SENT — his angels (indirect, rare) ```yaml id: faction.the-sent type: faction status: canon secrecy: 0 related: [person.the-warden, rule.the-pact] body: > The Warden's messengers — angels, the Sent, his hand where he will not put his own. They do not fight the Seven and they do not save anyone. They ask. A Sent one comes to a mortal, names a thing that must be done in the Warden's name, and leaves the doing to them; blessing follows the deed, or does not follow the refusal. Most people go their whole lives without meeting one, and a fair number of those who claim to have met one were lying or drunk or worse. That they are rare is either the mark of a careful god or a thin one. ``` ## THE SEVEN — the demonic host ```yaml id: faction.the-seven type: faction status: canon secrecy: 0 related: [person.the-warden, rule.blood-price, rule.possession] body: > Seven kings and the armies that answer to them — the Warden's enemy, and the world's. They do not want to rule the races so much as end them, dead or yoked, it makes little difference to the Seven which. Each king is its own hunger and keeps its own kind of war, and they cooperate the way wolves cooperate, which is to say until the meat runs low. What they run on is blood: spilled, sacrificed, offered. A mortal who learns how to feed them can be given a share of what that blood buys. Most of the Margreave believes the Seven are real. Most of the Margreave is right. ``` ## THE PACT — worship for blessing (the Warden's economy) ```yaml id: rule.the-pact type: rule status: canon secrecy: 0 related: [person.the-warden, faction.the-sent] body: > The bargain at the heart of the Warden's faith: worship for blessing. Prayer, offering, a shrine kept clean, a deed done in his name — these buy his favor, and his favor turns fortune a little kinder. A bonesetter, the closest thing the Margreave has to a priest, is a mortal who has given enough of themselves to the Warden to channel a thread of that blessing into the living — a wound closed, a fever broken, a death postponed. The pact is never a receipt. You give, and blessing may come, on the Warden's terms and in his time, which is to say seldom and never on demand. ``` ## THE BLOOD-PRICE — blood for power (the Seven's economy) ```yaml id: rule.blood-price type: rule status: canon secrecy: 0 related: [faction.the-seven, rule.possession] body: > What the Seven trade in. Their power is not given, it is bought, and the only coin is blood — the more, and the more wrongly spilled, the better the rate. A killing floor, a sacrifice, a murder done in a lord's name feeds the king it is offered to. A mortal willing to strike that bargain becomes what the Margreave calls bloodsworn: sworn to one of the Seven, marked by it, and able to spend a thread of its power the way the faithful spend the Warden's — a curse laid, a hurt dealt, a thing that should not bend made to bend. The blessing side of it, such as it is, is that a king does not waste ill luck on its own sworn; the price for that mercy is simply the blood, and the blood is never paid once. ``` ## POSSESSION — how the Seven reach mortals ```yaml id: rule.possession type: rule status: canon secrecy: 0 related: [faction.the-seven, rule.blood-price] body: > How the Seven reach across into the world. Mostly it is not the horror the stories promise — it is influence, a hand on the scale of a mortal's wanting: the grudge nursed a little hotter, the easy cruelty made easier, the appetite that will not be talked down. That is the common work, and most of it is never noticed as anything but a person going bad. Outright possession — a king wearing a body like a coat — is rarer and costs the Seven dearly, and it is Nuun, the Hollow Choir, that does most of it; the others prefer a willing hand to a stolen one. A possessed mortal is not the enemy. The enemy is the thing inside them, and it will spend the body it wears without a thought. ``` ```` - [ ] **Step 2: Build and verify the frame is valid** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build PYTHONPATH=tools python -m content_build --check ``` Expected: build regenerates without error; `--check` exits 0. If it reports an unresolved `related` or a secrecy error, it names the source file + line — fix `cosmology.md` and rerun. Do NOT edit generated JSON. - [ ] **Step 3: Confirm the six canon files were emitted** ```bash ls content/world/canon/the-warden.json content/world/canon/the-sent.json \ content/world/canon/the-seven.json content/world/canon/the-pact.json \ content/world/canon/blood-price.json content/world/canon/possession.json ``` Expected: all six exist. (Bodies ship client-side; there is no server output for canon entities.) - [ ] **Step 4: Run the build tests (regression)** ```bash PYTHONPATH=tools python -m pytest tools/content_build/tests -q ``` Expected: all pass. - [ ] **Step 5: Commit** ```bash git add content/lore/cosmology.md content/world/canon/ git commit -m "feat(content): cosmology frame — the Warden, the Sent, the Seven Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ" ``` --- ## Task 2: The roster — `content/lore/the-seven.md` **Files:** - Create: `content/lore/the-seven.md` - Generated (commit after build): `content/world/canon/kareth-the-red-king.json`, `vael-the-quiet-knife.json`, `morren-the-grey-mother.json`, `ghaul-the-yoke.json`, `ishri-the-open-mouth.json`, `nuun-the-hollow-choir.json`, `draeth-the-crowned-worm.json` **Interfaces:** - Consumes from Task 1: `faction.the-seven`, `rule.possession` (used in `related`). - Produces: the seven `person.*` lord ids (for future quests/NPCs to reference). - [ ] **Step 1: Write the file exactly** Create `content/lore/the-seven.md` with this content verbatim: ````markdown # THE SEVEN — the demon kings — status: canon > Seven kings, seven armies, seven kinds of blood. Each is a `person.*`, > `secrecy: 0`, relating up to `faction.the-seven` (Task 1 / cosmology.md). > Tight sketches — a king, the blood it craves, its army, how it corrupts a > mortal. Gritty, not cartoonish: each is a way mortals actually bleed. No > questlines here; those hang off these ids later. --- ```yaml id: person.kareth-the-red-king type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Kareth, the Red King, first and loudest of the Seven. The blood he wants is the battlefield's — slaughter, the more of it and the less reason the better. His army is the horde, and it grows because he is generous with the promise of victory and the men who take it rarely live to complain that it was a lie. He does not whisper. He works through the rage already in a mortal, the feud that only needs a reason, the certainty that the sword is the short way through. Where Kareth has been, there is a field that will not grow for a generation and no one left who remembers starting it. ``` ```yaml id: person.vael-the-quiet-knife type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Vael, the Quiet Knife, the intimate one. The blood Vael craves is the kind spilled indoors — the trusted killed by the trusted, the poison in the cup you were poured, the debt settled between people who once shared bread. Vael keeps no horde; its army is a scatter of ones, each certain they acted alone. It works through the grudge held too long and the moment the knife looks like the only door left in the room. Kareth takes the field. Vael takes the household, and no one hears it happen. ``` ```yaml id: person.morren-the-grey-mother type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Morren, the Grey Mother, who comes with the fever. The blood she wants is thin and slow — the dying, the plague-struck, the ones given up on. Her army is the sick, and she is patient in a way the others are not, because rot does her recruiting. She works through despair, and cruelest of all through mercy: the pillow held over a suffering face, the kindness that is also a killing. Morren does not lie about what she offers. She offers an end, and for a great many of the Margreave's dying, that is temptation enough. ``` ```yaml id: person.ghaul-the-yoke type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Ghaul, the Yoke, the patient profit of the Seven. The blood Ghaul takes is worked out slow — chattel bought and sold and used until there is nothing left to use. Its army is the coffle and the counting-house, and it does not need to whisper to a man who has already found that a person is cheaper than an ox. It works through the ledger: the wage shaved, the debt made unpayable, the reasoning that a body one owns is a body one may spend. Ghaul is the least dramatic of the Seven and by a plain count of the ruined the most successful. ``` ```yaml id: person.ishri-the-open-mouth type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Ishri, the Open Mouth, the hunger that is never a meal. The blood Ishri wants is the blood spent chasing more — drunk to death, wanted to ruin, taken because taking felt like living. Its army is the appetite of anyone who has stopped being able to stop. It does not corrupt so much as encourage; it stands at a mortal's shoulder and agrees that one more will not hurt, and it is right until it is not. Ishri leaves the neatest corpses and the emptiest houses, everything sold to feed a want that was never going to be full. ``` ```yaml id: person.nuun-the-hollow-choir type: person status: canon secrecy: 0 related: [faction.the-seven, rule.possession] body: > Nuun, the Hollow Choir, the many-voiced. The blood Nuun gathers is a mortal's own — the self-slain, the ones talked into the river or off the roof by a voice they took for their own thought. Its army is the emptied, and it is Nuun, of all the Seven, that most often does the old horror outright and wears a mortal like a coat, because a hollowed body is the only kind it truly wants. It works through the whisper, the crack in a mind widened patiently until there is room for something else to move in. A person going quietly, terribly wrong, and swearing nothing is the matter, is Nuun's ordinary work. ``` ```yaml id: person.draeth-the-crowned-worm type: person status: canon secrecy: 0 related: [faction.the-seven] body: > Draeth, the Crowned Worm, the one that likes a throne. The blood Draeth feeds on is a ruler's to spend — a people bled by the one meant to keep them, for power that always seems worth the cost to the one paying it with other lives. Its army is whoever a corrupted crown can command, which is the cruelest of the Seven's arithmetic. It works through ambition, the small justified step and the next, until a lord is sacrificing the realm to hold the realm and calling it duty. Draeth rarely has to lie. It only has to wait by the chair and let the sitting do the rest. ``` ```` - [ ] **Step 2: Build and verify** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build PYTHONPATH=tools python -m content_build --check ``` Expected: `--check` exits 0. (`person.nuun-the-hollow-choir` relates to `rule.possession` from Task 1 — it resolves because the build parses all `content/lore/*.md` together.) - [ ] **Step 3: Confirm the seven canon files were emitted** ```bash ls content/world/canon/kareth-the-red-king.json content/world/canon/vael-the-quiet-knife.json \ content/world/canon/morren-the-grey-mother.json content/world/canon/ghaul-the-yoke.json \ content/world/canon/ishri-the-open-mouth.json content/world/canon/nuun-the-hollow-choir.json \ content/world/canon/draeth-the-crowned-worm.json ``` Expected: all seven exist. - [ ] **Step 4: Run the build tests** ```bash PYTHONPATH=tools python -m pytest tools/content_build/tests -q ``` Expected: all pass. - [ ] **Step 5: Commit** ```bash git add content/lore/the-seven.md content/world/canon/ git commit -m "feat(content): the Seven — seven demon kings and their blood Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ" ``` --- ## Task 3: World-building skill — carry the backdrop The explicit ask: every future author must reconcile against the cosmology. Add a reference file and wire it into the skill. Skill files are **not** built, so the "test" is that the build stays green and the edits are internally consistent. **Files:** - Create: `.claude/skills/world-building/references/cosmology.md` - Modify: `.claude/skills/world-building/SKILL.md` - Modify: `.claude/skills/world-building/references/tone.md` - [ ] **Step 1: Create the cosmology reference** Create `.claude/skills/world-building/references/cosmology.md` verbatim: ```markdown # Cosmology — the Warden and the Seven The overarching theme of the Margreave. Every new piece of content sits inside this hidden war and must not contradict it. The canon lives in `content/lore/cosmology.md` and `content/lore/the-seven.md`; this file is the author-facing summary + the rules that keep it in tone. Read it before writing lore, NPCs, quests, or items. ## The frame - **The Warden** (`person.the-warden`) — a genuinely good, *distant* god. Made the races, loves them, wards the world against the Seven. Answers worship with rare blessing and does not otherwise intervene. **Nameless by design** — no one living speaks his name; never invent one. Whether he is good, absent, or dead is the world's oldest argument, never settled by the narrator. - **The Sent** (`faction.the-sent`) — his angels. Indirect: a Sent one *asks* a mortal to do a deed in his name; blessing follows the deed. Rare — most people never meet one. This is the cosmic-flavored quest-giver vein. - **The Seven** (`faction.the-seven`) — seven demon kings + armies, the Warden's enemy. Want the races dead or enslaved. Run on **blood** (`rule.blood-price`): sacrifice buys their power. The roster (`content/lore/the-seven.md`): Kareth (slaughter), Vael (betrayal), Morren (plague/mercy-kill), Ghaul (bondage), Ishri (appetite), Nuun (madness — chief possessor), Draeth (tyranny). - **Possession** (`rule.possession`) — how the Seven reach mortals: mostly *influence* (a hand on the scale of what a person already wants), rarely outright seizing a body (Nuun's specialty). A possessed mortal is a victim; the thing inside is the enemy. - **The two economies** — worship→blessing (`rule.the-pact`) vs blood→power (`rule.blood-price`). Both express through Luck's *flavor*, never numbers (see below). ## The FTH-axis callings (from the races/classes spec) The two divine callings draw power from opposite sides; the rest are unaligned. - **Bonesetter** (Cleric, FTH) — channels the Warden; healing *is* his blessing. - **Bloodsworn** (Warlock, FTH) — pacted to one of the Seven; the "Pact Mark" talent spends a thread of a lord's blood-price power. - **Hedge-Mage** (Wizard, MAG) — outsider; arcane is *studied*, serves neither. - Martials (Sellsword/Trapper/Barbarian) — unaligned; the war only echoes. Callings are code-owned state — reference them in prose, never author a "class" entity. (A Bloodsworn's patron choice and any Luck effect are M4/M5, not content.) ## Authoring rules — keep it in tone 1. **Distant.** The cosmology is the hidden engine under local grime, not the surface text. A corrupt mayor can just be a corrupt mayor. 2. **Through people.** Demons work by influence; possession is rare and quiet. No manifesting monsters in the square, no preaching narrator, god unconfirmed. 3. **Not epic.** Keep the gritty, indifferent register (see `tone.md`). Cosmic stakes stay implied, argued-over, never announced. 4. **Blessing/curse ↔ Luck.** Express which side has hold of someone through Luck's *flavor* ("fortune spits on you") — never a number, never something the player can calculate. A cursed item (+STR / −LCK) is a small bargain with the Seven. 5. **Victims are gated secrets.** WHO is possessed, WHICH road is bled, WHICH shrine is a front — author as per-town `rumor`/`fact`/`secret` with disposition gates, not stated in the open. The frame gives you hooks; you place the wounds. ``` - [ ] **Step 2: Wire it into `SKILL.md` — the reconcile step** In `.claude/skills/world-building/SKILL.md`, find the end of the paragraph in step 2 that begins "Read the entries your new content touches" (it ends "…New files and new entries need no approval; edits to existing canon always do."). Immediately after that paragraph, add: ```markdown New content must also slot against the world's overarching cosmology — the good god (the Warden), his angels (the Sent), and the seven demon kings who work against him through influence, possession, and blood sacrifice. Read `references/cosmology.md` before authoring; it is the backdrop nothing may contradict, and it carries the authoring rules that keep the war in tone (distant, worked through people, never epic, blessing/curse read through Luck). ``` - [ ] **Step 3: Wire it into `SKILL.md` — the reference list** In `.claude/skills/world-building/SKILL.md`, in the "## Reference files" list at the end, add this bullet as the first entry (before the `references/schema.md` bullet): ```markdown - `references/cosmology.md` — the overarching theme (the Warden and the Seven) every piece of content reconciles against, plus the rules that keep it in tone. Read before authoring any lore, NPC, quest, or item. ``` - [ ] **Step 4: Add the cosmic-backdrop section to `tone.md`** In `.claude/skills/world-building/references/tone.md`, find the section header `## Luck's fingerprint (charter §7)`. Immediately **before** that header, insert this new section: ```markdown ## The cosmic backdrop (the Warden and the Seven) The world sits inside a hidden war — a distant good god and seven demon kings (see `references/cosmology.md`). It colors tone but must never break the world's indifference: - The cosmology is the **hidden engine**, not the surface text. Day-to-day the world is still taxes, mud, and bad men; the war is what's *underneath* them. - Demons work **through people** — influence, rarely possession. Write the wreckage and the person going wrong, not a monster in the square. The narrator never confirms the god, never preaches, never goes epic. - Which side has hold of someone reads through **Luck's flavor, never a number** (a blessing is a run of fortune; a curse is the trap door opening under you). - The good/evil is real but **argued-over** — most folk dispute whether any of it is true. Certainty is the enemy of this tone as much as of §7's Luck. ``` - [ ] **Step 5: Verify the build still passes (no content changed, but confirm nothing broke)** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build --check PYTHONPATH=tools python -m pytest tools/content_build/tests -q ``` Expected: `--check` exits 0; tests pass. (Skill files aren't built; this just confirms Task 3 touched nothing that matters to the build.) - [ ] **Step 6: Sanity-read the three skill files** Open each and confirm: `references/cosmology.md` exists and reads cleanly; `SKILL.md` step 2 now mentions the cosmology and the reference list has the new bullet; `tone.md` has "The cosmic backdrop" section directly above "Luck's fingerprint". Fix any formatting slips inline. - [ ] **Step 7: Commit** ```bash git add .claude/skills/world-building/ git commit -m "feat(skills): world-building carries the cosmology backdrop Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ" ``` --- ## Task 4: Roadmap + final verification **Files:** - Modify: `content/lore/canon-roadmap.md` - [ ] **Step 1: Update the roadmap** Replace the entire body of `content/lore/canon-roadmap.md` below its title line with: ```markdown 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`). ## Authored (status: canon) - **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** (names the warlock `[CANON-TBD]`) 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. - **duncarrow.md** — the bounded-dialogue / disposition-gate specimen (Duncarrow, the Crell chain, Mera Fenn, etc.). **Scaffolding, not story:** it seeded the schema + skill and hosts the required-once `rule.disposition-ladder`. Slated for removal in a follow-up that reparents the ladder into `cosmology.md` and stands up a cosmology-native specimen town. ## 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. ``` - [ ] **Step 2: Full final verification (the whole pass, green)** ```bash source .venv/bin/activate PYTHONPATH=tools python -m content_build PYTHONPATH=tools python -m content_build --check PYTHONPATH=tools python -m pytest tools/content_build/tests -q git status --short ``` Expected: build clean; `--check` exits 0; tests pass; `git status` shows only the roadmap change staged/untracked (all prior tasks already committed). If `--check` reports staleness, the generated output wasn't committed in an earlier task — run the build and `git add content/world content/server`. - [ ] **Step 3: Commit** ```bash git add content/lore/canon-roadmap.md git commit -m "docs(content): roadmap — Warden/Seven authored, Duncarrow flagged scaffolding Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ" ``` - [ ] **Step 4: Report** Summarize for the human: new canon ids (6 frame + 7 lords), the skill changes, the roadmap update, and confirmation `--check` + pytest are green. Then stop for the human to smoke-test and confirm before any merge to `dev` (per charter §18 git workflow — the human confirms; Claude may then merge `--no-ff` and delete the branch). --- ## Self-review notes (author's check against the spec) - **Spec §4 (frame entities):** Task 1 authors all six with resolving `related`, secrecy 0. ✓ - **Spec §4 (roster):** Task 2 authors all seven `person.*`, each → `faction.the-seven`; Nuun → `rule.possession`. ✓ - **Spec §2 (tone reconciliation) + §3 (Luck hook):** carried in the bodies (distant, contested, Luck-as-flavor in `rule.blood-price`/`the-pact`) and enforced in the skill (Task 3 authoring rules). ✓ - **Spec §5 (skill changes):** Task 3 = new `references/cosmology.md` + `SKILL.md` step-2 + reference-list + `tone.md` section. ✓ - **Spec §6 (Duncarrow decoupled, not removed):** no task edits/removes Duncarrow; roadmap flags it (Task 4); Global Constraints forbid touching it. ✓ - **Spec §7 (FTH-axis callings):** Bonesetter/Bloodsworn/Hedge-Mage mapping in `rule.the-pact` + `rule.blood-price` prose and the skill reference; `Bloodsworn` name recorded (roadmap). Luck-immunity kept as flavor only, flagged M5. ✓ - **Spec §7-sensitivity:** no Luck mechanic authored; blessing/curse are prose. ✓ - **Type consistency:** ids used in `related` (`faction.the-seven`, `rule.possession`, etc.) match their definitions exactly across Tasks 1–2. ✓ ```