Move rule.disposition-ladder into content/lore/mechanics.md and delete the Duncarrow scaffolding (source + 23 generated JSON). Remove the redundant test_duncarrow.py (routing/secrecy already covered by test_emit.py synthetic fixtures); repoint a cosmetic slug-test id. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ
/content/world — static, ID-referenced content
The shared world. Authored once, identical every playthrough. Everything here
carries a stable string id that origins and the canon log reference. Never
seed initial state here — that is an origin's job (/content/origins).
/locations Towns, dungeons, points of interest. id → location
/npcs Persona + knowledge lists (charter §6). id → npc
/quests Story skeletons and quest definitions (charter §17). id → quest
/items Gear, consumables, cursed items (charter §7). id → item
New-game construction resolves every id an origin references (start location, start quest, granted items, seeded companions) against this content, and fails loudly if one is missing. Keep ids stable — a rename is a breaking change.