A15_GRID_WIDTH_BRIEF.md

systems/A15_GRID_WIDTH_BRIEF.md

A15 — THE GRID-WIDTH DECISION BRIEF

Canon parent: T1_Combat_System_Spec (at _source/01_Tier_1_Foundation/) §Elemental Parry
L653-660 (L660 is the question) · T1_Ability_Tree §9 L601-619 ·
T0_Element_Effectiveness (registries/, the 124 authored rows).
What this is. The four-step decision brief for ledger row A15 (docs/PIPELINE_LEDGER.md
L104) and the note filed as VETOABLE-5 (L280-283): *widen T0_Element_Effectiveness to the live
31-value element vocabulary, or hold the authored 13-attacker/13-defender grid as a declared
design boundary that caps elemental-parry coverage.*
Who rules it. The DIRECTOR, not Josh. The ledger names it "director call, briefable"
(L104). It is not routed to Josh for two independent reasons: the grid's values are already
Josh-authored canon and nothing here proposes changing one of them, and the NO-VETO LAW
(docs/spine/DECISIONS_PENDING_JOSH.md L52, Josh 2026-08-04, verbatim: *"I already told you to
stop bringing me veto items. Expansion in line with the thousands of hours we put into our vision
is not only encouraged but required."*) retires veto-framed items from every Josh-facing surface.
The VETOABLE-5 framing is itself superseded by that law; this brief replaces it.
Why now. It is the F-ELEM prerequisite named by the BE_0002 rail exemplar
(docs/proposals/boss_rail_exemplar/BOSS_RAIL_EXEMPLAR_BE_0002.md L442) and blocks the elemental
half of BE_0003, the named parry exemplar.
Lane C, combat-schema wave (claim 3433ec8d). Written, not committed.

---

0. DERIVATION

DERIVED FROM:

and Not Invented (L653-660) — the answering-set rule, the opposite-reads-as-Effective ratification

(L659), and L660 verbatim, which is the question this brief answers: *"The grid as landed

carries thirteen elements on its attacker axis and thirteen on its defender axis... The live

element vocabulary is larger still, at thirty-one values by the matrix document's own count, so

every element outside the grid has no derivable elemental answer today. An elemental parry

authored against an uncovered element is unanswerable, and the counter-class gate reports it as

such rather than passing it."*

opposite element, which makes the element matrix a parry surface and not only a damage surface."*

(the seven-member closed set), §The Mitigation Scale L662-671 (a parry is a scale, never a

binary), §Registry Anchors L692-694 (T0_Element_Effectiveness supplies the answering sets;

harness/check_counter_class_coverage.py is the enforcing gate).

OFFENSIVE half (L125 the matched-seat elemental damage bonus, L128 combo unlocks at matched

thresholds), and §Resource economy L53-61 for the resource frame those casts are paid from.

and hybrid-element builds"* named as a first-class endgame axis — and §The Balance Doctrine L599

(meta-collapse is the banned failure mode). This is the strongest canon argument AGAINST holding

the boundary, and it is carried in full at §5.

architecture (five vril-seat categories with Ether carrying three seats, three trade-unlocked),

which is the 10 live ATOMS. L608 — *"Ice manifests as the Water sub-form per the canonical

state-change discipline."* L619 — the three trade elements are not vril-seat-coupled.

Mud and Clay, Metal and Magma, Steam and Plasma, Sand and Dust, Storm and Mist, Lightning and

Smoke as the products of the six base pairs.

product names, section by section. These are the ALIAS EVIDENCE at §2.3.

summon, barrier, heal or perception. This corroborates the authored Vegetation asymmetry.

B/T axis tags, hybrid parentage stated at L23-28, and the director's 2026-07-24 arithmetic

re-verification at L32-36), §2 L38-47 (the three non-chakra elements and the Vegetation note),

§5 L105-108 (the supersession rule and the 31-value statement), §6 L112-114 (Phase-5H

effectiveness calibration is this grid's named consumer).

the shape, the answering sets and the depth analysis at §2.2 and §2.5 are computed from them.

vocabulary at §2.1 is enumerated from the element column, not quoted from a doc.

registries/T0_Boss_Attack_Rail [DRAFT v0.1]/Sheet1.csv (19 rows), docs/proposals/combat/kits/

(59 files, 57 kits — docs/PIPELINE_LEDGER.md L100, *"57 kits as 59 files"*) — the

real-consumption counts at §2.6.

_note, and the absence of any declared element enum on T0_Element_Effectiveness itself.

off-grid element (a FAIL, never a silent pass); harness/counter_class_coverage_scorecard.json

L10, L16 (element_answer_sets: 13).

L61 and ../Humanity/Humanity/Tools/DT_ElementMatrix.csv — the engine's grid is 10×10, and an

unknown element resolves to a silent neutral. The engine/data divergence at §2.7.

combat-data-factory wave that consumes this ruling).

(F-ELEM) — how the rail actually consumes elemental answers, and why it consumed none.

not accrete) — both checked before writing, per contract §7.

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

effectiveness row is derivable from its two parents. I tested it against the authored data and

report the measured result. The test is arithmetic over Josh's own cells, but the decision to run

it — and to treat its failure as decisive — is mine.

combo products (§12.1.x headers) and canon names the grid elements (recovered §1); nothing in

canon joins the two lists. The join is my reading, and it is the recommendation's load-bearing

step, so it is stated as an inference and not as a citation.

Effective attackers (L657) and says nothing about whether an answering element is castable by the

player. The gap between "the grid endorses Life" and "no ability in the 185 casts Life" is real

and has no canon home; naming it is authored judgment. So is the decision about Ice, which is

castable in play but carries no distinct element value to test against, and which the tooth

therefore drops from answering sets on a reading of §9 L608 that canon does not force.

Eight-Element Architecture"* and L611 names one Ether element carrying three vril-seat

positions, while T0_Ability_Tree_Registry carries three distinct element values

(Ether-Throat, Ether-Crown, Ether-ThirdEye) across 32 abilities. Whether the grid should gain one

Ether element or three seat-values is an open reading of L611 that no canon settles, so this

brief boards the reading rather than picking it.

construction not in canon.

---

1. THE QUESTION AS CANON ACTUALLY POSES IT

Canon poses a narrower question than the ledger's shorthand suggests, and the narrowing matters.

The elemental parry is a read in ONE direction. T0_Boss_Attack_Rail carries attack_element — the

element of the boss's attack — and the answering set is *"every attacker element the matrix

rates Effective, which is the value 1, against that element as defender"* (L657). So the coverage

that gates A12 is coverage of the DEFENDER axis: can an incoming attack of element X be

answered at all? The attacker axis matters only as the supply of legal answers.

Canon has already ruled three things that this brief may not reopen:

sitting). Not a fork.

is a defender and never an attacker, and that asymmetry is the authored source's own, carried

rather than smoothed"* (L660).

uncovered element is unanswerable, and the counter-class gate reports it as such rather than

passing it"* (L660), and the gate honours this — check_counter_class_coverage.py L338-343 emits

a FAIL, not a WARN, on an off-grid attack_element.

What is genuinely open is one thing only: whether the authored value space grows.

---

2. THE DATA

2.1 The live 31-element vocabulary, enumerated

Derived from the element column of all 185 rows of T0_Ability_Tree_Registry. Every value below

is a live registry value with a canon home; the ability count is real usage.

The 10 ATOMS (T1_Ability_Tree §9 L601-619 — five vril-seat categories with Ether carrying

three seats, plus three trade-unlocked):

#ElementAbilitiesCanon homeOn the grid as defender?
1Air20§9 L610, §11.4YES (literal)
2Fire20§9 L609, §11.3YES (literal)
3Water20§9 L608, §11.2YES (literal)
4Earth19§9 L607, §11.1YES (literal)
5Ether-Throat12§9 L611, §11.5NO
6Ether-Crown11§9 L611, §11.7NO
7Ether-ThirdEye9§9 L611, §11.6NO
8Poison9§9 L616, §11.9YES (literal, 1 answer)
9Vegetation9§9 L617, §11.10YES (literal, 1 answer)
10Lightning8§9 L615, §11.8YES (literal, 1 answer)

The 21 HYBRIDS (T1_Ability_Tree §12 L1028 — six base-pair, twelve seat-plus-trade, three

trade-trade; each combo's authored product name is its §12.x header):

#Element valueAbilitiesCanon product name (§12.x)Grid nameCovered?
11Earth+Water3Mud and Clay (§12.1.1 L1044)Mudvia alias
12Earth+Fire3Metal and Magma (§12.1.2 L1054)Metalvia alias
13Earth+Air3Sand and Dust (§12.1.3 L1064)Sandvia alias
14Water+Fire3Steam and Plasma (§12.1.4 L1074)Steamvia alias
15Fire+Air3Lightning and Smoke (§12.1.6 L1094)Smokevia alias
16Water+Air3Storm and Mist (§12.1.5 L1084)— (grid seats Ice here)NO
17Earth+Lightning2Magnetism (§12.2.1 L1108)NO
18Earth+Poison2Toxic Soil (§12.2.2 L1114)NO
19Earth+Vegetation2Living Earth (§12.2.3 L1120)NO
20Water+Lightning2Conductor (§12.2.4 L1126)NO
21Water+Poison2Acid (§12.2.5 L1132)NO
22Water+Vegetation2Swamp (§12.2.6 L1138)NO
23Fire+Lightning2Thunder Arc (§12.2.7 L1144)NO
24Fire+Poison2Combustion (§12.2.8 L1150)NO
25Fire+Vegetation2Ash and Smoke (§12.2.9 L1156)NO
26Air+Lightning2Plasma Field (§12.2.10 L1162)NO
27Air+Poison2Toxic Cloud (§12.2.11 L1168)NO
28Air+Vegetation2Pollen Storm (§12.2.12 L1174)NO
29Lightning+Poison2Galvanic Toxin (§12.3.1 L1186)NO
30Lightning+Vegetation2Galvanic Growth (§12.3.2 L1194)NO
31Poison+Vegetation2Bloomrot (§12.3.3 L1202)NO

Total: 31 distinct values over 185 abilities. The vocabulary's real shape is not 31 flat

elements; it is 10 atoms and their 21 pairwise products, and every hybrid's element value is

literally its two parents joined by a +.

2.2 The grid as landed — verified, all 124 rows

Recomputed from Sheet1.csv:

the same 13, exactly as L660 states.

Lightning, Poison, Life (8 rows each = 24).

Confirmed cell-by-cell. This is the authored asymmetry, and it is real in the data.

element_answer_sets: 13.

2.3 The honest coverage intersection — and it is not 13 / 18

The ledger's "13 covered / 18 uncovered" (L104) is arithmetic: 31 − 13. It is not an intersection.

Only seven of the live 31 values appear literally on the grid's defender axis.

ClassCountValuesAbilities
LITERAL — the live value is a grid defender by name7Earth, Fire, Water, Air, Lightning, Poison, Vegetation105 of 185 (57%)
ALIAS — the live value's two parents match a grid element's authored parentage tag5Earth+Fire→Metal, Earth+Water→Mud, Earth+Air→Sand, Water+Fire→Steam, Fire+Air→Smoke15 of 185 (8%)
UNCOVERED193 Ether seats, Water+Air, and the 15 base×trade and trade×trade hybrids65 of 185 (35%)

The alias criterion, stated precisely — it joins on PARENTAGE, not on names. A live hybrid

aliases to a grid element when its two parents match that element's authored parentage tag in the

recovered grid's own axis labels (docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md §1

L23-28: Metal (E/F), Mud (E/W), Sand (E/A), Steam (F/W), Smoke (F/A), Ice (W/A)). Name-matching —

"the live value's canon product name is a grid defender" — fails twice on this data and cannot be

the rule. It is ambiguous for Fire+Air, whose §12.1.6 L1094 product name is *"Lightning and

Smoke"*: both are grid defenders with opposite consequences, and §11.4 L840 carries a third variant

of the same product, *"Lightning and Plasma"*. And it is over-inclusive for Fire+Vegetation,

whose §12.2.9 L1156 product name is *"Ash and Smoke"* — Smoke is a grid defender, so a name rule

would admit a thirteenth covered element on a shared word. Parentage settles both: Fire+Air matches

Smoke's (F/A) tag, and Fire+Vegetation matches no tag at all. Coverage stays 12.

So the true figures are **7 covered by name, 12 covered once the canon-stated product names are

joined, 19 uncovered** — not 13 and 18. The ledger's count is not wrong about the size of the

problem; it is wrong about which elements sit on which side, which changes what a fix must do.

Three grid names have no live element value at all: Ice, Life, and — after the aliases are

spent — nothing else. Metal, Mud, Sand, Steam and Smoke all have live homes as combo products.

The Ice anomaly, stated plainly. The recovered grid seats Ice as the Water/Air hybrid (recovered

§1 L28, Ice (W/A)). Live canon does not: T1_Ability_Tree §12.1.5 L1084 names the Water+Air

product Storm and Mist, and §9 L608 (restated §11.2 L752) seats Ice as *"the Water sub-form per

the canonical state-change discipline."* So Ice is answerable and castable, but it reaches the grid through Water,

not through Water+Air — and Water+Air itself is uncovered. This is the single place where the

recovered ancestor and the live tier doc disagree about an element's parentage.

Life has no live home whatsoever. Zero of 185 abilities carry element Life. Its live analogue

is distributed: vril-healing at the Heart seat, Bloom Pulse under Vegetation (§11.10 L1016). Life is

the one grid element that exists only in the recovered ancestor.

2.4 The hybrids are AUTHORED, not compositional — measured

The obvious widening shortcut is to derive each hybrid's row from its two parents. I tested that

against the six hybrids Josh already authored (Metal, Mud, Sand, Steam, Smoke, Ice), where the

ground truth exists. Four composition rules, scored on the 60 attacker-side cells and the 64

defender-side cells. The 64 are the computable subset of the 71 hybrid-as-defender cells: seven

cells have no parent pair to compose from, because their attacker is Life, Lightning or Poison and

those attackers were never authored against the needed parent defender (Life→Smoke, Lightning→Ice,

Lightning→Metal, Lightning→Sand, Poison→Ice, Poison→Mud, Poison→Steam — the same

missing-by-construction gap F-A15-5 names).

RuleAttacker-sideDefender-side
sign-of-sum17/60 (28%)21/64 (33%)
max of parents24/60 (40%)20/64 (31%)
min of parents23/60 (38%)25/64 (39%)
clamped sum17/60 (28%)21/64 (33%)
*baseline: always predict 0**24/60 (40%)**20/64 (31%)*

**The best rule (min-of-parents, defender side) reaches 39% against a 31% baseline and a ~33%

chance floor — a 3-point-over-chance signal. No rule approaches the fidelity a balance artifact

requires, and on the attacker side no rule beats the baseline at all.** Josh authored those six

hybrid rows independently, and the see-saw balance the recovered doc verifies (§1 L32-36, Ice the

strongest attacker at +3 and the weakest defender at −4, Earth the inverse) is a hand-tuned

property, not an emergent one.

Consequence, and it is the decisive one. Any automatic derivation of the 21 hybrids would (a)

invent ~40-60% of its cells wrongly by the only test available, and (b) either contradict five

authored rows or carve an exception around them. There is no cheap correct widening.

2.5 The depth problem — worse than the breadth problem

The 13 "covered" defenders are not equally covered. Answering sets, computed:

DefenderAnswersThe set
Metal6Earth, Water, Metal, Steam, Ice, Lightning
Ice6Earth, Fire, Metal, Sand, Smoke, Lightning
Fire5Earth, Fire, Water, Mud, Sand
Mud5Fire, Smoke, Ice, Poison, Life
Earth4Earth, Water, Metal, Life
Water4Air, Mud, Lightning, Life
Air4Fire, Sand, Ice, Poison
Smoke4Air, Steam, Ice, Poison
Sand3Fire, Metal, Smoke
Steam2Air, Ice
Lightning1Life
Poison1Lightning
Vegetation1Poison

Two findings the ledger row does not carry:

and Life has no castable live element (§2.3). A rail row with attack_element = Lightning would

PASS the gate and be unplayable — the player holds no ability that satisfies it. That is a

worse failure than an honest FAIL, because it is silent.

sharply than the breadth gap does: a one-answer element is a forced solution, and a forced

solution is the meta-collapse the doctrine bans, at encounter scale.

The thinness has a traceable cause. Lightning, Poison and Vegetation carry only two defender rows

each because the recovered §2 table (L38-44) authored them as *strong-against / weak-against lists*

— attacker-side statements — and the inverse reads (chakra elements attacking INTO Lightning,

Poison, Vegetation) were never authored. **Thirty cells are missing by construction, not by

choice.** That is a bounded, nameable gap.

2.6 What the rail actually consumes today — the demand side

none (BE_0002, BE_0002_S2, BE_0003 — the human bandit and caci-champion bosses). **Three carry a

real element, and all three are Earth**: BE_0003_S1 (the Naga Tana, CH_03), BE_0004_S1 (the

Gate-Naga Guardian, CH_04), BE_0005_S3 (Naga Padoha, CH_05). The other 278 rows are blank.

and parry_element_ref are empty on all 19, and the exemplar derives that rather than

omitting it (§4 L279-294): the source record *"names no elemental character, and inventing one

would credit a claim nobody made."*

exactly ten element names across all of them: Earth (60), Water (31), Air (11), Fire (10), Steam (9), Metal

(6), Mist (4), Mud (4), Ice (4), Sand (4). Nine of the ten are grid-covered names. Zero

mentions of Ether, Plasma, Magma, Clay, Dust, Storm or Life.

Earth's answering set is Earth, Water, Metal, Life — three of four castable today (Earth ✔,

Water ✔, Metal via Earth+Fire ✔, Life ✘). **The entire live and near-term demand is served by the

grid as it stands.**

2.7 The engine is narrower than the data, and fails silently

HumanityElementMatrix.h L36: static constexpr int32 NumElements = 10; — the engine grid is

the 10 chakra-and-hybrid elements only (L61: `Earth,Fire,Water,Air,Metal,Mud,Sand,Steam,Smoke,

Ice). ../Humanity/Humanity/Tools/DT_ElementMatrix.csv` is 10 rows × 10 columns. **Lightning,

Poison, Life and Vegetation are not in the runtime matrix at all**, and L38-39 states the failure

mode: *"an UNKNOWN element on either axis -> 0 (neutral -- never a crash, never a false read)."*

So the live divergence is three-way — engine 10, data 13, vocabulary 31 — and the ledger's claim

that A15 is *"WIRED — the most completely wired system in this domain"* (L104) is true of the 10×10

core and overstated for the 24 non-chakra rows. Any option chosen here must name what happens at

the engine seam.

---

3. THE ALTERNATIVES, STEELMANNED

Option A — HOLD THE 13×13 as a declared design boundary

The grid stays exactly as Josh authored it. A12 authors parry rows only against covered elements and

reports the uncovered ones. The gate keeps FAILing off-grid elements. This is the ledger's own

fallback (L282-283).

Steelman. The grid is Josh-authored canon that has already survived an arithmetic audit

(recovered §1 L32-36). Its balance is hand-tuned see-saw, not emergent (§2.4). The demand is

currently zero outside it (§2.6). The failure mode is loud and correct by ruling (L660). Holding

costs nothing today and forecloses nothing tomorrow.

Option B — WIDEN TO THE FULL 31×31

Author every live element against every live element: 961 cells. The naive costing is "124 exist, so

+837" and it is wrong, because the existing rows are keyed in GRID names and the target is keyed in

the live 31. Re-keying measured against the registry: 95 of the 124 rows re-key onto live

values (the 7 literal names plus the 5 parentage aliases), 29 rows are STRANDED outright

every row with Ice or Life on either axis, and neither has a seat in the live vocabulary — so the

true new authoring is 866 cells, not 837, and 29 Josh-authored cells are dropped on the floor

to get there.

Steelman. It closes the question permanently. It makes the L608 elemental-build axis whole on

both the offensive and defensive halves. It removes a class of authoring trap where a factory pass

picks a legitimate live element and hits a wall. It puts the element system on the same footing as

every other closed enum in the corpus.

Option C — WIDEN SELECTIVELY, by aliasing the live values onto the grid

Add no effectiveness values. Declare the canon-stated identity between five live combo values and

five grid elements (Earth+Fire ≡ Metal, Earth+Water ≡ Mud, Earth+Air ≡ Sand, Water+Fire ≡ Steam,

Fire+Air ≡ Smoke) and let the gate resolve through it. Coverage 7 → 12 of 31.

Steelman. The identity is not invented — it is stated in the §12.1.x section headers and again

in the §10.4 signature combo trios (L668-671), and the recovered grid's own axis tags carry the same

parentage (Metal (E/F), recovered §1 L23). It is a naming join over canon that already agrees

with itself, so it invents nothing and contradicts nothing. It converts 15 abilities from

unanswerable to answerable at zero canon cost.

Option D — COMPLETE THE ATOM GRID and derive the hybrids

Recognise that the vocabulary is 10 atoms + 21 products, author the missing atom cells (10×10 = 100,

of which the Earth/Fire/Water/Air 4×4 block and the partial non-chakra rows already exist), and

generate the 21 hybrid rows by a stated composition rule.

Steelman. It matches the vocabulary's real structure. It matches the pattern the D1-27 element

visual law already ships — docs/element_visual_law.json authors laws for exactly the 10 atoms and

derives the hybrids from them. It bounds the authoring to ~80 new cells rather than 866.

Option E — HOLD THE VALUES, WIDEN THE READ (Option C plus the four bounded defect fixes)

Do not add one effectiveness value. Land the alias join of Option C, and fix the four defects §2

surfaced that are independent of the width question: the Life uncastability, the thin-defender

report, the Ice parentage note, and the engine's 10-vs-13 silence. Board the 30 unauthored

non-chakra defender cells and the Ether element as NAMED Phase-5H work with a stated reopening

trigger.

Steelman. It unblocks A12 today, raises coverage without inventing canon, converts the two

silent failures into loud ones, and leaves the genuinely-open authoring (Ether, the non-chakra

columns) to the calibration pass the recovered doc §6 L112-114 already names as this grid's owner.

---

4. DEEP DIVE — each against CVD, the tier docs, the AAA vision, and the rail's real consumption

Option A against the corpus

is the state it is in today.

and hybrid-element builds"* as an endgame axis; 19 of 31 live values can never appear as a boss

attack element under A, so the combination-build player never meets a defensive read that engages

the hybrids they built. It is a real thinning of an axis the doctrine names.

do carry Earth, whose set is 3-of-4 castable. A does not block a single authorable row in the

Aug-11 wave (L250).

serious charge against A: it is not merely narrow, it currently contains a wrong pass.

Option B against the corpus

authored at scale over a Josh-authored artifact**, and §2.4 proves it cannot be grounded — no

composition rule reproduces the six hybrid rows we can check. CLAUDE.md's LOCKED list covers "the

numerical canon," and while the reframe permits execution that FILLS IN locked structure, 866

invented values that no rule can derive is not filling in — it is minting. It would also

overwhelm the 95 surviving authored cells 9:1 while stranding 29 of them, so the artifact would

stop being recognisably Josh's.

for a 961-row registry.

first-class parry surface.

rail rows would consume a single one of the 866 new cells today.

available to it.

Option C against the corpus

L660's sentence stays literally true — the grid still carries thirteen and thirteen.

reaches early, per §10.4's signature trios) onto the parry surface, which is where the

combination-build fantasy first shows up in play. It does nothing for the 12 base×trade and 3

trade×trade combos.

authored as Earth+Fire resolves to Metal's six-element answering set rather than FAILing.

Option D against the corpus

— the atoms are T1_Ability_Tree §9 canon and the recovered doc's §5 L105-108 explicitly says the

extension pattern guides the rest. Deriving the hybrids is not defensible: §2.4 measured it,

and the best rule scores at or below chance against the six hybrids Josh actually authored.

Applying a derivation rule would produce values that contradict Metal, Mud, Sand, Steam, Smoke and

Ice as authored, forcing either an override list (which admits the rule is wrong) or a silent

overwrite of Josh's cells (which is a canon violation outright).

(docs/element_visual_law.json authors 10 and derives 21). The disanalogy is that a VISUAL law

composes — a Metal plate can genuinely read as earth-plus-fire — while an EFFECTIVENESS value is a

balance decision, and balance does not compose. That distinction is the whole finding.

bad work at any time.

Option E against the corpus

moves). The four fixes are gate and engine work plus one declared join.

the Ice parentage divergence, which is exactly the living-source discipline CLAUDE.md's _source

section mandates. It does not change a number, a name, a hard line or a §17 clause.

failures to loud ones, and NAMES the remaining 19 as owed work with a trigger, rather than leaving

them as an unexplained cap. The L599 doctrine is served better by a one-answer element being

reported as thin than by it quietly shipping.

elemental exemplar a home: BE_0003_S1 (Earth) is the slice's first and only real elemental

boss, and its answering set is castable today.

---

5. ADVERSARIAL REVIEW

5.1 Against canon

OptionDoes it touch LOCKED canon?Does it break the authored asymmetry?
ANoNo
BYES — 866 authored effectiveness values over a Josh-authored artifact, ungroundable per §2.4, plus 29 authored rows strandedYES, loudly. A full 31×31 requires Vegetation to attack and Life to defend. Both are the exact cells L660 says are *"the authored source's own, carried rather than smoothed."* B cannot be done without smoothing them.
CNo — quotes §12.1.x headersNo
DAtom half: no. Hybrid half: YES — derived values contradict six authored rowsOnly if the atom completion adds a Vegetation attacker row or a Life defender column, which it need not
ENoNo

The asymmetry warning, stated loudly as instructed. Options B and D-at-full-width **cannot be

executed without breaking the Life/Vegetation asymmetry.** A complete 31×31 matrix is by definition

symmetric in its axes: Vegetation would have to attack and Life would have to defend. Canon calls

that asymmetry authored and carried (L660), and T1_Ability_Tree §11.10 L1002-1022 corroborates it

independently — all nine live Vegetation abilities are restraint, barrier, summon, heal or

perception, and not one is a projected offensive element. **Any option that widens to a full square

must say out loud that it is overwriting a Josh-authored design choice, and none of the options

recommended here does that.**

5.2 Against AAA quality

ships a live trap (Lightning). Against L599 that is a defect, not a boundary.

numbers. A hand-tuned see-saw replaced by 866 guesses is worse AAA than a narrow honest grid — the

Phase-5M sweeps would be tuning noise.

trios) and is silent elsewhere.

calibration, with the ~30 unauthored non-chakra cells and the Ether element (one grid element or

three seat-values — the open §9 L611 reading) treated as authoring, not derivation.

silent pass. Under the CLAUDE.md honest-register discipline that is the correct posture for a

system with zero graded encounters behind it.

5.3 Against the numerical-canon lock — what an apply actually changes, and under whose authority

T0_Element_Effectiveness is a minted registry, not one of the frozen 29. It appears in

docs/fidelity_baseline.json under added_registries, so it has **no frozen _source/00 xlsx

counterpart** and the fidelity gate's reference for it is the declared extension hash, not a Drive

original. docs/fk_spec.json carries no registry entry for it at all — there is no declared

enum on attacker_element or defender_element. Its authority chain is: recovered Josh-authored

document → registry rows → check_counter_class_coverage.py → the rail.

Precisely what each option would change:

OptionRegistry changeBaseline changeGate changeEngine changeAuthority needed
Anonenonenonenone (the 10-vs-13 silence persists)none
B+866 rows (124 → 961: 95 re-keyed onto live values, 29 stranded on Ice/Life, 866 newly authored), and 2 authored asymmetry decisions reversedfull re-hash + added_rows re-declarationanswering sets recomputed; every existing FAIL becomes a passNumElements 10 → 31, DT_ElementMatrix 10×10 → 31×31Josh — this is numerical canon at scale over his artifact, and it overrides two of his design decisions
C0 value rows. An alias map — cleanest as a T0_Element_Alias two-column mint or an alias_of column, director's pickmint or column declared in baselineresolve attack_element through the alias before the lookupnone requiredDirector — the identity is quoted from T1_Ability_Tree §12.1.x; no value is authored
D (atom half)~+80 rows, all extensionre-hashnone structuralNumElements 10 → 10 live atoms, names changeDirector may sanction; the values are a Phase-5H authoring pass
D (hybrid half)+21 derived rows that contradict 6 authored onesre-hashnoneRefused. Not the director's to grant.
E0 value rows + the C alias mapmint/column declared, plus both element axes declared in fk_spec.json (F-A15-7, the §6.4 precondition)+1 tooth (answerable_in_practice, resolving grid→live), +1 report (post-tooth thin-answer defenders)file the 10→13 parity defect; no canon dependencyDirector

The line, stated once. The director may sanction a READ (an alias, a gate tooth, a report, an

engine parity fix). The director may not sanction a WRITE of new effectiveness values into a

Josh-authored balance artifact, and specifically may not sanction reversing the Life/Vegetation

asymmetry. That is the boundary this brief holds.

5.4 Against the standing laws

the gap, never pass it.* Swept across the class, that principle finds the **Lightning/Life silent

pass** — an element that the gate reports as answerable and that no player can answer. Option E

builds that sweep result; A, B, C and D alone leave it.

director ruling, and the expansion it sanctions is recorded in the ledger and the commit, not

presented to Josh for approval.

Ch-02/Ch-03 element-free reads stand on their source records exactly as the BE_0002 exemplar

derived them.

---

6. OPTIONS, PROS AND CONS, AND THE RECOMMENDATION

6.1 The comparison

A holdB full 31×31C alias onlyD atom + deriveE hold values, widen read
Coverage of 31731123112 now, 31 boarded
Effectiveness values invented0866 (+29 authored rows stranded)0~80 + 21 derived0
Breaks the authored asymmetrynoYESnoat full width, YESno
Grounded in canon citationsyesnoyesatoms yes, hybrids noyes
Fixes the Lightning silent passnoincidentallynoincidentallyyes, directly
Fixes engine 10-vs-13noforces itnoforces itfiles it
Unblocks A12 / BE_0003yesyes (after a long pass)yesno (blocks on authoring)yes
Authority requirednoneJoshdirectordirector + Phase-5Hdirector

6.2 THE RECOMMENDATION — Option E

**Hold the authored 13-element grid. Do not add one effectiveness value. Widen the READ, and fix

the four defects the audit surfaced.** Concretely, five items:

1. Land the alias join, resolved in BOTH directions. Declare the five canon-stated identities —

Earth+Fire ≡ Metal (§12.1.2 L1054), Earth+Water ≡ Mud (§12.1.1 L1044), Earth+Air ≡ Sand

(§12.1.3 L1064), Water+Fire ≡ Steam (§12.1.4 L1074), Fire+Air ≡ Smoke (§12.1.6 L1094) —

each joined on PARENTAGE per §2.3, and resolve them **in both directions: live→grid on

attack_element before the grid lookup, and grid→live when testing an answering element for a

live home.** The second direction is what fix 2 consumes, and it is not optional: the registry

carries Earth+Fire and never Metal, so a one-way alias would read five of its own answers as

homeless. The parentage rule is also what settles the Fire+Air fork — §12.1.6 L1094 names

that product *"Lightning and Smoke"* and §11.4 L840 carries a third variant, *"Lightning and

Plasma"*, so a name-matching rule could alias Fire+Air to Lightning or to Smoke with opposite

consequences; Smoke's (F/A) parentage tag settles it, and §12.1.6's own text corroborates the

split (*"Vril-seat-Lightning here is vril-channeled through Fire and Air convection; distinct

from Trade 8 Engineering Lightning per §11.8"*). Coverage 7 → 12 of 31; 15 abilities move from

unanswerable to answerable; zero values authored. **Water+Air is deliberately NOT aliased to

Ice**, because §12.1.5 L1084 names that product Storm and Mist and §9 L608 (restated §11.2 L752)

seats Ice as a Water sub-form; the divergence is recorded, not resolved by this brief.

2. Arm an answerable_in_practice tooth on check_counter_class_coverage.py. An answering

element with no live ability home in T0_Ability_Tree_Registry — tested through the fix-1 alias

in the grid→live direction — does not count as an answer. Measured over the 185 rows, **seven

grid names carry no literal element value at all**: Ice, Life, Metal, Mud, Sand, Smoke, Steam.

The alias restores five of them, because the registry carries Earth+Fire and never Metal.

Today that excludes two grid names — Life (no home at all) and Ice (a Water sub-form per

§9 L608 / §11.2 L752, carrying no distinct element value). Its immediate effects:

attack_element = Lightning becomes an honest FAIL, and Steam falls to a single answer {Air}.

Under either reading — excluding Life alone, or Life and Ice — **Lightning goes to 0, no other

defender reaches 0, and BE_0003_S1 (Earth) retains three castable answers** (Earth, Metal via

Earth+Fire, Water). The A12 unblock survives the tooth.

3. Report thin-answer defenders — counted POST-tooth, not pre-tooth. With Life and Ice removed

from every answering set, four defenders sit at or below one castable answer: Lightning (0),

Steam (1, {Air}), Poison (1, {Lightning}) and Vegetation (1, {Poison}). The

tooth thins the rest too — Metal 6→5, Mud 5→3, Earth 4→3, Air 4→3, Water 4→3, Smoke 4→3, and

Fire, Ice and Sand unchanged — so the depth table at §2.5 is the grid's ceiling and never the

playable count. A rail row against a one-answer defender is a forced solution; the scorecard

should say so, per the L599 doctrine.

4. File the engine parity defect. HumanityElementMatrix.h L36 is 10×10 while the data is

13×13, and L38-39 resolves an unknown element to a silent neutral. The runtime should either

carry the 13 or read the registry. This is engine work with no canon dependency and belongs on

the Aug-11 wave beside the defensive_class schema item (L250).

5. BOARD the genuinely-open authoring for Phase-5H, which recovered §6 L112-114 already names as

this grid's owner: the ~30 unauthored non-chakra defender cells (the inverse reads the §2

strong-against lists never stated) and **the Ether element — as one grid element or as its three

seat-values, a §9 L611 reading Phase-5H must settle before it authors** (§9 L601 heads *"The

Eight-Element Architecture"* and L611 names ONE Ether element carrying three vril-seat positions,

while the registry carries three distinct values). Authoring, not derivation — §2.4 shows

derivation cannot be grounded.

And A12 proceeds now. The elemental exemplar has a home: **BE_0003_S1, the Naga Tana of the Wae

(CH_03, defender_element = Earth)** — the slice's only real elemental boss, whose answering set

(Earth, Water, Metal, Life) is three-of-four castable today and, once the fix-2 tooth drops Life,

reads as a clean three-of-three. F-ELEM closes on that row.

6.3 Why not B, in one paragraph

B is the only option that fully serves L608, and it cannot be paid for. Its 866 new cells (not

the naive 837 — re-keying the grid onto the live vocabulary re-keys 95 rows and strands 29) are

numerical canon over a Josh-authored balance artifact, no composition rule can ground a single one

of them (§2.4, the best rule 3 points over chance on the defender half and no better than baseline

on the attacker half), and reaching a full square requires reversing two design decisions L660

explicitly calls authored and carried — while discarding 29 rows he wrote. Ambition that can only be

delivered by inventing balance and overwriting the author is not AAA quality; it is drift wearing a

completeness argument.

6.4 THE STRONGEST OBJECTION — the undeclared second vocabulary

*Fix 1 makes the brief's answering sets speak a vocabulary the player does not. The sets are

expressed in GRID names — Metal, Ice, Steam — while the player casts LIVE names — Earth+Fire,

Water, Water+Fire — and Ice translates to neither: §9 L608 seats it inside Water with no

distinct element value, so it is a grid name with no live twin and a live cast with no grid seat.

The alias must therefore resolve in both directions across that seam. And the seam is undeclared on

both sides: by the brief's own F-A15-7 there is **no fk_spec.json entry on

T0_Element_Effectiveness at all**, so neither attacker_element nor defender_element carries a

declared enum today. Fix 1 adds a SECOND undeclared vocabulary on top of an undeclared first, and

the 52 Aug-11 rail rows (L250) will be authored against exactly that seam, by a factory pass, at

volume. The failure mode is not the loud FAIL this brief keeps crediting itself for — it is a quiet

mis-resolution, which is the class of defect the brief was written to remove.*

The answer, and it is the fix. The objection is correct, and it is answerable by F-A15-7's own

remedy: **land the alias AND both element axes as a declared format on T0_Element_Effectiveness

in the same act.** The alias map, the attacker_element enum and the defender_element enum are

declared together in docs/fk_spec.json before one rail row is authored against them, so the

vocabulary a factory pass writes into is checkable rather than conventional, and a mis-resolution

becomes a gate failure instead of a silent read. On this reading **F-A15-7 is promoted from MEDIUM

to HIGH, and the declaration is a precondition of fix 1, not a follow-up to it**.

THE SECOND OBJECTION — the cap itself (retained from the first draft, with its answer):

*Option E preserves a 13-element combat identity inside a 31-element ability system, and canon

itself names that a problem. T1_Combat_System_Spec L608 lists "elemental builds,

element-combination builds, and hybrid-element builds" as a first-class endgame build axis, and L599

bans meta-collapse — the state where a deep system resolves to a few viable options. Under E, 19 of

31 live element values can never appear as a boss attack element, so the player who has built a

Bloomrot or a Galvanic Toxin or a Toxic Cloud spec meets the defensive half of the game as a

four-element player. The ledger's own words for this are that the boundary "CAPS how much of the

ability catalog can carry an elemental parry" (L104). E accepts the cap, documents it beautifully,

and calls the documentation a fix. The counts at §2.6 that justify the acceptance — zero elemental

demand — are not evidence of low demand; they are evidence that nobody has authored an elemental

boss yet, which is precisely what the Aug-11 wave is about to do 52 times. Sizing a schema to the

demand measured before the factory runs is how a corpus ships a narrow system and discovers it in

play.*

The answer, and it is partial. The objection is right about the direction and wrong about the

instrument. Three points hold it:

L125 matched-seat damage bonus and the L128 combo unlocks, and all 31 carry a D1-27 visual law.

The elemental build is live on its offensive half; what is capped is which BOSS attacks can demand

an elemental answer.

rather than fakes it** — with a named owner (Phase-5H, recovered §6 L112-114), a named scope (~30

non-chakra cells, the Ether element at one-or-three seats), and the §2.4 proof that it must be

authored rather than derived.

boss attack carries an element that is genuinely Ether or a base×trade or trade×trade hybrid —

and the gate will FAIL loudly, never silently, the first time it happens — this ruling reopens and

the atom completion moves from boarded to owed. E's whole claim is that the boundary should be

measured, loud, and cheap to reverse. It is all three.

What the objection legitimately wins: fix 5 should not be indefinite. If the 52-row slice pass

produces even one row that wants an uncovered element, the Phase-5H atom pass is promoted ahead of

further rail volume rather than left on the board.

6.5 What the director signs

Life/Vegetation asymmetry stands.

answerable_in_practice gate tooth (item 2), the post-tooth thin-answer report (item 3), the

engine parity defect filing (item 4) — and, as the precondition of item 1 per §6.4, the

declaration of the alias map plus both element axes as a docs/fk_spec.json format on

T0_Element_Effectiveness, landed in the same act and before the 52-row pass authors against it.

seat-values, the open §9 L611 reading — to Phase-5H as authoring (item 5), with the reopening

trigger at §6.4.

the elemental-parry exemplar.

19 uncovered**, not 13 / 18. The 13 and the 18 are a subtraction, not a join.

---

7. FINDINGS FOR THE DIRECTOR (not edits — contract §6)

IDFindingEvidenceSeverity
F-A15-1The Lightning silent pass. attack_element = Lightning passes the gate with an answering set of {Life}, and Life has no castable live element. A passing row would be unplayable.Grid rows Life,Lightning,1 and Poison,Lightning,-1; zero of 185 abilities carry element LifeHIGH — a wrong pass, not a missing check
F-A15-2The ledger's A15 coverage figure is a subtraction, not an intersection. Seven live values are literal grid defenders, not thirteen.PIPELINE_LEDGER L104 vs the computed join at §2.3MEDIUM — corrigible in place
F-A15-3Engine 10 vs data 13, with an unknown element resolving to a silent neutral. Lightning, Poison, Life and Vegetation are absent from the runtime matrix.HumanityElementMatrix.h L36, L61, L38-39; DT_ElementMatrix.csv 10 rowsHIGH — the wired claim at L104 is overstated for 24 of 124 rows
F-A15-4Ice parentage divergence. The recovered grid seats Ice at Water/Air; T1_Ability_Tree §12.1.5 puts Storm and Mist there and §9 L608 (restated §11.2 L752) seats Ice as a Water sub-form.recovered §1 L28 vs T1_Ability_Tree L1084, L608, L752MEDIUM — the one live ancestor-vs-tier-doc conflict on this axis
F-A15-5Thirty defender cells are missing by construction. The non-chakra elements were authored as strong/weak lists, so the inverse reads into Lightning, Poison and Vegetation were never written.recovered §2 L38-44; 2 defender rows each in the registryMEDIUM — bounded, nameable Phase-5H scope
F-A15-6Hybrid effectiveness does not compose. On the attacker side no rule beats the always-predict-Normal baseline (best rule 24/60 = 40%, baseline 24/60 = 40%). On the defender side the best rule, min-of-parents, reaches 25/64 = 39% against a 20/64 = 31% baseline and a ~33% chance floor — a 3-point-over-chance signal, nowhere near the fidelity a balance artifact requires.§2.4, measured over the 60 attacker-side cells and the 64 computable of 71 defender-side cellsHIGH as a design constraint — it forecloses every cheap widening
F-A15-7T0_Element_Effectiveness has no fk_spec.json entry, so neither element axis carries a declared enum. The fix-1 alias makes this acute rather than tidy: it adds a second, grid-keyed vocabulary on top of an undeclared first, resolved in both directions, and the 52 Aug-11 rail rows will be authored against that seam. The alias and both axes must land as a declared format on this registry in the same act.docs/fk_spec.json — 58 registries, none of them this one; §6.4 first objectionHIGH (promoted from MEDIUM at critic review) — a precondition of §6.2 fix 1, not a follow-up

---

*End of the A15 grid-width brief. Lane C, combat-schema wave, claim 3433ec8d. Written to disk,

not committed; the director lands it explicit-path after the critic's verdict.*

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