systems/A15_GRID_WIDTH_BRIEF.md
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.
---
DERIVED FROM:
_source/01_Tier_1_Foundation/T1_Combat_System_Spec [ACTIVE v1.0].md §Elemental Parry, Derivedand 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."*
neutralize reads off the effectiveness grid), L639-651(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.
_source/01_Tier_1_Foundation/T1_Ability_Tree [ACTIVE v1.4].md §9 L601-619 — the eight-elementarchitecture (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.
docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md §1 L12-36 (the verbatim 10×10 with itsB/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).
registries/T0_Element_Effectiveness [DRAFT v0.1]/Sheet1.csv — all 124 rows read and recomputed;the shape, the answering sets and the depth analysis at §2.2 and §2.5 are computed from them.
registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv — all 185 rows; the live 31-value vocabulary at §2.1 is enumerated from the element column, not quoted from a doc.
registries/T0_Boss_Encounter_Registry [DRAFT v0.1]/Sheet1.csv (284 rows, defender_element), 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.
docs/fk_spec.json registry 34 — the parry_element_rule three-member declared format and its _note, and the absence of any declared element enum on T0_Element_Effectiveness itself.
harness/check_counter_class_coverage.py L36-41, L298-360 — the gate's actual behaviour on an off-grid element (a FAIL, never a silent pass); harness/counter_class_coverage_scorecard.json
L10, L16 (element_answer_sets: 13).
../Humanity/Humanity/Source/Humanity/Public/Combat/HumanityElementMatrix.h L11-13, L36, L38-39, 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.
docs/PIPELINE_LEDGER.md L104 (A15), L101 (A12), L280-283 (VETOABLE-5), L250 (the Aug-11combat-data-factory wave that consumes this ruling).
docs/proposals/boss_rail_exemplar/BOSS_RAIL_EXEMPLAR_BE_0002.md §4 L279-294 and §9 L442 (F-ELEM) — how the rail actually consumes elemental answers, and why it consumed none.
docs/spine/DECISIONS_PENDING_JOSH.md L52 (the NO-VETO LAW) and L13-18 (the care register doesnot 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.
T1_Ability_Tree §9 L601 heads the section *"TheEight-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.
---
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.
---
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):
| # | Element | Abilities | Canon home | On the grid as defender? |
|---|---|---|---|---|
| 1 | Air | 20 | §9 L610, §11.4 | YES (literal) |
| 2 | Fire | 20 | §9 L609, §11.3 | YES (literal) |
| 3 | Water | 20 | §9 L608, §11.2 | YES (literal) |
| 4 | Earth | 19 | §9 L607, §11.1 | YES (literal) |
| 5 | Ether-Throat | 12 | §9 L611, §11.5 | NO |
| 6 | Ether-Crown | 11 | §9 L611, §11.7 | NO |
| 7 | Ether-ThirdEye | 9 | §9 L611, §11.6 | NO |
| 8 | Poison | 9 | §9 L616, §11.9 | YES (literal, 1 answer) |
| 9 | Vegetation | 9 | §9 L617, §11.10 | YES (literal, 1 answer) |
| 10 | Lightning | 8 | §9 L615, §11.8 | YES (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 value | Abilities | Canon product name (§12.x) | Grid name | Covered? |
|---|---|---|---|---|---|
| 11 | Earth+Water | 3 | Mud and Clay (§12.1.1 L1044) | Mud | via alias |
| 12 | Earth+Fire | 3 | Metal and Magma (§12.1.2 L1054) | Metal | via alias |
| 13 | Earth+Air | 3 | Sand and Dust (§12.1.3 L1064) | Sand | via alias |
| 14 | Water+Fire | 3 | Steam and Plasma (§12.1.4 L1074) | Steam | via alias |
| 15 | Fire+Air | 3 | Lightning and Smoke (§12.1.6 L1094) | Smoke | via alias |
| 16 | Water+Air | 3 | Storm and Mist (§12.1.5 L1084) | — (grid seats Ice here) | NO |
| 17 | Earth+Lightning | 2 | Magnetism (§12.2.1 L1108) | — | NO |
| 18 | Earth+Poison | 2 | Toxic Soil (§12.2.2 L1114) | — | NO |
| 19 | Earth+Vegetation | 2 | Living Earth (§12.2.3 L1120) | — | NO |
| 20 | Water+Lightning | 2 | Conductor (§12.2.4 L1126) | — | NO |
| 21 | Water+Poison | 2 | Acid (§12.2.5 L1132) | — | NO |
| 22 | Water+Vegetation | 2 | Swamp (§12.2.6 L1138) | — | NO |
| 23 | Fire+Lightning | 2 | Thunder Arc (§12.2.7 L1144) | — | NO |
| 24 | Fire+Poison | 2 | Combustion (§12.2.8 L1150) | — | NO |
| 25 | Fire+Vegetation | 2 | Ash and Smoke (§12.2.9 L1156) | — | NO |
| 26 | Air+Lightning | 2 | Plasma Field (§12.2.10 L1162) | — | NO |
| 27 | Air+Poison | 2 | Toxic Cloud (§12.2.11 L1168) | — | NO |
| 28 | Air+Vegetation | 2 | Pollen Storm (§12.2.12 L1174) | — | NO |
| 29 | Lightning+Poison | 2 | Galvanic Toxin (§12.3.1 L1186) | — | NO |
| 30 | Lightning+Vegetation | 2 | Galvanic Growth (§12.3.2 L1194) | — | NO |
| 31 | Poison+Vegetation | 2 | Bloomrot (§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 +.
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.
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.
| Class | Count | Values | Abilities |
|---|---|---|---|
| LITERAL — the live value is a grid defender by name | 7 | Earth, Fire, Water, Air, Lightning, Poison, Vegetation | 105 of 185 (57%) |
| ALIAS — the live value's two parents match a grid element's authored parentage tag | 5 | Earth+Fire→Metal, Earth+Water→Mud, Earth+Air→Sand, Water+Fire→Steam, Fire+Air→Smoke | 15 of 185 (8%) |
| UNCOVERED | 19 | 3 Ether seats, Water+Air, and the 15 base×trade and trade×trade hybrids | 65 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.
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).
| Rule | Attacker-side | Defender-side |
|---|---|---|
| sign-of-sum | 17/60 (28%) | 21/64 (33%) |
| max of parents | 24/60 (40%) | 20/64 (31%) |
| min of parents | 23/60 (38%) | 25/64 (39%) |
| clamped sum | 17/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.
The 13 "covered" defenders are not equally covered. Answering sets, computed:
| Defender | Answers | The set |
|---|---|---|
| Metal | 6 | Earth, Water, Metal, Steam, Ice, Lightning |
| Ice | 6 | Earth, Fire, Metal, Sand, Smoke, Lightning |
| Fire | 5 | Earth, Fire, Water, Mud, Sand |
| Mud | 5 | Fire, Smoke, Ice, Poison, Life |
| Earth | 4 | Earth, Water, Metal, Life |
| Water | 4 | Air, Mud, Lightning, Life |
| Air | 4 | Fire, Sand, Ice, Poison |
| Smoke | 4 | Air, Steam, Ice, Poison |
| Sand | 3 | Fire, Metal, Smoke |
| Steam | 2 | Air, Ice |
| Lightning | 1 | Life |
| Poison | 1 | Lightning |
| Vegetation | 1 | Poison |
Two findings the ledger row does not carry:
{Life}, 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.
T0_Boss_Encounter_Registry: 284 rows. Six carry any defender_element at all. Three read 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.
T0_Boss_Attack_Rail: 19 rows (the BE_0002 exemplar). attack_element, parry_element_rule 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."*
docs/proposals/combat/kits/, 57 kits, 763 authored abilities) mentionexactly 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.**
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.
---
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.
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.
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.
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.
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.
---
T1_Combat_System_Spec L660 as an accurate description of the system, whichis 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.
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.
T1_Ability_Tree.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.
— 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.
moves). The four fixes are gate and engine work plus one declared join.
T1_Combat_System_Spec recording the alias join and 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.
---
| Option | Does it touch LOCKED canon? | Does it break the authored asymmetry? |
|---|---|---|
| A | No | No |
| B | YES — 866 authored effectiveness values over a Josh-authored artifact, ungroundable per §2.4, plus 29 authored rows stranded | YES, 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. |
| C | No — quotes §12.1.x headers | No |
| D | Atom half: no. Hybrid half: YES — derived values contradict six authored rows | Only if the atom completion adds a Vegetation attacker row or a Life defender column, which it need not |
| E | No | No |
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.**
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.
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:
| Option | Registry change | Baseline change | Gate change | Engine change | Authority needed |
|---|---|---|---|---|---|
| A | none | none | none | none (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 reversed | full re-hash + added_rows re-declaration | answering sets recomputed; every existing FAIL becomes a pass | NumElements 10 → 31, DT_ElementMatrix 10×10 → 31×31 | Josh — this is numerical canon at scale over his artifact, and it overrides two of his design decisions |
| C | 0 value rows. An alias map — cleanest as a T0_Element_Alias two-column mint or an alias_of column, director's pick | mint or column declared in baseline | resolve attack_element through the alias before the lookup | none required | Director — the identity is quoted from T1_Ability_Tree §12.1.x; no value is authored |
| D (atom half) | ~+80 rows, all extension | re-hash | none structural | NumElements 10 → 10 live atoms, names change | Director may sanction; the values are a Phase-5H authoring pass |
| D (hybrid half) | +21 derived rows that contradict 6 authored ones | re-hash | none | — | Refused. Not the director's to grant. |
| E | 0 value rows + the C alias map | mint/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 dependency | Director |
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.
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.
DECISIONS_PENDING_JOSH.md L52). VETOABLE-5's framing is retired. This is adirector 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.
---
| A hold | B full 31×31 | C alias only | D atom + derive | E hold values, widen read | |
|---|---|---|---|---|---|
| Coverage of 31 | 7 | 31 | 12 | 31 | 12 now, 31 boarded |
| Effectiveness values invented | 0 | 866 (+29 authored rows stranded) | 0 | ~80 + 21 derived | 0 |
| Breaks the authored asymmetry | no | YES | no | at full width, YES | no |
| Grounded in canon citations | yes | no | yes | atoms yes, hybrids no | yes |
| Fixes the Lightning silent pass | no | incidentally | no | incidentally | yes, directly |
| Fixes engine 10-vs-13 | no | forces it | no | forces it | files it |
| Unblocks A12 / BE_0003 | yes | yes (after a long pass) | yes | no (blocks on authoring) | yes |
| Authority required | none | Josh | director | director + Phase-5H | director |
**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.
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.
*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.
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.
F-ELEM closes on BE_0003_S1 (Earth) asthe elemental-parry exemplar.
19 uncovered**, not 13 / 18. The 13 and the 18 are a subtraction, not a join.
---
| ID | Finding | Evidence | Severity |
|---|---|---|---|
| F-A15-1 | The 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 Life | HIGH — a wrong pass, not a missing check |
| F-A15-2 | The 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.3 | MEDIUM — corrigible in place |
| F-A15-3 | Engine 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 rows | HIGH — the wired claim at L104 is overstated for 24 of 124 rows |
| F-A15-4 | Ice 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, L752 | MEDIUM — the one live ancestor-vs-tier-doc conflict on this axis |
| F-A15-5 | Thirty 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 registry | MEDIUM — bounded, nameable Phase-5H scope |
| F-A15-6 | Hybrid 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 cells | HIGH as a design constraint — it forecloses every cheap widening |
| F-A15-7 | T0_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 objection | HIGH (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.*