RELATIONSHIP_TIER_NAMES_PROPOSAL.md

decisions/spine/RELATIONSHIP_TIER_NAMES_PROPOSAL.md

D-REL-BANDS Ruling 4 — the nine tier names: proposal

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.

---

1. What is already ruled — NOT open, not re-litigated here

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.

---

2. THE RECOMMENDATION

Two authored word lists + one already-schema'd overlay + one alias rule. Not three new lists.

2.1 THE STANDING — the faction axis (ladder_analog = WoW-Exalted)

BandLabelReads as
+90 / +100Exaltedthe completionist summit — untouched
+70 / +89Revereduntouched
+40 / +69Honoreduntouched
+10 / +39Welcomedthey open the door
−9 / +9Strangernothing has happened yet
−39 / −10Cooledthe welcome recedes
−69 / −40Suspectedyou are suspect
−89 / −70Banishedyou are put out
−100 / −90Huntedthey 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.

2.2 THE BOND — the companion axis (loyalty_score)

BandLabelReads as
+90 / +100Familyfound-family; can still walk out
+70 / +89Trusted"high trust"
+40 / +69Warm"banter warms"
+10 / +39Knownacquaintance
−9 / +9Strangernot yet met properly
−39 / −10Cooled"banter cools"
−69 / −40Wary"trends wary"
−89 / −70Severedwill not travel with you
−100 / −90Enemythe 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]

2.3 The ANTAGONIST overlay — NOT NEW, already live schema

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.

2.4 The NPC axis — ALIASES, no third list

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.

---

3. Why — in weight order

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.

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

---

4. THE PLAYER-VIBE TEST — read out loud, concretely

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.

---

5. Runners-up, and what killed them

SetKilled by
THE MINIMUM REPAIR (one shared list, change nothing)Declared axis: shared, so it forecloses per-axis divergencefaction_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.

---

6. THE STRONGEST OBJECTION to my own recommendation

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

---

7. Residuals I am not hiding

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.

---

8. The exact registry cells that would carry these on ratification — NOT APPLIED

Nothing below is written. Every cell is listed so the wiring commit is mechanical.

TargetEdit
registries/T0_Reputation_Ladder_Registry [DRAFT v0.1]/Sheet1.csvtier_thresholds, FR_0001 + FR_0002the nine ratified bands as the global default
same → ladder_analog, FR_0001 / FR_0002reconcile live WoW-Exalted/enemy-Exalted against WS7 L268's WOW_STANDARD/ANTAGONIST; bind each to its label list
same → faction_classreconcile 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 L258replace the deferral clause with the ratified ladder + names
docs/spine/CH_02.md L258 etc. → found_familydeclare, not discover: the top BOND tier (+90) IS membership in found_family. Correct wiring, but it is a binding to state
docs/DOC_MAP.mdindex 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).

---

9. The ask

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.

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