pipelines/CASCADE_RUNBOOK.md
This runbook makes the Phase 6 spine procedure executable by a Claude Code agent, per the ROADMAP 0.B work order [SRC: ROADMAP # 0.B Cascade runbook]. It is a supersedes-per-section overlay on the Drive-era operational handbook T99_Story_Spine_Build_Logic [ACTIVE v3.2] (the SSBL): for each SSBL step and protocol it either AFFIRMS the section as written or states the repo-native replacement, always citing the SSBL section it overlays. The SSBL stays frozen under _source/ and stays authoritative for creative logic — session discipline, prose voice and scope, decision-marker discipline, cultural authenticity at prose layer, the anti-drift protocols, Appendix A question sets [SRC: T99_Story_Spine_Build_Logic # Section 0]. Where this runbook is silent, the SSBL governs as written. Where the two conflict on execution mechanics, this runbook governs, because the mechanics the SSBL assumes (Drive docs, Sheets access, memory markers, a ChromaDB corpus layer, per-project custom instructions) no longer exist in the repo-native operating model [SRC: OPERATING_MODEL_REVIEW].
harness/lint_canon_format.py; source anchors on every load-bearing claim, machine-checked by harness/check_source_anchors.py [SRC: T1_CVD_Creative_Vision_Document # §20. AUTHORING OUTPUT STANDARDS] [SRC: T1_CVD_Creative_Vision_Document # 17.14 Authoring discipline].Overlays SSBL Sections 2 and 3.
docs/spine/ plus structured-field scatter to the live registries/ CSVs (Section 4 below), replacing the T1_Story_Spine Drive-doc append and T0 sheet writes.No skipping, no reordering [SRC: T99_Story_Spine_Build_Logic # Section 6 — Per-Session Execution Procedure].
As written, with the Section 2 repo targets above [SRC: T99_Story_Spine_Build_Logic # Step 1 — Load Session Identity].
The SSBL gates on memory markers, Drive placeholders, and custom-instructions versions [SRC: T99_Story_Spine_Build_Logic # Section 1 — Activation Preconditions]. Markers and CI are dead mechanisms; git and the filesystem are the state check. The session verifies, and halts with a flag on any failure [SRC: T99_Story_Spine_Build_Logic # Step 2 — Verify Activation Preconditions]:
_source/01_Tier_1_Foundation/T1_CVD_Creative_Vision_Document [ACTIVE v1.4].md exists and is the highest CVD version in the repo [SRC: T1_CVD_Creative_Vision_Document # §0. ORIENTATION].T1_Story_Spine [ACTIVE v1.0] exists as the enhancement baseline. This supersedes the SSBL precondition that the spine doc be an empty placeholder — the enhance ruling makes the populated v1.0 doc the expected state [SRC: ROADMAP # Josh's standing rulings].registries/ CSVs present and harness/run_gates.py exits 0. That exit code is the whole definition of green: the committed baseline files (docs/fidelity_baseline.json for intended live-layer edits, docs/scan_baseline.json for accepted source findings, docs/topography_baseline.json for Josh-held rule waivers) are the declared-divergence contracts the gates already run against, so a passing run is automatically "net of committed baselines" — a cold session never has to judge whether a FAIL is acceptable, because no FAIL is. Start-gate dependency stated explicitly: the topography gate requires the 0.D.1 per-chapter column population [SRC: ROADMAP # 0.D Registry population]; that population is complete (79 of 79 nodes populated, gate PASS with waivers recorded in the baseline as of 2026-07-03). Any gate regressing to FAIL, or any stale baseline entry, halts the session at this step with a flag.spine/rr-NN exists in git and no unresolved blocking markers remain from it (Section 7 below). This is the repo form of the marker-based gate [SRC: T99_Story_Spine_Build_Logic # 7.1 Range Review Gating].The Section 4.1 fourteen-doc manifest loads from _source/01_Tier_1_Foundation/ by base name [SRC: T99_Story_Spine_Build_Logic # 4.1 Always-Loaded Foundation]. Two repo additions join the always-loaded set: this runbook, and the live revision log docs/SPINE_LIVING_REVISION_LOG.md [SRC: SPINE_LIVING_REVISION_LOG]. The T1_AaS load is reference-only with a caution: its body carries stale phase, version, and consumer-rule text superseded by repo state; the roster section is current, the rest is pending its own refresh pass (ROADMAP 0.B.8) [SRC: T1_Architecture_and_State # Workflow Sequence]. Missing doc still means flag and halt [SRC: T99_Story_Spine_Build_Logic # Step 3 — Load Foundation Docs].
python harness/enrich.py chapter CH_NN --json (the cascade author AND the fresh-context critic both read the --json form, which is complete/untruncated — text mode truncates RCM/boss for human skim only) assembles the COMPLETE cited context pack for the chapter in one call: the canon-graph node (via recall.py — the registry rows plus every doc that references the chapter), the chapter's T1_RCM substrate section, its boss(es) and personas from docs/proposals/BOSS_PERSONAS.md, the T0_Thread_Grid cells advancing, and pointers to the Session-6 design-system docs the chapter is built within (docs/COMBAT_ENCOUNTER_SYSTEM.md, docs/RUNTIME_GENERATIVE_LAYER.md, docs/SCIENCE_GROUNDING.md, docs/proposals/CHAPTER_BUILD_TARGET.md, docs/NAMING_METHOD.md) plus the 12 CVD pillars, the 20 weavings, and the 3 player layers. This is the /dev/continuo enrichment-on-query pattern applied to authoring: the pack is the single grounded context the author writes from AND the fresh-context critic validates the draft against — so every step and every thought is enriched with canon, and anything not in the pack is not canon (ground it or flag). Enrich.py + recall.py + the graph gate are the always-on enrichment spine for the whole cascade and every downstream Milestone engine.Sheet access supersedes to the live-canon CSV layer: registries/<name>/<tab>.csv, frozen baseline in _source/00_Tier_0_Master_Indices/ [SRC: T99_Story_Spine_Build_Logic # 4.2 Tier 0 Registries Lookup]. Read the chapter row and its foreign keys from T0_Chapter_Index, other registries on demand at field population [SRC: T99_Story_Spine_Build_Logic # Step 4 — Load Tier 0 Registries] [SRC: T0_Chapter_Index @ CH_02]. FK integrity is the harness's job, not the session's memory.
T3_Core_Characters, T3_Supporting_Characters, T3_Familiars_Named, T4_House_of_Velheim_Canonical, from _source/03_Tier_3_Characters/ and _source/04_Tier_4_Antagonist/ [SRC: T99_Story_Spine_Build_Logic # 4.3 Character and Antagonist Reference] [SRC: T3_Core_Characters] [SRC: T4_House_of_Velheim_Canonical].
Three reads, in order [SRC: T99_Story_Spine_Build_Logic # Step 6 — Load Continuity Anchor]:
docs/spine/ — the continuity anchor. Previous end state equals current start state, hard constraint, seven extracted fields as written (age, companions, familiars, homes, attachments, identity-hiding array, path states) [SRC: T99_Story_Spine_Build_Logic # 9.3 Protocol 3].docs/SPINE_LIVING_REVISION_LOG.md, extracting entries affecting this chapter, applied at Step 9 scatter [SRC: SPINE_LIVING_REVISION_LOG].The Ch 2 special case is AFFIRMED: no v2.4 predecessor exists; derive the start state from the Ch 1 canonical framework and flag it explicitly [SRC: T99_Story_Spine_Build_Logic # Step 6 — Load Continuity Anchor].
The SSBL executes a §8 Book Processing corpus query — ChromaDB plus a query script at Drive-era paths [SRC: T99_Story_Spine_Build_Logic # Step 7 — Stage 1 Substrate Read plus Goal Anchoring Preamble] [SRC: T1_Build_Pipeline_Contracts # 9.9 Cross-Pipeline Linkages]. That call is retired, for three verified reasons:
Replacement substrate, in priority order: the chapter's T1_RCM section (per-chapter research anchors, e.g. the Ch 42 entry) [SRC: T1_Research_Corpus_Master # Ch 42 Haiti]; T0_Research_Corpus_Registry rows scoped to the chapter [SRC: T0_Research_Corpus_Registry]; and a deep-research subagent for gaps the RCM flags, adversarially verified and cited before use. Substrate gaps that survive research escalate as canonical-substrate-gap flags rather than being papered over [SRC: T99_Story_Spine_Build_Logic # Step 10 — Stage 4 Author Review plus Stage 5 Refinement or Rejection].
The GOAL ANCHORS preamble is AFFIRMED as written — all fourteen fields, with the corpus-results field re-pointed to the RCM-plus-deep-research results. The rule stands verbatim: every field of the produced entry must trace to at least one anchor; unanchored content equals drift [SRC: T99_Story_Spine_Build_Logic # Step 7 — Stage 1 Substrate Read plus Goal Anchoring Preamble]. Repo strengthening: produced entries carry explicit SRC anchors in the doc-plus-section syntax defined by harness/check_source_anchors.py, and that script proves each one resolves — the goal-anchor discipline becomes machine-checkable.
Hard-line chapters only, plus one SSBL-authorized exception: an unmigrated Appendix B entry surfaces as an ad-hoc Stage 2 at the chapter where its canonical content first applies, whatever that chapter's hard-line status — the SSBL's Migration Execution text routes Entries 18-21 to Stage 2 at non-hard-line Ch 11, so the fallback carries its own slot (Step 2 precondition; Section 9) [SRC: T99_Story_Spine_Build_Logic # Migration Execution]. Otherwise as written: questions per Appendix A category sets; resolutions are durable canon feeding T1 patches, T0 rows, or CVD §19 entries; deferrals are documented flags in the scatter [SRC: T99_Story_Spine_Build_Logic # Step 8 — Stage 2 Canonical Question Review] [SRC: T99_Story_Spine_Build_Logic # Appendix A — Stage 2 Canonical Question Review Reference]. Repo addition per the autonomy contract (Section 10): the agent pre-drafts the Appendix A question set with a researched, proposed resolution per question, so Josh's Stage 2 pass is a decision batch, not a research session. Ch 67-69 questions use the CVD v1.4 names — the v3.2 SSBL Appendix A already carries them correctly [SRC: T1_CVD_Creative_Vision_Document # 17.7 Naming hard lines].
generation_prompt_hash was a hash of composed authoring intent, recomputed on cadence [SRC: T1_Build_Pipeline_Contracts # 9.7 Spine Status, the Machine Gate, and Regeneration Triggers]. There is no composed prompt to hash. Repo replacement in Section 6 below: the column stores the entry's tag reference spine/ch-NN — a value knowable while authoring, unlike the tagged commit's own SHA — and regeneration detection is a git diff over the chapter's load manifest since that tag, resolved to its SHA at check time. Strictly stronger than a prompt hash, because it fingerprints the actual input state rather than a prompt string, and satisfiable under the one-commit rule.The post-draft nine-item checklist, run by the authoring session on its own complete draft [SRC: T99_Story_Spine_Build_Logic # Step 9 — Stage 3 Baseline Authoring Compose and Execute]:
The first-line Stage 4 reviewer supersedes from per-chapter Josh review to a fresh-context adversarial critic subagent — the standing normalization gate. The critic loads canon cold, then verifies the eight Stage 4 criteria as written [SRC: T99_Story_Spine_Build_Logic # Step 10 — Stage 4 Author Review plus Stage 5 Refinement or Rejection], plus the machine gates: format lint, source-anchor resolution, FK validity of the scatter, checklist compliance, and hard-line tripwires (CVD §17.9 reveal discipline, §17.1 cultural hard lines, §17.7 naming) [SRC: T1_CVD_Creative_Vision_Document # 17.9 Show-don't-tell hard lines]. Josh's author review is NOT removed — it batches per the autonomy contract (Section 10): per-chapter at hard-line chapters, per-window at Range Review closures. Iteration budget AFFIRMED: one to three iterations to convergence, then canonical-substrate-gap escalation to Josh [SRC: T99_Story_Spine_Build_Logic # Step 10 — Stage 4 Author Review plus Stage 5 Refinement or Rejection].
Lock writes go to the repo [SRC: T99_Story_Spine_Build_Logic # Step 11 — Stage 6 Final Chapter Spine Entry Lock]:
docs/spine/CH_NN.md (special tokens CH_PROLOGUE.md, CH_EPILOGUE.md; three distinct Ch 77 and Epilogue ending entries live inside their node file as distinct sections per the three-ending rule) [SRC: T1_Build_Pipeline_Contracts # 9.8 Cultural Authenticity Discipline]. Entry heading keeps the CHAPTER_NN_REGION_TITLE convention; the lean header carries the §9.5 fields including last_authored_timestamp, author_in_loop_required, regeneration_trigger [SRC: T1_Build_Pipeline_Contracts # 9.5 Spine Entry Schema].registries/ CSVs per the §9.6 column map (Section 5 below) [SRC: T1_Build_Pipeline_Contracts # 9.6 Per-Registry Spine Column Adds at Contract Lock]._source baseline only by declared edits — the fidelity gate fails on anything more or less. Every Step 11 write therefore updates docs/fidelity_baseline.json inside the same tagged commit: newly instantiated columns declared under added_columns, appended rows under added_rows, cell edits under expected_cell_diffs, and the added-column extension hash refreshed via the harness emit-baseline path with the diff git-reviewed before commit. The declaration is part of the write, not cleanup; a scatter commit that leaves the fidelity gate red fails the next session's Step 2 precondition and halts the cascade at the following chapter._source T1/T3/RCM .md doc and the mirroring T0 registry inside this same tagged commit, and the repo is swept (grep, not memory) so no deprecated reference survives anywhere. Editing the _source .md tier docs is fidelity-gate-safe; the _source/00_Tier_0_Master_Indices/ T0 xlsx is the frozen gate reference and is NOT edited here — the live structured scatter goes to registries/ with the baseline refresh above. This is grounded alignment, not canon invention: a genuine canon contradiction, or new canon needed to proceed, still STOPs and flags [DECISION NEEDED - JOSH] per the cardinal rule.spine_status flips to drafted — drafted, not canonical [SRC: T99_Story_Spine_Build_Logic # 8.3 The Collaboration Rhythm].last_authored_timestamp stores the same tag reference spine/ch-NN; the authoritative timestamp is the tagged commit's, resolved via git at check time. Neither this field nor generation_prompt_hash stores a raw SHA or wall-clock value, because the tagged commit's SHA and timestamp cannot exist inside the commit that carries them — the tag reference is knowable at authoring time and git resolves it deterministically ever after. The commit is the record.The BPC §9.4 storage clause names Drive-era targets — the T1_Story_Spine Drive doc for entries and T0 sheets at /Humanity/00_Tier_0_Master_Indices/ for scatter (the path already corrected in-place at commit 4cd5b19; the phantom 08-Canonical Reference folder it once named is gone from the source text). Both targets supersede to the repo targets above, with the live scatter layer at registries/ [SRC: T1_Build_Pipeline_Contracts # 9.4 Access Pattern] [SRC: T1_Architecture_and_State # Tier 0 Registry Architecture].
Handoff templates and memory markers supersede to git provenance [SRC: T99_Story_Spine_Build_Logic # Step 12 — Produce Session Handoff]:
spine/ch-NN (zero-padded; spine/ch-prologue, spine/ch-epilogue, spine/ch-01).spine/rr-NN (spine/rr-12 through spine/rr-72, spine/rr-final), replacing the eight HUM-SPINE-RANGE-REVIEW markers and HUM-STORY-SPINE-COMPLETE — cascade completion is spine/rr-final plus spine/ch-01 both present.spine/rev-ch-NN in place of the HUM-SPINE-REVISION marker [SRC: T99_Story_Spine_Build_Logic # 7.6 Range Review Does Not Produce Spine Entries].docs/spine/CH_NN.md to both the lint and anchors target lists in harness/gates_config.json — that file's own note names this Step 12 append as its fill-in mechanism — so every subsequent session's Step 2 run_gates pass re-verifies the entry's format and source anchors forever, not just once at authoring. Range Review closure commits enroll docs/spine/range_reviews/RR_NN.md the same way. An entry absent from the target lists is unguarded canon; the critic checks enrollment at Step 10 of the following chapter.docs/spine/CH_NN.md, one per node, 79 nodes total.docs/spine/range_reviews/RR_NN.md, format per §7.3 [SRC: T99_Story_Spine_Build_Logic # 7.3 Range Review Output Format]. Filing the report here supersedes filing it into the spine doc itself; the report is audit output, not spine content [SRC: T99_Story_Spine_Build_Logic # 7.6 Range Review Does Not Produce Spine Entries].docs/SPINE_LIVING_REVISION_LOG.md [SRC: SPINE_LIVING_REVISION_LOG].registries/, guarded by the harness gates.spine/ tags; no markers, no Drive.The §9.6 column adds are contract-locked schema, so instantiating them as empty columns is schema execution, not canon invention [SRC: T1_Build_Pipeline_Contracts # 9.6 Per-Registry Spine Column Adds at Contract Lock]. The live T0_Chapter_Index header already carries two of the seventeen specified adds — range_id (populated with legacy grouping values) and mode_variety_check (present, unpopulated) [SRC: T0_Chapter_Index] — so fifteen columns append, in contract order:
docs/spine/CH_NN.md. The contract-locked column name is kept verbatim to avoid a schema migration; renaming is Josh's call if ever wanted (Section 11, D5).Instantiation actor and timing, so no cold agent has to guess: the Ch 2 session performs the one-time fifteen-column append to the live T0_Chapter_Index CSV at its own Step 11, in the same tagged commit as its first scatter, with the columns declared in docs/fidelity_baseline.json added_columns in that commit per the Step 11 declared-divergence rule. There is no separate pre-cascade instantiation session.
Scatter columns for the other registries instantiate per the same section as their first write approaches — concretely, inside the Step 11 commit of the first chapter session that writes them, declaration included: T0_Thread_Grid thread_anchors_advanced_array, T0_Worldstate_Variables integrity_divergence, T0_Familiar_Registry three adds, T0_Boss_Encounter_Registry boss_encounters_canonical_array, T0_Character_Index three adds, T0_Antagonist_Network_Registry hostile_recognition_node_array, T0_Region_Index three adds, T0_Vril_Site_Registry two adds [SRC: T1_Build_Pipeline_Contracts # 9.6 Per-Registry Spine Column Adds at Contract Lock]. Registry base names resolve version-agnostically; note the live folder is T0_Boss_Encounter_Registry, where the contract writes T0_Boss_Encounter [SRC: T0_Boss_Encounter_Registry].
A contract inconsistency to not paper over: §9.8 says Velheim_presence_this_chapter populates as null for Ch 57, but §9.6 defines no such column anywhere [SRC: T1_Build_Pipeline_Contracts # 9.8 Cultural Authenticity Discipline]. Proposed resolution in Section 11, D4: satisfy the Ch 57 no-Velheim absolute hard line via an empty hostile_recognition_node_array row state and document the §9.8 phrase as referring to it — no invented column [SRC: T0_Chapter_Index @ CH_57].
spine_status column instantiated in Section 5.generation_prompt_hash stores the tag reference spine/ch-NN (not the SHA — the SHA is unknowable inside the tagged commit itself; Step 11); at check time the tag resolves to its commit, and a chapter needs regeneration when git diff from that commit to HEAD touches any file in the chapter's load manifest (the Step 3-5 docs, the chapter's registry rows, its RCM section, its predecessor entry). Scheduled-cadence recompute becomes a harness-runnable check any session can execute.Overlays SSBL Section 7. Reviews are gating, not advisory: no forward build across an open review [SRC: T99_Story_Spine_Build_Logic # 7.1 Range Review Gating].
Standing RR components (every window; Josh, 2026-07-09). A Range Review is not just the audit — it CLOSES the window on five things, and no forward build crosses an open one: (1) the multi-grid AUDIT + fixes (care / grounding-frameA / reveal / continuity / schema per-chapter + the cross-cutting consistency invariants — link symmetry, recurring elements, reveal continuity, the continuity chain — per §7.3); (2) LAYER-1 completeness (every body walks its key sites in traveled order — docs/TRANSITION_TREATMENT.md Layer 1); (3) the LAYER-3 NAMING FINALIZATION — the docs/NAMING_METHOD.md deep-dive + adversarial SETS every working/deferred/role-forward name in the window, sweeps it across ALL carriers (spine + T0_Character_Index + the T3 character docs + BOSS_PERSONAS + harness/enrich.py and any generator docstring), and strikes the "pending NAMING_METHOD / constructed working name" qualifier — a zero-deferral naming audit is a GATE condition (a pending name is a future-hallucination source: a later agent re-propagates the deprecated placeholder); (4) the LAYER-2 arrival/departure transition pass across the range (docs/TRANSITION_TREATMENT.md Layer 2); (5) a final range CONSISTENCY audit. Run each as a deep-dive + adversarial Workflow; commit gates-green first, verify as fix-forward. The parallel-prose-fanout lesson binds: any fan-out that rewrites prose OR sets names must be adversarially re-verified before the window is declared clean (it caught 2 fresh reveal leaks + several name mis-sets at RR-22) (see docs/TRANSITION_TREATMENT.md + docs/NAMING_METHOD.md).
The live range_id values in T0_Chapter_Index are legacy narrative groupings — nine values, six numeric spans plus three singletons — and do NOT correspond to the review windows; the windows cut across them [SRC: T0_Chapter_Index]. Membership below is exact, node by node, with the legacy groups each window crosses:
Coverage check: seven full windows of ten nodes give 70, RR-FINAL adds 7, and the two post-final builds add 2 — 79 nodes, each audited exactly once, with Prologue and Ch 1 covered by consolidation. Complete, no overlaps.
[DECISION NEEDED - JOSH: Window boundary pin. The frozen SSBL is internally inconsistent by one chapter: Section 3 says the first review audits Ch 2-11, while §7.7 says the last regular review left Ch 73-77 plus Epilogue unreviewed, which implies windows ending at the review label instead. The table above pins windows CH_(NN-10) through CH_(NN-1) with the gate BEFORE CH_NN authors, because it matches the Section 3 audit scope, gives complete once-each coverage of all 79 nodes, and never lets a chapter build on an unaudited decade; under this pin §7.7's "Ch 73-77" is an off-by-one residue reading "Ch 72-77". Proposed resolution: ratify the table as pinned; the §7.7 residue joins the verification-staged source-correction list.]
[DECISION NEEDED - JOSH: range_id overwrite versus new column. BPC §9.5/§9.6 spec range_id as the Range Review window identifier in R_XX_YY format, but the live column already carries the nine legacy grouping values above, which are populated canon and match no review window. Option A: overwrite the legacy values with review-window values. Option B: add a review_range_id column carrying R_02_11 through R_72_77 plus specials, leaving legacy values untouched. Proposed resolution: Option B — legacy values are populated canon under the cardinal rule, the known-issue ruling already treats range_id as a grouping label with no target table, and a new column keeps both facts queryable; Option A destroys data to satisfy a format note.]
Closure conditions supersede marker mechanics [SRC: T99_Story_Spine_Build_Logic # 7.1 Range Review Gating]:
docs/spine/range_reviews/RR_NN.md per the §7.3 format [SRC: T99_Story_Spine_Build_Logic # 7.3 Range Review Output Format].docs/SPINE_LIVING_REVISION_LOG.md after Josh confirms them [SRC: T99_Story_Spine_Build_Logic # 7.4 Grid Revision Trigger Protocol].spine/rr-NN.All four required, else the review stays open and forward build halts. The three do-nots stand as written: no per-drift revision sessions, no direct canonical-doc edits during review, no retroactive renames — consolidation batches at §11.6 [SRC: T99_Story_Spine_Build_Logic # 7.4 Grid Revision Trigger Protocol]. The hard-line-violation exception also stands: a CVD §17 violation found in a completed entry triggers an immediate revision session, tagged spine/rev-ch-NN [SRC: T99_Story_Spine_Build_Logic # 7.6 Range Review Does Not Produce Spine Entries]. RR-FINAL closure keeps Josh's verbatim confirmation gate before Prologue and Ch 1 build [SRC: T99_Story_Spine_Build_Logic # 7.7 Final Range Review].
The nine-grid roster and per-grid audit spec are AFFIRMED as the audit content authority [SRC: T1_Build_Pipeline_Contracts # 9.7 Spine Status, the Machine Gate, and Regeneration Triggers] [SRC: T99_Story_Spine_Build_Logic # 7.2 9-Grid Roster Reference]. Execution splits by check type.
Run as harness checks against the live CSVs; numeric canon is already locked, so these are arithmetic and FK resolution, not judgment:
Each runs as a fresh-context critic subagent over the window's ten entries plus the named authority docs, producing per-grid findings in the §7.3 report format. Numeric guards are listed only where canon states the number; everything else is stated as a falsifiable question the critic must answer with evidence.
Four grid-authority registries currently hold zero data rows: T0_Questline_Index (Grid 3), T0_Boss_Encounter_Registry (Grid 8), T0_Familiar_Registry (Grid 5), and T0_Weapon_Registry (Grid 7) [SRC: T0_Questline_Index] [SRC: T0_Boss_Encounter_Registry] [SRC: T0_Familiar_Registry] [SRC: T0_Weapon_Registry]. The ROADMAP's "three grids audit empty tables" undercounts by one — the weapon registry is also empty. All four must populate (0.D registry population; 0.E roster proposals) before RR-12 can run its full nine-grid audit; the Phase-0 exit gate already requires closure before the first Range Review [SRC: ROADMAP # 0.B Cascade runbook]. Vacuous-pass discipline binds: an empty audit table is a FAIL state for the grid, never a green [SRC: ROADMAP # 0.A Harness].
docs/SPINE_LIVING_REVISION_LOG.md is the declared §7.5 continuation: append-only, read at Step 6 by every session, entry formats per §7.4, starts empty per the v3.0 lock state, archives at Final Consolidation [SRC: SPINE_LIVING_REVISION_LOG] [SRC: T99_Story_Spine_Build_Logic # 7.5 Living Revision Log]. Appendix B Entries 18-21 do not enter this log; they route to canonical docs, and if unmigrated they surface via the ad-hoc Stage 2 fallback at the first-applying chapter regardless of hard-line status (Step 8 exception) [SRC: T99_Story_Spine_Build_Logic # Appendix B — Phase 5M Migration Queue] [SRC: T99_Story_Spine_Build_Logic # Migration Execution].
RATIFIED (Josh, 2026-07-04) as the standing collaboration contract for Phase 6. Josh additionally elevated the autonomy within this contract: for grounded and creative-within-vision work the agent runs the deep-dive plus adversarial-review process, applies gate-green, and shows the path, rather than pausing for per-item sign-off — the batch-sign-off points below (hard-line chapters, Range-Review closures) and the immediate-escalation triggers remain the guardrails, and the cardinal do-not-invent boundaries (chapter and Component assignments, numerical canon, naming, hard lines) still surface to Josh.
Claude Code sessions execute the full twelve-step procedure end to end and write spine entries at drafted state only — drafted is not canonical, per the verbatim SSBL rule that no chapter is canonical until the author approves [SRC: T99_Story_Spine_Build_Logic # 8.3 The Collaboration Rhythm]. Every entry passes the machine gates (format lint, source-anchor resolution, registry fidelity and FK checks) plus a fresh-context adversarial critic before drafted lands; the critic replaces per-chapter first-line review, not Josh's authority. Josh's sign-off batches at two points: hard-line chapters, where he resolves the pre-drafted Stage 2 question set and approves the entry before it locks [SRC: T99_Story_Spine_Build_Logic # Step 8 — Stage 2 Canonical Question Review], and Range Review closures, where he ratifies the window's drafted entries, confirms revision-log entries, and resolves or defers blocking markers — which is exactly where the existing state machine already places author sign-off for the ratified state [SRC: T1_Build_Pipeline_Contracts # 9.7 Spine Status, the Machine Gate, and Regeneration Triggers]. The agent escalates to Josh immediately, without waiting for a batch point, on iteration-budget exceedance, CVD §17 hard-line risk, cultural-authenticity flags at high-care chapters, or canonical-substrate gaps [SRC: T99_Story_Spine_Build_Logic # Step 10 — Stage 4 Author Review plus Stage 5 Refinement or Rejection]. Creative-latitude boundaries stand as written — the agent proposes within canon and never decides plot-altering beats, character identity, hard lines, or naming [SRC: T99_Story_Spine_Build_Logic # 8.4 Creative Latitude Boundaries]. Nothing progresses past drafted without Josh's batch sign-off, and locked remains the only state downstream pipelines consume.
Execution gating, stated so a cold session never has to guess which open decisions block it. D1, D2, D3, and D6 resolve before the first chapter session starts: D1 fixes the window every chapter builds toward, D2 fixes where window membership is recorded, D3 fixes whose sign-off a drafted entry requires, and D6 fixes where the entry physically lands — none has a self-evident default a session may assume. D5 resolves before the first Step 11 scatter, because that scatter populates the column D5 names. D4 resolves before Ch 57 authors. Interim default while D3 is unratified: where this runbook is undecided the SSBL governs (the Section 0 overlay rule), and the SSBL's Decision 4B single-track all-chapters author-in-loop review binds — Josh reviews each chapter at Stage 4 and signs off, refines, or rejects before the entry stands [SRC: T1_Build_Pipeline_Contracts # 9.4 Access Pattern] [SRC: T99_Story_Spine_Build_Logic # 8.3 The Collaboration Rhythm]. A session finding any gating decision unresolved at its Step 2 preflight halts with a flag rather than proceeding on an assumed answer.
review_range_id; proposed Option B, new column, legacy values preserved (Section 7.1).hostile_recognition_node_array state for Ch 57 plus a documented note; no invented column.docs/spine/, CHAPTER_NN_REGION_TITLE headings, reports under docs/spine/range_reviews/ — operational pin bundled with D3 ratification.The spine v2.4 per-chapter brief carries the Layer-3 anchor FIELD (re-homed from the
retired T2 briefs per CVD §18.4). The three §18.5 registries (T0_Inscription_Spine,
T0_Vril_Site_Registry, T0_Cross_Cultural_Link_Graph) carry cross-regional pattern
weight. Chapter_Index.time_fluctuation_range carries the time-fluctuation
environmental-routing datum ONLY (a vril-instability phenomenon per T1_Vril §11.1) and
is NOT the general L3 field — it is unschematized (add a Schema-Dictionary one-line def
when convenient). Component anchors for the Ch 34-36 seeds: Ch 34 = Component 11
(canon-named in the RCM), Ch 35 = Component 3 (cultural-convergence, Josh 2026-07-04),
Ch 36 = Component 7 (trade-mastery substrate-perception). CH_33 time_fluctuation left
empty (no grounded era window — do not invent; flag for Josh).