PILLAR10_REGIONAL_COMBAT_VOCAB.md

systems/PILLAR10_REGIONAL_COMBAT_VOCAB.md

PILLAR 10 — THE FIVE REGIONAL COMBAT VOCABULARIES

CANON SUBORDINATION — derivation record; serves canon, never outranks it. Authority:
docs/DOC_MAP.md § 0. The CANON of this pass is the twelve populated rows of
T0_Regional_Combat_Modifier (a T0 registry, and therefore canon under
docs/SUBAGENT_CONTRACT.md §1). This file is the evidence trail behind those sixty cells: what
each token means, which canon line warrants it, and which two regions it tells apart. Read the
registry for the values; read this for why.

Ruling that commissioned it. Josh, 2026-08-04, verbatim: *"Why do you think this is difficult?

This is an action adventure fantasy RPG and we've provided thousands of hours of canon and

architecture and vision and tier docs and comparable rpgs"*. That ruling SUPERSEDES the earlier

plan to fill one axis and board the other four, and it supersedes the sitting-26 mint decision

that landed all five columns empty by rule. Boarding was the error. All five are authored here.

What the pass does NOT do. It names CLASSES and never numbers. Every magnitude — how much a

guard yields, how far a hazard reaches, what a movement modifier costs — stays behind the Phase-5M

tuning firewall exactly as the rest of T1_Combat_System_Spec's numerical bounds do. A class with

a multiplier attached would be a tuning decision wearing a canon hat.

---

1. The five axes and their canon warrant

CVD § 12.5 *Regional combat identity (Pillar 10)* names five axes in one sentence and delegates

their detail: *"Stance systems per region; environment hazards per region; weapon-of-origin

bonuses; movement modifiers (jungle vs desert vs steppe vs ice); ability interaction changes per

region. Detail → T1_Combat_System_Spec + Regional Combat Modifier table."* The five columns of

T0_Regional_Combat_Modifier are those five axes verbatim and in that order.

Three further canon surfaces bind the shape of the work.

variety lane, and § Nature-Derived Counter Classes gives the standing method: a class is *"a

reading of the attack, recorded as data so the engine and the gates can check it"*, never a free

choice among equally available options. The same method governs a reading of a REGION.

*"weapon-of-origin bonuses per Gate 10 regional modifiers, stance system per region, environment

hazards per region, movement modifiers across jungle desert steppe ice"*.

different chapter's arena plays differently because the modifier space differs — our aspect /

room-modifier variety, doubling as Pillar 10 regional combat identity."* The region row is the

region-scale modifier space every arena inside it inherits.

1.1 Genre-standard defaults, and where we deviate

Per the thirty-second-sitting ruling carried in docs/GENRE_BASELINE.md, the industry-standard

architecture is the DEFAULT and only deviations get named. The comparator set is the ruled AAAAA

bar — Witcher 3, Monster Hunter Wilds, GTA 6, FF7 Remake — and MH Wilds is the strongest regional

comparator because it is the one that makes the LOCALE a combat system rather than a backdrop.

fight is fought, not merely how it looks (MH Wilds' locale states and environmental traps). A

small closed set of postures the player reads and commits from (the stance/mode families every

action RPG in the set carries). A traversal-cost class attached to ground type (universal). A

stagger-and-punish economy in which the reward for a correct read is an opening rather than a

flat damage bonus (FF7R's pressure-and-stagger loop; MH Wilds' offset and wound punish).

MARTIAL RECORD rather than on a biome preset. stance_system_class is read off the region page's

own Section 6 — the caci contest, the kalari pose curriculum, the Fon standing army — which is

what makes Pillar 10 a knowledge pillar and not a skin. No comparator does this, and it is the

reason the vocabulary could not be lifted from one.

per-weapon. Every weapon sharing an origin region shares its bonus shape, because a

weapon-of-origin bonus is a statement about the place that taught the weapon. It composes with,

and never restates, the weapon's own mechanic — the Madu keeps its dedicated parry catch from

T1_Combat_System_Spec § Parry Mechanic AND carries South India's chain_extension.

1.2 The bar every token had to clear

more than 4 of 12 regions identically (§ 7.1). A token that every region carries measures nothing.

so the remaining sixty-four regions land inside it rather than forcing a re-mint. Members that no

slice region uses are declared, not dropped — an unused member is the arc's, not a defect. **This

is a stated EXEMPTION to the bar above, not a silent one:** four tokens are carried by no slice

region (distance_kept, sand_drag, ice_slide, none), they are listed in § 8, and the apply's

DECLARED_UNUSED set must match the observed unused set exactly — so a token that quietly dies,

and a stale exemption whose token became used, both fail the self-test. An earlier draft stated

this bar per-TOKEN while the code enforced it per-AXIS; the two now agree.

---

2. stance_system_class — seven tokens, six postures and one declared null

The posture the region's own documented martial record teaches: where the guard comes from, what

reach it holds, and what the decisive beat is. Derived per region from the region page's Section 6

*Weapons Military and Conflict*.

tokenwhat it iscanon warrantregions
guard_and_answerThe guard is a held object — shield or parrying weapon. The exchange is measured and turn-taking, and the answer follows the read rather than racing it.flores_island.md § Section 6: the caci *"whip-and-shield tradition"*, its legendary line drawing on *"the caci's read-and-turn discipline (the clean parry, the kept count, the answering pass)"*; sri_lanka.md § Section 6: the commentarial *"five weapons as sword, bow, battle-axe, spear and shield"* plus *"the usual form of challenge to single combat before the gates"*; south_africa.md § Section 6: the overseer's kit is *"the whip-call and the baton rush, countered by parry, distance, stagger-break and dodge"*, the machinery's *"countered by timing and a heat shield"* — a held guard answering a read telegraphflores_island, sri_lanka, south_africa
close_blade_breakShort reach, no shield. The guard is the body's own displacement and the decisive beat is one committed cut taken off a read tell.bali.md § Section 6: *"The martial register of the chapter itself is silat-rhythm (the bhuta-kala break on a silat tell...)"*; sumatra_java.md § Section 6: the *piso sanalenggam* single-edged sword, and *"The Batak were renowned in warfare, and frequent inter-group feuding made the forging of metal blades the blacksmith's foremost task"*bali, sumatra_java
pose_to_poseA curriculum of named poses the practitioner moves to and from; weight forward, weapon carried as an extension of the body's line. Footwork is the system, not the setup.south_india.md § Section 6: *"each has one or more basic poses to and from which the practitioner moves"*, the staff *"treated as an extension of the natural line of the spinal column, hands kept in front and body weight always forward"*, and the paired sequences built on the horse, peacock, serpent and elephant posessouth_india
held_lineThe individual posture is subordinated to a formation holding ground or a protected centre. Face outward or forward, never over-commit; the unit is the guard.angkor_khmer.md § Section 6: *"two-tier war-galleys (rowers below, fighting soldiers above...)"* with each side *"organized, equipped, and competent"*; ethiopia.md § Section 6: *"Ethiopian warfare in its own literature is an escort"* — the object at the centre, the people around it; west_africa.md § Section 6: Dahomey held *"professionalised troops constituting a standing army"*, found by Snelgrave to be *"select troops, brave and well disciplined"*angkor_khmer, ethiopia, west_africa
footing_deniedThe ground itself refuses footwork — a deck that moves, a canopy volume with no sightline, a bound target. Short guard, control first, finish close.swahili_coast.md § Section 6: *"The martial surface here is therefore the naval one — boarding, deck fighting, rigging hazard"*; central_africa_congo.md § Section 6: the hunting net as *"a weapon, a tool, and a social contract at once"* with *"the spear finishes what the net holds, with the blade used at the throat"*swahili_coast, central_africa_congo
distance_keptThe posture is a refusal to close. Commitment is a single prepared release, then disengage; patience finishes what the release began.Declared for the arc's documented archery and skirmish traditions, which the twelve-row slice does not reach. No slice region carries it — see the two corrections below.
no_stance_systemThe region teaches no martial posture at region scale, so there is none to grant. A declared member, not an empty cell — symmetric with no_origin_bonus on the weapon axis.rift_valley.md § Section 6: *"Military organization and warrior culture: there is none at region scale, and that is a fact about the chapter rather than a gap"*, with *"no antagonist operative, no faction, no war and no raid"*, the single combat encounter *"a territorial animal that withdraws rather than dying"* and the main encounter *"a perception protocol in which damage is impossible by design"*rift_valley

Discriminating pair, worked. pose_to_pose vs held_line: South India teaches a solo

curriculum whose unit of measure is one practitioner's transition between named poses; West Africa

teaches a drilled formation whose unit of measure is the line. Both are documented martial systems

of the same era, and a fight staged in one reads nothing like a fight staged in the other.

Two corrections applied 2026-08-04, both from a fresh-context critic pass. Both cells read

distance_kept in the first authoring, and both were wrong for the same underlying reason: the axis

was read off the most vivid archery sentence on the page rather than off the combat the chapter

actually stages.

withdrawing animal's behaviour — a creature's reaction, not a system the region teaches — and

imported its semantics wholesale from South Africa's bow, a different region. Worse, it filled the

one absence the page explicitly declares to be design. The weapon axis had already solved exactly

this problem one column over with no_origin_bonus; the stance axis simply had no null to reach

for, so the vocabulary gained one rather than the region gaining a posture it does not have.

HUNTING kit. That kit is real and documented, but § Section 6 fixes this chapter's combat framing

BY RULING — the machinery, the overseer and labor-enforcer, the permitted fauna, the materialized

rock-art echo and a fictional gold-trade broker are the only combat routes, and the region's seven

named living communities are inviolate [SRC: T0_Hard_Lines @ HL_0003]. A keep-away posture is also

directly refuted by the only human encounter the ruling admits, whose documented counters are

parry and stagger-break. The stance cell is now read off that encounter.

Why prepared_release still stands on South Africa's weapon axis. The weapon-of-origin axis is a

CRAFT statement about what the place taught (§ 4), not a statement about who may be fought. Recording

that this region's documented archery is patience-and-status rather than impact honours the material

record per CVD § 17.1; HL_0003 governs the encounter surface, and nothing on that surface routes

through the protected communities. The fence is now stated in the row note rather than left implicit.

Care note. Every token above is read off a documented martial tradition treated as craft, per

CVD § 17.1. None of them is a claim about a people's character, and the classes attach to REGIONS

and encounters, never to a community as a combat target — the rift_valley reading in particular

carries the region page's own statement that the absence of a martial layer there is the chapter's

design and not a hole to be filled, which is now expressed by a declared member instead of a

borrowed posture.

---

3. environment_hazard_class — seven tokens

The region-scale hazard cycle: what the environment does to a fight that no enemy in it does.

Composed from the region page's Section 1 climate and terrain statements and, where the region

carries them, the live T0_Environment_Grammar_Registry exposure_hazard and

tactical_affordance_class values on its own zone-catalog environment_grammar_refs.

tokenwhat it iscanon warrantregions
volcanic_ashfallLive volcanic and geothermal ground. The arena emits heat, loose stone and airborne obscurant on a cycle the fight has to read.flores_island.md § Section 1: *"volcanic and geothermal activity is live"*, with *"the geothermal vents used as a torch source in the Ch-2 stalk"*; region row weather_cycle_profile = dry;ash;clear; its EG features include EG_0003 Fumarolic Vent Field — one of the registry's two geothermal category rows, and the only one any slice region carries (sumatra_java carries the same row; EG_0001 Lava Vent is referenced by no slice region). sumatra_java.md § Section 1: *"Mt Merapi's volcanism is live as atmosphere (ash-plume horizon states and ashfall weather)"*; weather_cycle_profile = monsoon;ash;clear; EG gift material:ashfallflores_island, sumatra_java
monsoon_saturationThe wet-season surface. Footing degrades, sightlines soften, and fire-class work is denied by the ambient wet.bali.md § Section 1: *"Climate: equatorial-monsoon (region row: monsoon;rain;clear)"*; sri_lanka.md § Section 1: the wet-zone / dry-zone split that *"is why the chapter's engineering marvel exists at all"* and *"monsoon scrub jungle"*; south_india.md § Section 1: the kalari *"dug into the ground as a pit so that practice is protected from... the wetness of the monsoon rains, the heat of direct sun, drafty winds"* — monsoon stated as a design constraint by the people who live in itbali, sri_lanka, south_india
flood_pulseA seasonal water body that advances and retreats across the fighting ground. The arena's standable and navigable extent is a function of the cycle.angkor_khmer.md § Section 1: *"the Tonle Sap's annual flow-reversal (monsoon backfill, dry-season drain) is live as the region's defining hydrology and the west_baray flow-puzzle's physics"*; region row weather_cycle_profile = monsoon;flood_pulse;clear; zone terrain wetland with mud and water-shallow footfallangkor_khmer
shoal_crossingThe safe lane is a narrow conditional water crossing — reef causeway, spring-tide ford, surf bar, lagoon lane, swamp causeway — and the crossing is itself the encounter.swahili_coast.md § Section 1: *"At spring tides a ford at Serenge lets a person cross from the mainland"*, the harbour entries *"marked by reef-coral causeways"*, and *"the sharpness of the coral limestone at Jiwe la Jahazi would have caused catastrophic damage"* — the page's own reading that *"the reef zone's ambient_threat high is not a difficulty dial; it is the ground"*. west_africa.md § Section 1: the Guinea current closing the old inlets with sand, leaving *"an outer surf beach with no natural harbour, a sand barrier behind it, and a continuous inner lagoon lane that is the real road"*, plus the royal road driven *"through the great swamps lying between Allada and Abomey"*swahili_coast, west_africa
canopy_occlusionClosed canopy and understory. Sightline collapses, ranged work fails, and the fight is found before it is seen.central_africa_congo.md § Section 1: *"inside the forest, vision is so limited that a person raised there has no need to make an automatic allowance for distance when judging size"*, and the page's own consequence — *"every long-range affordance the player has carried since the Rift Valley stops working here"*; its EG features carry the slice's largest CONSTRICTION plus CONCEALMENT count at 8 of 25 — largest in absolute terms, though not the highest share (sumatra_java reads 7 of 19), and neither component leads alone (west_africa carries 6 CONSTRICTION, sri_lanka 4 CONCEALMENT). The § Section 1 prose above is the load-bearing warrant; the EG count corroborates it and does not carry it.central_africa_congo
altitude_coldHigh plateau and escarpment. Thin air, cold, exposure, and falls measured in hundreds of metres.ethiopia.md § Section 1: *"the Simien escarpment climbs west and south of Aksum toward Ras Dashen at 4,533 m, the roof of the range"*; its EG features carry altitude and cold exposure hazards. rift_valley.md § Section 1: the Bale highland *"the Afromontane ceiling above the valley, cold and thin-aired"*; same two EG exposure hazards on its own feature setethiopia, rift_valley
worked_groundThe hazard is MADE rather than weathered — cut shafts, spoil, steam vents, crush lanes, open pits — and it runs on machine timings the player learns and the boss reuses.south_africa.md § Section 6: *"the machinery's is the steam-vent burst and the crush lane, countered by timing and a heat shield; and Steenberg's third phase runs his whip-calls on the machine timings the player has just learned"*; § Section 1: *"extraction here does not sit on the land, it inverts it... the spoil comes out as engineered hills that were not there"*south_africa

Why worked_ground is a member and not an exception. It is the only token whose generator is

human rather than climatic, and it is the one the rest of the arc needs most — the extraction,

facility and installation chapters all read on it. Minting it here, from the one slice region that

already carries a machine-timed boss, is cheaper than discovering it at Ch 46.

---

4. weapon_of_origin_bonus_class — nine tokens

Which axis of a weapon's performance its ORIGIN REGION lifts when the weapon is carried there.

T0_Item_Derivation_Rule IDR_10 states the join in its own reachability_expr:

weapon.cultural_region_ref == region_id.

This axis is regional by construction. It never restates a weapon's own mechanic — the parry-capable

roster in T1_Combat_System_Spec § Parry Mechanic keeps its defensive_class, and the origin bonus

composes on top of it in a separate lane, exactly as Lane A proficiency bonuses compose with Lane B

quest-gate bonuses in § Weapon Proficiency Bonus Lanes.

tokenthe axis it liftscanon warrantregions
guard_yieldThe defensive half — the window a guard holds and the resource a successful defence returns.T1_Combat_System_Spec § Parry Mechanic: *"Successful parry generates Stamina or Vril per weapon class"*; flores_island.md § Section 6 seats the arc's first off-hand Shield on the caci rounds and grounds the Ch-3 boss's PARRY verb on the whip-and-shield rhythmflores_island
opening_conversionThe punish — the damage and window the weapon takes AFTER a tell is read and broken.bali.md § Section 6: the shadow-duel's *"bhuta-kala break on a silat tell"*; sumatra_java.md § Section 6: the feud world in which the blade is the smith's foremost task and the exchange is decided in one passbali, sumatra_java
formation_reachReach and the held line — spear, shield and polearm frontage, and the ability to hold ground against a charge.angkor_khmer.md § Section 6: *"The arms both ways are spears/javelins, shields, war elephants, and the war-galley"*; sri_lanka.md § Section 6: the five weapons and the royal levy whose province names are literally soldier-counts; west_africa.md § Section 6: the Fon standing army and its distributed caboceer commandsangkor_khmer, sri_lanka, west_africa
chain_extensionSequence length — how much of the form stays live before the chain resets.south_india.md § Section 6: the documented curriculum order and its paired sequences *"performed in four directions"*, each weapon carrying poses the practitioner moves to and fromsouth_india
guard_breakStagger and poise — the weapon's ability to open a held guard or a formation.ethiopia.md § Section 6: WPN_035 the Shotel is *"placed here as the Brute-stagger prep hook for the scriptorium guard rotation, which is the one place the main-boss encounter admits a direct-force answer at all"*ethiopia
control_holdRestraint — the duration and reliability of a bind or snare, and the finish it sets up.central_africa_congo.md § Section 6: the net *"a control instrument"*, with the spear finishing what the net holds and the region's lethality register recorded as *"close, brief, and hard"*central_africa_congo
close_footingStability and short-reach control where footing is denied — boarding, deck, ladder, ledge.swahili_coast.md § Section 6: the chapter anchors no weapon and the martial surface is *"boarding, deck fighting, rigging hazard, and the recombination of every verb the arc has taught since Ch 2"*swahili_coast
prepared_releaseThe single aimed release — draw, accuracy, and the status it applies rather than its impact.south_africa.md § Section 6: *"the bow and the poisoned arrow, the quiver, the assegai"*, and the design consequence the page draws — *"the shot begins the hunt instead of ending it"*south_africa
no_origin_bonusThe region anchors no weapon of origin, so there is no origin bonus to grant. A declared member, not an empty cell.rift_valley.md § Section 6: *"Era weapons: none anchored... the page mints nothing to fill the space"*, and the bow the spine names *"takes no WPN_ row and no draw-weight, material, or technique claim, because none is attested"*rift_valley

4.1 How T0_Weapon_Registry.regional_bonus_class is derived, 72 of 72

The column is emitted by harness/apply_pillar10_vocab.py, never hand-typed, and re-running the

script reproduces it byte for byte. Every one of the 72 rows carries a declared value:

T0_Regional_Combat_Modifier row. The region's weapon_of_origin_bonus_class is copied across

unchanged; the region is the authority and the weapon inherits.

The RCM row set is the slice by rule; the remaining regions land with the region cascade, and

each one resolves its own weapons on arrival. This is a MEASURED state with a named resolver,

not a blank.

single region, so no origin bonus exists to inherit. Also a declared state.

The split is reported as a positive control by harness/emit_item_matrix.py on every run, so the

day a region page lands and the pending count drops, the drop is visible rather than assumed.

Which tokens the live join actually reaches, today. Six of the twelve RCM regions are the origin

of no weapon at all (flores_island, angkor_khmer, sri_lanka, swahili_coast, rift_valley,

west_africa), so four of the nine tokens — guard_yield, formation_reach, close_footing and

no_origin_bonus — are carried by zero rows of the derived weapon column. Only chain_extension

(4 weapons), prepared_release (2), opening_conversion (2), guard_break (1) and control_hold

(1) reach a live weapon. This is worth stating because a token's warrant can name a weapon the join

does not deliver: guard_yield is grounded on flores_island seating the arc's first off-hand Shield,

but WPN_033 Shield carries an empty cultural_region_ref and therefore derives NO_ORIGIN_REGION,

not guard_yield. The region-scale authority claim above is unaffected — the region is still the

authority, and its token is still correct for the weapons it will eventually own — but the axis is

not yet a live weapon effect for most of its vocabulary, and should not be read as one.

---

5. movement_modifier_class — nine tokens, six inherited and three minted

CVD § 12.5 names this axis by example — *"jungle vs desert vs steppe vs ice"* — and

T1_Build_Pipeline_Contracts § Combat System repeats it. A vocabulary already existed for the

region-scale twin of this column: docs/proposals/systems/WS7_WIRING_BUILD_PLAN.md declares

T0_Region_Index.movement_modifier as `jungle_slow | ice_slide | sand_drag |

altitude_stamina_drain | bog_immobilize | none, and four live region rows carry jungle_slow`

today. That vocabulary is inherited whole rather than replaced, and then EXTENDED — six inherited

members plus three minted ones, so the two columns share a dialect on the inherited six and diverge

on the three.

What that costs, stated plainly. terrace_step, deck_pitch and scree_slip are not members of

the T0_Region_Index.movement_modifier enum WS7 declares, so five of the twelve rows (bali,

sumatra_java, swahili_coast, rift_valley, south_africa) carry a value the sibling column cannot hold

today. A repo-wide search for the three tokens returns exactly three files: this record, its apply

script, and its own registry. Nothing else in the corpus knows them yet. So the two columns are

not readable against each other without a translation step on those five rows — widening the

T0_Region_Index.movement_modifier enum to the same nine members is the named work order that closes

it (§ 10). An earlier draft of this section claimed no translation step was needed; that claim was

false for those five rows and is corrected here.

Three members are minted because the slice's own ground demands them and the inherited six cannot

express them. Per docs/GENRE_BASELINE.md, the base locomotion set is closed with the genre

default and *"the item-26 locomotion entry narrows to the Pillar-10 regional traversal verbs, which

are the only genuinely ours"* — these three are exactly that narrowing.

tokenstatuswhat it isregions
jungle_slowinheritedDense understory breaks sprint and dodge distance; movement is a series of short committed pushes. flores_island.md § Zone Catalog carries jungle-undergrowth footfall at the forest-edge skirmish corridor; sri_lanka.md and south_india.md carry the same footfall class; central_africa_congo.md § Section 1 states *"the traversal problem is strata, sightline, and water, not altitude"*flores_island, sri_lanka, south_india, central_africa_congo
terrace_stepMINTEDMovement is gated into benched levels and stairs — cheap along a bench, expensive across one. bali.md § Section 1: the recipe *"carves the terrace benching as scripted composites (the subak fan geometry is load-bearing, not decorative)"*; sumatra_java.md § Section 1: the recipe *"benches the monument terraces"*, and the chapter's own set-piece is the mandala ascentbali, sumatra_java
bog_immobilizeinheritedSoft saturated ground holds the foot; commitment costs more than it does anywhere else. angkor_khmer.md § Section 1 adds *"flood-forest, canal, and monsoon-gully detail"* over a wetland zone set with mud footfall; west_africa.md § Section 1 carries the royal road *"through the great swamps"* and the lagoon lane that is the real roadangkor_khmer, west_africa
deck_pitchMINTEDThe standing surface itself moves. Footwork is denied, dodge distance shrinks, and there is no retreat lane. swahili_coast.md § Section 6: *"boarding, deck fighting, rigging hazard"*; its zone catalog is the only one in the slice carrying water-deep and wood-plank footfall togetherswahili_coast
altitude_stamina_draininheritedThin air prices every commitment. ethiopia.md § Section 1: Ras Dashen at 4,533 m, with the build chain adding *"the highland gully and scree detail"*ethiopia
scree_slipMINTEDLoose surface on slope breaks a sprint and punishes an over-committed dodge. rift_valley.md § Section 1: the pass adds *"the gully-and-fan detail an arid section face actually carries"*, and *"a stacked-bed exposure is the one landform in this region whose readability is the gameplay"*; south_africa.md § Section 1: *"a Gaea erosion pass adds the escarpment gully and scree detail"*, under a chapter whose stated grammar is *"a vertical argument — up the sacred wall in the cliff phase, down into the works at the boss"*rift_valley, south_africa
sand_draginheritedDeep loose sand. No slice region carries it — declared and unused, and its home is the Saharan and desert arc beyond the slice. The Kalahari sub-zone of south_africa carries desert-fine-sand footfall and is the region's secondary member, recorded in the row note rather than overriding the chapter's own vertical grammar.
ice_slideinheritedIce and packed snow. No slice region carries it — declared and unused; its home is the Arctic and Antarctic arc.
noneinheritedA region whose ground imposes no combat movement modifier. No slice region carries it.

Divergence recorded, not silently applied. T0_Region_Index.movement_modifier reads

jungle_slow on bali, sumatra_java and angkor_khmer, all three at `env_profile_status =

stub. This pass reads those three as terrace_step, terrace_step and bog_immobilize`

respectively, on the evidence above — and notably Bali's own zone catalog contains **no forest zone

at all**. Nothing in T0_Region_Index is edited by this pass: the divergence is a FINDING for the

director, carried in each RCM row's note and repeated here, and the region-profile column is that

lane's to reconcile.

---

6. ability_interaction_class — six tokens

Which ambient substrate the region hands the ability layer, and therefore which physics chains are

live in it. T1_Ability_Tree § 5G *Physics-Driven Ability Interactions* is the governing frame: the

six-property taxonomy is *"mass, structural_integrity, flammability, thermal_state, conductivity,

organic_substrate"*, and abilities read the environment rather than ignoring it — Entangle is

*"Effective in any biome with living vegetation; reduced effectiveness in arid or arctic

environments per atmospheric-substrate availability"*, Flow Redirect deflects *"when ambient water

is present"*, Flame Shape *"shapes ambient fire (campfires, torches, brazier flames)"*. The

recovered Josh-authored matrix at docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md § 4 names

the same doctrine as original DNA: *"Earth needs earth present... Water needs water... Fire blocked

underwater/precipitation/cold"*.

The per-region evidence is the live T0_Environment_Grammar_Registry elemental_affinity and

ambient_state_gift micro-grammar, aggregated over each region's own zone-catalog

environment_grammar_refs.

tokenwhat the region suppliescanon warrantregions
conductive_mediumStanding and moving water, wet stone, saturated ground. Conduction chains are live and the player standing in the wet pays for it; fire-class work is ambient-denied.T1_Ability_Tree § 5G: *"Lightning meets Water... Effective in coastal, riverine, and rain-region combat at canonical depth — Ch 8 Swahili Coast"*, and *"casting Lightning while standing in water shocks the protagonist"*. Live EG aggregates: sri_lanka 7 medium:conductive gifts against 9 water:enhance and 8 fire:weaken affinities; swahili_coast 4 conductive gifts and 4 submersion exposures; bali 3 conductive gifts with no fire:enhance at all. angkor_khmer carries no EG refs on its own zone rows (a measured absence, § 8) and is read from its region row ambient_elemental_affinity = water:enhance;earth:enhance plus the flood-pulse hydrology. Note the absence is exact at the ZONE CATALOG only: that region row's terrain_feature_class_ids does carry one ref, EG_0002 — which resolves to *Sieidi Stone (protected)*, a Sami sacred marker carrying protected_care_ref = HL_0001;HL_0007, evidently a leftover from the WS7 seed rows that used EG_0001;EG_0002 as placeholders. It is not Khmer data, it was not read by this pass, and it is routed as a data defect in § 10bali, angkor_khmer, sri_lanka, swahili_coast
thermal_sourceThe ground supplies live heat and fuel. Fire is drawn from the environment rather than spawned, and Heat-meets-Ice state changes are free.T1_Ability_Tree § 5G Heat-meets-Ice state change plus Flame Shape's ambient-fire clause. Live EG: both regions are the only slice members carrying a geothermal category feature — and it is the SAME row, EG_0003 Fumarolic Vent Field, so the EG layer separates this pair from the rest of the slice but not from each other; the § Section 1 prose above does that. thermal_state:hot is explicitly not a discriminator here: five slice regions carry one, and the other three (south_india EG_0080, swahili_coast EG_0100, west_africa EG_0179 and EG_0195) are forge, kiln and furnace floors rather than live ground — made heat, not geological heat. sumatra_java adds material:ashfallflores_island, sumatra_java
lithic_massStone and loose rock. Earth-class construction and mass-bearing chains run at full effect; elemental variety is poor and the region gives little to water or fire.T1_Ability_Tree § 5E: construct properties include mass and structural integrity, and *"Stone walls collapse under sufficient force"*. Live EG: ethiopia is the slice's austerity case with earth:enhance on 11 features and no water or fire affinity anywhere; rift_valley's largest category is mineral at 8 of 21 features and carries material:knappable_toolstone; south_india reads earth:enhance on 15 of 20 with material:laterite and material:metal_extractablesouth_india, ethiopia, rift_valley
organic_substrateLiving plant matter at every layer. Vegetation-class abilities run at full effect and Fire-meets-Vegetation wildfire propagates.T1_Ability_Tree § 5G: *"Wildfire is canonical battlefield mechanic across canonical chapters with vegetation-dense regions"*, and Entangle's biome clause. Live EG: central_africa_congo carries the slice's highest vegetation share at 7 of 25 features, plus material:raw_latex; central_africa_congo.md § Section 1 states the region is *"low relief under very high canopy"*central_africa_congo
built_interlockThe substrate that matters is MADE of dressed stone and earthwork — walls, causeways, gates, sluices. Force-meets-Wall structural failure and the cover and trigger affordances carry the ability layer ahead of the elemental ones.T1_Ability_Tree § 5G Force-meets-Wall; T1_Combat_System_Spec § Nature-Derived Counter Classes routes cover and trigger_interrupt to T0_Environment_Grammar_Registry. Live EG: west_africa's feature set is 10 structural plus 5 sacred_marker of 24, and CONSTRICTION is its dominant affordance at 6 — the slice's most built ambient. west_africa.md § Section 6 supplies the reason: custom-houses *"sited like turnpike-gates so everyone must pass through them"*west_africa
worked_machineThe ambient substrate is machinery and its by-products — steam, pressure, cut rock, spoil. The live chains are the works' own cycles rather than the weather's.south_africa.md § Section 6: the machinery's kit is *"the steam-vent burst and the crush lane, countered by timing and a heat shield"*, and the boss's third phase *"runs his whip-calls on the machine timings the player has just learned, which is the evolve-not-swap rule doing real work"*south_africa

---

7. Orthogonality, checked rather than asserted

No two axes partition the twelve regions the same way. The pairs that come closest, and why they

still separate:

sumatra_java together (volcanic ground, thermal substrate). They separate on the monsoon three:

bali and sri_lanka read monsoon_saturation / conductive_medium, while south_india reads

monsoon_saturation / lithic_mass — the same weather over a dry interior of stone.

separate on sri_lanka (guard_and_answer but formation_reach), on ethiopia (held_line but

guard_break) and on central_africa_congo (footing_denied but control_hold) — posture and

bonus-shape are different questions about the same record.

separate on ethiopia and rift_valley, which share altitude_cold and differ on

altitude_stamina_drain vs scree_slip; and on bali, sri_lanka and south_india, which share

monsoon_saturation and split terrace_step / jungle_slow / jungle_slow.

7.1 What the coded control can and cannot see

The apply's orthogonality control compares PARTITIONS, and partition inequality is a boolean that

passes on any single disagreement — two axes could agree on eleven of twelve regions and still read

as independent. That was a real weakness, and the control is now two-part: partitions must differ

AND no axis pair may group more than 4 of 12 regions identically, which is the measured ceiling

on the live assignment (stance/weapon, hazard/ability and weapon/movement all sit at 4).

The bar is held tight rather than slack, so worsening the collapse fires the self-test.

Its honest limit: a structural control cannot see two cells citing the SAME SENTENCE. Three

single-region restatements exist in the current table and are named here rather than left for the

next reader to find:

steam-vent burst, the crush lane, and the boss's whip-calls on machine timings. They still earn two

cells because they answer different questions about it: the hazard axis says the arena's cycle is

machine-made rather than weathered, and the ability axis says the substrate the ability layer is

handed is machinery and its by-products rather than water, stone or vegetation. An arena that

ignored the second would still run the first as set dressing.

boarding clause.** They separate as posture / bonus-shape / traversal cost: the stance says the

guard shortens, the weapon axis says the origin region lifts short-reach control, and the movement

class says dodge distance itself shrinks. Three consequences of one fact is not the same defect as

one fact recorded three times — but the shared provenance is real and is disclosed.

line.** Hazard is what the environment does to the fight (exposure, cold, falls); movement is what

it charges per commitment. The same altitude drives both, which is why they were never going to

separate on evidence.

Detecting restatement is a reading task, so it belongs to the fresh-context critics, not to the

self-test. The self-test's job is to make a collapse impossible to introduce SILENTLY.

---

8. Measured absences, positive-controlled

Every zero below was measured with a search that CAN match, and each names what a non-zero would

have looked like.

south_africa both HAVE the column in their zone-catalog header and both leave every cell of it

empty; a repo-wide EG_ search over the two files returns zero. The parser found the column and

found nothing in it, so this is an absence and not a miss. A non-zero would look like the 13-to-28

refs every other slice page carries. The two fall back differently, and the difference matters:

angkor_khmer IS read from its region row, which is populated (`ambient_elemental_affinity =

water:enhance;earth:enhance, weather_cycle_profile = monsoon;flood_pulse;clear`,

movement_modifier = jungle_slow, env_profile_status = stub). south_africa is read from

Section 1 and Section 6 prose ONLY — its T0_Region_Index row carries no env profile at all,

every one of those five fields being empty, so the region-row half of the fallback does not exist

for it. An earlier draft of this bullet claimed both regions fell back on a region-row profile;

that was true of angkor_khmer and false of south_africa, and is corrected here.

of the twelve slice rows carry no env profile at all (ethiopia, rift_valley,

central_africa_congo, west_africa, south_africa) and three more carry only

terrain_feature_class_ids (sri_lanka, south_india, swahili_coast). rift_valley is the

sharp case: its row is empty while its PAGE carries 21 EG refs, so its EG evidence comes from the

zone catalog and never from the region row. Only flores_island, bali, sumatra_java and

angkor_khmer carry a full row, and all four are env_profile_status = stub. Routed to the

region-profile lane (§ 10).

axis (§ 2) and sand_drag, ice_slide, none on the movement axis (§ 5). Their homes are named

there. A vocabulary whose every member the twelve-row slice uses would be a vocabulary sized to the

slice rather than to the arc. The set is machine-declared and exactness-checked (§ 1.2).

carry a cultural_region_ref inside the twelve RCM rows. That is the honest state of a

twelve-row modifier table against a whole-arc weapon roster, it is reported every run, and it

shrinks as the region cascade lands rows.

cells returns zero, by construction — the columns hold class tokens only, and the Phase-5M

firewall owns every multiplier.

---

9. Consumers

cells populated by this pass.

derived from the origin join in § 4.1.

DERIVED_BLOCKED. It was the one derivation rule that could not run; it runs now.

only writer of these cells.

membership test is the writer checking its own output; this gate declares the five vocabularies

separately and enforces them against the live registries, so a hand-edit to any axis cell fails a

gate rather than passing unnoticed. It also re-derives the weapon origin join and cross-checks its

own vocabulary declaration against the apply's, so the two copies cannot drift apart in silence.

positive-controls the weapon-resolution split every run.

space, which every arena inside a region inherits.

10. Open follow-ups for the director

it should gain a pointer paragraph naming these five vocabularies and this file. That is a canon

edit on a file three other lanes are live on, so it is raised here rather than taken.

angkor_khmer (§ 5). All three of those region rows are env_profile_status = stub; reconciling

them belongs to the region-profile lane.

terrace_step, deck_pitch and scree_slip, five of the twelve RCM rows carry a movement value

the sibling column cannot express, and any lane that joins or diffs the two columns hits five

untranslatable values. This is the named cost of the three mints, not a defect in them.

(protected)*, a Sami sacred marker with protected_care_ref = HL_0001;HL_0007, sitting on a Khmer

region row — traceable to the WS7 seed rows, which used EG_0001;EG_0002 as placeholder values. A

protected sacred marker mis-assigned across cultures is worth clearing on care grounds alone, not

merely on data-hygiene grounds. Region-profile lane.

central_africa_congo, west_africa and south_africa, each with all five of

ambient_elemental_affinity, weather_cycle_profile, terrain_feature_class_ids,

movement_modifier and env_profile_status empty (§ 8). Three more (sri_lanka, south_india,

swahili_coast) carry terrain_feature_class_ids and nothing else. So any consumer expecting the

region row to be the env fallback finds nothing there for eight of twelve slice regions; the zone

catalogs on the region pages are the real source. Region-profile lane.

PENDING_RCM_ROW. The vocabularies are sized for them; the rows follow the region cascade.

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