decisions/spine/RELATIONSHIP_TIER_NAMES_PROPOSAL.md
Josh rules the names. Nothing here is applied. This is the third leg of docs/NAMING_METHOD.md
(deep-dive → adversarial-filter → player-vibe-test), returned as a proposal with the path shown.
---
Ruled by you on 2026-07-16, carried verbatim from the brief's ▶ RULINGS block:
structure are ruled.** One numeric ladder across every relational axis (faction standing · NPC
bond_state · companion loyalty_score), with per-axis display labels over shared numbers.
The per-axis-label *device* is part of the ruled scheme — so the question below is never "should
we split", only "what are the words". [SRC: docs/spine/RELATIONSHIP_TIER_BANDS_BRIEF.md # L14-23 Ruling 2]
proposal author's shorthand for your WoW-Vanilla Exalted love, not your authored count. So all
six labels are in play for renaming. [SRC: docs/spine/RELATIONSHIP_TIER_BANDS_BRIEF.md # L5-13 Ruling 1]
Only the nine labels are open. ONE thing below touches ruled ground and I flag it rather than
smuggle it: the ruling's placeholder list is the *faction* word list I am now proposing to change in
four of nine places. That is exactly what Ruling 4 opens, but you should know the recommendation
changes words that appear inside Ruling 2's own sentence.
---
Two authored word lists + one already-schema'd overlay + one alias rule. Not three new lists.
ladder_analog = WoW-Exalted)| Band | Label | Reads as |
|---|---|---|
| +90 / +100 | Exalted | the completionist summit — untouched |
| +70 / +89 | Revered | untouched |
| +40 / +69 | Honored | untouched |
| +10 / +39 | Welcomed | they open the door |
| −9 / +9 | Stranger | nothing has happened yet |
| −39 / −10 | Cooled | the welcome recedes |
| −69 / −40 | Suspected | you are suspect |
| −89 / −70 | Banished | you are put out |
| −100 / −90 | Hunted | they come for you |
Honored · Revered · Exalted survive verbatim. Your WoW-Exalted love is untouched, the live
ladder_analog = WoW-Exalted cell stays literally true [SRC: registries/T0_Reputation_Ladder_Registry [DRAFT v0.1]/Sheet1.csv # FR_0001],
and WHOLE_ARC_CONNECTIVE_WEB_INVENTORY L97's "Honored-Revered-Exalted" still resolves. Only the
four placeholders that are positively defective on evidence change.
loyalty_score)| Band | Label | Reads as |
|---|---|---|
| +90 / +100 | Family | found-family; can still walk out |
| +70 / +89 | Trusted | "high trust" |
| +40 / +69 | Warm | "banter warms" |
| +10 / +39 | Known | acquaintance |
| −9 / +9 | Stranger | not yet met properly |
| −39 / −10 | Cooled | "banter cools" |
| −69 / −40 | Wary | "trends wary" |
| −89 / −70 | Severed | will not travel with you |
| −100 / −90 | Enemy | the locked-out enemy tier |
Five of these nine come off one canon line. RUNTIME_GENERATIVE_LAYER L116 is the manipulation
mechanic, and it writes the ladder itself: *"High trust → generated combat_disposition trends
protective, banter warms; betrayal/Corrupted-band drift → trends wary, banter cools, and
at authored thresholds the deterministic relationship SM can lock a companion out entirely."*
That single sentence yields Trusted, Warm, Wary, Cooled, and Enemy — at the arms the ruling already
gives them. [SRC: docs/RUNTIME_GENERATIVE_LAYER.md # L116]
Known / Trusted / Family track ENTITY_PERSONA_SYSTEM L133 verbatim: *"from a neutral or wary first
meeting, through acquaintance and earned trust, to a bonded found-family tier."* Enemy tracks L134's
*"locked-out enemy tier"* and attackability L15's *"they leave, die, or become an enemy."*
[SRC: docs/proposals/ENTITY_PERSONA_SYSTEM.md # L133-134] [SRC: docs/proposals/systems/attackability-and-consequence-model.md # L15]
I did not author this and am not proposing it. It already exists as a planned enum: ladder_analog
is declared WOW_STANDARD (Hostile..Exalted) | ANTAGONIST (Turned/Redeemed/Infiltrated/Sworn-in).
[SRC: docs/proposals/systems/WS7_WIRING_BUILD_PLAN.md # L268, restated on the WS_027 seed at L262]
The ANTAGONIST analog is exactly four values and Scheme C's positive arm is **exactly four
tiers** — a 1:1 map with no re-cutting. So it names the *positive arm only*: Turned (+10/+39) ·
Redeemed (+40/+69) · Infiltrated (+70/+89) · Sworn-in (+90/+100). An antagonist faction's
negative arm uses THE STANDING.
bond_state (WS_008) selects its list off the live attackability_tier column (Character_Index
col 13 — verified present, sitting directly beside the companion-loyalty set at cols 15-20):
Tier-1/2 → THE STANDING · Tier-3 bonded → THE BOND. Attackability L15 defines Tier-3 as
*"Companions, familiars, bonded allies, key relationship NPCs"* — precisely WS_008's own two
flagged highest-priority entries. Zero new vocabulary, and WS7 L163 already sanctions
companion-loyalty *consuming* attackability_tier under the one-owner-per-column rule, so reading
it as a label selector is the sanctioned use and needs no new column.
THE RUNG INVARIANT (mechanizable, one harness pass over the label table): *a word may appear in
more than one list only at the identical rung.* All four lists satisfy it. The only shared words are
Cooled (−39/−10 on both) and Stranger (−9/+9 on both) — the middle of the ladder is common;
the arms diverge. That is the design, not a leak.
---
1. "Hunted" is the arc's own word, and it is REFLEXIVE. This is the finding that decided the
faction set. The attackability model names the terminal world-response verbatim: attempting
systematic slaughter *"escalates diegetic response (settlement to region to hunted-across-the-world)
so genocide is never progression-viable."* [SRC: docs/proposals/systems/attackability-and-consequence-model.md # L23]
The spine then uses the word with the protagonist as the object, repeatedly: *"the ones who
hunted her"*, *"in this valley, to be unusual is not to be hunted"*, *"seen truly and not hunted"*.
And CH_17 L32 gives the arc its spine sentence: "The hunt starts here." [SRC: docs/spine/CH_17.md # L32]
2. The Ch-66 beat writes my two poles in one clause. CANDIDATE_RESOLUTIONS L115: *"Recognized
as kin, not hunted — after a whole road of being recognized as a threat, being seen, for one
threshold, as kin of the origin, not as a threat."* The arc already opposes hunted against belonging
as its recognition axis. The ladder was on the page; I only found it. [SRC: docs/spine/CANDIDATE_RESOLUTIONS.md # L115]
3. GRAMMAR IS THE DESIGN — and it is what discharges §17.1. Every STANDING label is a participle
of reception except Stranger — the one tier where nothing has been done to you, so you are a
noun, not a participle. The label always names what has been done to the player, never what the
people *are*. This matters because §8.7 L382 resolves it verbatim: *"Faction standing tracks the
protagonist's treatment of specific cultural groups."* The value names what the player did, so
the ladder is reflexive by canon. It also makes the set structurally un-confusable with
integrity (adjectives of moral character: Truly Good, Evil, Corrupted).
[SRC: _source/01_Tier_1_Foundation/T1_Integrity_Paths_Worldstates_Master [ACTIVE v2.1].md # L382 §8.7]
4. The four replaced faction placeholders are each defective on evidence, not on taste.
attackability_tier (Character_Index col 13) carries hostile, on the same row as the companion-loyalty columns
15-20. attackability_tier=hostile (static: killable-as-hostile) beside a tier reading "Hostile"
(dynamic: −89/−70) is the Known-issue-#3 dual-encoding shape reproduced deliberately, straight
through the brief §3 L92 one-owner-per-column boundary. Separately it predicates a **temperament
verdict of a real living people** on the one axis canon says is reflexive, and it is the genre's
combat-flag word — printing it on a faithful community's faction declares the collective a combat
surface, which §17.1 L963 forbids verbatim: *"The living faithful are protected. A faithful
community and its practitioners are never combat targets and never the antagonist."*
[SRC: _source/.../T1_CVD_Creative_Vision_Document [ACTIVE v1.4].md # L963 §17.1]
(reputation-prestige-nemesis.md §E). Secondarily a Greek goddess printing against live classical
factions.
be told from world_state_current=3.
in the positive direction.
5. This is not a defang. The negative arm gets harsher and more concrete — *Hunted* is a
worse fate than *Nemesis*, and *Banished* is worse than an abstraction. It stops libeling the culture
to get there. §17.1 L965 is explicit that *"Care is collective, not individual"* and that the
doctrine *"never sanitizes toward a rated-G surface"* — a world that hunts you across itself for what
you did is the R-17 answer, not the soft one.
6. The bottom-tier bonus. House of Velheim: Hunted is the arc's literal spine. And FR_0002's
enemy-Exalted easter egg becomes the walk from Hunted → Sworn-in — the exact symmetry Ruling 2
bought, and §C's *"sworn-in / infiltrated-to-the-core"* made structural.
[SRC: registries/T0_Reputation_Ladder_Registry [DRAFT v0.1]/Sheet1.csv # FR_0002]
---
A faction readout for a real culture (Ch 29 Sámi — a maximum-care chapter).
Every one names the player's reception. None predicates of the people. Passes.
only because it is earned by the player massacring them and because attackability L23 names
hunted-across-the-world as the community defending itself, which the same doc stages as *"it
defends, mourns, rebuilds, and ENDURES."* A community that hunts the person who butchered its
village is not villain-framed; it is alive. Change the grammar and it dies: *"Sámi: Hostile"* is
a verdict on them and is disqualified.
A companion at WAVERING, about to leave.
Compare the placeholder: *"Ntala: Hostile"* — spreadsheet. *"Ntala: Exalted"* — absurd; WoW has
nothing to say about your best friend, which is the whole reason the per-axis device exists.
trigger caps at 90, so *complete opposition always forces departure and investment never buys
immunity*. The +90 label must therefore NOT connote permanence — Bonded, Sworn, For-Life,
Eternal all imply the immunity the invariant forbids. **Family passes precisely because family can
still walk out**, which is the tragedy the rule exists to stage.
The enemy-Exalted easter egg on the House of Velheim.
That is the easter egg stated as one line. Note it reads Sworn-in, not Exalted — because
FR_0002 is ladder_analog = enemy-Exalted and takes the ANTAGONIST overlay. Reveal-firewalled
and legible only post-Ch-76/post-game, exactly as ruled.
The completionist Exalted-with-all-cultures capstone.
single strongest reason not to get clever with the top three.
---
| Set | Killed by | ||||||
|---|---|---|---|---|---|---|---|
| THE MINIMUM REPAIR (one shared list, change nothing) | Declared axis: shared, so it forecloses per-axis divergence — faction_class=CULTURE cannot escape the word list that libels it, and "Hostile"/"Hunted" print against a companion simultaneously. Its own CONS concede the result is "semantically nonsense" on a bond. Its only pitch was minimality; a label that forces disambiguation against a sibling column on the same row buys none. | ||||||
| THE STANDING LADDER — "the door" | Asserted "Hunted = combat" and attributed it to §8.7. §8.7 L384 names exactly four mechanics — greeting, dialogue option availability, quest availability, pricing. Combat is not among them. The citation does not resolve. The defect was load-bearing: the four-for-four mapping *was* the anti-slop argument. *(Note: "Hunted" itself survives — I re-grounded it in attackability L23, which is reflexive world-response, not a combat mechanic. The word was fine; that set's derivation was not.)* | ||||||
| THE RECOGNITION LADDER (a third NPC list) | Its own author argued against it and was right. It would not generate without thesaurus-strain (Shunned/Curt) — which per NAMING_METHOD is the tell that the axis has no distinct concept to name. WS_008 has no player-facing UI surface (WS_021 carries region_page_section_8_consumer; WS_008 carries none), so it is dispatcher-facing and needs unambiguous words, not evocative ones. Replaced by the §2.4 alias rule. | ||||||
| THE BOND (Angle 1 companion set) — *adopted in part* | Two rungs failed. "Estranged" collides with the live loyalty_state enum (`unmet\ | recruitable\ | traveling\ | wavering\ | departed\ | estranged\ | bonded_locked`) — a different column's token on the same entity [SRC: docs/proposals/systems/WS7_WIRING_BUILD_PLAN.md # L139]. "Sworn" (+70/+89) is a near-synonym of the ANTAGONIST overlay's fixed endpoint "Sworn-in" (+90/+100) at an *adjacent* rung — NAMING_METHOD L41's endpoint-collision failure mode, and a soft rung-invariant breach. I kept its verified spine (Enemy/Wary/Cooled/Stranger/Known/Trusted/Family) and repaired the two. |
| THE BOND LADDER (Angle 2 companion set) — *adopted in part* | "Kin" is a collision the adversarial round missed, and I found it in the vibe test. "Kin" is a live term of art for the Ch-66 origin-lineage recognition — *"Atlantis reads her as KIN of the shared origin-lineage"*, *"kin of that origin"*. Worse, the phrasing *"kin of the house returned"* was itself a reveal defect requiring a surgical recast to *"kin of the origin"* [SRC: docs/spine/CANDIDATE_RESOLUTIONS.md # L114-115]. Putting "Kin" on a party screen sits the top companion label directly on a word that already produced one reveal defect on the reveal-sensitive axis. "Broken" also dies: *"Composure broken by any of seven modes"* is canon combat vocabulary [SRC: docs/proposals/systems/reputation-prestige-nemesis.md # L33]. Its architecture finding is adopted wholesale — the ladder_analog split, the ANTAGONIST 1:1 map, the rung invariant, the attackability alias. |
Killed labels not resurrected: Hostile (live enum + §17.1), Nemesis (system collision), Neutral
(World State 3), Friendly (reflexivity), Turned (WS7 L270 gives it +10/+39 — *positive*), Bonded
(owned by the familiar system; WS_012's bond_tier is an open sub-question), Wavering / Departed /
Estranged (live loyalty_state tokens), Wounded (48 combat hits), Kin, Broken.
---
**The split makes the shared number invisible at the surface — and that is precisely what Ruling 2
bought the shared ladder to prevent.**
If a faction's Honored and a companion's Warm really are the same number (+40/+69), why do
they need different words? Either they are the same relation — then one list — or they are not — then
the shared ladder is wrong. My recommendation quietly concedes they are *not* the same relation while
keeping the ladder that says they are. That is the brief's §8 warning landing exactly where it was
aimed: the per-axis-label device may paper over a real semantic mismatch rather than resolve it.
And it has a sharp, concrete cost that aggravates the risk you already carried forward
(D-REL-BANDS L454): factions accrue through hundreds of small transactions, companions through ~a
dozen heavy beats. If +90 is a fair faction grind and an unreachable companion ceiling, **"Family"
becomes dead content — and the different words will hide it**. A shared word list would have made the
dead tier obvious the moment someone noticed "Exalted" never fires on a companion. Different words
mean nobody notices. *The split buys §17.1 safety and pays in diagnostic visibility on the one risk
Ruling 2 deliberately left open.*
My answer, and its limit. The per-axis-label device is ruled, so the fork is not whether to split
but how; and divergence is safe provided labels never become keys — store the band index +
ladder_analog, never a label string, so the number remains the single encoding and Known-issue-#3
does not reproduce. But that answer does *not* dissolve the rate-mismatch cost. The honest mitigation
is a live-fire check, not an argument: re-run the §5 grind arithmetic against the real
per-companion beat count once the roster lands, and if +90 is unreachable, use the per-row
tier_thresholds override (already schema-supported, no ladder fork). **If you want that risk
visible rather than mitigated, the correct move is to reject §2.2 and run THE STANDING on both axes —
accepting "Ntala: Exalted" as the price of a ladder that self-diagnoses.** I do not recommend it, but
it is a coherent ruling and I would not argue you out of it.
---
severed-instrument-and-restoration motif"*, *"the sieidi his tradition was severed from"*) — a
maximum-care chapter's emotional core. Different domain (a bond vs. a tradition), neither is a key
for the other, so it is a thematic echo and not a dual-encoding. It is the weakest word in the two
sets and the one I would most readily trade. Every cleaner candidate was already dead: *Broken*
(Composure), *Estranged* / *Departed* (live enum), *Cold* (adjacent to Cooled), *Turned* (antagonist
+10/+39), *Hostile* (live enum), *Bonded/Unbound* (familiar system).
a two-word design-layer term vs. a one-word player-facing standing — and it is your WoW word, so I
keep it. Flagged, not fixed.
grammar), but it is a change to a ruled placeholder and you should see it.
faction_class = trade-guild | antagonist and ladder_analog = WoW-Exalted | enemy-Exalted — NOT
the WS7-planned CULTURE|ALLY_FACTION|ANTAGONIST_FACTION and WOW_STANDARD|ANTAGONIST. The plan
and the tree do not agree, and no live row currently carries faction_class=CULTURE. The §17.1
argument still holds (cultures will be rowed), but the precision matters and the drift should be
reconciled in the wiring commit, not here.
---
Nothing below is written. Every cell is listed so the wiring commit is mechanical.
| Target | Edit | |||
|---|---|---|---|---|
registries/T0_Reputation_Ladder_Registry [DRAFT v0.1]/Sheet1.csv → tier_thresholds, FR_0001 + FR_0002 | the nine ratified bands as the global default | |||
same → ladder_analog, FR_0001 / FR_0002 | reconcile live WoW-Exalted/enemy-Exalted against WS7 L268's WOW_STANDARD/ANTAGONIST; bind each to its label list | |||
same → faction_class | reconcile live trade-guild/antagonist against WS7 L268's planned enum | |||
registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv L9 (WS_008) | enumerate bond_state + the §2.4 attackability_tier alias rule | |||
| same L22 (WS_021) | cross-reference standing_value → THE STANDING; no range change | |||
| same L28 (WS_027) | restore the loyalty_score(-100..+100) domain; add THE BOND enum | |||
| same L29 (WS_028) | keep `DRAWN\ | WAVERING\ | DEPARTED\ | REBONDED` deliberately disjoint from the tier vocabulary — the ladder is the *inertia*, the events are the *departure* |
| same L13 (WS_012) | open sub-question, deliberately not resolved: whether familiar bond_tier/bond_quality join the shared ladder. Recommend joining — but "Bonded" stays reserved to the familiar system regardless | |||
docs/proposals/ENTITY_PERSONA_SYSTEM.md §3.2 L131 / §8 L258 | replace the deferral clause with the ratified ladder + names | |||
docs/spine/CH_02.md L258 etc. → found_family | declare, not discover: the top BOND tier (+90) IS membership in found_family. Correct wiring, but it is a binding to state | |||
docs/DOC_MAP.md | index the ratified names (anti-orphan rule) |
Gate notes. T0_Worldstate_Variables/Sheet1 is covered by extension_hashes in
docs/fidelity_baseline.json → those edits hard-require a baseline refresh in the same commit.
T0_Reputation_Ladder_Registry is in added_registries (base-name match only, not cell-hashed) →
populating tier_thresholds alone would not redden fidelity; refresh anyway. The flag is
--emit-baseline on harness/registry_fidelity.py, NOT run_gates.py. Run run_gates.py
UNPIPED — a pipe makes $? the pipe's exit code and masks a red gate. No row is deleted
anywhere, so nothing hits the shape_mismatch trap.
Per-companion loyalty mapping stays unpopulated — the roster-wide mapping is explicitly yours and
explicitly forbidden to mass-populate pre-ratification (WS7 L158).
---
1. Ratify or amend THE STANDING (faction) — Honored/Revered/Exalted untouched; four placeholders
replaced.
2. Ratify or amend THE BOND (companion) — or reject §2.2 and run THE STANDING on both axes, per §6.
3. Confirm the §2.4 alias rule for the NPC axis (no third list).
4. Confirm the ANTAGONIST overlay is positive-arm-only — this is the one place I read live schema
as settling a question the brief left open, and you should confirm I read it right.