STATUS_TABLE_FILL_2026-08-07.md

systems/STATUS_TABLE_FILL_2026-08-07.md

T0_Status_Table — roster fill to the authored per-element set (PROPOSAL)

Lane A14, combat-data wave 2026-08-07. Proposal-tier. Nothing here is applied; registries/ is untouched.

CANON SUBORDINATION HEADER. This document is subordinate to canon in every particular. Canon for this

lane is _source/01_Tier_1_Foundation/T1_Combat_System_Spec [ACTIVE v1.0].md,

_source/01_Tier_1_Foundation/T1_Ability_Tree [ACTIVE v1.4].md, the live T0 registries under

registries/, and the recovered Josh-authored originals under docs/original_predclaude/ that those

docs themselves treat as the authored source. Where this proposal and any of those disagree, they win

and this document is the defect. This proposal decides HOW rows are shaped and WHICH authored statuses

are still missing; it does not decide what a status is or which element carries it — the authored

element-status table already chose. No magnitude is authored here: every balance number defers to the

Phase-5M audit exactly as T1_Combat_System_Spec [ACTIVE v1.0].md L132 and L536 defer theirs.

1. DERIVATION

DERIVED FROM:

Element/Status table, page 30 of the pre-Claude GDD. Thirteen element-to-status pairings, verbatim:

Earth Crush, Fire Burn, Water Saturate, Air Windburn, Metal Impale, Mud Slow, Sand Abrasion,

Steam Scald, Smoke Asphyxia, Ice Freeze, Lightning Shock/Paralyze, Poison "Damage over time",

Life "Healing over time". This is the roster the ledger's A14 row counts against.

recovery record: "Element status effects as authored: Crush (Earth), Burn (Fire), Saturate (Water),

Windburn (Air), Impale (Metal), Slow (Mud), Abrasion (Sand), Scald (Steam), Asphyxia (Smoke/Air),

Freeze (Ice), Shock/Paralyze (Lightning), Poison, Life (healing)."

over (canon plus the recovered originals)", the four GAS effect-family classes "DoT/HoT/impair/stagger",

and the closing instruction "Shapes now, magnitudes 5M."

the poison application/cure loop run through this same status framework.

"bleed / stagger / chill-root / burn / poison / soak (vril-wet, conducts next Air/Lightning hit)",

the stack-cap countdown shape, and the cap-triggered break event (chill to shatter).

mechanical line: "Causes oxygen around the target to vacate. In combat, causes suffocation. In the

world, extinguishes the fire element."

restrain a target in place."

at the protagonist's vicinity restrains a target — vines, roots, or grass-bind effect at appropriate

environment."

which is where restrain's duration is authored: "Earth Grip restrains briefly through stone tendrils

that release on hard struggle."

L182, L184 — the nine ability rows whose status_effects column is populated. These are the

referenced-but-missing evidence: restrain (L8 A_E_007 Earth Grip, L89 C_V_001 Entangle),

suffocation and silence (L24 A_W_008 Drowning Grasp), bleed (L48 A_A_004 Wind Scar),

paralysis and slow (L85 C_P_002), stagger and disorient (L155 A_A_016),

confusion and friendly_fire_risk (L160 A_T_009), brief_stun (L182 C_L_008),

poison_sustained (L184 C_P_009).

existing rows. Every proposed cell that is not separately cited follows these rows' own convention,

named per row in the notes cell.

ruled by Josh 2026-08-04. Read for this lane's boundary: it confirms the HoT/regeneration lane is a

live status concern and that its rate and magnitude "are not stated here; they are ordinal-fixed and

defer to the Phase-5M balance audit."

deferral clauses this fill obeys: "the numbers plug in when balance data exists" and "every

magnitude — percentages, durations, resistance deltas, critical increments — defers to the

Phase-5M balance audit."

T0_Status_Table by name — "Deferred magnitudes land BLANK with a TODO_5M note, never as an

interim number."

the display strings are held for the natural-voice rewrite pass rather than minted by a data lane.

column, only rows and two enum values inside an existing column, so the qualified-column law is not

engaged.

authored roster (13+ rows, no visual floor gating a data row)."

NOT DERIVED (authored judgment, and why it had no canon home):

recovered corpus names Crush as Earth's status and never states its mechanic. The nearest authored

read is docs/original_predclaude/extracted/Weapons_Brute.md L903, where a crush "apply[s] injury

debuff reducing opponent attack speed" — an impairment, not a damage-over-time. The row therefore

follows ST_007 slow's impair convention. Flagged as finding F-6; a director ruling that Crush is a

stagger-family impact instead is a one-cell change.

authored class list is four members (L69: DoT, HoT, impair, stagger) and a conduction primer is

none of them. Recorded as finding F-3 with a named fallback rather than silently filed under

impair, which would misstate the mechanic.

Nothing else on any proposed row is authored. Every remaining cell is either cited above or is the

existing ten rows' own convention, and each row's notes cell names which.

2. The authored roster, reconstructed and mapped

Thirteen element-status pairings are authored. Two further statuses are in the table already without

an element pairing, and both entered from the runtime side rather than the element table.

Present without an element pairing:

the one row carrying a cure material, FL_0001 Tamarind.

row is the standing precedent that a §4.4 clock earns a row on the same footing as an element

pairing, which is what admits bleed below.

Delta against the element table: five rows — Crush, Saturate, Impale, Abrasion, Asphyxia.

Two further statuses are referenced by canon and have no row, which the mandate names as the strongest

fill candidates:

status_effects value of registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv L48

(A_A_004 Wind Scar, Air). It enters on ST_010 stagger's precedent exactly. It is not Impale under

another name: Wind Scar is an Air ability and Air's element status is Windburn (ST_005), so the two

are separately grounded.

"stone tendrils restrain a target in place") and L1008 (Entangle, "restrains a target"), with its

duration authored at L1050 ("restrains briefly ... release on hard struggle"). Carried as the

status_effects value of two ability rows, L8 (A_E_007) and L89 (C_V_001). It is not Crush under

another name: Earth Grip carries restrain while Earth's element status is Crush, so the ability

registry itself distinguishes them.

Fill set: seven rows. Row count before 10, after 17. This clears the ledger's "13+" bar with the whole

element roster covered rather than a count reached.

3. PROPOSED rows

The header below is byte-identical to registries/T0_Status_Table [DRAFT v0.1]/Sheet1.csv L1, all 26

columns in order. Convention cells follow the existing ten rows and each row's notes names which row

it follows. stack_display, stack_cap and magnitude_ref land blank on every row under the

Phase-5M firewall, exactly as all ten existing rows do. status_sfx_id_ref and power_source land

blank on every row because all ten existing rows do. string_status lands placeholder on every row

per the natural-voice doctrine.

status_id,status_kind,status_family,cue_tag,read_channel,read_persistence,persistent_cue_tag,persistent_channel,icon_class,stack_display,stack_cap,break_event_ref,expiry_tell,cure_tell,status_sfx_id_ref,cure_material_refs,immunity_tag,applies_to_ally,duration_class,magnitude_ref,power_source,lifecycle,superseded_by,string_status,source_ref,notes
ST_011,crush,impair,GameplayCue.Combat.Status.Crush,vfx_body;motion,persistent,GameplayCue.Combat.Status.Crush.WhileActive,posture,bind,,,,GameplayCue.Combat.Status.Crush.Expired,GameplayCue.Combat.Status.Crush.Cured,,,crush,TRUE,short,,,active,,placeholder,docs/original_predclaude/extracted/GDD_Humanity_Game_Complete.md L13880 (Earth -> Crush; the authored per-element status table); docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md L88; docs/COMBAT_PROGRAM_ADDENDUM.md L66-68,"examples_not_limits; family/icon/duration follow ST_007 slow's impair convention -- the recovered corpus names Crush with no mechanical line, and the nearest authored read is docs/original_predclaude/extracted/Weapons_Brute.md L903 (a crush applies an injury debuff reducing opponent attack speed); read_channel carries two members per the colour-independent floor; stack_display / stack_cap / magnitude_ref blank under the Phase-5M firewall"
ST_012,saturate,prime,GameplayCue.Combat.Status.Saturate,vfx_body;audio,persistent,GameplayCue.Combat.Status.Saturate.WhileActive,body_vfx,prime,,,conduct,GameplayCue.Combat.Status.Saturate.Expired,GameplayCue.Combat.Status.Saturate.Cured,,,saturate,TRUE,short,,,active,,placeholder,docs/original_predclaude/extracted/GDD_Humanity_Game_Complete.md L13882 (Water -> Saturate); docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md L88; docs/COMBAT_ENCOUNTER_SYSTEM.md L196 (soak -- vril-wet conducts the next Air/Lightning hit),"examples_not_limits; status_family and icon_class carry the NEW value prime -- a conduction primer is none of the four authored classes at COMBAT_PROGRAM_ADDENDUM.md L69, so this needs the director's ruling (finding F-3; fallback is impair, which would misstate the mechanic); break_event_ref conduct is the L196 burst, but its trigger is the next matching hit rather than a stack cap, unlike ST_008's shatter (finding F-4); soak is the L196 shorthand for the same status and is an alias candidate; duration_class short follows the non-dot rows"
ST_013,impale,dot,GameplayCue.Combat.Status.Impale,vfx_body;audio,persistent,GameplayCue.Combat.Status.Impale.WhileActive,body_vfx,drain,,,,GameplayCue.Combat.Status.Impale.Expired,GameplayCue.Combat.Status.Impale.Cured,,,impale,TRUE,sustained,,,active,,placeholder,docs/original_predclaude/extracted/GDD_Humanity_Game_Complete.md L13884 (Metal -> Impale); docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md L89; docs/COMBAT_PROGRAM_ADDENDUM.md L66-69,"examples_not_limits; family/icon/duration follow ST_001 burn's dot convention -- a puncture wound is the damage-over-time class named at COMBAT_PROGRAM_ADDENDUM.md L69; distinct from ST_016 bleed, which is grounded on an Air ability (see the proposal's section 2)"
ST_014,abrasion,dot,GameplayCue.Combat.Status.Abrasion,vfx_body;audio,persistent,GameplayCue.Combat.Status.Abrasion.WhileActive,body_vfx,drain,,,,GameplayCue.Combat.Status.Abrasion.Expired,GameplayCue.Combat.Status.Abrasion.Cured,,,abrasion,TRUE,sustained,,,active,,placeholder,docs/original_predclaude/extracted/GDD_Humanity_Game_Complete.md L13886 (Sand -> Abrasion); docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md L89; docs/COMBAT_PROGRAM_ADDENDUM.md L66-69,"examples_not_limits; family/icon/duration follow ST_001 burn's dot convention -- scouring is the damage-over-time class; the recovered corpus names Abrasion with no mechanical line"
ST_015,asphyxia,dot,GameplayCue.Combat.Status.Asphyxia,vfx_body;audio,persistent,GameplayCue.Combat.Status.Asphyxia.WhileActive,body_vfx,drain,,,,GameplayCue.Combat.Status.Asphyxia.Expired,GameplayCue.Combat.Status.Asphyxia.Cured,,,asphyxia,TRUE,sustained,,,active,,placeholder,docs/original_predclaude/extracted/GDD_Humanity_Game_Complete.md L13888 (Smoke -> Asphyxia) and L15292 (causes oxygen around the target to vacate; in combat causes suffocation; in the world extinguishes the fire element); docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md L89 (Smoke/Air),"examples_not_limits; family/icon/duration follow ST_001 burn's dot convention -- suffocation at L15292 is damage over time; the suffocation token on T0_Ability_Tree_Registry Sheet1.csv L24 (A_W_008 Drowning Grasp) resolves HERE and is an alias candidate; the L15292 world-side effect (extinguishes the fire element) has no column on this 26-col schema (finding F-5)"
ST_016,bleed,dot,GameplayCue.Combat.Status.Bleed,vfx_body;audio,persistent,GameplayCue.Combat.Status.Bleed.WhileActive,body_vfx,drain,,,,GameplayCue.Combat.Status.Bleed.Expired,GameplayCue.Combat.Status.Bleed.Cured,,,bleed,TRUE,sustained,,,active,,placeholder,docs/COMBAT_ENCOUNTER_SYSTEM.md L196 (bleed named first in the §4.4 status/DoT clock enumeration); registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv L48 (A_A_004 Wind Scar carries status_effects=bleed); docs/COMBAT_PROGRAM_ADDENDUM.md L69,"examples_not_limits; not an element-roster status -- it enters on ST_010 stagger's precedent, stagger being likewise an L196 clock rather than a GDD element pairing; family/icon/duration follow ST_001 burn's dot convention"
ST_017,restrain,impair,GameplayCue.Combat.Status.Restrain,vfx_body;motion,persistent,GameplayCue.Combat.Status.Restrain.WhileActive,posture,bind,,,,GameplayCue.Combat.Status.Restrain.Expired,GameplayCue.Combat.Status.Restrain.Cured,,,restrain,TRUE,short,,,active,,placeholder,_source/01_Tier_1_Foundation/T1_Ability_Tree [ACTIVE v1.4].md L728 (Earth Grip -- stone tendrils restrain a target in place) and L1008 (Entangle -- living plant matter restrains a target) and L1050 (Earth Grip restrains briefly through stone tendrils that release on hard struggle); registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv L8 (A_E_007) and L89 (C_V_001) both carry status_effects=restrain,"examples_not_limits; duration_class short is authored at T1_Ability_Tree L1050 (restrains briefly) rather than conventional; family/icon follow ST_007 slow's impair convention; break_event_ref left blank -- L1050's release on hard struggle is an early escape, not the cap-triggered burst the column carries on ST_008 (finding F-4)"

Applied shape check, for the director's apply step: seven rows, each 26 fields, status_id continuing

ST_011 through ST_017 with no gap after the existing ST_010. Write with the csv module per

docs/REGISTRY_ROW_STRUCT_SPEC.md, never by string edit — three cells carry embedded commas and are

quoted accordingly.

4. Findings for the director

F-1. SCHEMA GAP, the significant one. T0_Status_Table has no element column. The authored roster is

a per-element table — thirteen element-to-status pairings at GDD_Humanity_Game_Complete.md L13880-13892

— and the registry cannot express the pairing at all. After this fill the table holds every authored

status and still cannot answer "which status does Sand apply", which is precisely the join the addendum

asks for at L69-70 ("per-element application rules off the ability rows"). Recommend a qualified

element_class column per the naming law at docs/REGISTRY_ROW_STRUCT_SPEC.md L63, blank on the three

non-element rows (septic, stagger, bleed). Not authored here: adding a column is a schema change and

belongs to the director, not an author lane.

F-2. NO FK FROM ABILITIES TO STATUSES. registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv

status_effects is populated on 9 rows of 185 and carries free text, not status_id values, and its

tokens do not match status_kind consistently (paralysis against ST_009 paralyze, poison_sustained

against ST_002 poison, suffocation against the proposed asphyxia). There is no entry in

docs/fk_spec.json binding the two. As a result nothing detects an ability pointing at a status that

does not exist, which is the exact defect this lane had to find by hand. Recommend the column resolve to

status_id with an alias map for the display tokens.

F-3. ENUM EXTENSION NEEDED, one value. docs/COMBAT_PROGRAM_ADDENDUM.md L69 authors four effect-family

classes — DoT, HoT, impair, stagger. Saturate is none of them: docs/COMBAT_ENCOUNTER_SYSTEM.md L196

makes it a conduction primer ("vril-wet, conducts next Air/Lightning hit"), which impairs nothing and

deals nothing. ST_012 proposes prime in both status_family and icon_class. RECOMMENDATION: ratify

prime. The strongest objection is that a fifth class widens the GAS family set the runtime already

built to four, and the cheap alternative is to file Saturate under impair; that is rejected because it

would state in the data that a soak slows the target, which canon does not say, and the runtime would

then read the wrong thing off the row. Filing it as a new class costs one enum member and keeps the row

true.

F-4. COLUMN SEMANTICS, break_event_ref. The column's authored meaning at

docs/COMBAT_ENCOUNTER_SYSTEM.md L196 is a cap-triggered break — the stack cap fills, chill becomes

shatter, which is what ST_008 carries. Two proposed rows have a resolution event that is not

cap-triggered: Saturate conducts on the next matching hit (ST_012 carries conduct anyway, flagged),

and restrain releases on hard struggle per T1_Ability_Tree [ACTIVE v1.4].md L1050 (ST_017 leaves the

cell blank rather than overload it). Either the column needs a trigger companion or the two events need

their own home. Named, not resolved.

F-5. WORLD-SIDE EFFECTS HAVE NO COLUMN. GDD_Humanity_Game_Complete.md L15292 authors Asphyxia's

out-of-combat behaviour — "In the world, extinguishes the fire element" — and the recovered element

docs use the same combat/world split throughout (HUMANITY_Elements.md L115 onward carries a "World

Description / Combat Description" pair per element). The 26-column schema is combat-only, so that

authored half is dropped on the floor at ST_015 and will be dropped again for every element status that

has one. Worth a column or a sibling table; not authored here.

F-6. ONE FAMILY ASSIGNMENT IS JUDGMENT, NOT CANON. Crush (ST_011) is the only proposed row whose

mechanic the recovered corpus never states. It is filed impair on the strength of

Weapons_Brute.md L903 (a crush "apply[s] injury debuff reducing opponent attack speed"). A director

ruling that Earth's Crush is a stagger-family impact instead is a three-cell change on one row

(status_family, icon_class, duration_class) and nothing else in the fill depends on it.

F-7. FIVE ABILITY-REFERENCED STATUS NAMES HAVE NO AUTHORED HOME. Reported, not invented, per the

mandate. Each is a status_effects token on a live ability row with no status authored anywhere in

canon: silence (Sheet1.csv L24, A_W_008 Drowning Grasp), disorient (L155, A_A_016 Pressure Wave),

confusion and friendly_fire_risk (L160, A_T_009 Confusion Aura, Ether-Throat), and brief_stun

(L182, C_L_008 Static Touch, Lightning). Of these, brief_stun most likely resolves to ST_009 paralyze

as a short-duration alias, since Lightning's authored status is Shock/Paralyze at

GDD_Humanity_Game_Complete.md L13890 — an alias entry, not a row. The other four are genuinely

unauthored statuses and each needs either a canon home in the owning T1 doc or a rewrite of the ability

row's token. Note that Ether is the element carrying two of them and Ether has no authored status at all.

F-8. TWO ELEMENTS CARRY NO AUTHORED STATUS. The authored table covers thirteen elements. Vegetation is

a fourteenth — it owns T1_Ability_Tree [ACTIVE v1.4].md §11.10 and appears in

registries/T0_Element_Effectiveness [DRAFT v0.1]/Sheet1.csv as a defender element in eight rows — and

has no status pairing; Ether likewise. This is a coverage gap in the authored roster itself, which is

Josh-authored numerical/naming territory, so it is surfaced rather than filled. Note that the proposed

ST_017 restrain partly covers Vegetation in practice, since Entangle is the ability that carries the

token, but restrain is grounded on the ability text and is not being asserted as Vegetation's element

status.

F-9. TEN CUE TAGS DO NOT EXIST ENGINE-SIDE. Every existing row cites

Source/Humanity/Private/Combat/HumanityCombatTags.cpp L16-25 as "the ten shipped status tags — the

verbatim seed", and the ten rows are exactly those ten tags. The seven proposed rows name seven new

GameplayCue.Combat.Status.* tag families following that file's convention exactly, but the tags are not

registered in it — that engine file is not present in this working tree, so the registration could not be

verified here, only inferred from the source_ref. The fill is data-tier and sanctioned as such by the

ledger's A14 row, but the engine tag registration is a real downstream dependency and should be booked

against the wave that owns HumanityStatusEffects.cpp.

F-10. NO CANON CONFLICT FOUND. The GDD element table, the ELEMENTS_MATRIX recovery record, the addendum,

and the encounter system's §4.4 clock list agree everywhere they overlap. The only apparent divergence is

vocabulary: soak at COMBAT_ENCOUNTER_SYSTEM.md L196 against Saturate at

GDD_Humanity_Game_Complete.md L13882, and chill-root at the same line against Ice's Freeze at

L13889 (ST_008). Both read as runtime shorthand for the authored name rather than a second status, and

both are handled as alias candidates rather than rows. ELEMENTS_MATRIX_RECOVERED.md L89 attributes

Asphyxia to "Smoke/Air" where the GDD table pairs it with Smoke alone (L13888) and lists Asphyxia as an

Air ABILITY at HUMANITY_Elements.md L166; the element pairing is Smoke and the Air entry is an ability

of the same name, so there is no conflict to resolve.

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