decisions/spine/SIX_OPTION_COLLAPSE_BRIEF.md
Ratification brief for Josh. NOTHING IS APPLIED. Cardinal flag: this would fix the runtime semantics of
HL_0039/HL_0040 at the two live collapsed forks and write into WS_018. Josh rules.
Round 2 (3 MAJORs) and round 3 (6 MAJORs) both returned GO_WITH_FIXES; every one is CONFIRMED against
the live files this run. None touched the recommendation — Option D survives — but two rounds running,
the brief argued it with claims stronger than the record supports. Those are the defects. The
recommendation is now argued only from what is verified.
claim, a mis-scoped HL_0069, and a backwards pipe-hazard mechanism. All three CONFIRMED (§11, §9.3);
HL_0069 is scoped to Ch 75 (§3), which weakened — but does NOT by itself settle — the case against
the status quo.
ending resolver does not read Ch 28 — refuted by WS_018's own consumer list; the true state is
UNSPECIFIED (§3). (B) §1 conflated the six-option *framing* (ratified canon, HL_0039 universal) with
the open *modeling* choice — re-scoped below. (C) Option E's "retire the framing line" contradicted
CH_28 L308, which designates that very line the runtime-framing carrier — never retire, only re-word
(§6). (D) a false "appears nowhere outside docs/spine/" claim — corrected by repo-wide grep (§10). (E)
the landing ritual was deferred where it must be stated inline (§10). (F) §8 over-read CH_39 L202 to
reject Map 39-C (§8). Each fix is applied at its section; each cited line re-opened this run (§11).
The prior brief (round 2) recommended authoring both maps and re-shaping to SIX-OPTION-7. **I do not
recommend that** — but, corrected per MAJOR B, the reason is NOT that the six-option framing is
unauthored (it is ratified canon). The reason is that the *spine-level per-slot modeling* is an open
choice whose only live precedent (CH_17) is itself CVD-illegal (§9.1), that authoring the maps invents
scene-level canon, and that the v3 design authority calls the live shape already-correct (§5). The one
question genuinely yours to close is §1 — and it is a modeling question, not a provenance one.
The prior brief asked whether the six-option roster "belongs" at these forks, and answered that the
record showed it did not. That was wrong (MAJOR B). The six-option framing at any dialogue moment is
your ratified canon, not the conversion's shorthand:
applies_to_chapter_range: universal): "Every dialogue moment surfacessix options" [SRC: registries/T0_Hard_Lines [ACTIVE v0.2]/Sheet1.csv # L40].
chapters of the arc" [SRC: _source/01_Tier_1_Foundation/T1_Integrity_Paths_Worldstates_Master [ACTIVE
v2.1].md # §6.6 L286]. Ch 28 and Ch 39 are dialogue-bearing chapters, so the six operate there at
standard register by ratified canon. (§5 quotes the same universal scope: "every dialogue moment
surfaces six options.")
So the framing is not in question. What the record genuinely establishes is narrower: **no per-node
six-option TYPING — the spine-schema kind: dialogue_six_option and the per-slot slot→outcome rows —
traces to you.** That is a claim about spine modeling, not about the canon:
dialogue fork — RESOLVED (v3 conversion) … v3.1 re-keys the trust fulcrum as FORK_CH17_A kind
dialogue_six_option with the six canonical dialogue slots …" [SRC: docs/spine/CH_17.md # L312]. The
slot ROWS trace to that v3 conversion (CH_17 L312); the per-slot WS_018 appends were extended by the
2026-07-15 pass [SRC: docs/SPINE_LIVING_REVISION_LOG.md # L143].
truly_good / good_enough / neutral / evil as option labels (four; the retired vocabulary)" [SRC:
docs/spine/CH_28.md # L184]. CH_39: "the v2.5 bullet named truly_good / good_enough / neutral / evil
(four labels, dropped L5, mis-typed 'neutral')" [SRC: docs/spine/CH_39.md # L198].
…) … (3) SIX-OPTION-7" [SRC: docs/SPINE_SCHEMA_v3.md # L70] — i.e. the per-slot table shape post-dates
every v2.5 substrate.
THE QUESTION FOR YOU (two parts, one line): *Should the SPINE model the per-slot slot→outcome
routing at FORK_CH28_A / FORK_CH39_B (Option F), or does that ride to the dialogue build (D-1, Option
D)? And is CH_17's slot-row modeling the corpus's intended pattern, or the anomaly to normalize?*
This is the same shape as the D-REL-BANDS unlock — I surface it rather than assert it, because the
per-slot map is a scene-level creative decision (what DEFIANT *does* at Ch 28) that the cardinal rule
reserves to you. Your answer routes the order:
(Option E) and fix the two real defects in §9. No maps authored. My recommendation's branch, on §5.
first, and CH_17's two illegal cells (§9.1) must land in the same commit.
FORK_CH28_A and FORK_CH39_B each declare the canonical six and then collapse them — to three durable
outcomes at Ch 28, two at Ch 39 — with no slot→row map. Both chapters record the deferral:
rows with no stated slot→row map … The per-slot WS_018 appends are deliberately NOT written here —
the slot→outcome collapse-map is a dialogue-build artifact (unauthored; inventing it would author
canon), riding to D-1 with the dialogue build." [SRC: docs/spine/CH_28.md # L308]
and same WS_018 deferral as CH_28's FORK_CH28_A" [SRC: docs/spine/CH_39.md # L333]
These are the only two collapsed forks in the live spine (`grep -rn "canonical six (HL_0039"
docs/spine/` → CH_28:176, CH_39:203, plus one stale exemplar copy at v3_exemplars/CH_39_v3.md:92).
CH_17 is the only live fork of kind dialogue_six_option corpus-wide (`grep -rn "kind
dialogue_six_option" docs/spine/` → CH_17:176 (the fork declaration) + CH_17:312 (a Decisions note
containing the same string); CH_17 is the only node with a fork of that kind).
The roster and its per-slot register are canon, not a spine invention:
[SRC: _source/01_Tier_1_Foundation/T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1].md # §6.1 L255-260]
Four biography options plus Good plus Evil — matching HL_0039 [SRC: registries/T0_Hard_Lines [ACTIVE
v0.2]/Sheet1.csv # L40]. All six fully written and fully voiced, HL_0040 [SRC: same # L41]. All four
biography options universal across every chapter, HL_0068 [SRC: same # L69].
The receiving variable: WS_018 six_option_cumulative_record, "object with per-chapter array of
selected option enums (TRULY_GOOD, TRULY_BAD, SYMPATHETIC, DETACHED, CURIOUS, DEFIANT)", consumers
"Ch75_dialogue_dispatcher, Ch76_77_ending_cutscene_specific_content_resolver" [SRC:
registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv # L19].
HL_0069's real scope — corrected (this was MAJOR 2). The prior brief wrote "HL_0069 sets the stakes:
cumulative six-option selections determine Ch 76-77 ending cutscene specific content," implying Ch 28's
and Ch 39's slots feed the ending resolver. That is a mis-scope. HL_0069's actual text: "Six-option
dialogue operates at canonical maximum-weight deployment at Ch 75 Father Encounter. **Cumulative
six-option selections across Ch 75 dialogue** determine Ch 76-77 ending cutscene specific content," and
its applies_to_chapter_range is Ch75 [SRC: registries/T0_Hard_Lines [ACTIVE v0.2]/Sheet1.csv #
L70]. Its authority, IPW §6.6, says the same and locates the corpus-wide contribution one step earlier:
"The cumulative six-option selections across Ch 75's dialogue determine the Ch 76-77 ending cutscene
specific content …; the system has been building across seventy-four chapters of accumulated
voice-generation-parameter state and accumulated choice-history" [SRC: T1_Integrity_Paths_Worldstates_
Master [ACTIVE v2.1].md # §6.6 L286].
So the DETERMINATION is scoped to Ch 75 and any Ch-28 contribution runs through it indirectly: a Ch-28
slot → WS_018 → the Ch75_dialogue_dispatcher (WS_018's first declared consumer) → what Ch 75's
dialogue presents → Ch 75's own selections → the ending content. WS_018's registry note states this:
"cumulative selections drive Ch 75 maximum-weight deployment determining Ch 76-77 ending cutscene
specifics on TGP and GE paths" [SRC: registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv # L19].
But the resolver's appetite for pre-Ch-75 entries is UNSPECIFIED, not zero (this was MAJOR A). The
prior draft wrote "Ch 28 is not an input the ending resolver reads." That over-claims. HL_0069 scopes
the ending DETERMINATION to Ch 75's own selections; it does not say the resolver ignores earlier
entries. And WS_018's own consumer list names both Ch75_dialogue_dispatcher and
Ch76_77_ending_cutscene_specific_content_resolver as consumers of the per-chapter array [SRC: same #
L19] — the ending resolver is a declared consumer of exactly the array Ch 28 would append to. Since the
resolution function is unauthored (§11), whether it reads pre-Ch-75 entries is simply UNKNOWN. What is
established: the determination runs through Ch 75, so any Ch-28 contribution is at most indirect and its
weight is unquantified. **This weakens the prior brief's case against the status quo (§6); it does not,
by itself, settle it** — the status quo is carried by the four independent grounds in §5/§6, not by this
correction.
CVD §10.1's table gives, for each of Biography Option 1 through 4, integrity weight "carries texture, no
integrity shift"; only the Good Option carries "positive integrity shift" and the Evil Option "negative
integrity shift" [SRC: _source/01_Tier_1_Foundation/T1_CVD_Creative_Vision_Document [ACTIVE v1.4].md #
§10.1 L471-476]. §10.3 is titled "Biography options carry texture, not integrity weight" and states:
"They do not shift integrity when chosen. They surface the protagonist's voice variant across the
substrate state." [SRC: same # §10.3 L490-492].
IPW §6.4 is the softer domain-doc phrasing — biography options "carry integrity information through tone
but do not add substantial new integrity shift; they reflect existing state rather than forcing new
shift" [SRC: T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1].md # §6.4 L276]. (The prior brief
cited L277; L277 is blank. Corrected — this was MAJOR 1's named instance.)
TRULY_BAD carry a fork's class delta. For: literal §10.1/§10.3; keeps the integrity signal tracking
only deliberate direction choices; makes biography what CVD says it is — "the player's window into the
protagonist they have authored" [SRC: CVD # §10.3 L496]. Against: four of six rows carry no integrity
motion, which can feel inert.
Substantial — reading §6.4's "substantial" as the §5.1 magnitude class. For: a real textual reading;
IPW is the domain authority for integrity mechanics. Against: CVD wins every conflict per the authority
hierarchy, and §10.3 is a flat statement, not a delegation. (§10.4 delegates "Specific shift mechanics
→ Integrity_Paths §6" [SRC: CVD # §10.4 L500] — but that sentence sits in the section about the **Good
and Evil** options' shift magnitude, not about the biography options' zero.)
illegal under (i) AND (ii).
RECOMMENDATION: option (i). It is dictated by the authority hierarchy, so this is less a fork than a
confirmation — but it is worth your ratification because CH_17 currently violates it (§9.1) and because
IPW §6.4's wording is what invites the looser read. Sub-recommendation: tighten IPW §6.4 in place
(living-source) to match CVD §10.3 — "do not add substantial new integrity shift" → "do not shift
integrity when chosen" — so the domain doc stops licensing a CVD violation. That edit is grounded
alignment, not new canon.
This is the section the prior brief lacked, and it is where the flip comes from.
ESTABLISHED — the spine is not the system of record for WS_018. The spine writes WS_018 at exactly
one of its 79 nodes (CH_17). (docs/spine/CH_*.md globs 80 files; 79 are nodes — 77 chapters +
CH_PROLOGUE + CH_EPILOGUE — and CH_57_BUILD_BRIEF.md is a build brief, not a node.) Eight other
chapters explicitly and deliberately decline to write it, each recording the same discipline:
CH_72 L222 — all some form of "ws.six_option_cumulative_record is NOT written (reserved for
dialogue_six_option forks)".
RESERVED for dialogue_six_option forks (the canonical six enum selections). Never write it from
combat_resolution / exploration / assimilation forks" [SRC: docs/spine/V3_CONVERSION_RUNBOOK.md #
L209-211].
fork, and it being reverted at verify [SRC: docs/spine/CH_05.md # L338].
This matters enormously. HL_0039 is applies_to_chapter_range: universal — every dialogue moment
surfaces six options. If WS_018 is a per-chapter array of six-option selections, its real population is
hundreds of dialogue moments across the 79 nodes, essentially none of which the spine models. Adding
Ch 28 and Ch 39 takes the spine from 1/79 to 3/79. **The prior brief's core cost-of-status-quo — "Ch 28
silently does not appear in it, so the Ch 76-77 resolver reads a corpus with a SUBSTANTIAL decision
missing" — is not a cost of the status quo. It is the corpus-wide design, recorded deliberately in nine
places.** (Whether the resolver reads Ch 28 at all is unspecified per §3's MAJOR-A correction — but the
1/79 modeling coverage is the design either way, so the "missing decision" framing fails regardless.)
Departure flagged (per MAJOR D). Work order O-8 names "the CH_17 exemplar's slot semantics" as a
grounding source and anticipates "wire the per-slot WS_018 appends (the CH_17 pattern)" [SRC:
docs/OPUS_HANDBACK_POST_V3.md # L249-251]. I am departing from that instruction, deliberately: CH_17 is
CVD-illegal in two cells (§9.1), and an artifact violating the governing rule cannot ground its own
application. You should know the departure is intentional, not an oversight.
ESTABLISHED — the v3 design authority calls the live CH_39 shape CORRECT. Fable's v3 validation, the
document that specified the ACTION-keyed fork grammar: "Six-option dialogue forks author the canonical
six + a collapse map (CH_39's FORK_B already does this right)" [SRC:
docs/spine/v3_exemplars/FABLE_V3_VALIDATION.md # L10]. What does CH_39's FORK_B do? It names the
canonical six in a note and states the collapse — "collapsing to two durable outcomes" — over a two-row
CHOICE-8 table, with no slot→row map. The v3 exemplar carries it at kind exploration_interaction with
that exact shape [SRC: docs/spine/v3_exemplars/CH_39_v3.md # L89-97].
So the schema's "kind: dialogue_six_option → author the canonical six … + **a collapse map to durable
outcomes**" [SRC: docs/SPINE_SCHEMA_v3.md # L67] means, in the design's own usage, *the statement of how
the six collapse into the durable outcomes* — the line CH_39 already has. **The prior brief read
"collapse map" as a per-slot routing table and then reported it missing.** That conflation is the
brief's original sin; the thing it set out to author may never have been specified as missing at all.
And Fable's endorsement PREDATES the per-slot grammar — decisive for this reading. FABLE_V3_
VALIDATION L10 sits in the B2 block that replaced the five-band quota with ACTION-keyed options; the
SIX-OPTION-7 table shape (the six_option_slot column) was "ruled 2026-07-15" [SRC:
docs/SPINE_SCHEMA_v3.md # L70], AFTER Fable wrote L10. At the time "CH_39's FORK_B already does this
right" was written, no six_option_slot column and no per-slot routing grammar existed — so Fable's
"collapse map" could not have meant a per-slot table. It meant the collapse *statement* CH_39
already carries. (The exemplar it points at, CH_39_v3.md L90, already carried `kind
exploration_interaction` — so "six-option dialogue fork" there is loose usage for "a fork where the six
surface," not the schema kind.) This is stronger than the exemplar-shape argument above and settles §5's
reading.
ESTABLISHED — CH_17 is not a precedent. The prior brief leaned on CH_17 three times for
register-transfer support (DEFIANT→refuse; SYMPATHETIC→accept). CH_17's slot rows (their delta cells)
were authored by the v3 conversion [SRC: docs/spine/CH_17.md # L312] and their per-slot WS_018 appends
extended by the 2026-07-15 pass [SRC: docs/SPINE_LIVING_REVISION_LOG.md # L143] — both agent passes,
neither yours (§1) — and they are CVD-illegal in two cells (§9.1) — i.e. authored
without checking CVD §10.1/§10.3. An artifact that violates the governing rule is not evidence for how
to apply that rule. Every "exemplar support" argument in §7/§8 is downgraded to zero accordingly, and
I have struck them rather than quietly softened them.
SUGGESTIVE, not decisive — the anchor beat modes differ. CH_17's anchor CH17_B09 is mode dialogue
[SRC: docs/spine/CH_17.md # L150]. CH_28's anchor CH28_B10 is mode character [SRC: docs/spine/CH_28.md
mode character [SRC: docs/spine/CH_39.md # L149]. Both are validmodes in the closed enum [SRC: harness/check_spine_graph.py # L69-71]. The one fork typed
dialogue_six_option is the one anchored on a dialogue-mode beat. I offer this as corroboration only —
character-mode beats plainly contain dialogue too, so this does not settle anything by itself.
**NOT ESTABLISHED — that you ever ruled the per-slot slot→outcome ROUTING, or the spine-schema
dialogue_six_option TYPING, at any node.** (The six-option FRAMING is ratified canon — §1's MAJOR-B
correction; what is unestablished is the spine modeling of the routing.) See §1. This is the gap.
exploration_interaction, CHOICE-8, durable-outcome rows, thecanonical-six line as the collapse statement); fix the two real defects in §9.**
discipline at 78/79 other nodes (§5). The ending determination runs through Ch 75; any Ch-28
contribution is indirect and unquantified (§3). It authors no canon, honoring the cardinal rule and
the reasoning recorded in the fork's own re-key note ("inventing it would author canon" [SRC:
docs/spine/CH_28.md # L308]).
layer and 78 not. That inconsistency is real. But the evidence says the fix runs the other way —
CH_17 is the anomaly — or that it is your call, not an agent's.
and equally true at every other dialogue-bearing node in the corpus. No gate anywhere checks "every
dialogue moment surfaces six options."
the dialogue build," the "canonical six (HL_0039/HL_0040) … collapsing to N durable outcomes" line at
CH_28 L176 / CH_39 L203 currently reads as a promise of an unwritten per-slot map, which has cost two
review rounds. Re-word it — name the durable outcomes as the fork's contract and cite HL_0039 as the
dialogue build's obligation — so it stops reading as that promise.
line the carrier of the six-option runtime framing once the table shape stopped signalling it: "the
table is honestly a CHOICE-8 shape, and the six-option runtime framing stays carried by this block's
own 'canonical six … collapsing' line" [SRC: docs/spine/CH_28.md # L308]. It is a deliberate
2026-07-15 design decision, not an idle compliance gesture. A re-word must keep the
HL_0039/HL_0040 citation and the canonical-six roster; it may only change how the collapse is phrased.
re-word must preserve it, not weaken it. Anchor safety: the line is prose, not a heading, so no
[SRC: … # heading] anchors dangle from a re-word. I verified no citation targets it.
dialogue_six_option, re-shape to SIX-OPTION-7, six rows each, per-slot WS_018 appends. §7/§8 carry the
drafted maps.
derivation), commits the spine to per-slot modeling whose only precedent (CH_17) is CVD-illegal
(§9.1), in a shape the v3 design already calls right (§5), to feed a resolver whose appetite for
pre-Ch-75 entries is unspecified (§3).
RECOMMENDATION: Option D + Option E's re-word, conditional on §1. If the per-slot modeling rides to
the dialogue build, this is not a deferral — it is the correct terminal state, and the D-1 "riding to the
dialogue build" note is telling the truth about where that work belongs. If you rule that the spine
should model it, Option F is drafted below and can land immediately.
STRONGEST OBJECTION to my recommendation. Two things could make F right instead. First — the
resolver's appetite (the MAJOR-A gap). WS_018's consumer list names the Ch 76-77 ending resolver as a
consumer of the per-chapter array [SRC: registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv #
L19], and the resolution function is unauthored (§11) — so if the resolver DOES read pre-Ch-75 entries,
the spine's 1/79 WS_018 coverage is a genuine hole and Option F fills it. I cannot rule that out; I can
only say the DETERMINATION is scoped to Ch 75 (HL_0069, IPW §6.6 L286 — two sources, same lineage) and
that the corpus-wide record's own stated route is "via the Ch-75 dispatcher," not the resolver. Second
— consistency: leaving CH_17 modeled and 78 nodes not is a real inconsistency, and if you read CH_17 as
the intended pattern rather than the anomaly, F normalizes toward it. My read is that CH_17 is the
anomaly (it is CVD-illegal, §9.1) and the indirection through Ch 75 is deliberate — **but both are
reads, and if you disagree with either, F is right and my recommendation is wrong.** These are the two
places my reasoning could still be wrong; they deserve your attention more than the maps do.
Anchor CH28_B10, SUBSTANTIAL, care_band open, path_bucket UNLOCKED. The beat's objective names the
action space — "take his offer and become a name in the ledger's good columns, refuse it and walk out a
marked enemy of a power she still cannot name, or play both faces and take the intel while seeming to
consider" [SRC: docs/spine/CH_28.md # L157-158].
The three durable outcomes, live [SRC: docs/spine/CH_28.md # L180-182]:
+she_refused_now_a_marked_enemy`
+she_accepted_now_a_recruit`
The load-bearing durable write is the network's operational state re: her, read at the Ch 38 reveal
[SRC: docs/spine/CH_28.md # L176] — the network is reading whether it got an ANSWER.
Map 28-A — the answer/non-answer map (2 / 3 / 1). TRULY_GOOD, DEFIANT → refuse; SYMPATHETIC,
DETACHED, CURIOUS → play-both-faces; TRULY_BAD → take-the-offer.
principle, DEFIANT by assertion — and both leave the file reading marked enemy. TRULY_BAD gives the
other answer. Warmth, distance and inquiry all decline to answer: Silens gets engagement, a
specimen-read, or a question, and the file reads seeming-to-consider — the neutral row's own authored
text, "take the intel while seeming to consider."
(§5). This argument is withdrawn, not softened.
Map 28-B — register-transfer from CH_17 (3 / 2 / 1). As 28-A but CURIOUS → refuse.
with CH_17, which §5 removes. Map 28-B now has no surviving argument for it.
is taken at CH28_B09, one beat before the fork [SRC: docs/spine/CH_28.md # L152-153]. At B10 the only
thing left to give is the answer, and an inquiry is not an answer.
Map 28-C — the warmth-recruits map (2 / 2 / 2). SYMPATHETIC → take-the-offer.
actually works, and a player recruited with her integrity intact makes the Ch 38 reveal land harder.
+she_accepted_now_a_recruit, the fork's maximalcorrosive world-write. Routing a zero-delta slot there means the player becomes the network's owned
recruit at no integrity cost. CVD §10.1's table assigns the negative shift to the Evil Option alone and
names it "the canonically Evil response in this moment" [SRC: CVD # §10.1 L476]. (The prior brief
attributed that phrase to §10.4; it is §10.1's table. Corrected.)
Map 28-D — status quo. See §6 Option D. This is now the recommended option, on the grounds in
§5/§6 — not, as the prior brief had it, a defensible-but-losing default.
| six_option_slot | durable outcome | direction | delta |
|---|---|---|---|
| TRULY_GOOD | refuse-and-marked-enemy | generative | +Substantial |
| DEFIANT | refuse-and-marked-enemy | generative | ~0 |
| SYMPATHETIC | play-both-faces | neutral | ~0 |
| DETACHED | play-both-faces | neutral | ~0 |
| CURIOUS | play-both-faces | neutral | ~0 |
| TRULY_BAD | take-the-offer | corrosive | −Substantial |
Reasoning. The durable write is the network's operational read, and a read is produced by an answer or
its absence. Two registers answer no (one weighted, one not), one answers yes (weighted), three decline.
The delta column honors CVD §10.3 throughout. **Note the direction/delta separation this needs is legal
and precedented:** DISPATCH-7 already ships direction with the delta column "structurally ABSENT
(post-lock dispatch carries no integrity delta; the missing columns encode the rule)" [SRC:
docs/SPINE_SCHEMA_v3.md # L70]. Direction without delta is a ratified combination.
STRONGEST OBJECTION to 28-A. The recruit arm has one door. A player reaching for a biography option can
never be recruited, so the fork's most consequential world-write — the one Ch 38 reads — is gated behind
one option in six, and for most players CH_28's three-outcome fork collapses to two. Answer: CVD §10.1
gives the negative shift to the Evil Option alone, and being owned by the network IS the Evil response
here; a zero-weight route into ownership makes the heaviest corrosive world-write free. But the objection
bites, and it generalizes — under CVD §10 this is what every fork in the game looks like: six voices on
three deeds, weighted toward two. That is worth seeing plainly, because it is a consequence of CVD §10
itself, not of this map.
Anchor CH39_B09, ACCUMULATIVE, care_band elevated. The fork's own line: "coverage: {generative,
corrosive} reachable (the neutral options collapse into the two durable outcomes)" [SRC:
docs/spine/CH_39.md # L202]. Read carefully (this was MAJOR F): the coverage annotation asserts which
DIRECTIONS are reachable, not how the biography slots distribute — per the schema, "The coverage
annotation asserts which directions are reachable" [SRC: docs/SPINE_SCHEMA_v3.md # L66], its form being
{directions reachable: generative|neutral|corrosive} [SRC: same # L63]. The parenthetical explains WHY
there is no neutral arm: the direction-neutral biography options must land on the two rows that exist. It
does not mandate a distribution across them. My reading that both arms should carry at least one
biography register is an INFERENCE, not ratified text — so it cannot, on its own, rule out a map that
loads one arm (see Map 39-C).
The two durable outcomes, live [SRC: docs/spine/CH_39.md # L207-208]:
ws.relationship_history: Tunde bought → ally (turned)ws.relationship_history: Tunde bought → discarded (burned)Three grounded constraints:
docs/spine/CH_39.md # L149-151]. The preamble disambiguates: "the modern enemy runs on people it has
convinced to help it and every one of them can be un-convinced" [SRC: same # L40].
brokering the healers' knowledge, freed-and-turned by the protagonist (community-adjacent, never a
target)" [SRC: docs/spine/CH_39.md # L228].
loyalty_model: drawn_conditional, loyalty_state: recruitable, loyalty_belief_axis: freedom_from_bondage_redemption, `loyalty_departure_threshold:
any_sustained_misalignment, loyalty_join_trigger: drawn_by_integrity; his role` is
yoruba_fixer_ndaed_broker_freed_and_turned_community_adjacent_modern_west_africa_ally [SRC:
registries/T0_Character_Index [ACTIVE v1.1]/T0_Character_Index DRAFT v1.1.csv # L128]. So a zero-delta
biography option can perform the freeing deed and still turn him; his loyalty decays downstream on its
own terms if the pattern misaligns. The system already handles the Evil-path-protagonist-who-frees-him
case; a map does not need to.
Map 39-A — the un-convincing map (4 / 2). TRULY_GOOD, SYMPATHETIC, CURIOUS, DEFIANT → free-and-turn;
DETACHED, TRULY_BAD → use-and-discard.
what he was part of and give the way out."
act, and the chapter's thesis makes the un-convincing the point of the beat.
obvious target: the House, not the man.
and drop him," which is non-investment.
Map 39-B — the balanced map (3 / 3). As 39-A but DEFIANT → use-and-discard, read as contempt for the
man who sold his community's knowledge.
option the cruelty is free. It belongs on the weighted TRULY_BAD arm plus the one biography register
(DETACHED) whose honest content is non-investment rather than contempt.
Map 39-C — the care-maximal map (5 / 1). Only TRULY_BAD reaches use-and-discard.
STRUCK (MAJOR F). L202's coverage asserts direction reachability only; under 39-C both directions
remain reachable (TRULY_BAD reaches use-and-discard), so 39-C satisfies L202. Rejecting it on that line
was presenting an inference as ratified text — the exact failure class this brief exists to correct.
against. This ground alone carries the rejection — 39-C is out on the content bar, not on L202.
Map 39-D — status quo. See §6 Option D. Recommended, on §5/§6's grounds.
| six_option_slot | durable outcome | direction | delta |
|---|---|---|---|
| TRULY_GOOD | free-and-turn | generative | +Accumulative |
| SYMPATHETIC | free-and-turn | generative | ~0 |
| CURIOUS | free-and-turn | generative | ~0 |
| DEFIANT | free-and-turn | generative | ~0 |
| DETACHED | use-and-discard | corrosive | ~0 |
| TRULY_BAD | use-and-discard | corrosive | −Accumulative |
Reasoning. With no neutral arm the biography registers split by register: three (warmth, inquiry,
assertion) ENGAGE the man, and engagement is the un-convincing this beat exists to dramatize; one
(distance) does not, and non-engagement is the discard. The asymmetry is the chapter's thesis rendered as
reachability.
STRONGEST OBJECTION to 39-A. Four-to-two makes the generative outcome the path of least resistance and
the fork stops being a real choice — the defanging the content bar forbids, dressed as care. And I
rejected 39-B partly on care grounds, which is the care-conservative reflex the standing bar warns
against. Answer, and where it bites: this fork is ACCUMULATIVE and explicitly textural — "Tunde's fate is
textural, never a gate" [SRC: docs/spine/CH_39.md # L201] — so its job is to record a disposition, not to
stage a dilemma; the chapter's real weight fork is FORK_CH39_A (SUBSTANTIAL, its community mark_write
forward-tracking to Ch 62 and Ch 75) [SRC: docs/spine/CH_39.md # L297]. But it lands on one row and I
will not paper over it: DEFIANT is the genuinely contestable slot. My reason for keeping it generative
is the coercion framing (L228), not a care reflex — but if you read the defiance as aimed at the
collaborator, 39-B is the ratification and the map becomes 3 / 3.
FORK_CH17_A gives DEFIANT +Substantial with ws.integrity_score: +substantial-generative [SRC:
docs/spine/CH_17.md # L183] and CURIOUS +Accumulative with ws.integrity_score: +accumulative-generative
[SRC: same # L184]. Both are biography slots. CVD §10.1/§10.3 say biography options do not shift integrity
[SRC: CVD # §10.1 L471-476, §10.3 L490-492]. DEFIANT's +Substantial fails D-8.0 options (i) and (ii);
CURIOUS's +Accumulative fails (i). SYMPATHETIC and DETACHED are already ~0 [SRC: same # L185-186] and the
two direction rows are correct [SRC: same # L182, L187].
Under D-8.0(i) both re-key to ~0 — a two-cell fix. Note this is a material behavior change (two of
six options stop moving integrity at a SUBSTANTIAL fork), and it is the clearest evidence that CH_17's
slot rows were authored without reference to CVD §10 (§5). Flagging rather than applying: it is a
CVD-alignment edit, permissible under living-source, but it changes a ratified fork's integrity behavior.
Your call.
docs/spine/CH_39.md L201 declares kind exploration_interaction. L297 declares the opposite:
"integrity_divergence typed at FORK_CH39_A (the exposure-response, §10b — SUBSTANTIAL,
exploration_interaction, action-keyed with a direction) and **FORK_CH39_B (the fixer-Tunde handling,
§10b — ACCUMULATIVE, dialogue_six_option)**" [SRC: docs/spine/CH_39.md # L297]. The 2026-07-15 re-kind
[SRC: docs/SPINE_LIVING_REVISION_LOG.md # L143] updated the §10b block and missed the §12
integrity_divergence line.
This is mechanical, invents nothing, and is gate-invisible (the kind⇔shape rule reads the §10b block, not
§12). Under Option D/E the fix is dialogue_six_option → exploration_interaction at L297. Under Option
F it resolves the other way. CH_28's equivalent line names no kind [SRC: docs/spine/CH_28.md # L271] and
needs nothing.
The prior brief claimed: a literal pipe inside a cell "adds a column and the header comparison at L617
raises E(...)," corroborated "again at L649." **Both halves are wrong, and the first is wrong in the
dangerous direction.** I read the parser and simulated it this run.
cells = [c.strip() for c in s.strip("|").split("|")][SRC: harness/check_spine_graph.py # L308]. That location is correct.
model["scene"] row loop — a different table entirely [SRC:harness/check_spine_graph.py # L646-649]. The corroboration is withdrawn.
dict(zip(hdr_cols, cells)) [SRC: same # L317], and zip truncates to the shorter sequence. The header check reads `hdr = [k.strip().lower()
for k in f["rows"][0].keys()] [SRC: same # L604] — those keys are always hdr_cols`, i.e. the HEADER
row's cells. A stray pipe in a data row therefore cannot change hdr and cannot trip L617.
+CH28_{TRULY_GOOD|DEFIANT} in the last column, the ws_writes cell is silently truncated to
ws.six_option_cumulative_record: +CH28_{TRULY_GOOD — the |DEFIANT} fragment is dropped by zip,
no error, gate green on a corrupted write. With a pipe in an earlier column, every later cell **shifts
left** and the last column's value is dropped entirely — again silently, unless a shifted value happens
to land in direction and fail the enum check at L575-577.
So the hazard is **real and worse than described — a silent, gate-invisible corruption, not a loud
error — and correspondingly it is a notation trap, not a structural argument.** The prior brief used
it as one of two "mechanical" reasons the map "requires" six rows. It does not carry that weight, and I
have demoted it. The structural argument that survives is the other one, and it is sound: **a shared row
carries one delta and one six_option_slot cell.** SIX-OPTION-7's slot column is load-bearing — "each
row's ws_writes appends its slot enum to WS_018" [SRC: docs/SPINE_SCHEMA_v3.md # L70] — so two slots on
one row means an ambiguous slot cell and an ambiguous append; and giving DEFIANT ~0 while TRULY_GOOD
carries +Substantial for the same outcome requires separate rows. Six rows is legal: options are "2-6 per
fork" [SRC: same # L66] and the gate warns only below 2 [SRC: harness/check_spine_graph.py # L586-587].
Under Option D/E (recommended): fix CH_39 L297's kind (§9.2); re-word the CH_28 L176 / CH_39 L203
framing line if Option E is taken; optionally tighten IPW §6.4 L276 (§4); rule on CH_17's two cells
(§9.1). No registry CSV edit.
LANDING RITUAL — stated inline (this was MAJOR E), not deferred. Any of these edits touches canon
prose or a _source .md tier doc, so:
python harness/rag/index.py --scope canon — else the index_freshness gate (gate14 of 16 [SRC: harness/gates_config.json]) reddens.
_source .md edit): additionally `python harness/scan_migration_integrity.py _source --emit-baseline docs/scan_baseline.json — the scan` gate
(gate 3) runs scan_migration_integrity.py against the whole _source tree [SRC: harness/gates_config.
json], so an IPW .md edit shifts it and the baseline must be re-emitted in the same commit.
docs/fidelity_baseline.json is NOT required. (docs/fidelity_baseline.json and docs/scan_baseline.
json` both exist and are live.)
python harness/run_gates.py UNPIPED (a | tail/| grep makes $? the pipe's exit code,masking a red gate) — expect 16/16.
Under Option F: the full re-kind/re-shape. For completeness, verified this run:
exploration_interaction → dialogue_six_option at CH_28 L173 and CH_39 L201, plus CH_39 L297.six_option_slot | opportunity_effects | ws_writes |`. Rows 3→6 at CH_28 (table L178-182), 2→6 at CH_39
(table L205-208). SIX-OPTION-7 has no mark_write and no relationship/faction column; **the fold is
lossless — verified, not assumed**: mark_write is none on all three CH_28 rows [SRC:
docs/spine/CH_28.md # L180-182] and both CH_39 rows [SRC: docs/spine/CH_39.md # L207-208], and the
relationship/faction content is already ws.* keys that fold into ws_writes verbatim (CH_28's
ws.faction_standing_per_faction, CH_39's ws.relationship_history). The gate enforces the kind⇔shape
cross-rule at ERROR level [SRC: harness/check_spine_graph.py # L604-620], so re-kind and re-shape land
together or the gate reds.
ws.six_option_cumulative_record: +CH28_TRULY_GOOD … +CH39_TRULY_BAD), on the CH_17 pattern [SRC: docs/spine/CH_17.md # L182-187].
ws.six_option_cumulative_record: per FORK_CH17_A's selected slot (appended in the fork's ws_writes)}`
[SRC: docs/spine/CH_17.md # L153]. CH28_B10's out-set is {local.recruitment_answered: true} [SRC:
docs/spine/CH_28.md # L160]; CH39_B09's is {local.fork_b_resolved: true} [SRC: docs/spine/CH_39.md #
L152]. Both would need the WS_018 clause or the write is invisible at the beat layer.
HL_0040's no-placeholder rule governs the shipped voiced lines, which are the dialogue build's work):
CH_28 DEFIANT — tell him plainly that no one owns her and walk out through the door he was sure she
would not use · CH_28 SYMPATHETIC — meet his warmth with her own and let the evening stay open, the
answer never quite given · CH_28 DETACHED — read him across the table as a specimen and give him
nothing to file · CH_39 SYMPATHETIC — sit with the man and show him what he was part of · CH_39
CURIOUS — ask him what he thought he was doing, and let the answer do the work · CH_39 DEFIANT — tell
him the House does not get to keep him, and make it true · CH_39 DETACHED — take what he knows and
leave him where he stands.
Reveal discipline — verified, both maps reveal-neutral. CH_28 keeps the D-14 ceiling: the network
unnamed, no agent-noun, no who-frame; the fork's care_note [SRC: docs/spine/CH_28.md # L175] is unchanged
and none of the drafted glosses introduces a who-frame. CH_39 is post-Ch-38 — House named, chain dark
above the operative, Cassius held for Ch 76, thesis for Ch 77 [SRC: docs/spine/CH_39.md # L317].
What must NOT be touched, under any option. No registry edit — WS_018's row already declares the enum
set and consumers; nothing under registries/** changes, so docs/fidelity_baseline.json needs no
refresh.
**Where the fork ids live — verified by repo-wide grep this run (correcting a false round-3 claim; this
was MAJOR D).** The prior draft asserted the ids "appear nowhere outside docs/spine/." A single grep
refutes it. FORK_CH28_A / FORK_CH39_B appear in docs/spine/ (CH_28, CH_29, CH_39,
CARDINALS_RATE_AND_ROSTER.md, v3_exemplars/CH_39_v3.md) plus three files outside it:
docs/OPUS_HANDBACK_POST_V3.md # L245 — the O-8 order text itself, which describes both forkscollapsing "with no slot→row map." **Under Option F this goes stale and must be updated in the same
commit**; under Option D/E it is accurate and needs nothing.
harness/spine_graph_scorecard.json and harness/spine_graph_scorecard.md — regenerated gate output;no action.
No registry carries either id — so the work order's row-deletion prohibition is not engaged. No CH_17
exit/assert-block edit — CH_17 does not assert WS_018 in its seams [SRC: docs/spine/CH_17.md # L294,
L298]. docs/spine/v3_exemplars/CH_39_v3.md L89-97 carries a stale copy of this fork (anchor CH39_B07,
not the live CH39_B09) — a conversion exemplar, not live canon, OUT OF SCOPE, flagged because it will
drift further.
This is the round-4 pass. The round-3 critic returned GO_WITH_FIXES with 6 MAJORs (A–F). All six are
CONFIRMED against the live files and worked at their sections above; none touched the recommendation, but
all six were places the brief over-claimed and now does not. **Every load-bearing citation was re-opened
against the live file THIS run — count re-verified this pass: ~55 [SRC:] cites** across the six
fixes and the surrounding argument. The six MAJOR-driven corrections:
1. MAJOR A — §3 said "Ch 28 is not an input the ending resolver reads." REFUTED by WS_018's own
consumer list (Worldstate_Variables L19 names Ch76_77_ending_cutscene_specific_content_resolver as a
consumer of the per-chapter array). Re-verified L19 this run. Corrected to UNSPECIFIED in §3, §5, §6.
2. MAJOR B — §1 conflated the ratified six-option FRAMING with the open per-slot MODELING choice, and
dropped IPW §6.6 L286 sentence 1 ("standard register across the dialogue-bearing chapters"). Verified
L286 sentence 1 + HL_0039 L40 (universal, authority CVD §17.8) this run. §1 re-titled and re-scoped
to the modeling question; "the record establishes … the opposite" deleted.
3. MAJOR C — Option E proposed retiring the framing line, which CH_28 L308 designates the runtime-
framing carrier. Verified L308's full text this run. Option E re-titled "RE-WORD … (never retire it)";
deletion ruled off the table under any answer.
4. MAJOR D — §10's "appears nowhere outside docs/spine/" was FALSE. Repo-wide grep this run: also in
docs/OPUS_HANDBACK_POST_V3.md L245 + harness/spine_graph_scorecard.{json,md}. Corrected in §10;
departure-from-order note added to §5 (verified OPUS_HANDBACK L245/L249-251).
5. MAJOR E — the landing ritual was deferred to the structured output. Verified gates_config.json
this run: 16 gates, scan = gate 3 (scan_migration_integrity.py against _source), index_freshness
= gate 14; both baseline files exist. Ritual now stated inline in §10.
6. MAJOR F — §8 over-read CH_39 L202 as ruling out Map 39-C. Verified schema L63/L66 this run: the
coverage annotation asserts direction reachability, not slot distribution. §8 corrected; 39-C's L202
Against struck, its rejection carried by the content-bar ground alone.
Minors from the round-3 critic, all applied and verified this run: the CH_17 slot-row provenance split
between the v3 conversion (delta cells, CH_17 L312) and the 2026-07-15 pass (ws_writes appends, revlog
L143) — §1, §5; the §2 grep now reports both hits (CH_17:176 + CH_17:312); the runbook gotcha-19 cite
widened to L209-211 (verified "assimilation forks" sits on L211); the FABLE-predates-SIX-OPTION-7
argument added to §5 (verified FABLE L10 sits in the pre-grammar B2 block; schema L70 dates the grammar
2026-07-15; CH_39_v3 L90 carries kind exploration_interaction). §9.2's kind self-contradiction
re-verified (CH_39 L201 vs L297).
Self-caught on re-verify this run: the OPUS_HANDBACK line is L245 (the order text), not the round-3
critic's approximate "L200/L204" — I used the grep-verified numbers. No other citation moved.
What I could not close:
framing per MAJOR B). The record establishes that no per-slot TYPING traces to you; it does not — and
cannot — establish whether you WANT the spine to model the per-slot routing. I did not run git
archaeology (read-only order, git forbidden), so my evidence is the in-file v2.5 notes, Decisions
blocks, revision log, and v3 exemplars — strong, but not the commit history.
Ch 76-77 cutscene specifics via Ch 75, but NO document states HOW the per-chapter slot array is read —
modal slot? counts? weighted by fork magnitude? And per MAJOR A the ending resolver is a *declared
consumer of the per-chapter array*, so whether it reads pre-Ch-75 entries is unknown. This is the one
thing that could revive Option F on its merits, and it bounds how confident anyone can be here,
including me.
**What I got wrong across four rounds, recorded because it changed the recommendation and because the bar
is honesty about verification:**
exploration_interaction for a false reason (that SIX-OPTION-7 drops the relationship/faction writes; the fold is lossless).
mis-scoped HL_0069 and a fabricated gate mechanism.
Ch 28), the MAJOR-B conflation (framing unauthored), and a false MAJOR-D "verified" claim.
every over-claim that propped it up. The recommendation now rests only on §5's four verified grounds.
The oscillation is real and you should weight it: a brief that reached this answer partly on false
supports twice earns lowered confidence. The two places my reasoning could still be wrong are named in
§6's STRONGEST OBJECTION — the resolver's unspecified appetite, and whether CH_17 is pattern or anomaly.
dialogue_six_option fork inherits D-8.0's delta discipline. CH_17's two illegalcells (§9.1) are identified, not drafted, and sit outside this order's scope.