decisions/BESTFRIEND_SEED_DOSSIER.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
The canon: the CVD · the T1 foundation docs · the T0 registries (registries/) · the spine
(docs/spine/CH_*.md) · the region pages (_source/02_Tier_2_Region_Pages/). Authority order:
docs/DOC_MAP.md § 0.
Canon served:T3_Core_Characters§2.2 / §3.2 / §3.4 ·docs/spine/CH_01.md·
docs/spine/CH_13.md·docs/spine/CH_75.md·T0_Character_Index·T0_Hard_Lines·
T0_Worldstate_Variables·T1_Integrity_Paths_Worldstates_Master§8.11 ·
docs/spine/DECISIONS_PENDING_JOSH.md·docs/boards/SLICE_COMPLETION_BOARD.md·
docs/PRE_5090_BUILD_PLAN.md.
READ THAT CANON FIRST — open it and derive from it before you build anything from this document.
If this document disagrees with canon, CANON WINS and this document is the defect. Nothing here is
applied until it is ratified into canon.
This document mints no registry row, edits no canon file, applies nothing to any registry, and
changes no numerical, naming, hard-line or §17 content. It proposes a row SHAPE, a transfer
CONTRACT, a hook INVENTORY, and one decision BRIEF routed to Josh through the main director.
Honest tier: ROW SHAPE AND CONTRACT — TEXT ONLY, NOTHING APPLIED. No character row exists for this
entity today and none is minted here. No image, plate or geometry is produced or dispatched.
PRONOUN CONVENTION, declared before anything reads it, on the exemplar's own precedent
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # The pronoun convention, restated where an author will hit it].
This document names the seed entity BY RELATION — the best friend, the friend, the one who stayed —
and carries NO GENDERED PRONOUN for that entity anywhere, using the relation word or the
gender-neutral form the spine itself uses ("They call after you once")
[SRC: CH_01 # Body prose]. That is not a stylistic preference: the friend's gender is the player's
Ch-1 Selection-2 choice and is the very parameter this dossier exists to carry
[SRC: T3_Core_Characters # Chapter 1 Character Creation], so a gendered pronoun here would be an
authored value in the one cell that must stay unauthored. Where this document says "she" of
CHAR_0002, it is inheriting the exemplar's declared DESIGNER-SIDE READING CONVENIENCE and nothing
more — her gender is inherited from the same unauthored selection
[SRC: T3_Core_Characters # Identity Parameters]. Every player-facing surface derived from this
document is pronoun-free with respect to both entities, and any consumer strips the convention
before authoring a line.
Citation form, declared on the face. Every citation is either an insertion-invariant
doc-and-heading-fragment anchor or a registry row-key anchor, the two forms
harness/check_source_anchors.py proves. This document carries ZERO line-range citations: a new
line-range pointer hard-fails the line_citations tooth unless docs/line_citation_baseline.json
is re-emitted in the same commit, and that baseline is a shared file this lane is forbidden to
touch. Where a claim rests on a build/ file, which the anchor index does not cover, the path and
section are named in plain prose instead.
DERIVED FROM:
docs/boards/SLICE_COMPLETION_BOARD.md — the two records of the absence, quoted verbatim at §1:the Chapter-1 CANON cell and the BD-08 asset-blocker note
[SRC: SLICE_COMPLETION_BOARD # Chapter 1 -- the other realm]
[SRC: SLICE_COMPLETION_BOARD # BD-08].
docs/spine/CH_01.md — the whole node. Entry header (the four selections as canon, thehard-line binding), Continuity anchor (THE CONSTANCY), Body prose (the friend at the door and on
the plain, the fight about nothing), §10 Beat graph (CH01_B03 the finding, CH01_B11 the childhood
lived, CH01_B12 the argument), §10b Fork graph (the selections are not fork nodes), Key ally NPCs
(the seeding sentence this dossier is built on), Dialogue and scene anchors (SC_CH01_the_argument),
Mechanical anchors, End-state carry-forward (biography_set; companions_present NONE), Seam
state-diffs, Decisions surfaced (Q1, Q2, Q7, Q8).
docs/spine/CH_13.md — Continuity anchor (the designer-only gender-resonance note and itszero-forward-valence clause), §10 Beat graph (CH13_B01 the join, CH13_B13 the gift), Key ally NPCs,
Dialogue and scene anchors (SC_CH13_the_gift, no gender fixed on either party), Seam state-diffs,
Decisions surfaced (the gender-discipline record and the flagged pre-existing prose defect).
docs/spine/CH_75.md — Body prose (the re-meeting in the grief-country), Key sites and spatiallayout (grief_country hosts CH75_B03), §10 Beat graph (CH75_B03), §10b Fork graph (FORK_CH75_B and
its three band rows), Key ally NPCs (the full role-level build of the friend and the echo-completion
clause), Dialogue and scene anchors (SC_CH75_the_one_she_grew_up_beside), Mechanical anchors
(childhood_best_friend), Three-layer surfacing, Decisions surfaced (Q14, the CF-2 payoff APPLIED).
_source/03_Tier_3_Characters/T3_Core_Characters [ACTIVE v1.0].md — §2.2 Chapter 1 CharacterCreation (Selection 2 in full), §2.3 The Biography Parameter System, §3.1 Canonical Identity, §3.2
Identity Parameters (the gender inheritance and the designed resonance), §3.4 Ch 13 South Africa —
The Active Companion Activation (the companion architecture bullet list, including the no-combat
ruling and the D-2 F-STAR re-affirmation).
_source/01_Tier_1_Foundation/T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1].md §8.11.3 TheFor-Life Inversion, §8.11.7 Player-Shaped Ally Stat Spreads, §8.11.8 The Intelligence Axis and Ally
Behavior Quality, §8.11.9 Allies as Build Components.
registries/T0_Character_Index — the thirty-eight-column face; CHAR_0164 The Mother as theby-relation, name-deferred, realm-side precedent this row shape follows; CHAR_0002 Ntala as the
seed's destination; CHAR_0005 The Elven King as the title-only naming precedent.
registries/T0_Worldstate_Variables — the full forty-eight-row variable list, read to establishwhich state key carries the Ch-1 selections (§4 finding G-1); WS_007, WS_008, WS_027.
registries/T0_Hard_Lines — HL_0096, HL_0099, HL_0116, HL_0043.docs/PRE_5090_BUILD_PLAN.md — the WS-8 table: P2.11 character creation and N8.5 the companionand loyalty system, whose one-line spec is the transfer contract this dossier expands
[SRC: PRE_5090_BUILD_PLAN # WS-8].
docs/proposals/PERSONA_EXEMPLAR_CHAR_0002.md — the register bar for this artifact class, and thesource of finding F-3, which already carries the combat-focus collision as an unresolved item.
docs/spine/DECISIONS_PENDING_JOSH.md — the 2026-07-27 third sitting (the constancy and the dumbfight), the sixth sitting (the ending sequence), the twenty-ninth sitting (the by-play selection
mechanism), and the head board, checked before §6 was written so no ruled question is re-asked.
build/art/characters/CHAR_0002_CANON_SHEET.md §7 — the same combat-focus collision, recordedthere as a finding for the director and deliberately not resolved by that lane. Cited in prose
because build/ is outside the anchor index.
NOT DERIVED (authored judgment, and why it had no canon home):
fixed cells, player-parameterized cells, and Josh-deferred cells. T0_Character_Index has no
column that marks a cell as player-varying, and CHAR_0002's row expresses its own gender fork by
writing prose into voice_signature_notes rather than by any schema affordance. The framing is
this document's; the schema hole it exposes is carried as finding G-3.
"best-friend seeds the main companion" [SRC: PRE_5090_BUILD_PLAN # WS-8], and no canon states the
write, hold, read, apply, firewall and re-read stages. Each clause is derived from a cited canon
fact and names its derivation inline; the sequencing of them is authored.
Alternative 5 is grounded in FORK_CH75_B's own TRULY_GOOD row [SRC: CH_75 # Fork graph] but the
proposal to route the orphaned clause there is this document's.
ROUTING NOTE (contract clause 2). persona and character-row are not listed work kinds in
harness/route.py, so no read-set exists for the dossier's §2-§5 halves. The nearest listed kind for
the §6 half is decision, and it was resolved live — `python harness/route.py decision --chapter
CH_01 — returning CLAUDE.md's decision protocol, the DECISIONS head, docs/BATCH1_RULINGS.md`, the
CVD, and CLAUDE.md's rulings-are-the-floor law, read in that order before §6 was written. The canon
nodes read in place of a row-shape read-set are the eight enumerated above, read in the order the
mandate set. Adding a character-row kind to route.py is finding G-8.
The mandate's premise is measured, not asserted, and the board records it in two places on two
different rails.
RECORD ONE, the Chapter-1 CANON cell. The board's Chapter 1 entry is tiered GREYBOX, and its
evidence line ends with the measurement and the consequence in the same sentence: 0 named characters
carry this node as first appearance in T0_Character_Index, measured over 167 rows, and therefore
"the best-friend who seeds the main companion has no character row". The cell's first Remaining line
is that row, stated as a canon debt rather than an art debt — "the best-friend character row -- the
companion seed is canon with no registry entity"
[SRC: SLICE_COMPLETION_BOARD # Chapter 1 -- the other realm].
RECORD TWO, the BD-08 blocker note. BD-08 is the named-slice-characters-with-a-character-asset
blocker, and it closes with the same absence read from the ART side: "Chapter 1 still carries ZERO
named-character rows, so the best-friend who seeds the main companion has no registry entity to
generate from" [SRC: SLICE_COMPLETION_BOARD # BD-08].
The two records are not a duplicate. The first says the CANON layer is missing a row the story
already depends on; the second says the ASSET layer has nothing to generate from because of it. One
row shape answers both, which is why this dossier proposes one and not two.
The absence was re-measured at head before this document was written, on the same discipline
CHAR_0164's own provenance cell records: a scan of T0_Character_Index's
chapter_first_appearance column returns exactly three rows anchored to the realm nodes —
CHAR_0001 the Protagonist, CHAR_0005 the Elven King, and CHAR_0164 the Mother, all at Prologue —
and none at Ch 1 [SRC: T0_Character_Index @ CHAR_0164] [SRC: T0_Character_Index @ CHAR_0005]. The
registry's last allocated id at that read is CHAR_0167. The zero is an answer, not a search that
could not reach.
Everything in this section is cited. Nothing in it is this document's.
best friend in the fairy realm" [SRC: T3_Core_Characters # Chapter 1 Character Creation]. Ch 1's
entry header carries the same four selections as binding canon and names the downstream in the
same clause — the best friend's gender determines the healer's-child gender at Ch 13
[SRC: CH_01 # Entry header].
life" [SRC: CH_01 # Body prose]. CH01_B03's objective is to find the friend, "a life, not a menu"
[SRC: CH_01 # Beat graph]. The sibling Selection-1 mechanism was ruled by-play at the
twenty-ninth sitting; no equivalent mechanism is ruled for Selection 2, and none is invented here
[SRC: DECISIONS_PENDING_JOSH # RULED 2026-07-30 (twenty-ninth sitting)].
the door and out on the plain through every afternoon of the years the grudge runs, not from
obligation but because they simply are [SRC: CH_01 # Continuity anchor]. That is Josh's own third-
sitting authoring: "The best friend was always there, by their side, making them happy"
[SRC: DECISIONS_PENDING_JOSH # RULED 2026-07-27 (third sitting)].
clumsily to help and the child closing, deflecting and walking away, and no beat mends it before
the fall [SRC: CH_01 # Key ally NPCs]. The scene row holds the care clause: the friend is only
trying to help and nobody is a villain [SRC: CH_01 # Dialogue and scene anchors]. There is no
option to mend it — the ruled crueller cut [SRC: CH_01 # Fork graph].
best friend is not carried through, and seeds the Ch-13 companion Ntala's starting build"
[SRC: CH_01 # End-state carry-forward]. The seam assertion says the same
[SRC: CH_01 # Seam state-diffs].
best friend's gender, skills, and combat focuses SEED the starting gender, skills, and
combat-focus of the healer's child (CHAR_0002, Ntala) — the protagonist's main and longest
traveling companion, who joins at Ch 13 and then develops across the arc"
[SRC: CH_01 # Key ally NPCs]. T3 states the narrower gender half as the tier-doc canon: "The
selected best friend's gender determines the gender of the healer's child who joins the
protagonist at Ch 13 South Africa" [SRC: T3_Core_Characters # Chapter 1 Character Creation], and
§3.2 restates it from the destination side with the design reason attached
[SRC: T3_Core_Characters # Identity Parameters].
invisible on first play and never surfaced", carrying zero forward reveal-valence
[SRC: CH_13 # Continuity anchor]. Ch 1 binds the same at CH01_B03's reveal field
[SRC: CH_01 # Beat graph].
the friend is met again at the homecoming as an ally-side reunion in the Movement-1 grief-country
register, built at role level with the name deferred, reveal-orthogonal, never a mid-game travel
companion, and no-dead-end [SRC: CH_75 # Decisions surfaced] [SRC: WHOLE_ARC_CONNECTIVE_WEB # CF-2].
This dossier does not reopen it.
the naming method and Josh" [SRC: CH_75 # Key ally NPCs], and again on the mechanical-anchor line
[SRC: CH_75 # Mechanical anchors]. The method is docs/NAMING_METHOD.md [SRC: NAMING_METHOD]. The
discipline is the one HL_0099 sets for the King and CHAR_0164 inherits by relation for the mother
[SRC: T0_Hard_Lines @ HL_0099] [SRC: T0_Character_Index @ CHAR_0164].
What canon does NOT fix, stated so no later pass mistakes a blank for a decision: the friend has no
species line of their own beyond being one of the realm's own [SRC: CH_75 # Body prose], no age
statement, no family, no faction row, no voice register, no appearance canon, and no beat on either
node that joins a thread [SRC: CH_01 # Beat graph] [SRC: CH_75 # Beat graph]. The row shape below
leaves every one of those cells blank and declares each blank, rather than filling it.
PROPOSAL-TIER. Nothing here is applied. The id is not allocated by this document: the director
allocates deterministically at apply, after a fresh pull, so that a sibling lane landing a row first
shifts the base and nothing collides. At the read taken for this document the next free id is
CHAR_0168 and the registry's last row is CHAR_0167.
The shape follows CHAR_0164 rather than CHAR_0002, and the choice is load-bearing. CHAR_0164 is the
corpus's one existing realm-side, name-deferred, present-in-two-nodes, never-a-target row, and its
provenance cell is the established form for carrying a Josh-deferred name and a proposal-tier
attackability token without inventing either [SRC: T0_Character_Index @ CHAR_0164]. CHAR_0002 is the
wrong template: she is a travelling for-life companion with a full loyalty block, and the friend is
canonically NOT a travel companion [SRC: CH_75 # Key ally NPCs].
The thirty-eight columns split three ways, and keeping the classes apart is the whole point of
calling this shape parameterized.
playthrough.
derived from it. These are the cells that make this row unlike every other row in the registry,
and the schema has no affordance for them — see finding G-3.
declared in extensions on the CHAR_0164 precedent.
| column | class | PROPOSED value | grounding |
|---|---|---|---|
| character_id | fixed | director-allocated at apply | id space is the director's, never a lane's |
| name | deferred | The Childhood Best Friend (by relation only — the protagonist's fairy-realm best friend, the Ch-1 Selection-2 choosing; no proper name minted) | name deferred to the naming method and Josh [SRC: CH_75 # Key ally NPCs] |
| role | fixed | fairy_realm_childhood_best_friend_the_ch_1_selection_2_choosing_the_one_who_stayed_while_others_turned_left_behind_in_the_realm_at_the_fall_re_met_grown_at_the_ch_75_homecoming_seeds_the_ch_13_primary_human_companions_starting_build | [SRC: CH_01 # Continuity anchor] [SRC: CH_01 # Key ally NPCs] [SRC: CH_75 # Key ally NPCs] |
| chapter_first_appearance | fixed | Ch_01 | CH01_B03 is the finding beat [SRC: CH_01 # Beat graph] |
| chapters_present | fixed | Ch_01;Ch_75 | the two nodes that stage the friend [SRC: CH_01 # Beat graph] [SRC: CH_75 # Beat graph] |
| seed_status | fixed | canonical | the selection is CVD-level canon [SRC: T3_Core_Characters # Chapter 1 Character Creation] |
| antagonist_family_affiliation | fixed | none | reveal-orthogonal, no family who-frame [SRC: CH_75 # Beat graph] |
| faction_affiliations | fixed | fairy_realm_the_kings_court_and_the_people_of_the_realm_one_of_the_realms_own | the friend is "one of the realm's own" [SRC: CH_75 # Body prose] |
| thread_involvement | deferred, blank | blank | DECLARED BLANK: CH01_B03 and CH75_B03 both carry threads [none] [SRC: CH_01 # Beat graph] [SRC: CH_75 # Beat graph] |
| voice_signature_notes | player-parameterized | the constancy register — present-tense warmth, never a promise; the one who says the hard true thing clumsily and kindly and gets closed on for it; no gender-fixed voice and no pronoun on any player-facing line, the voice preset forking off the player's Selection-2 gender exactly as CHAR_0002's does | [SRC: CH_01 # Body prose] [SRC: CH_01 # Key ally NPCs] [SRC: T0_Character_Index @ CHAR_0002] |
| authoritative_doc | fixed | T3_Core_Characters_2 | §2.2 owns Selection 2 [SRC: T3_Core_Characters # Chapter 1 Character Creation] |
| extensions | fixed | the provenance cell drafted at §3.3 | CHAR_0164 precedent [SRC: T0_Character_Index @ CHAR_0164] |
| attackability_tier | fixed, proposal-tier token | protected-collective | the closest attested token for never-framed-as-a-target; the fair-folk court is honored allies and never targets [SRC: CH_01 # Key ally NPCs], and the Ch-75 reunion is ally-side [SRC: CH_75 # Key ally NPCs]. The token choice is proposal-tier; the never-a-target FACT is canon |
| is_load_bearing | fixed | true | the seed drives CHAR_0002's starting build and CH_75's FORK_CH75_B [SRC: CH_01 # Key ally NPCs] [SRC: CH_75 # Fork graph] |
| loyalty_model | fixed, blank | blank | DECLARED BLANK: not a travel companion, never on the WS_027 roster [SRC: CH_75 # Key ally NPCs] [SRC: T0_Worldstate_Variables @ WS_027] |
| loyalty_state | fixed, blank | blank | same |
| loyalty_belief_axis | fixed, blank | blank | same |
| loyalty_departure_threshold | fixed, blank | blank | same |
| loyalty_join_trigger | fixed, blank | blank | same |
| loyalty_notes | fixed | the declaration drafted at §3.4 | so no later pass reads the five blanks as unbuilt |
| mesh_id_ref | player-parameterized, blank | blank | the gender fork needs two tiles and the column holds one — finding G-3 |
| mesh_pipeline_type · substrate_material_ref_path · mesh_tags | deferred, blank | blank | the realm builds last, at slice-end, on the matured pipeline; the visual chain is not this lane's |
| generation_status | fixed | pending | matches every unbuilt row in the registry |
| generation_prompt_hash · last_generated_timestamp · regeneration_trigger · ue_asset_path · binding_kind · generation_tier · decay_bearing · decay_stage · voice_signature_ref · voice_substrate_override_object · dialogue_dataset_ref · generation_licence_ref | deferred, blank | blank | unbuilt across the whole realm-side cast |
extensions provenance cell, draftedThe cell below is the row's own record of what it is and what it deliberately does not claim. It is
drafted here so the apply pass pastes rather than composes.
The entity is the player's Ch-1 Selection-2 choosing, canon since T3_Core §2.2, and it has had no
registry row for the whole life of the corpus — an absence the slice board records twice, once as a
canon debt on the Chapter-1 CANON cell and once as an asset blocker under BD-08. THE ABSENCE WAS
RE-MEASURED AT HEAD BEFORE THIS MINT: chapter_first_appearance carries exactly three realm-node
rows (CHAR_0001, CHAR_0005, CHAR_0164, all Prologue) and none at Ch 1, against live controls that hit
on the identical scan. WHO THEY ARE, CARRIED FROM THE SPINE AND NOT COMPOSED HERE: the one the
childhood days are spent beside and THE ONE WHO STAYED WHILE OTHERS TURNED, present at the door and
out on the plain through every afternoon of the years the realm's grieving people turn away (Josh
RULED 2026-07-27, third sitting); the one the protagonist hurts at CH01_B12, trying clumsily and
kindly to help and getting closed on for it, with no beat that mends it before the fall (the ruled
crueller cut, sixth sitting); left behind in the realm at the rift-fall and NOT carried through
(CH_01 end state, companions_present NONE); grown in the years the protagonist was gone and re-met at
the Ch-75 homecoming in the grief-country at CH75_B03, ally-side and restrained, one of the realm's
own (Q14, the CF-2 payoff APPLIED per Josh's directive). NAME CELL IS PROVISIONAL AND BY RELATION
ONLY — no proper name is minted here; CH_75 defers identity and name to the naming method and Josh,
and the entity inherits the HL_0099 title-only discipline by the same route CHAR_0164 does. THE
DOWNSTREAM THIS ROW EXISTS TO ANCHOR: the selected friend's gender, skills and combat focuses seed
the starting gender, skills and combat-focus of CHAR_0002 Ntala, who joins at Ch 13 and then develops
across the arc (CH_01 Key ally NPCs; T3_Core §3.2) — the transfer contract is
docs/proposals/BESTFRIEND_SEED_DOSSIER.md §4, and the combat-focus half of that clause is an
UNRESOLVED canon-internal tension routed to Josh at that document's §6, recorded here so no later
pass reads either line as settled. REVEAL: the resonance is DESIGNER-ONLY and carries zero forward
valence — Ch 1 holds it at CH01_B03 and Ch 13 states it as "invisible on first play and never
surfaced", and the Ch-75 reunion is reveal-orthogonal, carrying no family who-frame, no thesis and no
Grand-Sage content (HL_0116, HL_0043). GENDER IS NOT AUTHORED AND IS NOT THIS ROW'S: it is the
player's selection, which is why voice_signature_notes carries the parameter rather than a value
and why every player-facing line derived from this row is pronoun-free. WHAT THIS ROW DOES NOT MINT:
no name, no T3 supporting-character doc (the authoritative doc is the tier section that owns the
selection), no thread involvement (both staging beats carry threads [none]), no loyalty block (the
friend is explicitly NOT a travel companion and never enters the WS_027 roster), no age, species,
family or appearance canon, and no persona-system row (T0_Persona_Index is unminted).
loyalty_notes declaration, draftedFive loyalty columns are blank and the blank is the design, not a gap. CH_75 states it in terms: the
reunion is "an ALLY-SIDE reunion … and NOT a mid-game travel companion (the older travel-companion
idea was ruled mistaken — the friend lived in the realm while the protagonist was exiled on Earth)",
and the friend "stays in the realm (NOT a travel companion)"
[SRC: CH_75 # Key ally NPCs] [SRC: CH_75 # Mechanical anchors]. A loyalty model would put this
entity on the live traveling-party ledger at WS_027, which seeds membership and per-member loyalty
from exactly these columns [SRC: T0_Worldstate_Variables @ WS_027]; writing them would therefore
create a party member canon says does not exist. What the friend has instead is a path-dispatch
reunion that READS the Ch-65-locked band and writes relationship history — FORK_CH75_B, whose three
rows write ws.relationship_history and never a loyalty value
[SRC: CH_75 # Fork graph] [SRC: T0_Worldstate_Variables @ WS_008].
T0_Persona_Index is unminted, and the persona spine is proposal-tier[SRC: ENTITY_PERSONA_SYSTEM # The common persona spine]. When it mints, this entity is a
person-class, non-flagship instance and the exemplar is the template.
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # Findings for the director].
docs/spine/player_strings/CH_01.csv sidecar that carries Vennathir and Talvaeren while the
machine ids stay machine ids [SRC: CH_01 # Decisions surfaced]. The friend's display name rides the
same sidecar when Josh names them, and the machine id stays the allocated CHAR_ id.
the fifth sitting's ruled build order [SRC: DECISIONS_PENDING_JOSH # RULED 2026-07-27 (fifth sitting)].
N8.5's whole canon on this is one clause: CompanionController join/leave gated on integrity band
plus logged actions, utility-AI combat, disposition-bias, and "best-friend seeds the main companion"
[SRC: PRE_5090_BUILD_PLAN # WS-8]. Its upstream is P2.11, the four-selections character creator,
whose spec ends "Writes base BiographyState" and whose own note names the binding —
best-friend gender to healer's-child companion [SRC: PRE_5090_BUILD_PLAN # WS-8]. Everything below
expands that clause into the stages an implementer needs, and every stage names the canon it
realizes.
THE SEED HAS NO DURABLE STATE CARRIER TODAY. T0_Worldstate_Variables carries forty-eight rows,
WS_001 through WS_048, and none of them holds the Ch-1 selections: the nearest neighbours are WS_006
appearance_score, WS_007 age_stage — whose note reads "Per Ch 1 selection plus arc-progression aging"
without holding the selection itself — and WS_027 companion_roster_state, which is a live-party
ledger and not a biography record [SRC: T0_Worldstate_Variables @ WS_007]
[SRC: T0_Worldstate_Variables @ WS_027]. On the spine side, CH01_B03's only write is
{local.best_friend_chosen: true}, a LOCAL flag scoped to the node and carrying no value at all
[SRC: CH_01 # Beat graph], and Ch 1's end state records the selections as prose —
"biography_set: the four Ch-1 selections are SET" — rather than as keys
[SRC: CH_01 # End-state carry-forward]. So the parameter that must survive twelve chapters to reach
CH13_B01, and seventy-four to reach CH75_B03, is at present held only by an engine-side
BiographyState named in a build-plan cell. That is finding G-1 and it is the first thing N8.5
needs.
gender, skills, and combat focuses, per Ch 1's own seeding sentence
[SRC: CH_01 # Key ally NPCs]. The write is dramatized as childhood and never as a menu
[SRC: CH_01 # Body prose]. The write happens once and is never re-offered: Ch 1 has zero fork
nodes and the selections carry no integrity direction, so nothing later in the arc can move them
[SRC: CH_01 # Fork graph].
twelve chapters. docs/CANON_AUDIT.md records exactly this window as a reconciliation item — the
journal author exists as a selection but not a companion across Ch 1 to Ch 13, and the parameter is
dormant pre-Ch-13. Nothing in Ch 2 through Ch 12 reads them, and Ch 12's end state carries no
traveling companion at all [SRC: CH_13 # Continuity anchor]. A hold that long is a save-migration
surface: the values must be in the earliest save format N8.5 ships against, or every legacy save
loses the seed.
ws.companion_roster_state: +ntala_joined_primary_human_companion
[SRC: CH_13 # Beat graph]. This is the moment CHAR_0002's row enters the WS_027 ledger, and
WS_027 seeds membership and per-member loyalty from the T0_Character_Index loyalty columns
[SRC: T0_Worldstate_Variables @ WS_027] — so the seed must be applied at or before the seeding
step, never after it.
§3.2 Identity Parameters, and CHAR_0002's own registry row, whose voice_signature_notes opens
gender_matches_protagonist_Ch_1_best_friend_selection
[SRC: T3_Core_Characters # Chapter 1 Character Creation]
[SRC: T3_Core_Characters # Identity Parameters] [SRC: T0_Character_Index @ CHAR_0002]. Downstream
it drives the voice preset fork and the two-tile asset consequence recorded in
build/art/characters/CHAR_0002_CANON_SHEET.md §7.
[SRC: CH_01 # Key ally NPCs]. The ally-side home for it is ratified: companions carry stat
spreads over the canonical six-attribute roster, and specialties are derived from the weighting
rather than assigned [SRC: T1_Integrity_Paths_Worldstates_Master # Player-Shaped Ally Stat Spreads].
So "skills" lands as the STARTING WEIGHTING of CHAR_0002's spread, which the player then builds
on from level-up onward — consistent with Ch 1's own "and then develops across the arc".
implementer should build this field until it is ruled.
states it: designer-only, invisible on first play, never surfaced, zero forward reveal-valence
[SRC: CH_13 # Continuity anchor]. Ch 1 holds the same at CH01_B03
[SRC: CH_01 # Beat graph]. The concrete consequences an implementer must honor: no UI element,
tooltip, codex entry, achievement, journal line or dialogue line may reference the linkage; the
Ch-13 gift scene names both parties by relation and never by pronoun, which is the chapter's own
discipline [SRC: CH_13 # Dialogue and scene anchors]; and the pre-existing prose defect Ch 13
flags on its own body text is a repair owed, not a licence to write gendered lines
[SRC: CH_13 # Decisions surfaced].
by the friend's own instance at CH75_B03 — because the entity re-met there IS the selected friend,
grown [SRC: CH_75 # Beat graph]. What that read needs is the friend's own gender-parameterized
asset and voice, not Ntala's; the two instances are separate entities that happen to share one
parameter. FORK_CH75_B then dispatches on the Ch-65-locked band and writes relationship history
[SRC: CH_75 # Fork graph]. The completion of the echo is held FELT and never spoken
[SRC: CH_75 # Key ally NPCs].
and none is invented here. If NG+ needs one, that is a new question for Josh, not a default.
types zero fork nodes precisely because of this [SRC: CH_01 # Fork graph].
gender, which T3 §3.2 and CH_01 both state [SRC: T3_Core_Characters # Identity Parameters]
[SRC: CH_01 # Key ally NPCs].
Eight hooks. Each names what the row must be able to answer for CH_75 to render, and each is joined
to the canon that asks for it. None of them is new canon; the section is an inventory of demands
already on the books.
[protagonist, childhood_best_friend], and thescene row SC_CH75_the_one_she_grew_up_beside carries the same bare token in its participant refs
[SRC: CH_75 # Beat graph] [SRC: CH_75 # Dialogue and scene anchors]. childhood_best_friend is a
placeholder string with no registry target. The single most concrete thing the proposed row does is
give that token a resolvable character_id, on both nodes, in one allocation.
grief_country, whose env line names it explicitly —the door-home crossing lands there and the childhood best friend is re-met there
[SRC: CH_75 # Key sites and spatial layout]. The row carries no site cell; the join is the beat's,
and the hook is recorded so a later staging pass does not re-site it.
path_dispatch node of SUBSTANTIAL magnitude that READS the Ch-65-locked band and writes ws.relationship_history three ways —
childhood_friend_reunited_and_allied on TRULY_GOOD, childhood_friend_reunited on GOOD_ENOUGH,
childhood_friend_reunited_estranged on EVIL [SRC: CH_75 # Fork graph]. The row must be the
subject those three writes name.
the Movement-2 front [SRC: CH_75 # Fork graph], and CH_75's Key ally NPCs line frames it as
additive support, never a wall. This hook is the one canon-attested place where a COMBAT capability
attaches to this entity, and §6 alternative 5 is built on it.
through on every path and the friend's presence in the front is additive support and never a wall;
the realm's war resolves regardless of the friend's presence
[SRC: CH_75 # Fork graph]. Anything the row later grows must not become a completion gate.
Selection-2 friend seeded Ntala's starting build, so the homecoming reunion quietly COMPLETES that
echo, with the friend and the companion who began as their mirror present in the same moment — held
FELT and restrained, never a mechanical exposition and never a designer-only reveal spoken to the
player [SRC: CH_75 # Key ally NPCs]. The row's own reveal clause must carry this fence verbatim.
ally, never a new travel companion, never a newly-rooted found-family bond, and no new
traveling-companion or familiar bond roots at Ch 75 [SRC: CH_75 # Key ally NPCs]. The five blank
loyalty cells at §3.4 are this lock expressed in the schema.
[SRC: CH_75 # Key ally NPCs] [SRC: CH_75 # Mechanical anchors], and the player-facing string rides
the player_strings sidecar when Josh names them, exactly as Vennathir and Talvaeren do
[SRC: CH_01 # Decisions surfaced].
REVEAL DISCIPLINE ACROSS THE HOOK SET, stated because this is where the leak would happen. Ch 75 is
sixty-two chapters past the slice, and nothing in this section may travel backward. No Ch-1 or Ch-13
surface authored from this dossier may carry a re-meeting, a survival, a grown friend, a homecoming,
or any hint that the friendship has a future — CH01_B03 holds the friend at present-tense warmth with
zero forward valence, and the constancy "is present-tense warmth and never a promise"
[SRC: CH_01 # Key ally NPCs]. The friend's reveal at Ch 75 is itself orthogonal: no family who-frame,
no thesis, no Grand-Sage content [SRC: CH_75 # Beat graph], and the patriarch is still unnamed at
that node [SRC: T0_Hard_Lines @ HL_0043]. The realm's own material stays held on the pre-Ch-13 side
under the absolute show-don't-tell that Ch 1 carries as a hard-line binding
[SRC: T0_Hard_Lines @ HL_0116].
Routed to Josh through the main director. This is genuine canon-fork material: it sits on a hard-line
node's own text on one side and a T0_Hard_Lines row on the other, and either resolution edits live
canon. It is presented complete — alternatives, deep-dive, adversarial review, recommendation, and
the strongest objection — never as a bare question, per the standing protocol. The DECISIONS head was
read before this was written; the tension is not ruled anywhere.
CH_01, Key ally NPCs, on the best friend: "the selected best friend's gender, skills, and combat
focuses SEED the starting gender, skills, and combat-focus of the healer's child (CHAR_0002, Ntala)"
[SRC: CH_01 # Key ally NPCs].
T3_Core §3.4, Companion architecture, on the healer's child: "No combat abilities — informational and
social capability only. Their perception of NPC behavioral cues is sharper than the protagonist's
vril-based intuition in strictly human social contexts. In the Ch 75 EVIL inversion this social-
behavioral read is applied predictively against the protagonist and expressed as the encounter's
coherence — no combat ability, vril, or weapon is gained; denial derives from social and behavioral
tells … never vril-signature or combat frame-data. Per the D-2 F-STAR ruling 2026-07-19"
[SRC: T3_Core_Characters # The Active Companion Activation]. The same lock is a hard-line row,
HL_0096 [SRC: T0_Hard_Lines @ HL_0096].
Both lines are live canon. Neither is a draft. The collision has been found twice independently and
resolved neither time: build/art/characters/CHAR_0002_CANON_SHEET.md §7 records it verbatim and
says "This is a finding for the director, not an edit", and the persona exemplar's finding F-3
carries it forward under the same status
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # Findings for the director]. Three lanes have now hit the same
wall, which is the evidence that it is a ruling and not an authoring preference.
Two further facts frame the fork, because a ruling that ignores either will be re-litigated.
player builds, that the spread drives specialties and preferred combat styles, and that "how an ally
fights emerges from how the player built them, not from a fixed authored archetype"
[SRC: T1_Integrity_Paths_Worldstates_Master # Player-Shaped Ally Stat Spreads]. §8.11.9 goes
further: allies are first-class build components and the party is a build surface
[SRC: T1_Integrity_Paths_Worldstates_Master # Allies as Build Components and Team Composition as Content].
A companion with no combat expression at all is an exception to a ratified system, and the
exception is currently undeclared.
ally spread buys behavior quality across three domains — pattern detection, proactivity, awareness
— that it competes with the combat attributes on the same spread, and that "a high-intelligence
support that reads the fight for the player is a legitimate spec"
[SRC: T1_Integrity_Paths_Worldstates_Master # The Intelligence Axis and Ally Behavior Quality]. A
path exists inside ratified canon for a companion to matter in a fight without fighting.
ALTERNATIVE 1 — STATUS QUO. Change nothing. Both lines stand; the implementer picks one at N8.5.
downstream of it has been built yet. Deferring costs nothing today and keeps a canon edit off a
hard-line node until the combat system's ally layer is real enough to rule against.
T0_Character_Index seeds WS_027 from its own loyaltycolumns at the join [SRC: T0_Worldstate_Variables @ WS_027], and N8.5 is tagged BUILD-NOW
[SRC: PRE_5090_BUILD_PLAN # WS-8]. The first implementer to reach clause 4 has to guess, and a
guess that lands becomes de facto canon nobody ruled.
as a fork until someone silently resolves it in code.
ALTERNATIVE 2 — NARROW CH_01. Strike "skills, and combat focuses" from the Ch-1 seeding sentence,
leaving gender as the only seeded value, which is what T3 §2.2 and §3.2 actually state.
[SRC: T3_Core_Characters # Chapter 1 Character Creation]
[SRC: T3_Core_Characters # Identity Parameters]. The wider clause appears in exactly one place, a
spine entry, which is subordinate to T1 and T3 in the authority hierarchy. Narrowing restores a
single reading and touches no hard line.
inheritance rather than a cosmetic one, and it is the only canon that gives Selection 2 any
mechanical weight at all. Reduced to gender, Selection 2 becomes a pronoun switch on a companion
whose player-facing surfaces are already ruled pronoun-free [SRC: CH_13 # Dialogue and scene anchors]
— which risks a player selection that expresses nowhere.
deletes a line rather than finding it a home. The rulings-are-the-floor law reads against
subtraction as the default move.
ALTERNATIVE 3 — RE-READ "combat focuses" INSIDE THE ALLY-SPREAD LAYER. Rule that the seeded
"combat-focus" is a COMBAT-CONTEXT focus expressed entirely through §8.11.8's three behavior domains
— which of pattern detection, proactivity, or awareness CHAR_0002 starts weighted into — and carries
no attack, no weapon, no vril and no damage verb. HL_0096 stands untouched; the ally-spread system
supplies the vocabulary; the CH_01 clause keeps its words and gains a definition.
rather than invented for the occasion. §8.11.8 explicitly legitimizes a support spec whose value in
a fight is reading it [SRC: T1_Integrity_Paths_Worldstates_Master # The Intelligence Axis and Ally Behavior Quality],
and CHAR_0002's canonical faculty is precisely a READ — her perception of behavioral cues is sharper
than the protagonist's vril intuition in human social contexts
[SRC: T3_Core_Characters # The Active Companion Activation]. The persona exemplar independently
proposed this same reading as the coherent one under F-3
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # Findings for the director].
derives the EVIL-band opposition encounter's coherence from social and behavioral tells and from no
combat frame-data at all [SRC: T3_Core_Characters # The Active Companion Activation], and CH75_B13
stages exactly that — the front's coherence tightens because she is reading the player, "a smarter
opponent, never a stronger one" [SRC: CH_75 # Beat graph]. Under this reading, the Selection-2 seed
is what set the shape of the read the player has been benefiting from for sixty-two chapters and
then meets from the other side. That is a payoff, not a patch.
reader in two years finds "combat focuses" and reads it plainly again. Mitigation is to record the
definition on both surfaces, not to rely on the reader.
ALTERNATIVE 4 — WIDEN T3 §3.4. Give CHAR_0002 a small inherited combat kit — a defensive verb, a
thrown item, a self-preservation move — seeded from the friend.
live defect: the persona exemplar's finding F-1 measures her present, unarmed and unwarded on three
Ch-13 combat beats with no rowed policy covering her
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # Findings for the director]. A companion who can do something
when a fight starts is a smaller design problem than one who cannot.
[SRC: T0_Hard_Lines @ HL_0096]; the no-combat lock is what makes her the human-scholarship
counterweight to the protagonist's vril intuition
[SRC: T3_Core_Characters # The Active Companion Activation]; and the Ch-75 inversion's entire
register depends on her having gained nothing — "no combat ability, vril, or weapon is gained".
Arming her, even lightly, degrades the arc's most distinctive companion design into a generic party
member and reopens a ruling that was made twice.
for it — the ward-gated suppression policies AP_0009 through AP_0014 exist precisely to make her
unhittable rather than capable [SRC: T0_Ally_Behavior_Policy @ AP_0009]. Fixing safety by adding
combat is solving the wrong problem with the most expensive tool.
ALTERNATIVE 5 — GIVE THE ORPHANED CLAUSE ITS OWN CANON HOME: the friend's combat focuses seed the
FRIEND's own Ch-75 combat role, not Ntala's.
and it is canon-attested rather than invented. FORK_CH75_B's TRULY_GOOD row has the friend "drawn
fully to her side, taking up arms in the Movement-2 front" [SRC: CH_75 # Fork graph]. The friend
therefore HAS a combat role in canon, it is currently unspecified, and the Selection-2 combat
focuses are exactly the parameter that would specify it — the friend who was built as a
close-quarters child fights as one when the war reaches the grief-country.
that pays the selection off, and it does so without touching a hard line or a hard-line node's text.
It also matches the friend's own canon status: an ally-side, realm-native, non-roster combatant with
no loyalty model, which is a class that CAN carry combat without any HL_0096 exposure.
re-reading — it is a re-pointing, and re-pointing is an edit. It also puts the payoff behind the
TRULY_GOOD band alone, so two of three players never see it, and the mitigation (a band-appropriate
expression on all three rows) is more design than a ruling should have to carry.
RULE ALTERNATIVE 3 AS THE PRIMARY, AND ADOPT ALTERNATIVE 5 AS ITS COMPOSABLE SECOND HALF.
The two are not rivals. Alternative 3 answers what the seed does to CHAR_0002 — it weights her
starting §8.11.8 behavior profile and nothing else, so HL_0096 and the whole
human-scholarship-counterweight design stand exactly as ruled twice already. Alternative 5 answers
where the plain-language reading of "combat focuses" has a legitimate home — on the friend's OWN
Ch-75 arms-taking, which canon already grants and has never specified. Together they keep every
existing canon line intact, delete nothing, invent no system, and give the arc's longest-dormant
player parameter two visible expressions instead of zero: a companion whose way of reading a fight
was shaped by the friend left behind, and a friend who fights the homecoming war the way the player
built them a lifetime earlier.
Concretely, if ruled, the applies are small and are named so the ruling is costed:
CHAR_0002's starting behavior-domain weighting under §8.11.8 and never as a combat ability, per
HL_0096 — with the friend's own arms-taking named as the second landing.
one reading rather than two.
focuses, and the GOOD_ENOUGH and EVIL rows get band-appropriate expressions so the payoff is not
band-exclusive.
extensions cell records the ruling in place of the unresolved-tensionnote drafted at §3.3.
The recommendation may be a distinction without a difference in play. If the seed's only effect on
CHAR_0002 is a starting weighting inside a behavior-tree quality axis, and she never fights, then the
player never SEES the seed express on her at all — which means the entire felt resonance the design
exists to produce still rests on gender alone, which is what T3 §2.2 already said before the wider
clause was ever written. On that reading, alternative 3 is alternative 2 with more words, and Josh
should rule the honest, cheaper version instead.
The answer, and it is an answer rather than a deflection: the behavior domains ARE visible, and canon
already says so. §8.11.8 rules that a more intelligent ally detects more patterns, acts more
proactively and stays more aware, and that "the investment is legible in play"
[SRC: T1_Integrity_Paths_Worldstates_Master # The Intelligence Axis and Ally Behavior Quality]. On
CHAR_0002 that legibility has an authored surface already designed for it — the persona exemplar's
social read, where she registers a tell before the protagonist's vril reading would and surfaces it as
an observation, and her per-option reaction shapes, both grounded on her canonical sharper-perception
faculty [SRC: T3_Core_Characters # The Active Companion Activation]. A player whose friend was built
one way meets a companion who notices the room, and a player whose friend was built another meets a
companion who notices the person. And the expression has a terminal payoff the other reading cannot
reach: at CH75_B13 that same faculty is turned on the player, and the encounter's whole coherence is
the read [SRC: CH_75 # Beat graph]. Under alternative 2 that read has no origin. Under the
recommendation, the player set its shape in the first hour of the game and meets it in the last.
The objection nevertheless survives in one respect that Josh should weigh directly: the difference
between the two readings is felt, not measured, and if he wants Selection 2 to have a MEASURABLE
mechanical expression, only alternative 5's half of the recommendation delivers one — which is a
second reason to rule them together rather than to rule alternative 3 alone.
Eight. Three are load-bearing: G-1, G-2, and G-3.
T0_Worldstate_Variables holds forty-eight rows andnone of them carries the four Ch-1 selections; CH01_B03 writes only a valueless local flag; Ch 1's
end state records the selections as prose [SRC: CH_01 # Beat graph]
[SRC: CH_01 # End-state carry-forward] [SRC: T0_Worldstate_Variables @ WS_007]. The longest-lived
player parameter in the game is held today only by an engine-side BiographyState named in a
build-plan cell [SRC: PRE_5090_BUILD_PLAN # WS-8]. Either a biography_selection_state worldstate
row is owed, or the omission is deliberate and should be recorded as such. Registry act, not this
lane's.
been found by three independent lanes and resolved by none, and N8.5 is tagged BUILD-NOW.
T0_Character_Index carries one mesh_id_ref and no marker for a cell whose value is a player selection; CHAR_0002's row expresses
its own gender fork as prose inside voice_signature_notes
[SRC: T0_Character_Index @ CHAR_0002]. The proposed friend row hits the identical wall, so the
corpus now has TWO entities the model counts once and canon requires twice. This is the sibling of
the two-outfit schema hole recorded in build/art/characters/CHAR_0002_CANON_SHEET.md §9, and the
friend's instance of it has never been counted anywhere.
ruled that the Child Familiar bonds by play, with no list and no prompt
[SRC: DECISIONS_PENDING_JOSH # RULED 2026-07-30 (twenty-ninth sitting)], and CH01_B03 says only
"a life, not a menu" without a measure [SRC: CH_01 # Beat graph]. If Selection 2 is also
by-play — whichever realm child the player spends the childhood beside — that is a Ch-1 build-lane
design question with a ruled sibling to pattern on. Named, not answered.
childhood_best_friend RESOLVES TO NOTHING on two CH_75 surfaces andone CH_01 surface [SRC: CH_75 # Beat graph] [SRC: CH_75 # Dialogue and scene anchors]
[SRC: CH_01 # Beat graph]. Applying the proposed row is what closes it; until then the graph
carries a dangling actor on a built node.
[SRC: PERSONA_EXEMPLAR_CHAR_0002 # Findings for the director]. Same class as G-3: a live surface
with no row behind it. Named, not repaired.
thread_involvement BLANK IS REAL AND MAY BE A DEFECT ELSEWHERE. Neither CH01_B03 norCH75_B03 joins a thread [SRC: CH_01 # Beat graph] [SRC: CH_75 # Beat graph], so the row's blank is
honest. Whether the arc's single most emotionally load-bearing relationship genuinely carries no
thread is a question for the thread-grid pass, not for this row.
character-row IS NOT A WORK KIND IN harness/route.py. Every lane that mints or shapes acharacter row improvises a read-set, as this one did (see the routing note at §0).
It mints no registry row, allocates no id, edits no canon file, touches no registry CSV, no fidelity
baseline, no line-citation baseline, and no shared file. It authors no name for the friend, no
appearance, no age, no species detail, no voice register and no dialogue. It produces no image, plate
or geometry, and it dispatches nothing. It does not reopen the CF-2 Ch-75 reunion ruling, the
designer-only status of the resonance, the friend's not-a-travel-companion lock, the by-play
Selection-1 mechanism, or the gender inheritance, all of which are ruled. It resolves nothing in §6:
that section is a brief for Josh, and until he rules it the CH_01 clause and the T3 §3.4 ruling both
stand exactly as written.