SIX_OPTION_COLLAPSE_BRIEF.md

decisions/spine/SIX_OPTION_COLLAPSE_BRIEF.md

O-8 — The six-option collapse map for FORK_CH28_A and FORK_CH39_B

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.

0. Round-4 notice — the recommendation SURVIVES, but the six over-claims that propped it up are corrected

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.

1. The modeling question — the six-option FRAMING is ratified; what is open is whether the SPINE models the per-slot routing

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:

six 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.

2. The question, and where it stands

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).

3. The canonical six and their registers

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.

4. D-8.0 — the biography-slot delta discipline (CVD-dictated; ratify regardless of §1)

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.

5. What the record does and does not establish

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: universalevery 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

L157] and CH_39's anchor CH39_B09 is mode character [SRC: docs/spine/CH_39.md # L149]. Both are valid

modes 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.

6. The real options — the status quo re-run against HL_0069's true scope

canonical-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.

7. MAP A — FORK_CH28_A (drafted; applies only under Option F)

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.

corrosive 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.

If Option F is ruled — the recommended map is 28-A

six_option_slotdurable outcomedirectiondelta
TRULY_GOODrefuse-and-marked-enemygenerative+Substantial
DEFIANTrefuse-and-marked-enemygenerative~0
SYMPATHETICplay-both-facesneutral~0
DETACHEDplay-both-facesneutral~0
CURIOUSplay-both-facesneutral~0
TRULY_BADtake-the-offercorrosive−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.

8. MAP B — FORK_CH39_B (drafted; applies only under Option F)

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]:

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_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.

If Option F is ruled — the recommended map is 39-A

six_option_slotdurable outcomedirectiondelta
TRULY_GOODfree-and-turngenerative+Accumulative
SYMPATHETICfree-and-turngenerative~0
CURIOUSfree-and-turngenerative~0
DEFIANTfree-and-turngenerative~0
DETACHEDuse-and-discardcorrosive~0
TRULY_BADuse-and-discardcorrosive−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.

9. The two real defects — these are true regardless of §1, and worth fixing either way

9.1 CH_17's two CVD-illegal deltas (CONFIRMED)

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.

9.2 CH_39 contradicts itself about FORK_CH39_B's kind (CONFIRMED — new this round)

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_optionexploration_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.

9.3 The pipe hazard — restated correctly (this was MAJOR 3)

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.

[SRC: harness/check_spine_graph.py # L308]. That location is correct.

harness/check_spine_graph.py # L646-649]. The corroboration is withdrawn.

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].

10. The wiring that WOULD be applied — per ruling. NOTHING IS APPLIED.

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:

14 of 16 [SRC: harness/gates_config.json]) reddens.

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.)

masking a red gate) — expect 16/16.

Under Option F: the full re-kind/re-shape. For completeness, verified this run:

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.

+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:

collapsing "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.

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.

11. Citation audit (round 4), what I could not close, and what I got wrong

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:**

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.

cells (§9.1) are identified, not drafted, and sit outside this order's scope.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root