T99_Translation_Combat.md

systems/T99_Translation_Combat.md

T99_Translation_Combat [DRAFT v0.1 — 2026-07-19]

Status: DRAFT v0.1 (first authored pass). **CHANGELOG 2026-07-19 — D-COMBAT-TD RULED (Josh,

wf_89c44de5-e16):** all §5 [JOSH] flags are flipped to their rulings in place (R1–R9); §4 marks

win_condition + win_shape both REQUIRED; §6.5 + spikes C-2/C-3/C-4/C-6/C-12/C-15 closed; the

launch posture (R7) and the WS_041/WS_042 Worldstate mint (R8) landed. The doc stays DRAFT v0.1

the ACTIVE flip now rides only the fresh-context normalize-doc critic PASS + the §4 registry extension

declared through docs/registry_extensions.json discipline (the §5 rulings, previously the other

gate, have landed). This is the missing SIXTH

Translation Doc — the 2026-07-19 pipeline-readiness audit's headline WALL: no doc mapped the

combat/physics/runtime design layer onto engine implementation, so no combat build step could run

autonomously (READINESS_AUDIT_2026-07-19_LANE_REPORTS.json lane combat; PIPELINE_READINESS_ROADMAP.md

§3 row 1).

Translation Doc — combat / physics / runtime-systems leg. Tier 99 operational (the runtime-inference

layer per T1_Build_Pipeline_Contracts §0); not world canon. It owns the platform-specific

inference that turns the combat DESIGN layer into a built, playable UE 5.8 encounter — the layer the

Pipeline Contract and the design docs are silent on (which engine subsystem carries which mechanic,

the boss data contract's machine columns, the runtime-generation guardrail wiring). Subordinate to the

CVD on world canon; to T1_Combat_System_Spec [ACTIVE v1.0] and the RULED DIFFICULTY_SYSTEM.md on

combat doctrine; to T1_Build_Pipeline_Contracts §1 (UE5) on FK/column/state-machine behavior — where

this doc's inference conflicts with any of those, they win [SRC: T1_Build_Pipeline_Contracts §0].

Cited short-form below: COMBAT_SYS = docs/COMBAT_ENCOUNTER_SYSTEM.md (the 508-line unified

spec — Part B boss-as-system, §4 the ~30 clocks, §5 Composure, §9 the vril dial, the Part-3 gap

ledger) · RUNTIME_GEN = docs/RUNTIME_GENERATIVE_LAYER.md · RUNTIME_GUARD =

docs/RUNTIME_GUARDRAIL_ARCHITECTURE.md · DIFF = docs/proposals/DIFFICULTY_SYSTEM.md [RULED

2026-07-04] · WS7 = docs/proposals/systems/WS7_WIRING_BUILD_PLAN.md · SCI =

docs/SCIENCE_GROUNDING.md · UE5_BUILD = docs/translation/T99_Translation_UE5_Build.md ·

CONTRACTS = _source/01_Tier_1_Foundation/T1_Build_Pipeline_Contracts [ACTIVE v1.0].md ·

ROADMAP = docs/PIPELINE_READINESS_ROADMAP.md · CVD = `_source/01_Tier_1_Foundation/

T1_CVD_Creative_Vision_Document [ACTIVE v1.4].md · SCHEMA = _source/00_Tier_0_Master_Indices/

T0_Schema_Dictionary [ACTIVE v1.3].md` (the boss-registry schema, §4.1 L844-873 the MMO-World-Boss

field definitions) · BUILD = docs/proposals/CHAPTER_BUILD_TARGET.md [rulings 5-7, the

per-chapter work orders; "never 100/0/0" at L20] · ROSTER = docs/proposals/ROSTER_PROPOSALS.md

[PROPOSAL, not canon — the tuning contract] · BOSSJSON = docs/proposals/boss_roster_rows.json

[PROPOSAL, not canon — the rich boss row model]. (SCHEMA/BUILD/ROSTER/BOSSJSON resolve to the same

targets as COMBAT_SYS's own §"map that governs" legend.)

---

1. Scope + authority

This doc is the runtime-realization layer for the combat/physics/runtime-systems design corpus. It

turns COMBAT_SYS + RUNTIME_GEN + RUNTIME_GUARD + DIFF into concrete UE 5.8 subsystem choices, a boss

data contract, a win-condition taxonomy routed for Josh's ruling, and a deterministic runtime-generation

wiring. It supplies MECHANISM; it carries no canonical authority of its own.

Authority hierarchy (per CONTRACTS §0): subordinate to the CVD on world canon (Pillar 8, §12, §17);

subordinate to T1_Combat_System_Spec and the RULED DIFF on combat doctrine; subordinate to UE5_BUILD

on the shared engine seams (Step 2 registry→USTRUCT→DataTable, Step 10 the ws.* save subsystem) — this

doc never contradicts those, it only supplies the combat-specific inference. Where CONTRACTS is silent

on a combat/runtime pipeline (it has NO combat section — combat exists only as the UE5 subsystem

sub-bullet CONTRACTS §1.2 and the §1.3 dependency line), this doc owns the inference layer and proposes

the contract section (§9 spike C-1) [SRC: ROADMAP §3 row 1; CONTRACTS §0, §1.2].

Versioning discipline it inherits: Translation Docs version per platform update; a UE revision

produces a new Translation Doc version while the doctrine surface stays stable. This is v0.1 against a

design layer that itself still carries [DECISION NEEDED - JOSH]-class open items (COMBAT_SYS Part 3)

and a balance audit that has never run — "iterate as build experience accumulates" governs, not a

one-shot lock [SRC: CONTRACTS §0].

Two audit claims this doc corrects at the outset (director adjudication, refuting the raw lane

report — trust content over labels, the repo doctrine):

(registries/T0_Boss_Encounter_Registry [DRAFT v0.1]/Sheet1.csv), and it already carries

primary_verb, secondary_verb, axis_split, counters, win_reward, death_reward,

phase_breakdown_object, engagement_modes_object, and — verified across all 281 rows — a

populated boss_kind scale column (main 79 / sub 201 / environmental 1). The full header

(verified 2026-07-19): `boss_id, boss_name, chapter_id, phase_breakdown_object,

engagement_modes_object, character_id, boss_kind, primary_verb, secondary_verb, axis_split,

counters, win_reward, death_reward, threads, awareness_category, target_type, care_tier, sources,

ontology_class, collect_verb, restore_target`. The WALL is schema FITNESS, not emptiness:

the columns it still lacks are win_condition, structured per-signature counters, Composure-node

map, escalation vector, phase-trigger, and the machine form of the mandatory character-engagement

field (§4) [SRC: ROADMAP §3 row 2; boss CSV header verified 2026-07-19].

packs` exporter built atop it**, not recall itself (§6) [SRC: ROADMAP §3 row 5; RUNTIME_GEN §C note].

The engine pin (RESOLVED 2026-07-19; formerly the engine-version split across all six Translation

Docs — ROADMAP §6): the design docs and this doc are written against UE 5.8, and **UE 5.8.0

(BuildId 55116800) is now the installed and pinned engine** (shipped 2026-06-17; the 5.7 side-by-side

is retired). NeoStack is installed as source in the project Plugins/ and rebuilt against that

exact engine BuildId — a prebuilt or marketplace binary drop-in re-breaks on a BuildId mismatch, so

prebuilt drops are forbidden. Every combat mechanism this doc routes onto GAS / StateTree / Chaos /

MetaSounds / the SaveGame subsystem ships in 5.8 (and was already 5.7-capable — GAS, StateTree, Chaos

Destruction, MetaSounds Builder, and the SaveGame subsystem all shipped in 5.7; StateTree is

production-ready, utility-based state selection landed in 5.5) [SRC: ROADMAP §6; combat lane

stale_or_wrong; engine pin verified 2026-07-19]. Where a mechanic is genuinely 5.8-only it is

flagged inline. The 5090 is required

only for the four things §8/§9 name (14B reference model, at-scale bakes, perf-budget validation,

benchmark days) — the 3–4B ship-target barks model and the whole deterministic spine run on the current

GPU today [SRC: ROADMAP §4].

Scope boundary: this doc covers the boss/encounter runtime, the difficulty dial, the ~30 combat

clocks, Composure, the environmental-boss protocol, and the runtime-generation guardrail as they land

in-engine. It does NOT re-author combat doctrine (COMBAT_SYS/DIFF own it), does NOT set numeric balance

(§8 firewall — Phase 5M owns it), and does NOT assign which boss sits in which chapter or its verbs

(the roster rows Josh authors/approves). Terrain/asset/audio/cinematic/quest legs get their own

Translation Docs; this doc consumes their output only as opaque FKs (mesh_id_ref, voice_signature_ref,

DD_* dialogue datasets, LS_* boss cinematics).

Does not invent canon: every canon law in §2 is translated faithfully, never re-derived; every

column/enum this doc proposes is routed as a PROPOSAL through the docs/registry_extensions.json

discipline (§4) or a [JOSH] canon-ruling flag (§5), never applied. The cardinal do-not-invent rule

binds: Josh authors chapter/numerical/naming/hard-line/§17/system-canon; this doc produces and ALIGNS

grounded structured form.

---

2. THE RULED CONSTRAINTS (translate faithfully, never re-derive)

These are binding canon/RULED laws. Every engine choice in §3 is subordinate to them; a build that

violates one is wrong regardless of how clean the engine mapping looks.

2.1 The difficulty dial is vril-density physics — NEVER HP / stat inflation

DIFF is RULED and CLOSED (Josh, 2026-07-04). The single difficulty dial is **ambient vril density —

the fairy realm's reach — and nothing else.** "The dial is ONLY vril density; NEVER HP / damage /

resistance inflation" (DIFF L12-13). Five diegetic tiers — Wellspring · Veiled · Fading (the true

tuning — the game as authored) · Sundered · → The Forgotten One (post-Ch-77 prestige). The dial changes

FOUR world-demand levers — telegraph slack, world generosity (window width + recharge-well latency),

answer-pruning (valid solutions thin toward the one true answer), Withdrawal aggression — and **nothing

on the enemy sheet. No enemy has a difficulty-scaled stat block** (COMBAT_SYS §0, §9). This is the

load-bearing thesis of the whole lane and the single most important engine constraint below.

2.2 Difficulty density keys off REALM AND SITE — never elevation/latitude (C1, 2026-07-17)

The vril-density field is set by realm and site (which realm-stratum you are in, and which vril

site/node is near), never by elevation or latitude. exposure_hazard (cold/heat/altitude/

submersion) is a body-only survival axis (WS7 T0_Environment_Grammar_Registry.exposure_hazard) and

is orthogonal to the density difficulty dial — altitude makes the PLAYER cold, it does not make the

world harder. Any engine mapping that drives vril_density off a landscape's Z or a region's latitude

is a C1 violation. Stale-citation note: the WS7 build plan still carries an open Fork 6 ("does

high altitude reduce atmospheric vril / d_local — thin vril with thin air — or is it purely a

body-exposure hazard?" with a weak REC for mild reduction, WS7 L128) — that fork is **superseded and

CLOSED by the C1 ruling** (thin-vril-with-thin-air is DECLINED) and should be retired in WS7; a builder

reading WS7 as the cited env-grammar authority must NOT re-import it as tuning [SRC: C1 ruling

2026-07-17; WS7 environment-grammar, Fork 6 superseded; DIFF].

2.3 Vril-altered physics — real physics AND real magic, composing emergently

Design law (Josh, 2026-07-13): the game runs **real physics AND real magic (vril); magic works by

ALTERING real physics. Vril reads mathematical/physical/substrate — the Vril-Society firewall**:

vril power is never race-mystical "polar energy" (the Bulwer-Lytton→Nazi-occult conflation is barred;

authorial-only corrective, never a player debunk). Player, enemies, AND allies all wield both, for good

and ill; they compose emergently for better and worse. Environment features carry real physical

properties (physical_properties_array: mass/structural_integrity/flammability/thermal_state/

conductivity/organic_substrate) that combat verbs act on (WS7 T0_Environment_Grammar_Registry) [SRC:

vril-altered-physics memory; vril-vs-nazi-occult firewall memory; WS7 environment-grammar].

2.4 Rewards intelligence — real science pays off; varied verbs beat single-verb autopilot

Design pillar (Josh, 2026-07-13): the game **rewards intelligence and learning real chemistry/physics/

biology/statics** — knowing-what-to-combine and think-on-your-feet, structured freedom that is free

BECAUSE real science makes openness meaningful and balanced. Alchemy=chemistry, Engineering=physics/

statics, Herbalism=biology; vril manipulates all (SCI). Mechanically this is the Preparation axis

(§5.3) and the anti-single-verb pacing (Composure nodes spread across modes, §3.4) — varied verbs beat

single-verb autopilot by construction, not by review [SRC: rewards-intelligence memory; SCI; COMBAT_SYS §5].

2.5 No-dead-end — death is graduated persistence, never a fail-wall

Death never hard-gates progression (multi-path / no-dead-end, CVD; violence-allowed-r17 memory). The

economy is Hades-shaped: reward on WIN AND death (CVD §5 P8). On death the realm remembers the

attempt — banked tell-reads (a knowledge economy, not an XP handout), a substrate-lore fragment, and a

soft catch on Wellspring/Veiled; consciousness withdraws to the last attuned recharge source

(recharge-as-checkpoint). The environmental-boss protocol's graduated-consequence failure (partial

purge strengthens the Ch-39+ revisit) is the canon seed for this loop (COMBAT_SYS §6.2, §7; DIFF

defeat model) [SRC: COMBAT_SYS §7; no-dead-end / violence-allowed-r17 memory].

2.6 The R-17 bar — real fights, don't defang; §17.1 care is collective, never individual-unkillability

Mature 17+ AAA; do not defang. Lethal violence vs HUMAN NPCs is core; a myth's own MONSTER is a BOSS —

stage the fight. §17.1 REPRESENT_WITH_CARE is collective — it protects the culture-as-community from

being cast as villain/defamed/exterminated (route the antagonist through the complicit broker/state/

institution), it does NOT make individual antagonists/combatants who belong to that culture

unkillable. The line: no genocide-of-a-living-culture as an encouraged/enabled goal, and no

banned-content. Protected communities are a deterministic wall (HL_0003): no faction_intent can

target them as combat; where combat reaches a protected space it is Velheim intrusion (RUNTIME_GEN

A.5). Ch 57 is the extreme case — no antagonist-family presence — its faction director is disabled;

combat arrives via environmental + astral mode only [SRC: rated-r-aaa / violence-allowed-r17 memory;

CVD §17.1; RUNTIME_GEN A.5, F5].

2.7 Terrain alteration — the C2 permanence ruling

Combat/vril alteration of terrain obeys the C2 ruling, carried as alteration_permanence_default

(WS7 T0_Environment_Grammar_Registry): sacred/protected nodes are HARD-blocked and uncapped (a

sieidi stone, a Dreaming site — hard_blocked, referencing the existing hard line, never damageable);

Evil scars heal slowly on a Good turn, never completely (heals_over + the integrity_valence_skin

verdant/grey/scar); combat-transient effects revert (transient_combat); only non-sacred structural

change is permanent. The difficulty dial never touches permanence — it changes react-slack, not what

the world lets you break (C2; DIFF answer-pruning) [SRC: C2 ruling; WS7 environment-grammar seeds

EG_0001-0004].

2.8 Pillar 8 — blended, never single-mode; the character-engagement field is mandatory

Every boss deploys combat + weapons + abilities + puzzles + character-engagement in blended combination

(CVD L214-218, Gate 8 immutable). No boss = pure DPS / pure dialogue / pure stealth. The executable

test: single-mode in audit = pillar violation; **a boss without a character-engagement field = pillar

violation.** Phases EVOLVE the moveset (tighten/multiply telegraphs), never swap it. The Ch 17 Entu

Priestess three-phase (surface combat → moral descent → philosophical confrontation) is THE template.

This is the schema, not a checkbox — §4 makes it machine-checkable, §3.4 makes it enforced by pacing

math [SRC: CVD §5 P8, L214-218; COMBAT_SYS §2, Part-1.1].

---

3. THE ENGINE MAPPING, step by step

The load-bearing deliverable: which UE 5.8 subsystem carries which mechanic, with the fork stated and

a recommendation where the design docs left it open. Each step below carries a (seam: …) tag per

UE5_BUILD §2.3's three-seam routing rule (NeoStack = interpretation/author-once · native

Python + commandlets = bulk apply-many · Epic-MCP = PCG only). One clarification the tags make

explicit: the engine SUBSYSTEM a step names (GAS/StateTree/Chaos/MetaSounds) is the mechanic's

runtime home — a different axis from the author-tool seam that produces the asset graph. Where

a step is purely runtime-subsystem behavior with no authoring artifact to route, the tag says

runtime-subsystem — no author seam explicitly, so no step falsely claims a seam it does not use. All

engine facts below are web-verified against current UE 5.8 documentation (2026-07-19); 5.7-capability

is noted where it matters.

Step 1 — Composure + the vril-density dial + the damage formula → Gameplay Ability System (GAS)

GameplayEffect graph from its verb-set/persona (the interpretive case); native Python then

bulk-populates the ASC / UAttributeSet init across the 281 boss rows from the registry. GAS itself

is the runtime home.

and the second-bar Composure (§5) both want a replicated, stackable, modifier-driven attribute

system with a clean effect pipeline. GAS is the engine-native home; a custom attribute system would

re-implement GAS badly. Recommend GAS. The one real cost is boilerplate + the 5.8 deprecation of

the legacy AttributeSet-initialization functions (deprecation warnings in 5.8, 5.9 migration

guidance) — author against the current AttributeSet/GameplayEffect API, avoid the deprecated init

path [SRC: UE 5.8 GAS docs, dev.epicgames.com "Understanding the Gameplay Ability System" 5.8;

combat lane executable_now].

AbilitySystemComponent. Composure has named sub-nodes (part-break analog) — one attribute (or a

tagged sub-attribute) per mode-bound node (§3.4).

allows, on the PLAYER, chosen by alignment) and the dial's four leversUGameplayEffects.

The dial is a single global float (§3.3) feeding GameplayEffect magnitudes via a

UGameplayModMagnitudeCalculation / SetByCaller, so telegraph slack, punish-window width, and

well-latency all move off one input with zero change to any enemy attribute (the §2.1 thesis,

made mechanical).

GameplayTags (Boss.Phase.1/2/3, Boss.Composure.Node.<mode>.Broken); VFX/SFX

GameplayCues (the vril-polarity shimmer tell-channel is a Cue; multi-channel readability is a

non-negotiable L1 requirement — the perception verb must be legible without color, so the Cue

carries an audio + shape channel, not color alone, §2.6 / DIFF Attunements).

GameplayEffect execution / move-selection scorer, NEVER unbounded (COMBAT_SYS §8; CVD §17.13).

the PLAYER, set by their own alignment — never spawned by difficulty on an enemy (COMBAT_SYS §4.8).

Step 2 — Boss phase/clock AI → StateTree (not GOAP, not Behavior Tree)

phase/clock graph from its verb-set (UE5_BUILD Step 6's marker-to-fight-logic precedent); native

bulk repeats the phase/clock wiring across the rest of the roster. StateTree is the runtime home.

"GOAP" (COMBAT_SYS §8; RUNTIME_GEN). Epic ships no first-party GOAP; UE 5.8 rewrote the AI Module

docs around StateTree, made it the default for new projects, ships StateTree templates, and

gives it a starting-state definition. StateTree's **read AND write of ws.* tags** rests on Property

Bindings + Global Tasks generally (the mechanism UE5_BUILD Step 10 relies on — Enter

Conditions/Property Bindings can read and write a tag), NOT specifically the 5.8 reversible-binding

feature (an in-editor authoring convenience for reversing a binding's direction, not a new runtime

capability) — so this consumer is fully 5.7-capable. That read+write is exactly the runtime ws.*

reaction consumer Step 4 needs. Behavior Tree remains supported as the fallback.

Recommend StateTree for boss phase AI + the clock enumeration; a utility scorer supplies the

"GOAP-flavored" weighting the docs wanted. 5.7-capable (production-ready in the installed 5.8) [SRC:

UE 5.8 State Tree docs; UE 5.8 release notes AI Module rewrite; UE5_BUILD Step 10; combat lane

executable_now].

(default, so SKILL advances the fight) or a declared phase_trigger (§4). "Evolve-not-swap" is

enforced by keeping the prior state's Tasks active — a transition pushes a layer (adds Tasks),

never pops one (COMBAT_SYS §3).

Tasks with timer state; the [DIAL]-marked ones read the global vril_density (a StateTree

parameter) so their slack scales with the dial, never their damage.

opener / turtle ratio / spam) that biases a Sigma-bounded move-selection table — the boss is a

"smarter opponent, not a stronger one" (adaptation_gain is [DIAL]; higher difficulty = faster

learning, never a bigger number). Sigma-bounded so it nudges, never frame-perfect-punishes.

wells slow, answers prune) — the enrage pressure with zero inflation (COMBAT_SYS §4.7).

it only voices the tactic the sim chose (§6; RUNTIME_GUARD §3.3). No clock is an enemy HP/damage

number.

Step 3 — The single resultant difficulty float → GAS input + a MetaSound global input

SetByCaller + MetaSound Input wiring is runtime-subsystem, no author seam).**

plays at all five world-tensions off ONE float) rests on a float that is a **resultant of two

distinct quantities that must NOT be given the same name:**

world-tensions (Wellspring < Veiled < Fading < Sundered < → Forgotten One). Model it as a

normalized scalar tier_baseline ∈ [0,1] (Wellspring lowest world-demand). This is NOT WS_024.

atmospheric_vril_density_modifier WS_024, a **float multiplier on the regional baseline,

native range [0.0, 2.0], default 1.0** (verified in T0_Worldstate_Variables), set by realm +

site per C1 (§2.2). This is NOT the difficulty tier.

d_local = clamp( tier_baseline × (WS_024 / 2.0), 0, 1 ) — the difficulty tier scales the whole

world's demand, the regional/site modifier (normalized off its 2.0 ceiling) expresses local

thickness. **d_local ∈ [0,1] by construction; it is neither WS_024 (a [0,2] multiplier) nor the

tier — it is their product.** A build engineer wires the GameplayEffect magnitude off d_local,

never off raw WS_024, so the [0,2]-vs-[0,1] mismatch cannot mis-halve the effect.

Subsystem Input** for the arena's audible vril-weather — the Builder API supports runtime value

changes on Inputs during playback (use Inputs, NOT Variables, which the Builder API does not

support). Quartz supplies the beat-synced env-cycle clock where the arena's periodic state machine

wants musical time (cross-lane with the audio Translation Doc's MetaSounds/Quartz adaptive layers)

[SRC: UE 5.8 MetaSound Builder API + Quartz docs; combat lane executable_now; DIFF; WS_024 verified].

modifier (input 2) is read from the region/arena's T0_Region_Index.env_density_band_default

(region default: neutral/restored/blank) plus the nearby env_emitter_site_ids /

env_drain_site_ids (WS7 env-grammar extension) — **this pair is the authoritative source for the

GAS difficulty dial. The region page's Zone Catalog carries a separate per-zone vril_density

column** (low/moderate/baseline — e.g. sumatra_java.md §Zone Catalog); that is the

granular per-zone expression consumed by the Step-6 creature/population leg (UE5_Build Step 6's

creature-tier filter), a finer descriptor that must remain consistent with the region default but is

not the dial's authority. Both are set by realm + site, NEVER by landscape Z or latitude;

exposure_hazard is a separate body-only survival effect, not a density input.

changes an arena cycle's speed (that would be fake difficulty) and never touches terrain permanence

(§2.7) [SRC: COMBAT_SYS §4.5, §9; C1 ruling; WS7; region page Zone Catalog].

Step 4 — Composure sub-nodes across the 7 modes → the Pillar-8 enforcer

authored ability/attribute graph itself rides Steps 1-2's NeoStack author-once seam).**

(direct = parry/heavy-punish; stealth = break-LOS-and-reengage; puzzle_routed = solve the arena

interlock; environmental = trigger a trap on-cycle; vril_management = polarity-match and starve the

manifestation; familiar = bonded paired-operation, canon at Ch 73; astral = the astral layer only)

(COMBAT_SYS §5). Because nodes spread across modes, a **single-verb player physically cannot break

Composure before the Withdrawal clock bites** — Pillar 8 enforced by pacing math, not a reviewer.

breaking ability's mode; the StateTree phase-transition Enter Condition reads "N nodes broken." This

is the machine form of §2.8's mandatory blend.

Step 5 — Environment as a combat surface → Chaos + the environment-grammar D-verbs

T0_Environment_Grammar_Registry; Chaos is the runtime home).**

System for deterministic replay/seedable determinism, Dataflow production-ready in 5.8 for procedural

destruction assets; 5.7-capable). The environment attack vocabulary is the fixed D-verb set from

WS7 T0_Environment_Grammar_Registry.attack_verbs (`D1_COLLAPSE | D2_IGNITE | D3_FLOOD |

D4_AVALANCHE | D5_FREEZE | D6_CONDUCT | D7_FORGE | D8_GROUNDWAVE | D9_HURL | D10_VENT | D11_OBSCURE`)

keyed to each feature's physical_properties_array and loaded_potential — a lava vent IGNITEs/VENTs,

a snowpack slope AVALANCHEs/FREEZEs. enemy_usable marks features the boss weaponizes back; these

are the secondary-verb answer for environmental bosses (COMBAT_SYS §4.5).

alteration_permanence_defaulthard_blocked (sacred, uncapped, references the hard line, no Chaos

fracture ever), heals_over (Evil scar reverts slowly on a Good turn, never completely, via the

integrity_valence_skin verdant/grey/scar skin), transient_combat, permanent.

perception verb still runs, but no destructive D-verb fires on a protected node (§2.6/§2.7) [SRC: WS7

environment-grammar seeds EG_0001-0004; UE 5.8 Chaos docs; COMBAT_SYS §4.5].

Step 6 — The environmental-boss protocol → deterministic, non-damage win (canon-owned)

machine is the runtime home).**

whose victory is NOT damage (CVD §12.3; COMBAT_SYS §1.3, §6.2). It is entirely deterministic — a

vril-state field with hidden genuine_echo + negative_manifestation, a polarity-matching minigame

gated on Intuition/Constitution/Integrity, a restraint_budget clock (dump burst → destroy both →

fail = environmental degradation + faction loss + a strengthened Ch-39+ revisit, the graduated-failure

Hades seed, §2.5). L1-playable everywhere (Josh's ruling: L1 stays action-packed; the protocol IS the

playable layer for protected/relief chapters). The LLM only *describes* the read (RUNTIME_GEN A.6

env_boss_read); it never adjudicates the polarity match.

MetaSound polarity feedback; multi-channel readability mandatory. This is win-condition class PURGE

/ ATTUNE in §5.

Step 7 — Worldstate + save wiring → the ws.* WorldStateSubsystem (shared with the cinematic lane)

Step 10's ws.* subsystem; no author-tool seam).**

(§2.5), vril_density band, player_habit_vector / adaptation_gain roll-forward, and the

community/faction deltas an encounter causes (WS_019 community_state, WS_020 antagonist_operational

_state, WS_021 faction_standing). These land in the **same ws.* WorldStateSubsystem** UE5_BUILD

Step 10 specifies — original engineering, no Epic reference pattern (Lyra ships none): a

UWorldStateSubsystem : UGameInstanceSubsystem holding TMap<FGameplayTag, FWorldStateValue>

(tagged-union: bool/int/enum), persisted via UWorldStateSaveGame : USaveGame with

AsyncSaveGameToSlot (async is the recommended path — avoids the frame hitch + a platform-cert

issue) [SRC: UE5_BUILD Step 10; UE 5.8 SaveGame docs].

path-conditional scene read the SAME ws.* subsystem (ROADMAP §3 cinematic WALL: "shared with

combat save state"). Boss cinematics fire off a boss combat-state event StateTree emits (the

cinematic lane's spike 4 dependency resolves here — a GameplayTag/StateTree event the Sequencer

trigger listens for).

new T0_Worldstate_Variables keys (none exist for them today) or ride the WS7 [EXTENSION] sim

vars (player_strategy_vector et al., Josh-pending); and mark_write's richer shape

({community_id, valence, persistence, forward_track}) — its own ledger vs the WorldState map —

folds into UE5_BUILD's Step-10 validation spike, one story not two [SRC: UE5_BUILD Step 8/10; WS7

§C.1; combat lane parameter_gaps save row].

Step 8 — Companions / fauna / factions in combat → the runtime split (deterministic AI, LLM strategy only)

and the §6 strategy-token API are runtime wiring, not authored assets).**

utility at 60 Hz — target/ability/positioning, the Ch-73 paired-operation combo); the LLM sets only a

slow-tick combat_disposition *bias* (protective/aggressive/cautious), never a mid-swing action

(RUNTIME_GEN A.4). Fauna behavior is deterministic (BT/utility); the LLM performs the *read* over

the state the sim chose (A.3). Faction intent (Velheim director, ~0.005–0.02 Hz) raises a

*weight* the deterministic encounter system (the three declared systems — Aggro Magnet / Rift

Instability / Antagonist Hunter Triggers) reads; it spawns nothing itself, and the protected-community

wall is a deterministic hard-fail (§2.6, F5) (A.5).

per-frame verb.

---

4. THE BOSS DATA CONTRACT — a schema EXTENSION proposal (routed, not applied)

The T0_Boss_Encounter_Registry already carries boss_kind (main/sub/environmental — populated on all

281 rows), `primary_verb, secondary_verb, axis_split, counters, win_reward, death_reward,

phase_breakdown_object, engagement_modes_object, and also character_id, threads, awareness_category,

target_type, care_tier, sources, ontology_class, collect_verb, restore_target` (§1 correction — the

full 21-column header was cross-checked so this section proposes NO column that duplicates an existing

one). This section proposes the combat-spec columns it still lacks, as a schema EXTENSION

owned by a new system combat-encounter, declared through the standing discipline: append the columns

to docs/registry_extensions.json under T0_Boss_Encounter_Registry/Sheet1 + to

docs/fidelity_baseline.json added_columns, then registry_fidelity.py --emit-baseline in the same

commit, then run_gates.py UNPIPED green (the exact WS7 gate-safe method — CONTRACTS/WS7 GATE NOTES).

This is a PROPOSAL for the registry-extension declare (not applied by this doc's edit). The enum

*values* it references (win_condition, win_shape, the axes) are the RULED §5 outcomes (D-COMBAT-TD,

Josh 2026-07-19) — the columns are now UNBLOCKED for declare + back-fill via the

docs/registry_extensions.json discipline.

Proposed columnTypeFills which gapSource of values
win_condition (REQUIRED)enum (§5.1, 9 verbs)COMBAT_SYS Gap 3.3 — no canon win-condition taxonomy; today it lives only in spine prose (main_boss_win_condition …)§5.1 RULED 9-verb enum (D-COMBAT-TD R3); back-fillable from the 281 rows' spine prose
win_shape (REQUIRED)enum (§5.1, 8 values)R3 — the SHAPE of a win, parallel to the verb (peopled_war, passage, omni_recombine, the WS4 five)§5.1 RULED win_shape axis; the Pillar-8 validator binds BOTH win_condition + win_shape
axis_split_semanticsfixed doc-note (Patterns/Puzzles/Preparation, in that order)COMBAT_SYS Gap 3.5 — axis_split exists (e.g. 60/20/20) but its axes were undefined§5.2/§5.3 RULED axis definitions (D-COMBAT-TD R1); no new column — the order is ruled canonical
signature_countersobject: {signature_id: [counter_verb…]}COMBAT_SYS tuning contract — ≥1 counter/signature, ≥2 across builds is unverifiable while counters is prosestructured from the existing prose counters field
composure_nodesobject: {mode: node_name} over the 7 modesCOMBAT_SYS Gap 3.4 + §5 — makes the mode-spread machine-checkable (Pillar-8 enforcer, §3.4)COMBAT_SYS §5 mode list
phase_triggerenum: `composure_break \part_break \hp_subphase \narrative_beat`COMBAT_SYS Gap 3.6 — transitions asserted, not specifiedCOMBAT_SYS §3 (default composure_break)
escalation_vectorenum-multi: `tighten_telegraph \multiply_telegraph \add_layer`COMBAT_SYS Gap 3.6 — "evolve not swap" has no parameterCOMBAT_SYS §3, tuning contract E33
character_engagement_nodeobject: {phase, verb, integrity_routed:bool}COMBAT_SYS Gap 3.4 — the MANDATORY Pillar-8 field has no mechanical form§5.4 RULED definition (D-COMBAT-TD R4): a STANDALONE 8th Composure node, decoupled from astral
boss_kind (EXTEND the existing enum — do NOT add a parallel column)existing enum `main \sub \environmental, extend with trade_gate \school \weapon \mmo_world`COMBAT_SYS Gap 3.11 — the scale distinction already lives in the populated boss_kind column (main 79 / sub 201 / environmental 1); it only lacks the four additional Pillar-8-scope classes§5.5 RULED (D-COMBAT-TD R5): which boss_kind values must be fully blended — no new column, an enum extension so Tier-A Solo vs Tier-C MMO cannot fork into two disagreeing scale fields
ws_writesarray of ws.* keysStep 7 — the worldstate deltas the encounter persists (cross-lane save)WS7 worldstate rows; UE5_BUILD Step 10

Firewall: the SCHEMA §4.1-defined MMO-World-Boss fields (ue5_boss_class_ref, mesh/voice/cue/

cinematic FKs — defined in SCHEMA §4.1 L844-873 but NOT present in the current 21-column CSV;

scope-locked at MMO build phase, authority split COMBAT/T4) are not touched — this extension

neither adds nor populates them; the one live column of that family, phase_breakdown_object, is

likewise left as-is. This extension adds only the SOLO-boss combat columns and extends the

already-populated boss_kind enum (never a second, parallel scale column that could disagree with it),

keeping the two scales

categorically separate within one authoritative field (Tier-A Solo vs 100-player Tier-C MMO —

COMBAT_SYS §1.6). No column mints a boss, chapter, verb, or count — every value references an existing

space or a §5 ruling [SRC: COMBAT_SYS Gap 3.2–3.6, 3.11; SCHEMA §4.1; boss CSV header verified

2026-07-19; registry_extensions.json discipline; WS7 GATE NOTES].

---

5. WIN-CONDITION TAXONOMY + three-axis definitions — ✅ RULED (D-COMBAT-TD, Josh 2026-07-19)

✅ ALL OF §5 IS NOW RULED (D-COMBAT-TD, Josh 2026-07-19, wf_89c44de5-e16). The [JOSH] flags below

are flipped to their rulings in place: §5.1 = a 9-verb win_condition enum + a REQUIRED, gate-enforced

win_shape axis (R3); §5.2/§5.3 = Patterns/Puzzles/Preparation ratified in order + the

decode-vs-investment boundary made canon + the R2 free-knowledge-route rule; §5.4 =

character-engagement is a STANDALONE 8th Composure node decoupled from astral (R4); §5.5 = mains carry

a mandatory character node + a machine chapter-floor gate now, and the 7/10/5 mode reconciliation is

corrected (R5/R6). The Pillar-8 validator binds BOTH win_condition and win_shape; the §4 columns

are UNBLOCKED for declare + back-fill. The bracketed prose below is preserved as the surfacing brief.

These are system-canon (they define victory conditions and the Pillar-8 blend across the whole game).

Per the decision protocol, they are surfaced as full briefs with a RECOMMENDATION, **not silently

minted**. Each is grounded in the executed spine's ACTUAL win shapes — re-grepped 2026-07-19 across all

79 docs/spine/CH_NN.md main_boss_win_condition rows, and the observed-classes sample below now

spans Ch 2-77 (not just the early arc). The enum is a naming/consolidation of recurring verb classes

already authored, not an invention — but it is NOT complete over every executed win shape: the

endgame/bookend verbs (Ch 66-77 witness / recombine / seal / endure) and the WS4 win-SHAPE family

(Ch 59-63) are surfaced below for Josh to route, so the ruling covers the whole arc rather than

shoe-horning them silently later.

5.1 — ✅ RULED (D-COMBAT-TD R3): Win-condition enum + the required win_shape axis

Observed spine classes (verbatim, Ch 2-77) — early arc: HP (Ch 2, fallback at 15/18) · pacify

(Ch 3/7/9/12/17/21/27/35/39/40/42/43/44/47) · perceive / perceive-then-pacify /

perceive-then-break (Ch 4/6/16/36/46) · part-break (Ch 6/13/25/31/33) · pacify-by-purge (Ch 26)

· free-the-shaman (Ch 22) · restraint-then-purgation / attune (Ch 10/20/37/38/57) ·

pacify-via-exposure / EXPOSED (Ch 14/23/28/42/43/44/49) · refutation / theological-debate /

declare (Ch 15/18/69) · bypass (Ch 23 "canonical questline-bypass", Ch 24, Ch 30 "Anglo-Saxon

common-access legal challenge", Ch 34 "HP/pacify/bypass"). Late/endgame arc (Ch 45-77): `restraint-

then-STRIKE (Ch 45) · WIN-by-strike/breaking-the-front (Ch 50/53/54/58) · WIN-by-reading`/

perceive (Ch 51/64/68) · WIN-by-the-pause (attune, Ch 52) · pacify/infiltrate DELEGATED (Ch 56)

· restore/attune (Ch 57) · the WS4 win-SHAPE family (Ch 59 FRONT-THAT-DOES-NOT-FULLY-BREAK,

Ch 60 DELEGATED-VICTORY, Ch 61 PERSONAL-COST, Ch 62 SIEGE, Ch 63 MAGIC-DUEL) · pacify-the-vessel +

declare (Ch 65) · strike/redirect/traverse + attune/decode (Ch 66) · strike-as-passage

(Ch 67/70) · release (Ch 72) · strike/restraint single-blow (Ch 73) · re-root/drive-back

(Ch 74) · command-terrain — "WIN the peopled war for the realm" (Ch 75) · recombine-all +

declare (Ch 76) · witness (Ch 77). Bookends: seal (Prologue), endure (Ch 1), none (Epilogue).

**✅ RULED (D-COMBAT-TD R3-refined, Josh 2026-07-19) — a 9-verb win_condition enum PLUS a required

win_shape axis.** The 11-value draft's verified asymmetry dissolved, not shipped: the two thinnest

doc-proposed verbs (REACH, COMMAND) are dropped as verbs and re-expressed as win_shape values

(passage, peopled_war), so no single-mode escape hatch is minted. Per-value provenance is kept so

no doc-invented value is ratified as canon unnoticed.

The win_condition verbs (9 ruled at D-COMBAT-TD R3; EVADE minted 2026-07-20 at D-EVADE-TOKEN, making 10; each still Pillar-8-blended, never a pure single mode):

integrity cost (Ch 3/7/17/21/27; HL_0021). [canon-named — COMBAT §11 pacify]

institution, never the community (§2.6). [DOC-PROPOSED — spine-attested as expose/EXPOSED]

(Ch 15/18; Ch 69 the Architect where the school IS the boss). [canon-derived — COMBAT §11 declare]

explicitly not winnable by defeat (the Ch 54/56 Verderer Hunter-Trigger near-misses,

BE_0054_S4/BE_0056_S3). [RULED — D-EVADE-TOKEN, Josh 2026-07-20; minted on the back-fill's

evidence that the 9-verb enum could not honestly express the class; the interim BYPASS retired]

Provenance summary: canon-named/derived = REDUCE (rename of canon HP), PART_BREAK, PACIFY,

PURGE, PERCEIVE, REFUTE, BYPASS; DOC-PROPOSED (attested but not in the COMBAT §11 verb

rotation) = EXPOSE, FREE. The dropped REACH/COMMAND are NOT verbs — they become win_shape

values.

The required win_shape axis (parallel to the verb, gate-enforced — R3): a REQUIRED field carrying

the SHAPE of a win, distinct from its verb. Enum (8 values): front_not_fully_break, delegated,

personal_cost, siege, magic_duel (the WS4 five — Ch 59 / 60 / 61 / 62 / 63 respectively),

passage (the kinetic relief-chapter win where the "boss" is passage itself — absorbs the dropped

REACH), peopled_war (WIN a peopled war / hold a front for the realm — absorbs the dropped

COMMAND), and omni_recombine (the whole-kit recombination set-piece). Each shape still resolves

THROUGH a verb above (e.g. Ch 63 magic_duel wins by PERCEIVE+PURGE/FREE). The Pillar-8

validator binds BOTH fields (§4 marks both REQUIRED).

Back-fill notes (the whole arc covered, not shoe-horned): Ch 67 = REDUCE; Ch 70 = REDUCE-or-

PACIFY + passage; Ch 75 = the verb per its own rows + peopled_war; Ch 55 and Ch 76 = their own

verbs + omni_recombine.

Bookend exceptions (authored, NOT enum values): witness (Ch 77), seal (Prologue), endure

(Ch 1), none (Epilogue) stay authored bookend win-shapes, outside both the verb enum and the

win_shape enum. Compound win-conditions (perceive-then-pacify) are represented as an ordered verb

pair, not a separate enum value.

5.2 — ✅ RULED (D-COMBAT-TD R1): the three axis names are canonical, in order

axis_split (e.g. 60/20/20) is authored on all 281 rows but its axes were undefined (COMBAT_SYS Gap

3.5; it originates in ROADMAP §0.E, not CVD/COMBAT). RULED (R1): the axes are

Patterns / Puzzles / Preparation, in that order — the existing numbers become meaningful with no

re-authoring. The "never 100/0/0" rule (BUILD L20) is now the machine never-zero axis gate: no axis

is 0 across any Boss_Encounter row, EXCEPT the two bookend rows whose chapter_id is CH_PROLOGUE /

CH_EPILOGUE (the exemption is keyed on chapter + witness/no-fail status, NOT on boss_kind). The gate

is implemented in harness/check_boss_axes.py (§4; §9 spike C-4).

5.3 — ✅ RULED (D-COMBAT-TD R1/R2): three-axis definitions + the decode-vs-investment boundary

read-and-respond spine. The [DIAL] tell-slack (§2.1) lives here.

trap-on-cycle. What a perceptive L2/L3 player weaponizes.

knowledge (§2.4 — chemistry/physics/biology, the rewards-intelligence axis), intel/scouting,

consumables, relationship/familiar-bond state. This is where "rewards intelligence" is measured.

✅ The decode-vs-investment boundary is now CANON (R1): in-fight cognition — including

decode/sequence/read-the-arena performed DURING the fight — scores as Puzzles; pre-fight gathering,

loadout, intel/scouting, and relationship/familiar-bond state score as Preparation. (This retires

the boss_roster philosophy's looser "the investigation layer literally becomes the Preparation axis"

line — investigation feeds BOTH axes on the two sides of this boundary.)

✅ CANON RULE (R2): every combat boss's Preparation axis must carry **≥1 FREE in-fiction

knowledge/skill route** — never a purchase-only route, never a mandatory external scaling item (§2.4;

ROSTER tuning contract). This is the rule, not a mitigation: it binds every boss row.

5.4 — ✅ RULED (D-COMBAT-TD R4): character-engagement = a STANDALONE 8th Composure node

Pillar 8 makes "boss without a character-engagement field = pillar violation" executable (CVD L218) but

never defined the mechanic (COMBAT_SYS Gap 3.4). RULED (R4): character-engagement is a **STANDALONE

8th Composure node — DECOUPLED from the astral node** (astral stays a Pillar-11 hard-line-gated mode;

the two are no longer fused). It is a Composure sub-node broken by a character verb

(declare/weigh/witness/spare-or-kill), integrity-band-routed (the integrity band selects the

resolution, per the Ch-65 lock), present on every MAIN boss for ≥1 phase (the Entu P3 template). Its

verbs are varied and woven-not-bolted onto pure-strike mains (never a tacked-on lecture); for a

talk-boss the Composure break = completing the recitation/refutation. Machine form = the

character_engagement_node column (§4). Sub-bosses may carry it optionally (§5.5). This is the 8th

Composure node alongside the 7 combat modes; forcing it onto every sub-boss would 3–5× the authoring

load (COMBAT_SYS Gap 3.11), hence §5.5 scopes the mandate to mains.

5.5 — ✅ RULED (D-COMBAT-TD R5/R6): sub-boss Pillar-8 scope + the mode-vocabulary reconciliation

(§5.4). RULED: a machine chapter-floor gate lands NOW — each chapter's sub-boss LADDER must

span ≥3 distinct combat modes (delivered across the ladder per different threads/systems —

CHAPTER_BUILD_TARGET §1 Ruling 1 — never forced onto each sub-boss). The floor runs off the

populated engagement_modes_object today and migrates to composure_nodes when that

extension lands. The stricter "a character beat below every main" clause is DEFERRED behind

the ~72-sub person-classification pass and recorded as a NAMED greybox exit-criterion (not

open-ended): the sub-ladder character-node gate turns on when that person-classification pass

completes. (Cite fix: the earlier draft's "Ruling 7" pointer is corrected to **CHAPTER_BUILD_TARGET

§1 Ruling 1**.)

axis** — they drive dominant_combat_mode, the §12.2 anti-staleness gate (no-two-consecutive-

dominant; ≥3-per-5-window), and map 1:1 onto the engine Composure node map (§3.4). The **5

mode_variety_check booleans are a SEPARATE, honestly-named §16 pacing-beat presence check**

(combat / puzzle / learning / character / transformation present in the chapter), **NOT a rollup of

the 7 modes — the "5-derived-from-7 rollup" claim is REJECTED and removed. The 10 COMBAT

encounter categories are demoted to an advisory audit lens**, not a binding taxonomy.

mode_variety_check is verified populated on all 79/79 chapters with genuine per-chapter values

(e.g. Ch 2 combat=Y;puzzle=Y;learning=Y;character=Y;transformation=Y) — so this is a

form-reconciliation, never a 2→79 population pass.

(CH_47 / CH_48 / CH_70 / CH_71). These are recorded as a bounded micro-ruling to follow — **do

NOT change the cells now**; they are flagged for a targeted correction pass, not silently re-mapped.

[SRC: spine main_boss_win_condition grep 2026-07-19; COMBAT_SYS Gap 3.3–3.7, 3.11; CVD §5 P8,

§12.2; BUILD L20; ROSTER tuning contract]

---

6. THE RUNTIME GENERATIVE LEG — deterministic-first, no-GPU spine + the tiered model plan

The runtime-generation layer (RUNTIME_GEN + RUNTIME_GUARD) is the continuo bet: a dumb local model

made reliable by deterministic scaffolding. The build order is **deterministic-first — the whole spine

stands up with ZERO GPU** — then the model is layered as pure upside.

6.1 — The deterministic strategy-token spine (needed NOW, no GPU)

Build these as pure code (Python/C++), no model, no engine:

({goal∈enum, plan∈legal-set, knobs∈ranges, line≤N tok}), never an action. A deterministic

controller (StateTree/utility AI, Step 2/8) executes it at 60 Hz; the token is a read-only leaf with

no write path into the sim (F10, enforced at the API boundary) (RUNTIME_GUARD §1).

forbidden-framing corpus, HL_0005) → V2 hard-line rule-vector (protected-community no-combat-

provocation, §17.5 no Grand-Sage pre-reveal) → V3 canon-graph name resolution incl. the retired-alias

reverse index → V4 persona/register → V5 anti-slop. V1–V3 hard-fail → fallback; V4–V5 one retry then

fallback (RUNTIME_GUARD §5).

default StateTree behavior. The sim is already coherent on fallbacks alone; the model is upside,

never a dependency (RUNTIME_GUARD §6).

scores candidate model+prompt versions on the same V1–V5 checks (the continuo 0.965 analog)

(RUNTIME_GUARD §7).

6.2 — The context-pack exporter (build atop the existing harness/recall.py)

recall.py EXISTS (§1 correction). The missing piece is recall packs — a new offline exporter in

harness/ that runs recall's recall node <id> union query once per entity at bake time and freezes a

per-entity pack: persona_card, fewshot_exemplars, hardline_rule_vector (add applies_to_pipeline

enum value Runtime), fact_whitelist, retired_alias_index, care_band, action_vocabulary

(strategic entities), state_bucket_map. Frozen + KV-prefix-cached, so per-frame cost is zero graph

work. A prototype hand-authors one boss's pack; production population cannot start until the exporter

exists (RUNTIME_GUARD §3, §9; ROADMAP §3 row 5).

6.3 — The 3–4B guardrail smoke (current machine, this month)

Stand up the on-device inference leg on the CURRENT GPU: a 3–4B GGUF (Qwen3-3B / Phi-4-mini class) in

llama.cpp under a GBNF grammar emitting {emotion∈enum, line≤20 tok}, fed a canned sim next-move

intent, through the §6.1 validator + fallback + pass-rate log. This is the ROADMAP execution-queue item

#6. Passing criterion: the loop NEVER emits an invalid or off-whitelist line to "the player" (fallback

always catches) and prints a first-try pass rate. Constrained decoding makes malformed/out-of-vocab

output unsampleable (F8 prevented, not caught); the novel per-entity canon-vocabulary logit mask makes

a hallucinated/retired name unsampleable too (F1/F2 prevented) (RUNTIME_GUARD §4) [SRC: combat lane

first_smoke_test; ROADMAP §2 item 6].

6.4 — The 14B reference + perf tier (5090-gated)

Reserved to the incoming workstation (design's own pin): the 14B on-device reference model for

dev-side quality prototyping (the 3–4B is the SHIP target and runs today); the runtime-inference

perf-budget validation (batching, speculative/draft decode 2–3×, KV/prefix cache, the ~8–15 gen/s

busy-scene target, latency P99s — the Phase-5M-analog runtime perf audit); the nightly first-try-pass-

rate eval at corpus scale. Console packaging (Xbox int4/DirectML, PS5 compute-shader) is separately

devkit-gated — neither current-machine nor 5090 [SRC: RUNTIME_GEN §B; ROADMAP §4; combat lane

gated_5090].

6.5 — ✅ RULED (D-COMBAT-TD R7): the launch-posture scalpel

RULED (R7, Josh 2026-07-19) — the §17.1 posture call at the high-care chapters (Ch 29 / 42 / 57) is

the entity-class scalpel: bosses + generic ambient fauna ship runtime-generation ON under the

standard V1–V5 guardrail, but each such boss's fact_whitelist excludes the Dreaming / songline /

joik nodes (HL_0007). Community + cultural NPCs + folklore-bearing fauna are AUTHORED-ONLY; any

untagged high-care entity defaults to authored-only (fail-safe). Every affirmatively-ON tag takes a

two-reviewer pre-launch audit; any later community-NPC flip-on is gated on a **human

source-fidelity review, never the §7 metric alone. Cite basis corrected:** HL_0002 (retained) +

HL_0003 / HL_0005 / HL_0007. (RUNTIME_GUARD §3.1 now carries the same ruling; its §9 open-item

recommendation is superseded.)

---

7. THE GREYBOX PROTOTYPE SPEC (current machine, this month)

One boss-as-system, built to prove the load-bearing thesis with zero enemy-stat change. This is

ROADMAP execution-queue item #12, expanded to concrete UE steps. Runs on installed UE 5.8.0 (GAS/

StateTree/MetaSounds all present); the 5.8 GAS AttributeSet-init deprecation now applies on this

engine — verify that migration path in the greybox (C-7).

1. Arena + boss ASC. A greybox arena. One boss actor with an AbilitySystemComponent; author a

UAttributeSet with Composure (+ 2–3 mode-bound sub-nodes: direct, environmental, character)

and a single global vril_density float (Step 1, 3). No Health-inflation attribute exists on the

boss beyond the base; prove the dial never writes it.

2. Verbs + phases. Two boss verbs as GameplayAbilities (primary, secondary in different modes);

phase state as GameplayTags; a StateTree with two phases, the transition Enter Condition gated on a

Composure break (Step 2, 4). Prove evolve-not-swap: Phase-2 adds Tasks, keeps Phase-1's live.

3. The clocks + habit vector. StateTree Tasks for tell-windup, punish-window, and the Withdrawal

clock (all [DIAL]-scaled off vril_density); a player_habit_vector rolling histogram biasing a

Sigma-bounded move-selection table. Prove roll-spam → baited sweep (a smarter opponent, §2.1/§4.9).

4. The dial at two world-tensions. Drive vril_density as one float into GameplayEffect magnitudes

narrows, well latency rises, an off-mode answer prunes — **with zero change to any enemy attribute

or the arena cycle speed** (Step 3; §2.1). This is the headline proof.

5. The character node. One Composure sub-node broken by a declare verb, resolved on an

integrity-band condition (the mandatory Pillar-8 field, §5.4).

6. (If time) the barks leg. Wire §6.3's 3–4B + validator + fallback so the boss needles the actual

habit-vector read ("you always roll left") — the sim tells the model; the model never invents the

tactic.

Exit criterion: the same authored boss plays at two world-tensions with zero enemy-stat delta, and

(if #6) never emits an off-whitelist line. Illustrative numbers only (§8) [SRC: ROADMAP §2 item 12;

combat lane executable_now, first_smoke_test; COMBAT_SYS §5, §9, §10].

---

8. THE TUNING FIREWALL — shapes and bindings here; numbers at Phase 5M

**Every numeric constant in the combat system is deferred to the Phase-5M balance audit (which has

never run) or a benchmark day.** This doc defines SHAPES and BINDINGS; any number it shows is

illustrative shape, not a locked value, and is labeled as such. Bound here, valued there:

cost-class→damage-range mappings, defensive timing windows → Phase 5M (COMBAT_SYS §1.5, §3.1;

structure locked at Session 5H, numbers deferred).

are illustrative shape from COMBAT_SYS §4, NOT locked), withdrawal_timer steps, adaptation_gain

rates → Phase 5M balance audit + BENCHMARK-DAY where they need the 5090 to profile at scale.

Range note (reconciled with Step 3): density in these coefficients is the normalized resultant

d_local ∈ [0,1] (defined in Step 3 as clamp(tier_baseline × WS_024/2.0, 0, 1)), NOT the

raw WS_024 multiplier ([0.0, 2.0]) — a coefficient like 0.6 + 0.4×density is written for the

[0,1] resultant and would mis-scale if fed raw WS_024. The two quantities are never interchangeable.

Phase-5M analog, §6.4), BENCHMARK-DAY on the 5090.

The greybox (§7) proceeds on illustrative shapes; a faithful TUNED build cannot exist until Phase 5M

runs as its own workflow (ROADMAP §3 row 3) [SRC: COMBAT_SYS §1.5, §3.1, §8, §12; ROADMAP §3].

8.1 — The PARAMETERS BLOCK (the enumerated combat tunables)

Mirroring Terrain §3's owned-parameter table so §8's firewalled tunables are enumerable, not prose-only.

Owner-class is the five-doc triage vocabulary: PHASE-5M (the balance-audit numbers) ·

BENCHMARK-DAY (needs the 5090 / a perf run to pick a default) · JOSH-RULES (canon/system-canon).

Every value below is deferred — this table binds WHERE each lands, not the number.

ParameterTypeOwner-classWhere the value lands
dial_telegraph_slack coefficient (e.g. 0.6 + 0.4×d_local)float curve over d_local ∈ [0,1]PHASE-5MUGameplayEffect magnitude / UGameplayModMagnitudeCalculation (Step 1/3)
dial_window_width coefficient (e.g. 0.7 + 0.3×d_local)float curve over d_local ∈ [0,1]PHASE-5MGameplayEffect magnitude (Step 1/3)
dial_well_latency coefficientfloat curve over d_local ∈ [0,1]PHASE-5Mrecharge-well timer Task (Step 2)
answer_pruning step (valid-solution thinning per tier)int/enum over the 5 tensionsPHASE-5M + JOSH-RULES (which answers prune)move-selection scorer / StateTree condition (Step 2)
tell_windup_ms / punish_window_ms / cooldown_msint (ms)PHASE-5M + BENCHMARK-DAYStateTree timer Tasks (Step 2)
sigma_bound (±1σ floor/ceiling magnitudes)float (abs units)PHASE-5MSigma Constraint in the GameplayEffect exec / scorer (Step 1/2; CVD §17.13)
adaptation_gain (habit-vector learning rate)float [DIAL]PHASE-5Mplayer_habit_vector scorer bias (Step 2)
withdrawal_timer step (vril_density -= step on expiry)float [DIAL]PHASE-5MWithdrawal clock Task (Step 2/§4.7)
integrity_band_delta (L1..L5 heal/dmg/vuln %)float (%) on the PLAYER onlyPHASE-5Mplayer GameplayEffect (Step 1 firewall — never on an enemy)
restraint_budget clockint/floatPHASE-5M + JOSH-RULESenvironmental-boss StateTree (Step 6)
env_cycle_period_s / env_phasefloat (s)PHASE-5M + JOSH-RULES (per-arena substrate)arena periodic StateTree + Quartz (Step 3/5; read-only to the dial)
runtime-inference budget (latency P99, VRAM, quant, gen/s)mixedBENCHMARK-DAYthe runtime perf audit on the 5090 (§6.4)

---

9. THE SPIKES + UNKNOWNS

Every row is a genuine open question; none is settled by this doc. Class uses the five-doc triage

vocabulary — JOSH-RULES (canon/CVD/hard-line/§17/system-canon — Josh decides) · ENGINEERING-SPIKE

(bounded build work, no doc answer exists) · BENCHMARK-DAY (needs the 5090 / a perf run to pick a

default) · PHASE-5M (the balance-audit numbers). Trigger = what gates it; Owner = who resolves it.

#SpikeClassTriggerOwner / note
C-1No combat/runtime section in T1_Build_Pipeline_Contracts — this doc has no contract parentENGINEERING-SPIKEbefore the combat lane is a first-class pipelineadd a §11 combat/runtime section to CONTRACTS naming this doc as its Translation Doc (ROADMAP §3 row 1)
C-2Win-condition enum (§5.1)JOSH-RULES— (RULED)✅ RULED-CLOSED (D-COMBAT-TD R3, 2026-07-19): a 9-verb win_condition enum + a REQUIRED win_shape axis; bookend verbs (witness/seal/endure/none) stay authored exceptions. UNBLOCKED for §4 declare + back-fill
C-3Three-axis names + definitions + the mandatory character-engagement definition (§5.2–5.4)JOSH-RULES— (RULED)✅ RULED-CLOSED (D-COMBAT-TD R1/R2/R4, 2026-07-19): Patterns/Puzzles/Preparation in order + the decode-vs-investment boundary + the R2 free-knowledge-route rule; character-engagement = a STANDALONE 8th Composure node (NOT the astral node)
C-4Sub-boss Pillar-8 scope + the 7/10/5 mode-vocabulary reconciliation (§5.5)JOSH-RULES— (RULED)✅ RULED-CLOSED (D-COMBAT-TD R5/R6, 2026-07-19): mains carry the mandatory character node; a machine chapter-floor gate (sub-ladder ≥3 modes) lands now in harness/check_boss_axes.py; the 7 CVD modes own combat-texture, the 5 booleans are a SEPARATE §16 pacing-beat check (rollup claim rejected), the 10 categories advisory; 4 off-canon cells (CH_47/48/70/71) = a bounded micro-ruling to follow
C-5The boss schema EXTENSION (§4)ENGINEERING-SPIKE (gated on C-2/C-3)before the BOSSJSON rich model + 281 rows carry machine combat columnsdeclare in registry_extensions.json + fidelity_baseline.json, re-baseline, gate green — NOT applied by this doc
C-6Combat runtime state → save: new ws.* keys vs WS7 sim vars; mark_write shapeJOSH-RULES (canon half) + ENGINEERING-SPIKE (typing)typing before persist✅ CANON HALF RULED-CLOSED (D-COMBAT-TD R8, 2026-07-19): mint composure_node_mastery (WS_041) + banked_tell_reads (WS_042) as canonical Worldstate rows; live Composure + d_local get NO keys; WS_019 ratified as the mark_write home (forward_track = a build-time index). REMAINS OPEN: FWorldStateValue typing → the UE5_BUILD Step-10 spike
C-7GAS-vs-custom for Composure/dial/formulaENGINEERING-SPIKEbefore Step 1 is trusted at scaleRECOMMEND GAS; verify the 5.8 AttributeSet-init deprecation path in the greybox
C-8StateTree-vs-BehaviorTree for boss AI + the utility scorer standing in for "GOAP"ENGINEERING-SPIKEbefore Step 2 is trustedRECOMMEND StateTree (5.8 default, production-ready 5.7); no first-party GOAP exists
C-9The recall packs exporter atop recall.pyENGINEERING-SPIKEbefore runtime context-pack population startsbuild in harness/; prototype hand-authors one pack (§6.2)
C-10Balance numbers — damage/σ/ms/dial coefficients (§8)PHASE-5Mbefore any faithful tuned buildrun Phase 5M as its own workflow; greybox uses illustrative shapes
C-11Runtime-inference perf budget (latency/VRAM/gen-s) + the 14B referenceBENCHMARK-DAYbefore the runtime layer's perf is trusted at scale5090; the 3–4B ship target + deterministic spine run now
C-12Launch posture — which entity classes ship runtime-gen ON (§6.5)JOSH-RULES— (RULED)✅ RULED-CLOSED (D-COMBAT-TD R7, 2026-07-19): bosses + generic ambient fauna ON (boss whitelists exclude Dreaming/songline/joik, HL_0007); community/cultural NPCs + folklore-bearing fauna authored-only; untagged high-care defaults authored-only; two-reviewer pre-launch audit; cite HL_0002 + HL_0003/0005/0007
C-13Chaos destruction perf + the D-verb→feature binding at scale (§5, Step 5)BENCHMARK-DAY + ENGINEERING-SPIKEbefore environment-combat is load-bearing across regions5090 perf; WS7 T0_Environment_Grammar_Registry supplies the verb set
C-14Boss-combat-state event → cinematic trigger (cross-lane)ENGINEERING-SPIKEbefore boss cinematics fireresolves the cinematic lane's spike 4 — a StateTree/GameplayTag event (Step 7)
C-15Live protected-chapter source contradictions (Ch 57 fauna combat; Ch 43 region; Ch 59-63 order; Ch 23-vs-25 anchor)JOSH-RULES— (RULED)✅ RULED-CLOSED (D-COMBAT-TD R9, 2026-07-19): Ch 57 = environmental + astral ONLY (no fauna cull); Ch 43 both regions (Appalachia + Gullah/Sea-Islands); Ch 59-63 order = 59 Africa / 60 Asia / 61 Europe / 62 Americas / 63 Pacific; anchor #2 = Ch 23 (T1_Combat L222 locked, BE_0023 token). Ledger D-3/D-4/D-5 + anchor #2 closed

---

10. Per-boss / per-encounter build checklist

The repeatable loop a boss row drives once the §5 rulings + §4 extension land. Precondition: the boss's

docs/spine/CH_NN.md entry passes check_spine_graph.py and the chapter's region page is Build Ready.

1. Extract — pull the boss + sub-boss rows for this chapter from T0_Boss_Encounter_Registry +

the spine main_boss_win_condition / verb / axis prose; resolve win_condition, composure_nodes,

axis_split, signature_counters per §4/§5.

2. Attributes — author the boss ASC + UAttributeSet (Composure sub-nodes per composure_nodes;

vril_density read from the arena's realm+site density band, §2.2 — never Z/latitude).

3. Abilities + phases — primary/secondary verbs as GameplayAbilities in different modes; phases as

StateTree states + GameplayTags; transitions per phase_trigger, escalation per escalation_vector

(evolve-not-swap verified: no state pops a prior state's Tasks).

4. Clocks + adaptation — the [DIAL]-scaled clocks off vril_density; player_habit_vector biases

the Sigma-bounded move table; the Withdrawal clock steps density on expiry (never a damage spike).

5. Character node — the mandatory character-engagement Composure node (main bosses; §5.4),

integrity-routed.

6. Environment — bind the arena's WS7 environment-grammar features + D-verbs (Chaos), respecting

alteration_permanence_default (C2 — sacred hard_blocked, Evil scars heals_over).

7. Win + death economywin_reward / death_reward wired (Hades on both; banked tell-reads;

recharge-as-checkpoint; graduated failure for environmental bosses).

8. Worldstatews_writes call the UWorldStateSubsystem (Step 7); the boss-combat-state event

emits for the cinematic trigger (C-14).

9. Runtime-gen (optional, upside) — attach the boss's recall packs context pack + the §6 barks

leg; validator + fallback active; off for high-care entities per C-12.

10. Validate — Pillar-8 gate: axis_split no 0; ≥2 modes (main = full blend + character node);

≥1 counter/signature + ≥2 across builds; no enemy-stat difficulty delta anywhere (§2.1); the

chapter's already-populated mode_variety_check 5-boolean row reconciled against the 7 modes (C-4 —

not re-populated); run_gates.py UNPIPED green after --emit-baseline.

This doc updates as the §5 rulings land, the §4 extension is declared, and the first greybox surfaces

edge cases — per the versioning discipline in §1, a Translation Doc refinement, not a doctrine

amendment, unless a build surfaces an actual canon gap (then it flags for Josh).

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