READ THAT CANON FIRST — open it and derive from it before you build anything from this document.
If this document disagrees with canon, CANON WINS and this document is the defect — fix the
document, never the canon. Nothing here is applied until it is ratified into canon.
STATUS: all 9 subsystems' anchor schema LANDED gate-green (commits WS7 Increment A/B1-B6/C). 7 new registries + 6 extensions + 13 worldstate rows. The 68 open flags are downstream ratification (D-WS7-FLAGS in DECISIONS_PENDING_JOSH); none block the anchor. Values/population = re-cascade + Fable-5 downstream.
Generated from the ws7_wiring_design workflow (wf_0e490e65-99b, 9 agents, all GO). This is the authoritative WS7 execution tracker: each increment below is applied as a LANDED gate-safe commit. Status legend: TODO / DOING / DONE. Driver: docs/FOUNDATION_COMPLETION_PLAN.md Section 2. Gate-safe method per increment: create-registry (new dir + added_registries + fk_spec PK/id-format entry) OR add-columns (append cells to every row + declare in docs/registry_extensions.json owner + docs/fidelity_baseline.json added_columns) OR append-worldstate-rows; then registry_fidelity.py --emit-baseline (NOT run_gates), then run_gates.py UNPIPED = 13/13, then commit. DRAFT anchor names/prefixes are Opus-proposed scaffold (git-reversible); genuine cardinal-canon forks are in the OPEN FLAGS and routed to docs/spine/DECISIONS_PENDING_JOSH.md, never invented.
Increment order (safest-first)
A. New registries (no existing rows touched): Vehicle · Minigame · Environment_Grammar · Dwelling · Reputation_Ladder · Rune · Hollow_Codex.
LOCKED-COUNTS GUARD: T0_Vehicle_Registry is a WHOLLY NEW registry with its own VH_\d{3} keyspace -- it adds zero rows/ids to any locked-count table. Each locked count is protected explicitly: (77 ch / 79 nodes) -- acquisition_chapter_id is an FK INTO the frozen Chapter_Index, it never mints a chapter; (22 threads) -- the threads column REFERENCES the canonical T\d{2} roster, adds none; (72 weapons) -- naval kinetic we
GATE NOTES: WIRING (3 gate touchpoints, all in ONE commit): (1) fidelity_baseline.json -- append the new registry base key to added_registries: "T0_Vehicle_Registry/Sheet1" (currently []). A new standalone registry does NOT go in registry_extensions.json and does NOT get an added_columns entry -- that manifest + the check_registry_extensions gate (rules I1-I3) govern ONLY added_columns on frozen _source registries; a wholly-new registry's columns are inherently vehicle-owned and are validated instead via fk_spec + added_registries. (2) fk_spec.json -- add a registries entry: primary_key=["vehicle_id"]; id
OPEN FLAGS (8):
F1 (Josh -- structural): approve T0_Vehicle_Registry (VH_ ids) as a LIVE-ONLY structural registry (ENTITY_PERSONA precedent), NOT world-canon. This whole schema assumes yes; nothing lands until approved.
F2 / F9 (Josh -- NUMERICAL canon): deck-grid slot COUNT and Soldier-Dock hangar-berth / sub-craft roster COUNT. Deferred -- no count column is populated. Proposal Rec: expandable-with-a-Josh-set-ceiling. Do NOT invent a count.
F3 (Josh -- design + possible chapter canon): does the Ship get a submersible-pod promotion opening the mid-arc shallow deep (affects VH_002's acquisition_chapter_id, currently blank), or is all underwater reserved to Vimana Mode 3 (CH_59 first / CH_64 peak)? Proposal Rec: yes to the pod.
F4 / F12 (Josh -- walked-geography line): land ownership -- is the Rig's rover folded in as a carried tender (a land VH_ row with deploys_from set) while mounts stay walked, or is there no owned land craft? Proposal Rec: fold the rover in, keep mounts walked. Touches the geography hard line most directly.
F5 (Josh -- NUMERICAL canon): fleet-vessel count CAP and whether the dispatch fleet enters canon. Deferred -- fleet-vessel rows carry craft_role=fleet-vessel but no cap is set.
F10 (Josh -- CHAPTER/hard-line canon): confirm the flying sub-craft (vril-flyer) is CH_55+ vril-launch ONLY (no hangar flyer in the CH_39-54 no-flight modern arc, Geo §11 / firewall F-a). Proposal Rec: confirm Ch 55+ launch tender.
F11 (Josh -- canon composition): approve the late-arc Vimana<->mothership dock as a STAGING/base-scene + set-piece affordance with ZERO Vimana-canon change (no new mode §6.1, no device change, never an 8th device, never carried). Encoded via VH_003 firewall_flags=vimana-docks-not-carried-Fb.
CHAPTER ASSIGNMENTS (Josh -- do-not-invent): only CH_08 (dhow onset) and CH_55 (Vimana) are canon-cited and seeded. The caravel refit range (proposal says CH_33-38), the research-vessel onset (CH_39+), the submersible-pod unlock, and the flyer-tender chapter are NOT hard chapter canon -- left blank in seeds, to be ruled by Josh before any acquisition_chapter_id is populated or a craft anchor is born-in to a spine chapter.
care_tier (enum) — standard | elevated | hard-line
frame_a_note (text) — freeform
l2_counts (bool) — true | false
sources (text) — semicolon-joined provenance
seed: MG_0001 | Caci (whip-and-shield honour duel) | Manggarai (Flores) | region_id=flores_island | chapter_id=CH_03 | tier=marquee | engine_family=duel-parry | ruleset={whip-strike vs shield-parry read; honour-scored rounds} | score_model={bronze=survive a round; silver=clean-parry streak; gold=win the ring; platinum=beat the ghost duellist} | reward={kit: whip flourish; standing: village respect} | first_play=debut duel taught in-ring as a story beat | boss_link=(blank) | situation_link=(blank) | link_rows=(blank) | significance_lens=E1-performance;D-prove-standing | care_tier=elevated | frame_a_note=living Manggarai tradition, secular honour-contest not a sacred rite | l2_counts=true | sources=aaa_ws1_opportunity_matrix; minigame-galaxy §5.1
seed: MG_0002 | Senet | Ancient Egypt | region_id=egypt | chapter_id=CH_15 | tier=structured | engine_family=board-of-fate | ruleset={race-and-capture on 30 squares; cast-stick movement} | score_model={bronze/silver/gold vs AI; platinum=beat the dev ghost} | reward={lore: games-of-fate link fragment; trade-xp} | first_play=learned at a Ch 15 board; a Duat-gate 'play for passage' taste that pays off at the Realm-Road Duat | boss_link=(blank at anchor; Senet-vs-Death BE authored at the Duat gate) | situation_link=(blank) | link_rows=(games-of-fate LINK, populated at Cross_Cultural build) | significance_lens=G-progression;E1-performance | care_tier=standard | frame_a_note=reconstructed ruleset; Book-of-the-Dead framing | l2_counts=true | sources=minigame-galaxy §2.5/§5.1
seed: MG_0003 | The Xibalba Ballgame | Maya (Popol Vuh) | region_id=xibalba | chapter_id=CH_71 | tier=marquee | engine_family=bespoke | ruleset={hip-ball rally; rigged-rules phases; out-play then out-trick} | score_model={gold=beat the rigged court; platinum=perfect-clear vs the cross-round-memory ghost court} | reward={cosmetic: flagship trophy; lore: capstone fragment} | first_play=the Realm-Road capstone, staged as the boss fight (boss-as-game) | boss_link=(blank at anchor; the Ch 71 Lords-of-Death BE row carries primary_verb=outplay, cross-linked when authored) | situation_link=(era-rhyme hook, WS6-pending) | link_rows=(blank) | significance_lens=G-progression;E1-performance | care_tier=elevated | frame_a_note=Popol Vuh myth staged as the fight; deities-real-portrayable; the ballgame is the fight not flavour | l2_counts=true | sources=minigame-galaxy §2.5 (flagship)
LOCKED-COUNTS GUARD: Touches NO locked count. mg_id is a NEW independent id space (MG_\d{4}) with no fixed cardinality -- bar-gated/open-ended per the proposal REC; whether the galaxy earns a canonical count is Josh's D-SYS flag, not decided here. chapter_id (79) / region_id (69) / boss_link (BE_) / link_rows (LINK_) are FK REFERENCES (read-only pointers) into existing spaces -- an MG row never mints a chapter, region
GATE NOTES: New-registry, not a column-extension -- the gate path differs from WS7 verticals that widen a frozen registry: (A) Declare base name "T0_Minigame_Registry" in docs/fidelity_baseline.json added_registries (currently []); without it the fidelity gate raises extra_registry (FAIL). The CSV (header + 3 seeds) MUST be created in the SAME commit -- a declared-but-unobserved registry is a baseline_stale FAIL (ghost-check). (B) Do NOT add it to docs/registry_extensions.json or to added_columns: a brand-new registry has no frozen _source reference pair, so it contributes ZERO added_columns and t
OPEN FLAGS (8):
Registry existence + count/caps: does the MG galaxy get a canonical count (like 72 weapons / 33 species) or stay open-ended/bar-gated? Proposal REC: bar-gated, no fixed count. CARDINAL numerical -- Josh's ruling before any count is asserted.
Boss-as-game vs the boss roster/counts: do fused game-bosses (primary_verb=outplay) count in any per-chapter/total boss numeric? Proposal REC: yes. Affects boss-count canon -- Josh's call; this wiring only cross-links existing BE_ rows.
Ratify the L2 completion condition as canon: 'Gold on every Tier-M and Tier-S game = Games Master' as the official, testable completionist definition.
Arcade room (Tier E) as canon + its home: Personal-Dimension hub + Ch 60 Tokyo diegetic find (Alt C = both).
Senet-vs-Death placement: a Ch 15 Duat-gate taste vs the Realm-Road Duat terminus vs both (proposal REC: taste-that-pays-off) -- affects MG_0002 chapter_id + boss_link timing.
Wager/economy confirm: coin/standing wagers allowed, and re-affirm the Ch 33-35 slave-trade-waters no-gambling-economy firewall.
STRUCTURAL DEPENDENCY (not a canon invention): the WS6 situation/era-rhyme registry does not exist yet (only T0_Scene_Spec_Registry + T0_Worldstate_Variables). situation_link's FK target is unresolvable until that registry is stood up -- the column stays format-only/unenforced until then; do not point it at Scene_Spec as a substitute without Josh's say.
Do-not-invent guard for population: an MG row must reference chapter_ids/region_ids/boss_ids that ALREADY exist; if a candidate game needs a chapter beat, region, or boss that is not canon, STOP and flag rather than fabricate a node/region/BE row.
environment — decision: mixed [STATUS: TODO]
NEW T0_Environment_Grammar_Registry — owner environment-grammar
attack_verbs (string) — ; -joined D-verb ids from fixed set D1_COLLAPSE|D2_IGNITE|D3_FLOOD|D4_AVALANCHE|D5_FREEZE|D6_CONDUCT|D7_FORGE|D8_GROUNDWAVE|D9_HURL|D10_VENT|D11_OBSCURE OR none
LOCKED-COUNTS GUARD: Zero locked counts touched. (a) New registry rows = terrain-feature CLASSES, a NEW ontology that is not any locked count -- 185 abilities, 72 weapons, 10 trades, 33 species, 22 familiars, 120 gates, 22 threads, 77 chapters all untouched. (b) T0_Region_Index gets COLUMNS ONLY, ZERO rows added -- the 69-region canon (76 registry rows incl. framing/dimensional nodes) is unchanged; added_rows for Regi
GATE NOTES: registry_extensions gate: add the 11 Region_Index columns under key 'T0_Region_Index/T0_Region_Index' as "environment-grammar": [...] in docs/registry_extensions.json AND mirror the identical list into docs/fidelity_baseline.json added_columns -- I1/I2/I3 then pass (real added_column, exactly one owner, no orphan). Do NOT reuse the attackability-owned names node_class/succession_chain/is_load_bearing on Region_Index (that sibling agent owns them); all 11 environment names are disjoint. fidelity gate: (1) create registries/'T0_Environment_Grammar_Registry [DRAFT v0.1]'/Sheet1.csv with the 18-co
OPEN FLAGS (7):
Fork 6 (environment-combat §9): does high altitude reduce atmospheric vril / d_local (thin vril with thin air) or is it purely a body-exposure hazard? Governs whether Ch 52 Uyuni / Ch 56-58 polar populate env_density_band_default (damaged) vs exposure_hazard=altitude. REC (weak): mild reduction, more diegetic. Josh's canon call -- the column holds either ruling; not invented.
Is WS_024's [0.0,2.0] the authority for INTRA-arena d_local, and may it vary within a single arena (spatial field) vs one value per region? env_density_band_default assumes a region default; confirm before the field is authored.
✅ RESOLVED (ratified-of-record, Josh 2026-07-20 — the underlying ruling was J7, 2026-07-13): the model is the HYBRID surface over the canon five systems — Health + Vril always-on core, ONE weapon-swapped Stamina/Rage slot, Runes/Ammunition as archetype overlays (T1_Combat_System_Spec L41 carries it verbatim). THE BINDING: exposure_hazard drains HEALTH + STAMINA (the body-survival pool, mechanically present for all archetypes even when the HUD swap-slot shows Rage) — never Vril, never Rage, never the density dial, per the 2026-07-17 C1 exposure ruling.
Confirm environmental combat rides CVD §12.2 mode #4 (Environmental hazards) and adds NO new combat mode (7-mode lock).
Sign-off that env_boss_verb_disabled + protected_care_ref/protected_terrain_ref denylist are the correct §9.2 env-boss and §17.1 sacred-site firewalls.
Terrain-alteration forks 8.1-8.6 are Josh's rulings, not invented: concealment-override ceiling; may the player deface a living NON-sacred community's ground at a faction/integrity cost (a §17.1 care call); do Evil-path scars ever become healable on a Good turn; per-biome heal-over timers + per-region persistence caps; integrity-skin extension to altered wild ground. The columns (alteration_permanence_default, terrain_integrity_skin, terrain_permanence_default) ANCHOR whatever Josh rules; values await him.
The EG_ id-prefix and the D1..D11 attack-verb id labels are Opus-proposed naming, not canon -- Josh may rename; no numerical/hard-line canon depends on them.
loyalty_belief_axis (token (controlled vocab, underscore)) — the companion's own integrity/value POLE, e.g. truth_witness_mercy | freedom_from_bondage_redemption | caci_honor_community | craft_and_lineage — compared against the player integrity band (WS_001/WS_002)
seed: WS_027 | companion_roster_state | object | domain=per-companion roster obj{character_id, loyalty_model, loyalty_state, loyalty_score(-100..+100), joined_chapter, last_integrity_signature} | default={} | consumers=party_manager, dialogue_resolver, no_dead_end_pathing_resolver, region_page_section_19_dispatcher, six_option_dispatcher | canonical_authority=companion-loyalty-integrity-system (Josh 2026-07-13) + attackability-and-consequence-model §31; T1_Integrity_Paths_Worldstates_Master §8 adjacent [OPEN: needs a canonical T1 companion section] | schema_version_introduced=1.1.0 | notes=live traveling-party ledger, membership+per-member loyalty SEEDED from T0_Character_Index loyalty_* anchors; integrity_score (WS_001) crossing a member's loyalty_departure_threshold drives departure, band alignment drives drawn_conditional joins; references WS_008 relationship_history for encounter history rather than restating it | extensions={}
seed: WS_028 | companion_loyalty_transition_events | object | domain=queued draw/leave events obj{character_id, event(DRAWN|WAVERING|DEPARTED|REBONDED), chapter, integrity_at_event, rerouted_paths[]} | default={} | consumers=party_manager, no_dead_end_pathing_resolver, quest_availability_resolver | canonical_authority=companion-loyalty-integrity-system (Josh 2026-07-13) | schema_version_introduced=1.1.0 | notes=fires when integrity crosses a member's threshold or aligns with a drawn_conditional belief_axis; every DEPARTED event MUST carry a non-empty rerouted_paths[] (no-dead-end contract, harness/check_no_dead_end.py) | extensions={}
LOCKED-COUNTS GUARD: No LOCKED count is touched. The 6 columns are ADDED beyond Character_Index's frozen 12-wide _source reference (schema extension in the pinned spill zone — it does not widen or renumber any locked roster). The 2 worldstate variables extend an OPEN operational registry; WS_027/WS_028 continue the WS_0NN LABEL sequence (26 existing -> 28), which is an id-labeling sequence, not a locked count. Compani
GATE NOTES: EXTEND (T0_Character_Index): append the 6 columns AFTER frozen column 12 (extensions), so cand_hdr[:12] == frozen ref_hdr and the column_extension check passes. Then (a) declare all 6 in fidelity_baseline.json added_columns["T0_Character_Index/T0_Character_Index"] (currently absent — this registry has added_rows:44 but no added_columns yet); (b) attribute all 6 to the single owner "companion-loyalty" in docs/registry_extensions.json extensions["T0_Character_Index/T0_Character_Index"] so check_registry_extensions.py I1/I2/I3 pass (real added_column, exactly one owner, no orphan). IMPORTANT: t
OPEN FLAGS (6):
Per-companion loyalty ASSIGNMENTS are characterization canon: which canonical companion gets which loyalty_model / belief_axis / departure_threshold / join_trigger is Josh's call. The CHAR_0002 (for_life) / CHAR_0017 (come_and_go) / CHAR_0127 (drawn_conditional) seeds are illustrative reads for the schema only — do NOT mass-populate the ~30 companion rows before Josh ratifies the roster-wide mapping.
loyalty_belief_axis controlled vocabulary (the enumerated set of value-poles companions stand for) is naming canon — propose a set aligned to T1_Integrity_Paths bands for Josh to ratify; seeds use provisional tokens.
Canonical authority doc: the companion-loyalty system currently exists only as a memory (companion-loyalty-integrity-system) + attackability-and-consequence-model §31 (a proposal). WS_027/028 canonical_authority points there provisionally — decide whether to author a T1_Companion_System section or extend T1_Integrity_Paths_Worldstates_Master to OWN this system (worldstate rows conventionally cite a T1 section).
Confirm WS_027 companion_roster_state does NOT duplicate the existing WS_008 relationship_history (general per-NPC ledger) or WS_012 familiar_bond_state (familiars) — recommend WS_027 REFERENCE WS_008 for encounter history rather than restate it; architecture confirm.
Departure semantics: the exact integrity_score / integrity_level crossing that constitutes 'complete_opposition' vs 'major_opposition' for each threshold is a tuning value (Fable-5 / authoring) — flagged as tuning-deferred, NOT invented here.
Coordination (not Josh-canon): attackability_tier (=bonded / Tier-3 for companions, per attackability-and-consequence-model) is owned by the SIBLING attackability WS7 subsystem, not companion-loyalty (one-owner-per-column rule). Ensure that subtask, not this one, declares attackability_tier; companion-loyalty only consumes it.
seed: CHAR_0002 Ntala (primary_human_companion): attackability_tier=bonded | is_load_bearing=true -- Tier-3, betrayal is a maximal-cost dark beat; diegetically protected at story-critical beats
seed: CHAR_0003 The Architect (antagonist_family_role): attackability_tier=hostile | is_load_bearing=false -- Tier-1 intended combat target, free to attack, rewarded
seed: CHAR_0109 Meryre (revered real historical figure, §17.1 reframe): attackability_tier=protected-collective | is_load_bearing=true -- quest-giver/witness, never statted as a boss or kill-objective [values bystander + shielded illustrated in column format, not seeded to a real id]
seed: CHAR_0003 The Architect: companion_loyalty_tier=n-a -- non-companion antagonist
seed: [archetype: an ally who joins on shared integrity and departs when the player's actions oppose their beliefs]: companion_loyalty_tier=come-and-go
node_class (enum(string)) — story-anchor | transferable | protected (doc §53-57; regions ARE the nodes). ✅ RULED (Josh 2026-07-20): the three values are the standing model, and node_class on T0_Region_Index is the region DEFAULT (the dominant register), NOT an exhaustive per-site label — sacred-site protection rides the per-zone protected boolean and community protection rides the §17.1 collective firewall, independently. A heterogeneous region may carry a per-ZONE override in its region page's Zone Catalog (the standing mechanism, ruled on the sumatra_java palembang_port case): a zone already protected=false may carry node_class=transferable + a succession_chain scoped strictly to the apparatus/economic control, never a community or sacred zone.
succession_chain (string (packed ordered list)) — '>'-separated faction slugs (lowercase_snake), highest-priority successor FIRST; empty for protected / story-anchor nodes with no lawful-holder transfer. ✅ RULED (Josh 2026-07-20): the slug domain is a CLOSED controlled vocabulary — {thieves_guild, bandit_crew, dark_cult, rival_warlord, rogue_militia, player_dark_faction, broker_cartel} (the doc-§46 archetypes + the broker/mercantile-cartel role the Palembang case proved missing) — validatable now, DRAFT-extensible by ruling. Named factions mint ONLY at quest-authoring time via the naming method, as SPECIALIZATIONS of an archetype (a named successor IS-A its archetype), at which point a T0_Faction_Registry lands and this column upgrades to a declared FK.
seed: fairy_realm: node_class=story-anchor | succession_chain=(empty) -- main-spine node; not murder-gated; beats play integrity-mirrored [ILLUSTRATIVE — per-node class is spine canon, see open_flags]
seed: flores_island: node_class=protected (region DEFAULT per the 2026-07-20 ruling — the transferable broker-apparatus layer moves to a per-ZONE sublane in the region page's Zone Catalog, succession scoped to the apparatus, never the community)
LOCKED-COUNTS GUARD: No locked count is touched. All three targets are COLUMN extensions to existing registries (Character_Index, Region_Index) — appended beyond the frozen reference width (Character_Index frozen=12 cols, extension zone starts at col 13 after extensions; Region_Index frozen=8 cols, extension zone starts at col 9 after last_updated). Column extensions never change added_rows, so no rows are creat
1. Append the new columns to each live CSV, populating ALL rows (2-3 illustrative seeds + empty/n-a placeholders for the rest — the extension_hashes pin covers the whole extension zone across every row, so blanks are fine but every row must have the cells).
2. Declare ownership in docs/registry_extensions.json: add key "T0_Character_Index/T0_Character_Index" -> {"attackability": ["attackability_tier","is_load_bearing"], "companion-loyalty": ["companion_loyalty_tier"]} and key "T0_Region_Index/T0_Region_Index" -> {"node-succession": ["node_class",
OPEN FLAGS (6):
Per-node node_class assignment for REAL regions (which communities are story-anchor vs transferable vs protected) is spine/chapter canon — it designates which nodes are main-spine-critical — so Josh authors it; the Region_Index seed values here are ILLUSTRATIVE only. Do not bulk-assign node_class as canon from this anchor.
The is_load_bearing FIGURE set — the narrow roster of diegetically-resilient main-story characters (doc §55/§65) — is spine canon. Do not invent which characters are load-bearers; author true only on Josh-designated main-story figures.
No FACTION registry exists yet, so succession_chain has no FK target. When a Faction (or Antagonist-faction) registry lands, add a declared FK: succession_chain -> Faction.faction_id with multi_value_separator '>'. The per-node successor ROSTERS are Fable-5 / authoring tuning (doc §68) — the seed uses doc §46 generic archetypes (thieves_guild/bandit_crew/player_dark_faction), not a canon roster.
PLACEMENT: hint put is_load_bearing on Region_Index; I placed it on Character_Index per doc §65 ('the narrow story-critical figures') to avoid redundancy with node_class=story-anchor. Confirm this placement is acceptable.
companion_loyalty_tier is co-located on Character_Index but 'companion' is a SEPARATE WS7 vertical (per registry_extensions.json _note). Its owner slug companion-loyalty must be declared EXACTLY ONCE — coordinate so the companion vertical reuses this slug/column rather than re-declaring it (the one-owner-per-column gate FAILs on a double-owner). The proposed enum {n-a|come-and-go|drawn|invested|for-life} is drawn from the companion-loyalty-integrity memory and should be ratified by that vertical.
The consequence-ENGINE runtime state (witness-memory, settlement disposition, reputation, community-resilience/repopulation cadence, escalation ladder, node-control handoff) rides T1_Integrity_Paths worldstates (T0_Worldstate_Variables) and belongs to the reputation/integrity WS7 wiring task, NOT this attackability anchor — deliberately out of scope here. The single-run-total vs TRACK-RELATIVE completion fork (doc §68) + escalation/repopulation tuning is Josh-final / Fable-5.
LOCKED-COUNTS GUARD: No LOCKED count is touched. (a) 10 trades: T0_Trade_Registry gains COLUMNS only — still 10 TRADE_ rows; HL_0033 (10 trades x 2 homes) and HL_0082 (4 compounds) are REFERENCED, never modified — no 11th trade, no new home-base slot. (b) 69 regions / 77 chapters: T0_Dwelling_Registry.region_scope and .chapter_available_from FK-reference EXISTING region_id/chapter_id only (or TBD_JOSH); no region or c
GATE NOTES: NEW registry (T0_Dwelling_Registry): create registries/T0_Dwelling_Registry [DRAFT v0.1]/T0_Dwelling_Registry.csv — name the CSV/tab so its base_name is 'T0_Dwelling_Registry' (pair key T0_Dwelling_Registry/T0_Dwelling_Registry). Declare base name 'T0_Dwelling_Registry' in docs/fidelity_baseline.json added_registries[] or registry_fidelity F9 (extra_registry) FAILs. Register in docs/fk_spec.json registries[] with primary_key=['home_id'] and id_formats.home_id={pattern:'DW_\\d{4}', min_values:3} for pk-uniqueness + format validation; DEFER foreign_keys (region_scope, chapter_available_from) unt
OPEN FLAGS (8):
Fork 9.1 (naming canon) — ratify the dwelling-home / world-home category name + canon status. DW_0002 is held canon_status=LATENT_PENDING_JOSH until ruled; REC per proposal = 'dwelling-home' canon term, 'world-home' player-facing label.
Fork 9.2 (§17/system canon) — the monopoly darkness ceiling for WS_027 trade_sovereignty_valence: how deep the extractive/Velheim-way band may immiserate a region. Held as domain field ceiling_TBD_JOSH.
Fork 9.3 (numerical canon) — all base caps: max concurrent dwelling-homes, module budget per home, pre-Tier-6 paddock cap, and the PD '200+' housing figure. creature_capacity_band held TBD_JOSH; asserts no count.
Fork 9.4 (chapter canon) — the Layer-B entry-unlock chapter for the hearth/camp -> world-home. DW_0002.chapter_available_from=TBD_JOSH; REC early ~Ch 7+.
Personal Dimension unlock chapter (chapter canon) — the Tier-6 Adeptus Minor Crown questline chapter number. DW_0001.chapter_available_from=TBD_JOSH.
Fork 9.5 (system canon) — extend integrity-visible aesthetics to Layer-B world-homes? integrity_visible=full_PENDING_JOSH on DW_0002; needs T1_Integrity_Paths_Worldstates §8.9 authority sign-off (REC yes for world-homes, NO for trade home-bases per the care firewall).
Fork 9.6 (living-source doc edit auth) — authorize the one-line T1_Trades_Master §7 line-206 label fix 'Ch 56 Pacific Northwest' -> 'Arctic (Greenland)' (grounded stale-label kill, but it touches a T1 doc; Trade-10 Ch 56 Arctic assignment itself is already canonical and needs no change).
Compound<->trade pairings for T0_Trade_Registry.compound_membership must be POPULATED FROM HL_0082 canon at population time, not invented (the TRADE_03->The_Forge seed is marked VERIFY). Only 'Trade 1 & 10 = none_field_infrastructure' is asserted here as proposal-canon (§3.4); flag any ambiguous pairing rather than guessing.
variable_id (string) — WS_dddd; seeds start WS_027 (current max WS_026)
variable_name (string) — snake_case
type (enum) — integer|enum|float|object|array
domain (string/object) — band set / object schema / range
default (scalar/object) — e.g. {} , 0 , NONE
consumers (string-list) — comma list of runtime consumers
canonical_authority (string) — doc + section
schema_version_introduced (string) — 1.0.0
notes (string) — free text
extensions (object) — {}
seed: WS_027 | reputation_tier_per_faction | object | per-faction {faction_rep_id->RN_, tier in HOSTILE|NEUTRAL|FRIENDLY|HONORED|REVERED|EXALTED (antagonist analog TURNED|REDEEMED|INFILTRATED|SWORN_IN), standing_value_ref->WS_021} | default {} | consumers: reward_unlock_dispatcher, NPC_dialogue_dispatcher, quest_availability_resolver | auth: reputation-prestige-nemesis A + T1_Integrity_Paths 8.7 | note: band derived from WS_021 numeric, do not duplicate the raw value
seed: RN_0003 | [opposed-culture track name POPULATE-Josh] | CULTURE | culture_region_id=[->Region_Index, POPULATE] | ladder_analog=WOW_STANDARD | tier_thresholds=[TUNE-Fable5] | exalted_reward_ref=[POPULATE-Josh] | exalted_reward_class=[POPULATE] | trade_off_pair_partner=RN_0002 | asymmetric_bridge_ref=[shared-cause quest POPULATE] | reveal_gated=FALSE | reveal_gate_anchor=blank | src B (the impossible-peace pair to RN_0002)
LOCKED-COUNTS GUARD: Adds worldstate variable rows + one new per-faction registry; touches none of the nine locked counts. 77 chapters: prestige/NG+ are difficulty modifiers + endgame worldstate, and the easter-egg alt-epilogues are variants of the existing three-ending endgame, so zero chapters/nodes are added. 22 familiar slots + 33 species: Exalted rewards POINT AT existing familiar/mount/creature entries, never ad
GATE NOTES: Worldstate rows (Target A): bump added_rows["T0_Worldstate_Variables/Sheet1"] from 1 to 1+N and REFRESH extension_hashes["T0_Worldstate_Variables/Sheet1"] via python harness/registry_fidelity.py ... --emit-baseline in the SAME commit (memory gate-verification-gotchas: --emit-baseline lives on registry_fidelity.py, NOT run_gates.py). These are added_rows, not added_columns, so docs/registry_extensions.json is NOT touched (that manifest owns columns only); the ownership_system slug reputation-nemesis labels the vertical but needs no manifest entry because no frozen registry is widened. New reg
OPEN FLAGS (8):
FACTION/CULTURE REPUTATION ROSTER (naming canon): which factions/cultures get reputation tracks, their canonical NAMES, and whether cultures map 1:1 to the 69 regions or are a distinct faction set. Anchor schema is creatable now; full RN_ population needs Josh's roster. Do-not-invent binds.
PER-CULTURE EXALTED REWARD SET (Fable-5 + Josh): the culture-authentic mount/familiar-line/recipe/technique/base-upgrade/title/cosmetic/quest per track, plus the Exalted-with-ALL capstone. Rewards must POINT AT existing familiar (22) / species (33) / recipe entries, never add a slot.
REPUTATION TIER THRESHOLDS + ASYMMETRIC-REP VALUES (Fable-5 numerical): the band cutoffs and the +A/-B action values that make the trade-off optimization possible without being trivial.
TRADE-OFF PAIR GRAPH + SHARED-CAUSE BRIDGE QUESTS (canon relationships): which faction pairs are mutually opposed (trade_off_pair_partner) and which diplomacy/shared-cause quests (asymmetric_bridge_ref) enable the impossible-peace net-positive sequence.
ENEMY-EXALTED EASTER-EGG TRACK (endgame canon, reveal-discipline critical): the exact hidden unlock method, which antagonist factions support it, and the alternate easter-egg EPILOGUE endings roster. MUST stay gated >= Ch 76 / post-game; the reveal ladder is untouched.
PRESTIGE + NG+ (Fable-5): the exact prestige-advantage magnitude, how load-bearing NG+ tuning makes it, deeper prestige-tier extension, and the NG+ carry-forward selection set (which reputation/companions/tamed-bred creatures/mastery persist heirloom-style).
NEMESIS ADAPTATION BOUNDS + MERCY-FLOOR CURVE (Fable-5): the closed Sigma-bounded per-boss grammar and the death-streak -> telegraph-tell mercy curve. Anti-tilt (never a per-death HP/damage spiral, bounded fair grammar, mercy tell after a run of deaths) is a HARD design constraint; only the numeric curve is open tuning.
CONFIRM nemesis_memory_per_boss persists on Boss_Encounter.boss_id as the stable cross-death key (minor: verify boss_id is the durable per-boss identity across role-continuity champions).
seed: WS_028 | worn_rune_loadout | object | equipped rune_id set per gear/vril-seat channel (worn, not consumed) — the B1 'cast via consciousness-op, no hotbar' binding surface | default={} | consumers=cast_resolver, HUD, care_validator | authority=combat-and-spellcraft §2.4/§2.6
LOCKED-COUNTS GUARD: No LOCKED-count registry gains or loses a row. 185 ABILITIES: the ability-tree change is columns-only (row count stays 185); merge_base_eligibility structurally encodes that a custom spell is a PARAMETERISATION of BASE-eligible rows, never a 186th ability — and the new T0_Rune_Registry lives in a separate RN_dddd id space (runes are components, not abilities). 72 WEAPONS: weapons gain a delivery-s
GATE NOTES: NEW registry T0_Rune_Registry: hand-author registries/T0_Rune_Registry/Sheet1.csv (survives convert_registries.py — the converter only writes _source-derived CSVs and never wipes registries/); declare in docs/fidelity_baseline.json added_registries += ["T0_Rune_Registry"]; add a docs/fk_spec.json registries[] entry (primary_key ["rune_id"], id_formats.rune_id.pattern "RN_\\d{4}" with a low min_values for the anchor, and an OPTIONAL sparse FK acquisition_chapter_ref -> T0_Chapter_Index.chapter_id mirroring T0_Weapon_Registry's blank-tolerant pattern). A brand-new registry is NOT extension-hashe
OPEN FLAGS (9):
Fork A final ruling (Josh): parameterisation A1 — this schema's assumption — vs a bounded personal-spell COUNT A2 (e.g. 22 slots). A2 adds a canonical count and would put a cap on WS_027. Rec A1.
Rune rarity-tier canonical count/names: COMMON/RARE/EPIC/LEGENDARY in rarity_class + the seed rows is ILLUSTRATIVE; the canonical tier set is Josh's (numerical/naming canon).
Worn rune-inscription OPERATOR-SET SIZE (how many distinct operators/runes exist) — numerical, Josh's; the schema holds any N, seeds do not assert it.
split_N caps per vril-seat tier — numerical, Josh's; lives in the WS_027 knobs object, not asserted.
Enchantment-rune (C5) source (crafted vs dropped vs both), which items carry slots, slot counts per tier, the affix/effect pool, and the re-roll cost/curve — all numerical, Josh's; rune_lane=ENCHANTMENT_AFFIX + reroll_model=INNOCENT_RNG_TUNE anchor the schema without the numbers.
Fork B ruling: inscribe-to-apparatus / worn-loadout (B1, WS_028's assumption) vs a prepared-spell wheel (needs an explicit 'not-a-hotbar' ruling). B2 would give WS_028 a bindable-at-once cap.
Seed-row chapter/drop anchors CH_XX / DROP_XXXX in RN_0002 are PLACEHOLDERS — the real chapter/site/drop anchoring is Josh's/population's (do-not-invent chapter assignment).
Resource-bar model (C2/C6: Health-stack / vril-bubble-layers / Stamina-Rage weapon-swap slot, fifths-per-unit, stacked-bar caps, exploration-grows-MAX for non-vril bars) is NEW systemic canon owned by a HUD/resource subsystem + Josh — deliberately NOT claimed by combat-spellcraft here (no WS_029 asserted).
Sign-off that legendary-rune drops attach to the 72 Legendary-weapon questlines (composition, not a count change).
SEED STATUS (Josh, eighth and ninth sittings 2026-07-27; ruling record docs/spine/DECISIONS_PENDING_JOSH.md; integration record docs/pipeline_review/HOLLOW_EXPANSION_INTEGRATION_2026-07-27.md §4.7 and §4.9). HW_0001 LANDED but diverges from the seed above in ten of fourteen columns, including an unauthorized chapter_window and region_id, a stripped [Josh-name pending] marker, and a care_register silently downgraded from R17 to standard; the repair is director-owned as integration-record item X-5. HW_0002 was specified and NEVER LANDED, and it is authored under item X-6 with a NON-family-derived locus per the care mitigation. Three parts of both seeds have moved under the rulings and must not be applied as drafted: purify and harvest are RETIRED synonyms, so the fork vocabulary becomes NONE, CLEANSE and ABSORB with the old tokens kept in notes; reveal_tier takes the FIVE-gate ladder and perception_gate the three-rung perception ladder; and HW_0001 is promoted to the singular CLASS row, with instance rows reserved for whisper-tier observation records.
EXTEND T0_Boss_Encounter_Registry/Sheet1 [stub_superseded — extend via stub refresh, NOT added_columns] — owner collectibility-ontology
seed: WS_039 | hollow_containment_fork_last | enum(NONE|PURIFY|HARVEST) | NONE | integrity_score_resolver, world_state_resolver | creature-system.md FU.2 (purify/harvest feeds integrity; never a power gate)
KEY CORRECTION (2026-07-27 — integration record X-3): this seed was drafted as WS_029, off the "next free = WS_027.." run above. It LANDED at WS_039 — registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv row 40 reads WS_039 | hollow_containment_fork_last — and WS_039 is the live key every consumer cites. Live WS_029 is trade_sovereignty_valence (base-building), so the WS_027/028/029 run is broken here by design, not by error. The separate WS_029 collision at L230 (dwelling_home_ledger) is a different, non-Hollow defect (integration record C-15) and is deliberately NOT repaired by this correction.
LOCKED-COUNTS GUARD: No LOCKED count is touched. (33 legendary species) offspring_tier_lock='ordinary' hard-codes HL_0057/HL_0058 so husbandry NEVER produces a 34th legendary or a canonical evolution (Koi->Dragon, Sea Turtle->Cosmic, Raven->Huginn-Muninn stay inviolate); ontology_class=LEGENDARY is only a TAG on the existing 33, minting none. (22 familiar slots) the husbandry pool is gated to TAME-status species (husb
GATE NOTES: Four gate paths, all --emit-baseline'd in the SAME commit; run harness/run_gates.py UNPIPED afterward (a piped tail masks a red exit — memory gate-verification-gotchas). (A) Creature_Roster (2 targets, one registry): append the 8 new columns AFTER the current last col (source_ref); add all 8 to added_columns['T0_Creature_Roster/Sheet1'] (extending the existing 11 to 19); attribute in registry_extensions.json under TWO NEW kebab slugs — creature-husbandry (husbandry_breedable, offspring_tier_lock, husbandry_venue, trait_halo_pool, temperament_prior) and collectibility-ontology (ontology_class,
OPEN FLAGS (8):
FORK 1/6 (cardinal — new phenomenon-class): does the Hollow / negative-vril blight enter canon at all, with the CONTAIN-blight verb + purify/harvest integrity fork? The T0_Hollow_Codex SCHEMA is built gate-safe, but building the schema does NOT ratify the class — its admission is Josh's. Recommendation: admit as OBSERVE/CONTAIN-class outside the 33/22 (design §5 rec b + FU.6 rec yes).
FORK 2 (naming canon — Josh): the Hollow's in-world name. manifestation_designation seed cells are placeholders. Recommendation: common name 'the Hollow', design/class term 'substrate-echo'. Do-not-invent naming -> Josh.
FORK 3 (§17.9 reveal — hard-line): reveal-tie of the Hollow. reveal_tier const encodes the SAFE default (surface blight legible; depth post-Ch76). Recommendation: pure atmosphere pre-Ch76, meaning strictly Layer-3. The reveal-window is Josh's §17.9 call.
FORK 7 (cardinal — ratify the ontology map onto Creature_Roster + Boss_Encounter rows): the COLUMNS are schema-safe, but per-row ontology_class ASSIGNMENT (which being is SACRED vs CONDEMNED vs AMBIVALENT vs CONSTRUCT) is canon/§17.1 -> Josh. Especially: which real living-tradition sacred beings are tagged SACRED (they must be structurally uncapturable — DOCUMENT/FREE/ALLY only).
FORK 8 (scope/care — Josh): the EARN lane (ambivalent folk-being companions). collect_verb=EARN + ontology_class=AMBIVALENT enum values exist and the map degrades cleanly if empty, but WHICH beings and HOW MANY (recommended ~6-12, each care-vetted) is Josh's. Never a being any community holds sacred (that is SACRED) or condemns as evil (that is CONDEMNED).
FORK 9 (care hard-line — Josh): formalize the sacred-set invariant (living-tradition sacred beings are never in any capture/contain/tame lane) as a §17.1 coupling. This likely wants a NEW HL_ id — minting a hard-line id is cardinal -> Josh. The wiring encodes it as a convention (restore_target/collect_verb=FREE_ALLY) but a hard line needs Josh's ruling.
Chapter assignment (do-not-invent): any SPECIFIC first-discoverability chapter for a Hollow, or a hard CH_ window, is a chapter-assignment call -> Josh. chapter_window is anchored to 'deadzone/extraction-scar availability', not a locked CH_, until Josh sets one.
Living-source cleanup surfaced by the design (grounded, not new canon): the stale familiar name 'Bodhi' persists in ~8 _source files vs the ratified 'Muthu', and T3_Creatures_Tameable is internally inconsistent on the roster count (200+ vs 400-plus). Not part of this wiring, but flagged per creature-system.md §4.
Generated by harness/site/structure_site.py — the URL path is the repo path. review root