pipelines/FORKB_RESURRECTION_BRIEF_2026-07-27.md
The direction (Josh, verbatim intent, 2026-07-27): *"after death, allow the user to choose to
revive at last checkpoint, or wait to see if one of their support companions who may have been
trained or taught resurrection may be able to revive the user, but this can only happen out of
combat."*
Synthesis of five read-only deep dives (canon-integration · mechanics/economy · presentation ·
engine/schema · adversary), 2026-07-27. Per the standing decision protocol: this brief presents
HOW, not whether. Analyst disagreements are preserved as named FORKS, never averaged.
Source files (scratchpad): forkb_canon_integration.md · forkb_mechanics_economy.md ·
forkb_presentation.md · forkb_engine_schema.md · forkb_adversary.md.
---
These are not proposals. They are positive-controlled findings, converged from independent passes,
and they reshape the question:
1. Resurrection is ALREADY RATIFIED CANON — it was never absent. T0_Ability_Tree_Registry
carries A_A_009 Breath of Life (T5, L1, Air/Heart), A_C_003 Vril Revival (T5, L1/L2,
Ether-Crown), A_C_004 Vril Mass Revival (T7, L1, revival_aoe), all reading *"restores a
downed ally to combat consciousness with reduced vitality."* Collective Surge (T7) explicitly
relays a Mass Revival across a formation from any linked ally's position — canon already
presupposes allies hold revival-class casts. The pre-Claude GDD authored the whole ladder, and
the antagonist family has revival too (Death's Scythe: *"opponents defeated with this weapon
cannot be revived by antagonist family means"* — proving revival-DENIAL is already a designed
counter-lever). The only missing arrow in a four-way symmetric system is ally→player. Josh
asked for the one hole filled. Any framing of this as "adding resurrection" is factually wrong.
2. Josh's "trained or taught" speaks the corpus's own vocabulary, one-to-one. *Taught* =
Lane B, the quest-gated transformative tier (T0_Bonus_Pool_Registry.unlock_gate_quest_ref —
the column already exists). *Trained* = Lane A, the proficiency-depth ladder + INT + bond +
spec purpose. Nothing needs inventing at the acquisition layer.
3. The out-of-combat constraint is derivable from canon, not arbitrary — and it is genre-correct.
The seven infinite-vital-energy devices bond to the protagonist's vril-seat equipment only,
so a companion has no Enhanced Ability Mastery and cannot hold a Crown-seat channel under combat
pressure. Independently, the rule maps 1:1 onto the WoW combat-rez / out-of-combat-rez split.
Josh arrived at the correct line himself; the loop's job is to state it in-fiction as capability,
never as a UI rule.
4. The runtime is 0% built and the ally runtime is ZERO. Positive-controlled across
C:/dev/Humanity/Humanity/Source: \bAlly|Allies → 0 hits; Companion → 10 hits, all data
plumbing; Checkpoint → 0 hits; bInCombat|IsInCombat|CombatActive → 0 hits. No ally
pawn, no ally ASC, no ally AI, no party frame. THE FAMILIAR TRAP: ~20 Familiar hits in
Source are all the boss composure node (Ability.Mode.Familiar, Composure_Familiar,
UHumanityFamiliarAbility) — not one is a creature. Flag this to every downstream agent.
Also: "revive at last checkpoint" has no checkpoint to revive at. The shipped path is
RespawnAtNearestSite() → nearest AHumanitySiteMarker by squared distance. Josh said
*last*; the code does *nearest*. That is a semantic fork, §2.7.
---
Each shape is a complete, internally consistent answer across four axes: the choice surface ·
what the wait costs · where you come back · how the capability is acquired. They nest:
A ⊂ B ⊂ C. D is the cost-axis alternative.
and settles low (arena-biased yaw, never the player's last look direction); a single quiet
hold-to-let go is available from the first frame to the last. Not letting go IS the wait —
the player never "picks" wait, so there is no second UI object and no greyed tease. No input =
wait (the accessibility floor); the checkpoint is an active press.
in force, made visible) + the ally's vril, refilled only at the vril site.
proficiency depth). Deterministic on conditions — no roll.
by construction (no cut the game imposes); natural-voice-native; no-dead-end by construction
(Option A never fails); the smallest thing that is honestly Josh's direction; buildable in ~4-5
waves + one mint without any ally runtime (the wait resolves truthfully to "no one could
reach you").
nearly FREE (enemies de-aggro from a body within seconds) — the constraint is *correct* but not
yet *meaningful*, and must be reported that way. The wait can be dominated (§3.1). In the
Ch 2-5 slice the branch is inert.
Everything in A, plus:
downed_target_policy on T0_Creature_Roster (rides the missing aggro block, gap #1): disengage (generous default) · execute (finish the body after a visible windup) ·
guard (hold over the body, refuse to leash — combat never ends, so the wait cannot resolve) ·
ignore.
them and come. One rule; closes the AFK-farm-from-the-floor exploit; improves the fiction.
execute is the single highest-value value in the whole analysis — it makes the waitgenuinely able to end *worse* than letting go, it is register-correct for rated-M, and it creates
the feature's best moment (your ally peels the executioner off you) with no die roll. It also
closes the "enemies wander off ⇒ free revive" leak that makes A's constraint hollow.
DESIGN_GAP_REGISTER #1 (non-boss engagement/aggro spec, class MISSING,owner W-SPACE) from "highest-leverage" to blocking. The execute windup is authored content.
Everything in B, plus the three routes to one mechanic:
| route | band | cost | who |
|---|---|---|---|
compassion — the existing A_A_009/A_C_003/A_C_004 rows | L1/L2 | ally vril high | built support allies |
extraction — Soul-Drain-adjacent, *"alternate revival mechanics through different element routing"* (T1_Ability_Tree L848) — canon-declared, ZERO rows exist | L4/L5 | cheap in vril, expensive in world: takes vitality from something living; community-ripple + faction + persona consequence; karmic-debt residue (T1_Story_Spine L114) | evil-path allies |
| craft — reagent / inscription | none | a consumable + the Alchemy·Herbalism·Inscription trade economy | any ally — the anti-collapse keystone |
Plus a MAJOR pick cost on a support pool (taking it means not taking a damage/utility major),
a new SPEC_VRIL_REVIVE_ALLY row in T0_Spec_Purpose_Registry, and a **named per-path pick-rate
assertion** in the Phase-5M/5H build-space sweeps.
heal/revival rows across 185 are L1 or L1,L2; zero at L3/L4/L5, while 13 L3 rows and 7 L4,L5
rows exist elsewhere, so the bands are expressible and the zero is real). The craft route is
bench-independent, so a DEPARTED healer narrows options without deleting the mechanic. Makes the
whole thing measurable rather than asserted: near-100% pick rate in one band = meta-collapse;
near-0% = a dead pick; both are defects, fixed by widening competitors, never by removal.
consumable-hoarding economy if the drop rates are wrong; the largest mint surface.
Same surface as A/B, but a successful ally revive still relocates you to the checkpoint — what
the ally saves you is the world-advance delta, not the walk.
(no in-place restore path); leaves graduated persistence untouched.
bookkeeping difference the player will never feel. Three analysts rate it weak.
override** (the ally_revive_policy column, §3.3) for the rare authored arena where in-place
revival would break a boss economy.
---
**J-1 — THE CONSCIOUSNESS-WITHDRAWAL RECONCILIATION. This is the gating decision: every
player-facing word depends on it. ⚠ ANALYST FORK — kept visible.**
The ratified model is *"consciousness withdrawal to the last attuned recharge source"*
(BATCH1_RULINGS.md L50-51), deliberately a substrate event, not a UI event.
DURATION** — so the wait is simply the interval before it completes, and Fork B "intercepts a
withdrawal in progress." Under this reading nothing is amended: the choice is *let go* vs
*hold on*, the timeout resolves to the checkpoint because the withdrawal completes on its own, and
no new metaphysics is minted.
withdrawn to the well, the choice is offered to someone who is not there and both options collapse
into one location. It offers three repairs — (1) make withdrawal explicitly graduated (amends
BATCH1 item 4), (2) introduce a tether the healer works on (mints a new vril concept), or
(3) reframe the options as "let go / hold on" (costs canon nothing).
analysts already hold, it costs zero amendment, and it is the most emotionally loaded framing of
the two options. But the loop should NOT apply it silently: the ratified sentence does not say
"graduated," and writing that word into canon is a change to a Josh-ratified model. **Ask him to
bless one sentence, then everything downstream is execution.**
J-2 — THE ASYMMETRY / FALLEN-vs-DEAD LINE. ⚠ ANALYST FORK — kept visible.
protagonist and nobody else, ever. Grounds: T3_Familiars_Named L919 already rules the Ch-58
reunion resolved *"not through resurrection"*; named/persona'd NPCs stay permanently dead
(community-ripple doctrine, DESIGN_GAP_REGISTER #13). Canon has already declined resurrection as
a narrative resolution mechanism.
*downed allies* and Mass Revival targets the whole fallen team, so DOWNED must be party-wide or
the player's own ratified kit is meaningless. Engine's B2 recommends **allies go DOWNED, never
dead, in combat. The adversary draws the line at the community-ripple / persona-death event**:
before it fires you are *fallen*; after it fires you are gone.
state and is symmetric across the party; DEAD is a story event and is asymmetric and permanent.
Permanent death is never a combat outcome for a persona'd character. The revive acts on DOWNED,
never on DEAD, and the boundary is the community-ripple event — a write that already exists.*
This preserves the Ch-58 ruling, the community-ripple doctrine, Mass Revival, and the gear-return
contract simultaneously. **It is §17-adjacent cardinal territory (a hard line about death
permanence) — recommend Josh ratifies the sentence rather than the loop applying it.**
Enforcement note: loyalty_state has no dead value and WS_028's event enum has no KILLED
(BG3-2). Fork B raises that gap's priority because the player will now visibly notice the
asymmetry.
J-3 — THE HEALER'S CHILD (D-2 F-STAR). The emotionally correct reviver — the Manggarai
healer-elder's daughter, the protagonist's primary human companion from Ch 13 — is canonically
barred: *"no combat ability, vril, or weapon is gained"* (T3_Core_Characters §3.4, per the D-2
F-STAR ruling 2026-07-19).
reviver; Fork B lives on the other companions and the familiars.
non-vril, Herbalism/medicine-grounded resuscitation is not a combat ability and is the exact
expression of her mother's tradition — reachable without granting her vril, a weapon, or any
combat presence. Her parallel-analytical way of knowing is already canon (Ch 16 Indus).
of this feature in the entire game. It is a characterization-canon call on a Josh-authored ruling
about a Josh-owned character — not a creative-within-vision apply.
J-4 — THE EVIL-PATH ANSWER (path parity). ⚠ ANALYST FORK on who rules it.
Mechanics calls minting the L4/L5 revival lane *"not a fork — an authoring task the loop rules and
applies,"* citing T1_Ability_Tree L848 which already declares the lane exists. Engine calls the
rows *"cardinal-adjacent (band-gated capability) — Josh's call on the routing."* The adversary adds
a third route entirely: HL_0076 already bands incoming healing (L1 +10%, L2 +5%, L5 +10%
vulnerability), so the companion comes regardless and the *magnitude* rides the band — which
routes cleanly around the §8.11.8 firewall (no condition_expr reads loyalty; the magnitude reads
the band exactly as all healing does).
— same ability, higher vril cost, karmic-debt residue per T1_Story_Spine L114), and Josh rules
ONE thing: whether path parity is delivered by a separate L4/L5 route, by HL_0076 magnitude, or
both.** That single choice touches the equally-weighted-endings architecture, which is his.
J-5 — CAN THE PARTY WIN A FIGHT WITHOUT YOU, AND CAN THEY FINISH A BOSS? The adversary names
this *"the largest single cost, invisible in the direction's phrasing."* Out-of-combat-only means
either the mechanic almost never fires (dead feature) or the fight must be **capable of ending
without the player**. If the party can finish a boss: who gets the win credit, the win_reward, the
mastery credit, the tell-reads?
their win_condition is a player-performed read (5-7 counter-class reads in a row on a pip
meter that wipes on error), Rangku's FREE route is an integrity choice only the player can make,
and Naga Padoha's resolution is a cosmic subdual. **An ally cannot satisfy any of them, so those
encounters cannot end while you are down** and the wait resolves to attrition then the checkpoint.
The design disarms itself exactly where an ally-undo would do the most damage. Josh's call is the
scope statement, not the mechanism.
doctrine.
downed_target_policy enum and which creatures carry which value. T0_Ally_Behavior_Policy rows, the T0_Familiar_Bond_Ability rungs.
is replaced on the revive path by the companion's own words.
chapter** — removing it would be exactly the care-tier inflation the doctrine names as a defect —
but the wake is routed off protected sacred ground (§5.7 already models sites as having their own
consent), the voice is culturally registered per region, and no borrowed rite is ever depicted.
The parent brief's premise *"protected chapters carry 1-HP withdrawal"* is inverted per the
canon-integration analyst: defeat_protected / the 1-HP clamp is a BOSS column (the boss
withdraws at 1 HP; Naga Padoha is the slice's one clamped boss), not player-death protection.
The player can and does die inside a protected encounter.
But the engine analyst independently specifies a player-side clamp as build item A8 (*"missing
today"*) and QA test T10 (*"protected chapter clamps player to 1 HP; S2 never opens"*).
These cannot both be right. Recommendation: the canon analyst's read is better evidenced
(FUN_REBUILD_PLAN.md L372, PRE_5090_BUILD_PLAN.md L349-350 both scope it to the boss row) —
so A8/T10 should be struck from the build list unless the director's own re-read of the
deciding artifact says otherwise. Per the standing agent-frame-claims rule, the director re-reads
before landing.
---
Non-optional. Each is cheap; each closes a defect an analyst demonstrated.
| # | Exploit / defect | The guard | Ships with |
|---|---|---|---|
| 3.1 | DOMINATION / wait-scumming. If waiting is free and the checkpoint stays available, waiting strictly dominates and the choice is theatre. | Three teeth, in order: (a) the world-advance clock keeps running while you are down (ruled doctrine, free, just made visible — and canon's Withdrawal clock already tightens tells / slows wells / prunes answers, so the party gets *worse* the longer you lie there); (b) depletion carried forward — a successful revive leaves the party spent, refillable only at the sanctum; (c) execute — the wait can end worse. Explicitly rejected: a wait timer, a hidden roll, an XP/loot penalty, and any "you may only choose once" lockout. Letting go must stay available for the entire wait. | A (a) · B (b,c) |
| 3.2 | PATH-ASYMMETRY COLLAPSE — the sharpest, and already latent in shipped canon. All 8 heal/revival rows are L1 or L1,L2; zero at L3/L4/L5. If ally-revive is the death-mitigation system, the integrity axis silently becomes a difficulty setting. Directly violates §8.11.9 and CVD §17.4. | The three routes (§C) and/or HL_0076 magnitude banding. A named sweep assertion: revival-major pick rate reported per path bucket (L1/L2, L3, L4/L5) — ~100% in one and ~0% in another is the defect showing up as a number instead of an argument. | C |
| 3.3 | THE ATTRITION EXPLOIT. Boss state persists across player death by design (*"the boss is not reset — Composure damage / defeat state / withdrawal all stand"*, HumanityCharacter.cpp L349). Today the only limiter is the walk back from the well. A revive at the body deletes it: chip, die, get up, chip, die. A collision between two ruled doctrines. ⚠ Mechanics says chain-meter bosses self-limit; the adversary says the general case still breaks. | ally_revive_policy ∈ {allowed, denied} per encounter row on the proven docs/registry_extensions.json combat-encounter rail (the pip-column vector), default allowed, empty = not-yet-populated NEVER denied; plus Shape D as the per-encounter override where in-place return would break the economy. Alternative worth costing: boss Composure — but not defeat state — resets on a player death the party did not finish (the cleanest; it converts attrition into "the party has to actually win"). | B (flag) · C |
| 3.4 | THE OUT-OF-COMBAT PREDICATE IS ITSELF THE EXPLOIT SURFACE. It does not exist in code or canon. Whatever gets built becomes gameable: aggro-based → kite past the leash radius and die outside it; damage-recency → break LOS and wait out the timer. Three concrete engine defects: (A) Flee counts as aggroed (a timid macaque holds combat open forever); (B) Stalk does NOT (the Ebu Gogo stalker at standoff reads out-of-combat — the exact horror beat where a revive window is most wrong); (C) bPerceivedThisFrame is frame-transient. | Encounter-resolution-based, not perception-based, with settle hysteresis, strictest at bosses — and carrying PROVENANCE: EmptyBecauseDefeated / EmptyBecauseRetired / EmptyBecauseLeashed. BUG-0018 trap: volume teardown empties the world of hostiles without any hostile being defeated; a naive detector flips to ELIGIBLE *because the level unloaded*. Extend GuardianTeardownOnEndPlayTest. | A (blocking) |
| 3.5 | AP_0001 FIRES ON A CORPSE — a live latent defect. T0_Ally_Behavior_Policy AP_0001 = ws.integrity_level in [L1,L2] & flag(local.player_health_at_or_below_50) → interpose, autonomous. A player at HP 0 satisfies "at or below 50." The moment a downed state exists, the L1/L2 familiar interposes for a dead player forever. | The downed state must be excluded from health-fraction predicates, or AP_0001/AP_0002 re-scoped in the same commit. QA twin: an ALIVE player at 40% must still satisfy it. | A |
| 3.6 | BOND-FARMING. If the revive moves the bond, players farm deaths to repair relationships — inverting the integrity system. | The revive grants ZERO bond movement. Rule it explicitly in the owning doc. | A |
| 3.7 | AFK-FARM FROM THE FLOOR. Allies clear the zone while you lie there. | Allies do not initiate new engagements while the player is downed — they finish what is on them and come. One rule; also correct under §8.11.8 awareness. | B |
| 3.8 | DOUBLE-FIRE ON THE DEATH DELEGATE. It binds from both PossessedBy and OnRep_PlayerState, guarded only by bDeathDelegateBound. Two ledger rows ⇒ the world-advance delta applies twice. | The ledger append is idempotent per death. QA test T9. | A |
| 3.9 | THE CHOICE IS COSMETIC. Nothing is written to world state on death today, so both branches produce the same (empty) delta. A cosmetic choice on a death screen is meta-collapse applied to the defeat axis. | Different CURRENCIES, not different magnitudes. RETURN carries the world-advance delta (the Hades economy, ruled). ALLY REVIVE carries a relationship/standing delta instead — the ally spent vril, risk and standing for you, and that is remembered. Neither dominates; both are real. | A |
| 3.10 | "SEE IF" READ AS RNG. A probabilistic revive falls under HL_0061 / CVD §17.13 (±1σ bound, anti-streak floor, mandatory success ceiling, reset on drop) — heavy machinery bought to purchase a worse feeling, and it turns the game's most emotional beat into a σ-bounded loot roll. | The uncertainty is CONDITIONAL, never a roll. You don't know whether your healer survived, disengaged, is in range, has vril, or read the moment fast enough. That answer is already determined by the build the player made. All five analysts converge on this. | A |
| 3.11 | PARTY-WIPE DEADLOCK / softlock. | Option A (let go) never fails and is available from the first frame of DOWNED to the last — so no configuration of enemies, allies, arenas, bands or luck can produce a dead end. Assert this in check_no_dead_end.py as an explicit invariant rather than leaving it a property nobody checks. Plus W6 IMPOSSIBLE must fail fast and honestly — never run a timer out on a player who was never going to be revived. | A |
| 3.12 | SUPPORT COMPANIONS BECOME MANDATORY (the banned meta-collapse mode) and INT becomes a tax rather than a tradeoff. | Access is TAUGHT, reliability is TRAINED: any taught ally may attempt it; only a built ally does it well. INT gates *decision quality*, never *access*. The capability is a MAJOR pick that competes with other majors, not a character's identity. Plus one T0_Role_Composition_Rule row asserting a viable glass-damage composition clears the bar without a revive-capable ally. | C |
| 3.13 | Difficulty-dial drift — someone later invents a "revive success chance" stat. | The revive's reliability rides ambient vril density, the one ruled dial (Wellspring · Veiled · Fading · Sundered · The Forgotten One). Near-certain on Wellspring; a real race on Sundered; the reach may simply not be there on The Forgotten One. State it so no separate stat is minted. | A |
Two firewalls the feature must not breach (Gate 29 check_ally_build.py B5 already enforces
them): (i) behavior quality is a BUILD property, never an integrity property — **no policy
condition_expr may read a loyalty ws key, therefore the revive policy may not be
loyalty-gated; (ii) policy_source is a closed enum with no player-authored member — the
player may not author the revive policy.** They build the ally; the ally decides. That is also §1.4's
existing familiar rule (*"the player cannot override this behavior"*).
⚠ ANALYST FORK — the loyalty question. Canon-integration's clean split says **WILL she? rides
THE BOND + integrity band** (and recommends a WAVERING companion still comes — the best beat the
fork can produce). Mechanics/engine say firewall (i) makes a loyalty-gated policy **structurally
illegal. Recommended reconciliation:** loyalty decides whether she is *still with you at all*
(the roster, upstream — departed/estranged cannot revive by construction), and it decides
nothing at the policy layer. Willingness below that is not bond-gated; a soft floor (a
low-bond ally tries and does not reach you in time) preserves the AAAAA no-dead-pick principle and
keeps the bond legible through play instead of through a tooltip. This keeps both readings' intent
and breaks neither gate.
---
**The headline: Josh's direction SETTLES Fork B by splitting it per-branch — an answer none of the
four escalated options anticipated, and strictly better than any of them.**
PRESENTATION_DOCTRINE.md §0.B offered four competing camera treatments. They become sequential
states of one machine:
| Historical option | Its new job |
|---|---|
| Opt 3 — hold on the body | the DEFAULT state. The camera stays down because the player has a decision to make from down there, and because the wait has to be watchable. |
| Opt 1 — hard cut | the FAST PATH, taken only when the player presses for it. |
| Opt 2 — diegetic dissolve | the TIMEOUT. The withdrawal completing on its own — the one place a dissolve belongs. |
| Opt 0 — the shipped 0.55 s fade | RETIRED. A greybox stand-in, not a member of the machine. |
The hard cut becomes PLAYER-AUTHORED, and that retires Fork A's strongest objection to Opt 1.
The objection was that *"making death the one routine hard cut trains the player to read a cut as
failure, which then poisons every other legitimate cut."* A cut the player pressed is not a cut the
game imposed — it reads as the player's own impatience, so it never transfers dread onto the
authored cuts. **Fork A's scarcity doctrine survives intact and the one exception it had to carve
becomes an exception the player writes.**
The six states. S0 THE FALL (camera inherits the fall, settles low, arena-biased yaw — a
build requirement, not a detail: a camera that keeps the player's last look direction will stare at
a wall for half of all deaths and the wait will read as broken) → S1 THE LOW HOLD (choice offered
frame one, world not paused, not desaturated; treatment at the EDGE — a slow closing
vignette that doubles as the diegetic timer — never from the centre of frame) → S2 THE WAIT →
S3 THE RISE (diegetic, camera rises with the body, so CC-3 is satisfied trivially) / S4 THE CUT
(fastest transition in the game, CP-6 unchanged) / S5 THE DISSOLVE.
Three canon-binding presentation facts fall straight out of the ability rows: the revive returns
you at reduced vitality (readable on the body — breath, walk speed, frame edges — never on a
bar); the revive is instant cast (no channel bar, no progress meter on a death surface); and the
dark path is not denied the revive, it gets a different one (*"alternate revival mechanics
through different element routing"* is an explicit instruction that the revive IMAGE forks on band).
Three things this buys that nothing else does:
1. THE WAIT MAKES THE INT AXIS WATCHABLE — its only real showcase. Low INT: the ally is still
swinging, or standing where it was; it does not read that the fight ended. Mid: it turns,
registers the body, comes. High: it breaks off early, clears or pulls the last threat off
your body first, and arrives with intent. Josh's INT-as-AI ruling (2026-07-26) is on the
comparator roster as a *"day-old ruling with zero teacher"* — better AI is normally felt as
ambient competence, the hardest thing for a player to attribute to a stat they bought. *"Your
healer noticed you go down, disengaged, made it across the arena, and got you up"* is the single
most legible possible payoff for an invested stat.
2. THE HONEST-FAILURE PRESENTATION — load-bearing, not polish. A wait that resolves into nothing
is indistinguishable from a bug, and *not being able to tell* is the failure. **Rule: waiting
always shows you something.** Ally still fighting → you watch them try and fail to disengage.
Cannot reach → the near-miss. No vril → they arrive, kneel, and cannot. Never learned it →
they arrive, kneel, hold on, and stay with you while the draw takes. Companion dead → empty
ground where they would have been; say nothing; the absence is the memory. **The "arrives and
cannot" cases are better presentation than a success, because they carry the relationship. If
these images are cut for budget, the "it's a slot machine" objection becomes correct and the
feature should not ship.**
3. The frequency problem solves itself. A fixed ceremony is the AAA mistake; a fixed fade is
invisible. Here the fast player presses once and takes the fastest transition in the game, and
the patient player gets a beat that is different every time — because the beat is *the live world
around the body*, and the live world is never the same twice.
Do NOT gate the OPTION on combat state — gate the ACTION. "Out of combat only" invites a static
availability check at HP 0 (enemies alive → hide the wait). That is the wrong build: the fight can
END while the player waits, most often because the companion finished it, and *watching your ally
kill the last enemy and then come for you is the single best expression of this entire system.*
The surface stays constant; the world decides. This also makes the rule invisible — the player
never learns there is a rule, they just observe that nobody kneels next to them mid-fight.
Availability is communicated by the CAMERA, not by a greyed menu item. If someone is out there,
you can see them. If nobody is out there, you see empty ground. Show-don't-tell, on the exact
surface where a UI availability flag would have been most tempting. **All analysts reject the greyed
tease.** (Residual fork: engine prefers "shown with a truthful diegetic read"; mechanics/canon
prefer the option simply not existing until someone is there. The camera-bias answer satisfies both
— the surface is constant, the frame is honest.)
THE DEFAULT ON NO INPUT MUST BE "WAIT" — three floor-level reasons: a player who is stunned,
distracted, away from the pad, or on assistive input is not punished; the timeout resolves WAIT into
the checkpoint anyway, so no-input can never softlock (CC-8 + the no-dead-end floor, satisfied by
construction); and it preserves the beat for the player who did not know there was one. **The
checkpoint is an ACTIVE press.** That ordering is what makes the machine both merciful and fast.
Attunements (ratified, judgment-free) carries a presentation default — pre-select wait/return —
governing which option is pre-selected, never availability, so it stays a preference and not a
content gate.
Accessibility floor (Attunements is ratified canon, so this has a home): options are TEXT +
distinct input, never colour-coded or icon-only; the companion approach needs **two independent
channels** (silhouette/motion in frame — which is what the S0 camera bias buys — AND audio); the
diegetic vignette timer needs an explicit duration-indicator backstop for low vision; **the dark
hold → bright vril close-up is a photosensitivity risk by construction and needs a
reduced-intensity variant — a hard floor item on the most-repeated surface in the game**; motion
sliders inherit; no hold-to-confirm-only, no twitch window, full remap, one-handed reachable.
Strings — the natural-voice gap is LIVE and shipped. Today's surface reads
"DEFEATED (no fail wall) -- %s" (HUD L548). Three defects in one greybox line: **"no fail wall" is
internal design vocabulary on a player-facing frame** (CP-3 — the player must never learn the game
has a *policy* about fail walls; naming the mercy destroys it); "DEFEATED" is system voice; and the
consolation payload is system voice too (death_reward = *"logs his stalk cadence for the retry;
unlocks a polo-corruption lore fragment"* — every load-bearing word is a machine's word). **The
2026-07-27 rewrite pass did not reach it** — it covered the 96 sidecar strings + boss display names,
and death_reward is neither. The highest-frequency player-facing text in the game is still in
machine voice, and the natural-voice rewrite makes it strictly *better* because it makes it teach:
*"He always steps left before he lunges. I saw it that time."* Same word count; the first promises a
log, the second is the log and hands the player the counter.
Recommended option pair (PROPOSAL-tier seeds; examples-not-limits): "Not yet." / "Go back." Two
opposites, both what a person actually thinks, neither naming a system, and — critically — **neither
promising rescue**, so the honest-failure cases do not read as broken promises.
Strings to refuse: anything naming the mechanism (withdrawal, vril site, consciousness);
anything naming the ability by system name ("Breath of Life", "resurrection" — fine as an internal
token, never on the surface); anything promising ("someone is coming"); and the literal phrase
"content to wait"/"content to watch", a live advisory signature in
harness/check_reveal_discipline.py WHO_SOFT.
**Reveal discipline — the death surface is the highest-frequency player-facing text in the game and
it fires from Ch 2.** Five risks, in severity order:
withdrawal, tether, consciousness) hands the player Layer-3 metaphysics on a surface they will see
fifty times. The return is shown, never explained. Canon models this perfectly: four revival
ability rows describe *what happens* and never *what it means*. Match that restraint exactly.
death screen — a whisper, a pulse, a light, a sense of being held, the collective reaching for you
— is exactly HL_0046's Grand Sage communication vocabulary (visions, intuition pulses,
vibrational imprints), deployed on a surface visited dozens of times before Ch 76. HL_0044's
protection assumes hints are rare enough to police individually; **a death screen played 200 times
is a drip. check_reveal_discipline.py reads canon artifacts, not runtime presentation — this
is a MAJOR-class hazard the existing gates would not catch.** The death/wait surface needs its own
named entry in the reveal-discipline baseline.
Ch 23, the Duat Ch 69, the Realm Road Ch 70-74). A revive dressed in dying-rising imagery — light
from above, mythic register, resurrection language — pre-empts authored beats with a routine loop.
**Keep the revive vital and medical, never mythic. Someone catching you, not someone raising
you.** The resonance is allowed to *exist*; a player who read the Osiris material and then watches
someone gather her up will feel it. That feeling is the payload. Naming it destroys it.
boss_name "Rangku Wera, the Hollow Hunter" and display_name "the one who tracks me." The surface draws the diegetic name or no
name, never the registry name.
the Ch-58 HELD familiar reveal. The death-and-wake loop rhymes with the Ch-2 opening
(*"Get up. Climb toward the light."*) — a free presentation asset with a hard constraint: it must
never re-stage the familiar's death image or gesture at it.
Ch 15 (Astral Projection) and leaks a Crown-seat capability the player does not have. Pre-Ch-15
the read is body-and-senses: the world greys, sound muffles, edges go soft. **Not a soul
leaving — a vessel emptying.**
about bringing someone back is one adjective away from theology). Relief, reproach and exhaustion
— never cosmology. It goes through the natural-voice pass with string_status tracked AND the
reveal gate.
observation's first line; the journal holds the full entry. One authored string, two lengths, one
write. Timing gift: the journal activates at Ch 13 and Ntala joins at Ch 13 — both halves of
the mature death surface arrive in the same chapter, so the surface can be designed deliberately
as *the thing that grows*: bare and solitary early, a record at Ch 13, a witness who can reach you
later.
Doctrine deltas to land: PD §0.B is superseded, not amended (the four options become the
states; the fork's field stays as provenance); the §3.2 Death/defeat row is replaced;
CP-6 needs one clarifying clause — the WAIT state can outlast the arc-reveal hold, so it must be
declared a player-paced live-world state outside the hold-class ordinal ladder (closer to CC-9
dwell), or a future author will read a contradiction into a ruled doc; CP-2 (everything skippable)
now binds two exits; BUG-0017's single-framed-overlay invariant has an unruled collision —
dying during a held scene or with a fork pending — and needs a precedence ruling (recommended: the
defeat surface outranks both). T1_UI_UX_Spec is a 2-line empty stub; the death choice surface
has no canonical home and is its natural first real item, alongside the vril-polarity readability
floor already earmarked for it.
---
Sizes in this project's own wave idiom (a wave ≈ a few files + its own tests + its own commit and
gate ritual). ENGINE/CANON declared per the standing engine-reuse rule.
| # | Component | Size | ENGINE / CANON | Notes |
|---|---|---|---|---|
| A1 | Checkpoint anchor + save-on-arm. Replace nearest-marker-by-distance with a real checkpoint. Recommend the vril site — already ruled save + recharge + loadout sanctum, so one anchor serves three ruled systems, and it is the same place the ally's vril comes back. AHumanityVrilRechargeZone exists (VS_CH02_001). | 1 wave | ENGINE (checkpoint) + CANON (which sites) | Hard prerequisite. grep Checkpoint over Source → 0 hits; there is no checkpoint to revive at. |
| A2 | The choice state machine + surface, WAIT present and resolving W6 IMPOSSIBLE honestly (no allies exist yet). Real machine, real choice, real ledger, truthful failure. | 1 wave | ENGINE (machine) + CANON (strings) | Design S2 surface-agnostic — blocking-ness is a property of the surface, not the machine (the MMO bridge, §7) |
| A3 | The downed pawn contract. Not lock-on targetable; invisible to the enemy perception cone; does not satisfy the health-fraction ally predicates (guard 3.5); holds position (no physics teleport until a branch resolves); IsDowned() distinct from bPlayerDead for QA/HUD. | small | ENGINE | Without it, S2 is a corpse-beating bug |
| A4 | The out-of-combat detector as a named primitive WITH PROVENANCE (UHumanityCombatStateSubsystem): encounter-scoped, settle hysteresis, and fixes Defect A (Flee counts as aggroed) + Defect B (Stalk does not) + Defect C (frame-transient perception). | 1 small wave | ENGINE — highest reuse value in the list | Pays FOUR existing debts on landing: RAGE decays out of combat, STAMINA regens out of combat, loadout switching never mid-encounter, and every T0_Ally_Behavior_Policy predicate that needs to know a fight is running. Schedule it regardless of Fork B. |
| A5 | The world-advance delta on death (VOL2 SL-1 — specified and unbuilt; nothing is written to world state on death today). | small | ENGINE seam + CANON delta | Without it the choice is cosmetic (guard 3.9) |
| A6 | The schema/canon mint (see 5.4). | 1 mint + critic ritual | CANON | Zero-token compute, but full mint discipline + --emit-baseline in the same commit |
| A7 | Soak death-loop lane in Tools/run_soak.py: N scripted deaths per map, both branches; no leaked RespawnTimerHandle, no duplicate ledger rows, no actor leak, stable peak memory. | small | ENGINE | grep death run_soak.py → 1 unrelated hit. Player death has ZERO coverage today — all 55 UE automation tests assert BOSS defeat. |
| A8 | ~~Player-side protected 1-HP clamp~~ | — | — | ⚠ STRUCK pending director re-read — see §2.C. The clamp is a boss column; there is no evidence of a player-side clamp in canon. |
BUILD-NOW total: ~4-5 waves + one mint. A1, A4, A5 and A7 are all things the slice needs
regardless of whether the revive branch ever ships — which is the strongest scheduling argument
in the brief. With the ally runtime absent, the wait branch resolves to *"nobody could reach you"* —
honest, no-dead-end, fully testable, and it becomes the real mechanic the moment allies exist.
Nothing is wasted and nothing is faked.
| # | Component | Size | Notes |
|---|---|---|---|
| B1 | THE ALLY PAWN + AI SUBSYSTEM. Greenfield: ally character class + its own ASC/AttributeSet, controller, follow/positioning, target selection, the INT-tiered behavior-policy interpreter reading T0_Ally_Behavior_Policy.condition_expr, party frame, stat/loadout application from WS_027. | multi-wave — the largest item in this analysis | Head start: the predicate evaluator already exists on BOTH sides (harness/condition_expr.py + Source/.../Quest/ConditionExpr.cpp + FHumanityConditionExpr49Test), and the policy rows are authored. The brain wiring is the missing half. |
| B2 | Party combat that continues after the player falls — enemies retarget onto allies; allies can themselves go DOWNED; a fight that can be lost while you watch. | multi-wave | This is what makes "out of combat only" MEAN anything. Today, with the player down there is no target, so hostiles de-aggro or leash within seconds and the constraint costs almost nothing. Reconciles with the permanent-death doctrine per §2.A J-2: allies go DOWNED, never dead, in combat — which also protects the gear-return contract from a loot-loss edge case. |
| B3 | downed_target_policy on the enemy state machine (a small branch in an existing machine) + the execute windup. | 1 wave + content | Blocked on DESIGN_GAP_REGISTER #1 (non-boss aggro spec, MISSING, owner W-SPACE) — now promoted to a blocking dependency, and it gains a column the register does not currently name. |
| B4 | The revive CAST + presentation hookup. | 1 wave | Modest once B1 exists; HumanityAbilityFoundry is built |
| B5 | The teaching loop — how the player actually trains an ally. | factory work, per chapter | Canon-anchored: *"vril-integration develops as the player teaches and imbues the familiar through bonding and training"* (T3_Familiars_Named L55) |
| # | Component | Notes |
|---|---|---|
| C1 | Death presentation. TODO_CANON L225-227 defers it explicitly as an ART placeholder, T2/GATED-5090 (the greybox is *"freeze the anim + tip the actor ~74°"*). The Fork-B camera grammar + the revive VFX. | |
| C2 | THE PRESENTATION LADDER'S FLAGSHIP CONSUMER. §5 rules per-mastery-tier presentation variants and Josh nodded it a hard 5090 requirement (*"every spell and ability and movement needs to be beautiful and fluid art"*). The revive is the ONE ability the player watches from the receiving end, in close-up, held still — a Philosophus-tier revive should look effortful, a mastered one should look like nothing at all. Name it as a flagship case in the DR-2 tiered-asset request; it is a held close-up, not a combat-speed flourish. | |
| C3 | Phase-5M magnitudes — every number here is firewalled: wait duration, revived vitality fraction, vril cost, the two branches' currency weights, the INT threshold at which an ally notices. | |
| C4 | Phase-5M/5H build-space sweeps with the named per-path revival pick-rate assertion (guard 3.2). | |
| D | Tier-C: raid rez rules, the wipe economy, the §8.7 path-agnostic reconciliation (§7). |
| # | mechanic | home | status | ||
|---|---|---|---|---|---|
| 1 | player DOWNED state · party-wide DOWNED | runtime + transient local.* | new (runtime) | ||
| 2 | "last checkpoint" anchor | **new durable ws.*** last_vril_site_touched → soft-FK T0_Vril_Site_Registry.site_id; + QuestSaveGame field | new row | ||
| 3 | caster eligibility + the asymmetry — caster_class_scope ∈ {protagonist, ally, both}, revival_direction_scope ∈ {to_ally, to_protagonist, both}, out_of_combat_only bool on T0_Ability_Tree_Registry | Vector-C extension via docs/registry_extensions.json | new columns — the asymmetry MUST be schema-expressed or a future author will collapse the two directions and silently legalise in-combat player rez | ||
| 4 | companion revive capability | T0_Bonus_Pool_Registry / T0_Bonus_Option_Registry — pick_class=major, lane=B, unlock_gate_quest_ref (= *taught*), spec_purpose_refs, respec_class | existing columns, new rows | ||
| 5 | familiar revive capability | T0_Familiar_Bond_Ability — bond_100_mastery, grants_class=active, integrity_band_gate=L1;L2, command_permission=autonomous | existing columns, new rows — BLOCKER: these rows are COPY-ONLY from T3_Familiars_Named §1.6. A revival rung cannot be invented in the registry; it needs a living-source T3 edit or a Josh ruling. Gate 29 B2 polices 22 × 5 = 110 coverage. | ||
| 6 | revive behavior (when) | T0_Ally_Behavior_Policy — action_ref=revive_protagonist, domain=proactivity, autonomy_band=autonomous, disposition_legal_set=protective, int_tier/unlock_int_min, policy_source=canon_seed | existing columns, new rows — structurally identical to AP_0001 | ||
| 7 | the out-of-combat predicate | harness/condition_expr.py grammar | grammar change. in_combat = 0 occurrences, encounter = 0 occurrences today. Worse, the grammar's contract is produce-before-consume, and a combat-state flag is produced by the *runtime*, not a beat — so flag(local.encounter_resolved) would fail the lint or need a fake producer. Add a first-class runtime-surface token (read(combat_state) under the existing read(surface) form is cheapest) and teach the C++ evaluator. Gate 29 B3 then holds the line — *a malformed predicate must fail loudly, never silently match nothing* — which is exactly the failure this feature cannot afford (a silently-never-matching gate = a revive that silently never fires). | ||
| 8 | the defeat ledger | append-only ws.* on the WS_044 idiom: {event_id, chapter_ref, site_ref, encounter_ref, outcome ∈ {checkpoint_return, ally_revive, ally_revive_unavailable}, reviver_ref, capability_ref, vril_paid_ref, wait_duration_ref, combat_end_provenance ∈ {defeated, leashed, retired}, world_delta_ref, relationship_delta_ref} | NAMED LANDMINE: the applier's APPEND_LEGAL_IDS frozenset holds twelve ids; WS_044/WS_046 were landed outside it with the deviation self-declared in the rows' notes (MINT_APPLY_CRITIC_2026-07-27.md §A). Extend it in the same commit or the finding repeats verbatim. Avoid superseded ids WS_043/WS_045. | ||
| 9 | taught_capability_refs + derived revival_readiness | WS_027 companion_roster_state and WS_012 familiar_bond_state (whose `vril_integration_state = latent\ | developing\ | integrated` is already the teaching ladder) | new sub-fields |
| 10 | the L3/L4/L5 revival lane | T0_Ability_Tree_Registry — must be MINTED | ⚠ a no-dead-end violation waiting to ship (guard 3.2) | ||
| 11 | spec purpose | T0_Spec_Purpose_Registry — new SPEC_VRIL_REVIVE_ALLY (function_class=heal, scope_class=single, role_axis_ref=ROLE_SINGLE_HEAL) | new row — without it the sweeps cannot count revival builds as a distinct viable spec, and an uncounted spec is invisible to the balance teeth | ||
| 12 | per-encounter policy | T0_Boss_Encounter_Registry new column ally_revive_policy ∈ {allowed, denied} on the proven combat-encounter rail | default allowed; empty = not-yet-populated, NEVER denied (the discipline the pip columns already carry) | ||
| 13 | enemy downed_target_policy | T0_Creature_Roster — rides the missing aggro block | new column, BLOCKING on gap #1 | ||
| 14 | reduced vitality + ally exhaustion | T0_Status_Table | new rows — successive revives return progressively less and leave a lingering impairment on the ally, so chaining is self-defeating without a counter the player can game or a number the UI must show | ||
| 15 | consolation-paid-once ledger | durable ws.* per encounter instance | new row | ||
| 16 | the strings | sidecars under the natural-voice pass; register from T0_Voice_Registry; string_status tracked | new strings + the death_reward column rewrite (§4) | ||
| 17 | role-composition guardrail | T0_Role_Composition_Rule — a viable glass-damage composition without a revive ally | new row |
Canon edits (tier docs, critic-gated): T1_Ability_Tree §11.7 (the ally-cast/out-of-combat/
protagonist-target case + the no-EAM reason) and §5I.2 (the spec purpose); **T1_Integrity_Paths
§8.11 — the owning home** (the CAN/WILL/HOW-WELL split, the loyalty-state legal set, the
asymmetry/fallen-vs-dead hard line, the zero-bond-movement rule); §8.11.5 (the familiar grant
shape); T1_Combat_System_Spec failure states (the second door, the density coupling, the
out-of-combat condition); PRESENTATION_DOCTRINE §0.B + §3.2 + CP-6; T1_UI_UX_Spec (its first
real content); docs/DOC_MAP.md row + a named consumer for every new artifact.
**Engine (UE automation, existing latent-command idiom) — 11 Tier-1 tests, each with a must-not-fire
twin: choice offered at HP 0 (and the 1.45 s auto-respawn timer must NOT be armed**) · checkpoint
return lands at the anchor, not nearest-marker-by-distance (a nearer marker must NOT win) · wait
blocked in combat over REAL ticks · wait resolves out of combat → revive at reduced vitality ·
wait impossible fails FAST (must NOT run a timer out) · boss-fight wait refused/unresolvable
(both killable and protected classes) · downed pawn contract (**an ALIVE player at 40% HP MUST still
satisfy AP_0001) · teardown does not fake out-of-combat** (extend GuardianTeardownOnEndPlay)
· ledger appends exactly once, idempotent under re-possession · strings resolve from data (extend
FHumanityCH02SpoilerSafeStringsTest) · the hysteresis test — the predicate must not fire during
a momentary LOS break (*the one most likely to be wrong and least likely to be noticed*).
Canon gates: Gate 29 check_ally_build.py (B3 predicate lint + B4 disposition legality +
B5 both firewalls) · NEW tooth — revive-capability provenance (every taught_capability_refs
entry resolves to a row with ability_class ∈ {revival, revival_aoe} and a satisfiable band lock,
positive-controlled so an unreachable resolver reports as unreachable, never as a clean zero) ·
NEW tooth — the evil-lane hole (if the L1/L2 lane is a live affordance and L3/L4/L5 is empty,
FAIL or WARN with a named worklist — the executable form of the no-dead-end floor) · **NEW tooth —
the asymmetry firewall** (no row may carry revival_direction_scope=to_protagonist without
out_of_combat_only=true — Josh's constraint made unspellable-to-violate in data) ·
Gate 26 check_build_space.py (enroll the spec + a dominance tooth: ~100% pick rate is a defect
symmetrically to a never-picked option) · Gate 9 check_no_dead_end.py (assert the
Option-A-never-fails invariant explicitly) · check_reveal_discipline.py +
check_grand_sage_silence.py scoped to the new death-surface strings, **with the surface given its
own named baseline entry** · check_registry_extensions.py · check_ws_value_form.py ·
registry_fidelity.py --emit-baseline in the same commit as any registry edit.
---
**Build SHAPE B, staged: land Shape A's BUILD-NOW block now, design the surface so B and C are data
additions rather than rewrites, and commit to C as the balance destination before the feature is
ever described as shipped.**
Concretely:
1. Now (pre-slice, ~4-5 waves + one mint): A1 checkpoint anchor · A2 the state machine and the
diegetic-hold surface · A3 the downed contract · A4 the combat-state authority with provenance ·
A5 the world-advance delta · A6 the mint · A7 the soak lane. **Four of these seven are things the
slice needs anyway. The WAIT branch ships present and honest**, resolving to "no one could
reach you," because no ally runtime exists.
2. Report it register-honestly. Until B2 (party combat that continues after you fall), the
out-of-combat constraint is *correct but nearly free* — enemies de-aggro from a body within
seconds. Ship it anyway (retrofitting it later is expensive) and never let a play-quality
claim ride on it pre-B2.
3. Post-slice: B1 → B2 → B3 → B4 → B5, at which point Shape B is real.
4. Before any "the revive is balanced" claim: Shape C's three routes + the per-path pick-rate
sweep assertion.
Why B over A: A's wait can be dominated and its constraint is hollow — execute and the
no-new-engagements rule are what make the wait a genuine risk rather than a delay with a menu on it,
and they cost one enum column and one behavior rule.
Why B over C now: C's three routes are the balance destination, but they are a mint-and-author
program whose correctness is only *measurable* at Phase-5M/5H sweeps. Shipping C's rows before the
sweeps exist is authoring against an unmeasured target.
Why not D: it trades the exact fantasy Josh described for a bookkeeping difference the player
cannot feel. Keep it as a per-encounter override only.
**"This is a multi-wave engine program, a greenfield ally runtime, a blocking design gap, and a
17-row mint — bought for a branch that cannot fire once in the only thing Josh will play."**
It is true and it is the honest shape of the cost. Every analyst converged on it: Josh ruled
Ch 2-7 stays SOLO as built, the slice is Ch 2-5, the revival ladder is T5 Philosophus of a
twelve-tier climb, and the earliest plausible companion window is Ch 13 (Ntala) with the earliest
*functional* one later still. Fork B has zero surface in the Josh Gate slice. So the feature
Josh just directed is a feature he will not see in the build he is waiting to play — and if it is
mis-built as a greyed second option, it is worse than absent: it is a **taught-then-broken
affordance**, a promise the game cannot keep for eleven chapters.
The answer, and why it does not overturn the recommendation:
checkpoint system (grep Checkpoint → 0). There is no combat-state authority, and four ruled
canon rules (RAGE decay, STAMINA regen, the loadout-switch ban, every ally predicate) are
silently unenforceable without it. Nothing is written to world state on death, so the ruled
Hades loop is unbuilt. And player death has zero test coverage while 55 automation tests
assert boss defeat. Those get built either way; Fork B is the reason they get scheduled.
early, gains a record at Ch 13 (the journal activates), and gains a **witness who can reach
you** later. That is a true story about the arc — the world starts empty and fills — and the first
time someone can come for you is a story beat. Built deliberately, it is better than the mechanic
being available from Ch 2. Discovered as a bug report, it is a disaster.
0.55-second greybox placeholder as the death presentation of a 30M-word game, which is exactly
how *"a greybox constant becomes shipped canon without anyone ruling it."* And it forfeits the one
surface where the party system, the INT-as-AI axis, the healing spec's apex, the loyalty canon's
only mechanical gain, and the Presentation Ladder all land at once. Per-frequency, the death
loop is among the highest-leverage presentation surfaces in the project.
Second-strongest objection, worth naming: *two options at death is one option too many* — the
player answers this question hundreds of times, and a decision made hundreds of times with the same
answer is a tax, not a decision. Answer: the no-input default is WAIT and the fast path is one
press, so neither audience is taxed. But this is the objection I would most want **measured in the
QA loop's feel telemetry rather than argued** — it is a wall-clock question about a repeated
surface, which is exactly the class the feel strips measure.
---
SCALES cleanly — the architecture is already there:
A_C_004 Vril Mass Revival (T7, revival_aoe, *"all downedallies within range return to combat consciousness simultaneously"*) is a raid rez by
construction. And Collective Surge (T7, Ch 70-77) explicitly relays Mass Revival across a
formation from any linked ally's position — a raid-rez-relay primitive authored before anyone
asked for one.
T0_Role_Axis_Registry rows carry arena=both; §8.7 states *"One taxonomy, two arenas."* ROLE_SINGLE_HEAL / ROLE_GROUP_HEAL already span.
Josh's rule is the genre-standard rule, arrived at independently.
developing disasters and intervenes before they cascade into team wipes."* The role exists; the
mechanic it would use is what this direction builds.
STAYS SOLO — do not scale these:
timed release-or-wait, non-blocking, world keeps running. **Design S2 surface-agnostic so
blocking-ness is a property of the surface, not of the machine** — this is a BUILD-NOW
architectural requirement, not a Tier-C afterthought.
stays a Tier-A/party property.
⚠ ONE REAL CANON COLLISION — name it now. §8.7 rules raid roles path-agnostic: *"Integrity
band gates no role, no build axis, and no operational team. An L5 Pure Evil guild fields the same
role space as an L1 Truly Good guild."* But **every revival row carries integrity_band_lock = L1
or L1,L2. Under current data an L5 guild cannot field a rezzer at all** — a direct
contradiction of a ratified Tier-C rule.
Recommended resolution: the band lock is a Tier-A campaign catalog-access property (which is
what T1_Ability_Tree §12 says catalog access is *for* — path identity and replayability), and
Tier-C fields the L4/L5 alternate route so the role space stays equal. **Which promotes authoring
the evil-lane revival from a no-dead-end nicety to a Tier-C BLOCKER.**
Also flag: §8.8's four-team architecture has no failure economy at all — kill benefits are
canon, wipe/recovery rules are absent. Out of scope now; record it as a Tier-C-phase gap so it is
not discovered late.
---
1. J-1 — the withdrawal reconciliation. Bless *"let go / hold on"* (zero amendment,
recommended), or rule withdrawal explicitly graduated (amends BATCH1 item 4). **Gating: every
player-facing word depends on it.**
2. J-2 — the DOWNED/DEAD hard line. Ratify: *DOWNED is a symmetric combat state; DEAD is an
asymmetric permanent story event; permanent death is never a combat outcome for a persona'd
character; the boundary is the community-ripple event.* §17-adjacent cardinal territory.
3. J-3 — the healer's child. Reading A (default: barred by D-2 F-STAR) vs Reading B (an
out-of-combat, non-vril, herbal resuscitation that grants her no vril, no weapon, no combat
presence). B is the highest-emotion version of this feature in the game.
4. J-4 — path parity. Separate L4/L5 route, HL_0076 magnitude banding, or both. (The loop
authors the rows either way; the parity mechanism touches equally-weighted endings.)
5. J-5 — can the party win without you, and can they finish a BOSS? If yes, who gets the win
credit / win_reward / mastery credit / tell-reads. The largest scope decision in the direction.
6. The attrition collision (guard 3.3): graduated persistence (the boss remembers) vs
revive-at-body. One ruled doctrine has to bend.
7. Naming. Player-facing naming flags per docs/NAMING_METHOD.md — but note the natural-voice
doctrine bites hard here: **there should probably be no name at all on the player's surface,
just a person's voice and a choice.**