PRE_5090_BUILD_PLAN_VOL2.md

programs/PRE_5090_BUILD_PLAN_VOL2.md

PRE-5090 BUILD PLAN — VOLUME 2 (the enhanced item source, reconciled)

Status: ACTIVE — the authoritative item source for the vertical-slice window going forward. SLICE
RESCOPED 2026-07-27 (Josh RULED, fifth + seventh sittings): the slice is PROLOGUE→CH 13, built
Ch 2-13 first then Prologue + Ch 1. §A.0 carries the ruled shape and WINS over any Ch 2-5 boundary
statement elsewhere in this volume; the Ch 2-5 statements that describe what was BUILT stay accurate
and are not retro-edited.
This volume supersedes docs/PRE_5090_BUILD_PLAN.md §§3–11 as the ITEM registry (the ledger,
gating model, critical-path narrative, and decisions §12 in that doc remain current and are pointed
to from here). Assembled from the 8 verified plan sections + both fresh-context critics
(tasks/wavckc3ou.output: citeCritic GO_WITH_FIXES · cohereCritic GO_WITH_FIXES), with all 4
citation fixes applied and all 13 coherence findings resolved under single-owner discipline:
every item has exactly ONE id, ONE section home, ONE wave; cross-references replace duplicates.
Self-contained: header (directives · density curve · canon-first item law · gating/tag law) →
RECONCILIATION LEDGER → the 8 reconciled sections → the rebuilt MASTER WAVE QUEUE (with the cut
line) → the DECISIONS REGISTER → WHAT-THIS-DOES-NOT-CLAIM.

---

0. THE DIRECTIVES (Josh, 2026-07-24 — verbatim intent, binding on every section)

1. Target = the CH 2-5 VERTICAL SLICE: full playthrough, cross-chapter progression, 100% complete

structure at max honest pre-5090 polish. The 5090 + book scans arrive in 2-3 weeks; post-5090 =

full generative passes (VFX/SFX/cinematics/HUD art/music) + the deep-read enrichment pass over

everything (weavings, culture, side quests, relationships).

2. The playable-game surface has gaps the plan must close (bindings, quest log, lock-on, hit

confirmation, per-weapon/ability presentation...). The plan needs SIGNIFICANT enhancement.

3. The living-world substrate is required, grounded in real regional biota/geology: fauna, herbs,

minerals, trades, the ability book, + unnamed members.

4. CANON-FIRST (Josh caught "new" labels on documented canon): every item carries a canon citation

or a positive-controlled absence proof. Prior work is NEVER re-invented.

5. FULLY AUTONOMOUSLY TESTABLE: the machine is the alpha/beta tester (WS-10 expansion QT-1..22).

6. THE DENSITY MODEL (ruled): a completion-hours CURVE — full game ≈100-200h main / 1-2k h side+

weave / 8-10k h 100%. Ch 2-5 = early-game, deliberately lighter, seed-rich, opening the game.

Josh's in-conversation refinement SUPERSEDES the CANON_AUDIT #7 uniform-density reading.

The density curve (Josh RULED — recorded verbatim)

"THE DENSITY MODEL (ruled): a completion-hours CURVE — full game ≈100-200h main / 1-2k h side+weave /
8-10k h 100%. Ch 2-5 = early-game, deliberately lighter, seed-rich, opening the game. Josh's
in-conversation refinement SUPERSEDES the CANON_AUDIT #7 uniform-density reading."

What the ruling does NOT touch (LOCKED, still binding): the T0_Chapter_Index topography gate

(no-3-consecutive-same-type, mode-variety) and CVD §16/§4.4/§12.2 pacing — those govern *shape within*

the curve, not a flat amount. The curve is a refinement of #7, not a repeal of the gate. Made

measurable by the per-chapter content-budget + test-coverage scorecard (check_slice_scorecard.py;

spec in the PROGRAM FRAME §A.1 and the WS-10 §11.5.5 scorecard family).

The canon-first item law (binding on every item in every section)

Every item carries either a real canon citation (CVD / tier doc / registry row / prior plan id /

ratified proposal) OR a positive-controlled absence-proof (the search that WOULD have found it, run,

returning zero). Prior work is NEVER re-invented (directive #4). An "absence-proof" is a

first-class citation: a zero is only trusted with its positive control (memory:

*a-search-that-cannot-match-reports-zero*). The critics' phantom-fold corrections are standing

precedent, already applied, not re-litigated: lock-on/target-switch → P2.2; input set/dodge/interact/

wheel → P2.3 (+Q3.2); player HUD/UMG → P2.4; gather/harvest → P2.10/P2.5; journal → Q3.6; Grimoire →

Q3.8; char-progression UI → P2.8; LINK_0186 EXISTS (AB-13 killed); Boss_Encounter already speccs

BE_0002..0005 (16 rows — consume, never re-author); Creature_Roster = 132 rows (only numeric cols

blank); MV-1 free-travel is a phantom (Vimana-gated Ch 55, WGM §7 — the slice = ruled travel-beats

forward + free-roam within regions).

The gating model + TAG LAW (binding)

The RTX 5090 gates ONLY heavy generative INFERENCE (book deep-read/triage, photoreal 3D/asset gen,

music/voice/SFX generation, cinematic-video gen, VLM-OCR). **TAG LAW: only generative INFERENCE is

5090-gated.** Hand/mocap animation, hit-stop, damage numbers, camera shake, UMG, the color-independent

SHAPE-telegraph channel (an L1 accessibility FLOOR, T99_Translation_Combat §2.6) = BUILD-NOW.

Presentation lands in tiers: T0 greybox (BUILD-NOW) → T1 placeholder anim/SFX (BUILD-NOW /

GATED-EXT for mocap) → T2 final art (GATED-5090). The slice ships on T0+T1; T2 drops in

post-5090 without a re-wire. Tags: DONE · BUILD-NOW · CA (canon-author-now) · GATED-5090 ·

GATED-SCAN · GATED-EXT · BLOCKED-ON-BRIEF (waits on a Josh ruling).

---

RECONCILIATION LEDGER — the critics' 17 findings, resolved

Applied verbatim from tasks/wavckc3ou.output. Nothing below is re-litigated; each row is the

single-owner outcome the rest of this volume is built on.

The 4 citation fixes (cite-critic, GO_WITH_FIXES)

#Section · itemFix applied
C1ws4_regions RE.5HL_0032 dropped — it is the 12-side-questline-names lock, not the §17.1 routing anchor. Cite = HL_0003 only (already co-cited; routes the Ch5 antagonism through the datu/broker/devaraja-official, never the Batak/Khmer/Cham).
C2ws_ui tag-law + 11h + U11.29The SHAPE-telegraph "accessibility FLOOR" is T99_Translation_Combat §2.6 (L237-239), not CVD §2.6 (which is care-scope/pseudohistory). Corrected in the header tag-law, the 11h teaching-owner cite, and U11.29. (WS-1 CF-7 already cited it right.)
C3ws_lw LW-6T0_SFX_Registry = 12 data rows (9 vril-site + Sámi + Haiti Vodou + Australia), not "13 rows all vril-site+Sámi". Matches ws56_av AU-13's correct reference.
C4ws_lw LW-9DOC_MAP "T0_Persona_Index not yet created" is at L127, not L123 (content confirmed correct; line-number drift only).

*Cite-critic note (not a defect):* "DT_SceneAnchor 439 rows" (ws56_av/ws3_prog) is the **game-repo

build count**; canon T0_Scene_Spec_Registry has 16 rows. The drafts label 439 game-side, so it is

not a canon-cite error — retained as-is.

The 13 coherence resolutions (cohere-critic, GO_WITH_FIXES) — single-owner discipline

#FindingSINGLE-OWNER resolution
H1Cross-map transition/save backbone double-owned (ws3_prog PG-1/2/6 in WT vs ws4_regions RX.3 in M); PG-2 scheduled before its terrain dependency.Owner = ws3_prog PG-1/PG-2/PG-6. RX.3 → cross-ref (regions-side verified-by). Split by dependency: the save/advance spine (PG-1, PG-6, CN-2, SL-2) lands EARLY; PG-2's region-map handoff rides AFTER terrain (master W8), not the earliest wave.
H2Audio spine AU-8/AU-1/AU-2 in master W7 (late) but W-FEEL1 AU-10 hard-depends it.Owner = ws56_av. The audio spine (AU-8→AU-1→AU-2, then AU-3/9/10) moves to master W2 FEEL (early), per ws56_av's own FEEL assignment. W2 hit-confirm audio now has its spine.
H3ws1_feel W-AI (TG-3/4/6/9/11…) had no master §A.4 id; master W1 (in-flight) needs a subset.Owner = ws1_feel W-AI. Added to the master queue as W6 ENEMY-AI. W1 (in flight) pulls forward the minimal TG-3 (locomotion) / TG-9 (construct) / TG-11 (perception) its Ch2 sub-bosses (Ebu Gogo, BE_0002_S2) need; the full breadth is W6.
H4CN-1..9 double-specced (ws3_prog + ws56_av), conflicting waves; no scene-presentation wave in master.Owner = ws56_av (the scene-runtime home). ws3_prog's CN rows → cross-refs (quest-side binding view only). Added master W7 SLICE-PRESENTATION as the scene wave.
H5Ch-4 time-fluctuation duplicated (ws4_regions RX.1 vs ws_lw LW-4+LW-3); RX.1 omits its clock deps.Owner = ws4_regions RX.1 (the Ch-4 chapter integration). LW-4 folds into RX.1. LW-3 (Pawukon clock) + LW-12 (ws keys) stay ws_lw as the primitives RX.1 now explicitly depends on.
H6"Chakra Thunderbolt" (B_FA_002) rename triple-owned (CR-CHAKRA / U11.32 / AB-5), tag clash.Owner = AB-5 (ws_lw, CA, LANE-CANON / W-LW1) — one canon-side registry edit. CR-CHAKRA (ws1_feel) + U11.32 (ws_ui) → cross-refs. CF-5's cast label + U11.14's ability book must not surface it player-facing until AB-5 lands.
H7D-ECONOMY-MEDIUM conflict: synth_program §A.5 ruled it director-applied; ws_lw §11.6.4 holds pending-Josh.JOSH-PENDING everywhere. synth_program §A.5's "ruled — director" framing is CORRECTED (the medium sets a world rule → cardinal-canon → it flags). ws_lw §11.6.4 is authoritative. EC-medium + EC-vendor = BLOCKED-ON-BRIEF; EC-inventory (P2.6) + EC-treasure (LW-WIRE) proceed BUILD-NOW.
H8Input-binding wave inconsistent (master W3 early vs ws_ui folding all P2.3/IN into the late UI wave).Owner = ws_ui 11c (U11.7–U11.13). Wave corrected: the INPUT cluster rides master W3 (early), NOT the late UI wave — W-MOVE/W-AI depend on those binds. Book screens/menus stay in the UI wave (W10).
H9MG-1..4 (scored-interaction) had no master §A.4 home.Owner = ws3_prog MG-1..4. Homed in master W8 REGIONS (the per-region scored-content layer, WR3/WR4/WR5).
H10Master W2 FEEL omitted CF-4/CF-5 (W-PRES), CF-9 (boss variety), CF-10 (defeat).Owner = ws1_feel. CF-9 + CF-2/CF-7 → master W9 (W-FEEL2); CF-4/CF-5 → master W9 (W-PRES); CF-10 shell → W2, its boss-defeat STATE BLOCKED-ON-BRIEF (H13).
H11Most of W-MOVE absent from master §A.4 (MV-3 HL_0079 canopy course is an in-slice HARD LINE).Owner = ws1_feel W-MOVE. Full wave (MV-2/3/4/5/7/8/9) added to the master queue as W5 (with W-AI). MV-3 = the HL_0079 Ch-2 canopy course, scheduled.
H12P2.10 interaction + P2.6 inventory (hard deps of the gather/harvest lane) not scheduled; assumed-built.Owner = WS-2 (existing plan ids P2.10 / P2.6). Explicitly scheduled as W3 player-prereqs (cited, not re-invented) so W6 living-world + gather lanes do not assume-build.
H13CF-10 boss-defeat presentation in early W-FEEL1 but gated on unresolved D-DEFEAT-AXIS.Split. The player death/respawn SHELL is BUILD-NOW (W2). The boss defeat-STATE (FREE/PACIFY/PURGE→Withdrawal mapping + the 16-row win_condition/win_shape back-fill) is BLOCKED-ON-BRIEF D-DEFEAT-AXIS — no defeat state to wire until Josh rules (recommendation ready, decisions register).

Naming canonicalized: the boss HP=0 defeat ruling is D-DEFEAT-AXIS throughout (aliases seen in

drafts: D-BOSS-DEFEAT-AXIS, D-HP0-AXIS — same brief).

---

---

SECTION 1 — THE PROGRAM FRAME + THE 5090 HANDSHAKE

RECONCILED (Vol2): §A.4's original master queue is SUPERSEDED by this volume's MASTER WAVE QUEUE (orphans W-AI/W-PRES/W-MOVE/MG/CN now homed; audio-spine/input/backbone re-ordered). §A.5 D-ECONOMY-MEDIUM corrected to JOSH-PENDING (was wrongly 'ruled — director-applied'). D-HP0-AXIS renamed D-DEFEAT-AXIS (alias). §A.0–A.3 + §B (DR-1..8 handshake) remain current.

THE PROGRAM FRAME + THE 5090 HANDSHAKE

Front-of-plan restatement for the enhanced PRE_5090_BUILD_PLAN. Governs every section below it.
The named queue A/B/C/D is CLOSED (Josh can press Play and be inside Chapter 2, game 303e9f2). This
frame re-ranks the 2-3-week window to its real target and lays the drop-in surface the 5090 lands on.

---

A. THE PROGRAM FRAME

A.0 What this window is — the PROLOGUE→CH 13 vertical slice

RESCOPED 2026-07-27 (Josh RULED, fifth + seventh sittings). The pre-rescope text of this section read

"The whole pre-5090 program has ONE target: CH 2-5 as a full playable vertical slice" — that sentence is

now FALSE and is superseded here. The Ch 2-5 statements elsewhere in this volume are historically accurate

about what was BUILT and are not retro-edited; where any of them asserts the slice BOUNDARY, this section

wins.

The pre-5090 program's target is PROLOGUE → CH 13 as a full playable vertical slice (15 nodes) —

start-to-finish playthrough, cross-chapter progression carried across 13 regions, a 100%-complete

*structure* at maximum honest pre-hardware polish (Josh directive 2026-07-24 #1, scope re-pointed by the

2026-07-27 ruling). "Complete structure" ≠ complete fidelity: every beat, site, boss, fork, gather-node,

persona and weave-anchor is *present and playable* on placeholder assets; the final art/audio/cinematics

and full-fidelity enrichment ride the post-5090 passes (§A.3).

(Ch5 excursion) — chapter→region confirmed from spine headers + Zone Catalogs (ch2_5_slice_map.md).

The MASTER WAVE QUEUE's "CLOSED" statuses are correct for this leg and INCOMPLETE for the ruled slice.

paid for (the --slug/--chapter drivers), so terrain and staging are extension, not re-architecture.

Its eight region pages do not exist yet and are the slice's longest ungated pole (nine counting the

fairy_realm page, which sits on the Prologue+Ch 1 leg and has no template).

have matured the concept-art pipeline, the presentation ladder, the W-SPACE grammar and the QA belt.

Its terrain is invented (coordinates: N/A (dimensional)), so the deterministic DEM chain has no input

and the authored-terrain path is prototyped during the Ch 6-13 window before slice-end consumes it.

her at that departure — the to-be-continued act-break, and the Early Access base in full (no early cut).

design, while it is still designable); Gate 2 at the full-slice exit (the origin judgement, and the gate

that opens the Steam listing).

RESCOPE RE-DERIVE — the slice-DEFERRAL class (2026-07-27). The precedence rule at the head of this

volume covers two classes of Ch 2-5 statement: BOUNDARY statements, where this section wins, and

descriptions of what was BUILT, which stay accurate. A third class needs naming on its own, because its

rows are live instructions to the factory whose PREMISE the rescope inverts — each was decided while

Ch 2-5 WAS the whole slice, and the ruled slice now runs to Ch 13. For every row below the premise is

invalidated and the new answer is deliberately NOT written here: each re-derives at its own item, against

the ruled 15-node scope, before it is built or skipped. Treat an unre-derived deferral in this class as

un-decided, never as inherited.

is Ch7, Blacksmith+Herbalism, S.India)". Ch 7 is INSIDE the ruled slice, and the execution brief counts

four trade homes among the Ch 6-13 system debuts. Re-derive the introduction order and which trades

reach a real home in-slice.

home)" note now rests on a false premise. Re-derive its wave placement.

in Ch2-5; first at Ch7 Forge+Apothecary)". The first compound is now in-slice. Re-derive.

bullet in the screens section and by the slice-honesty paragraph — Q3.6's Ch-13 activation was OUTSIDE

the old slice and is now its TERMINAL node, and the brief's played-versus-told table lists the join and

the journal beginning at Ch 13 as PLAYED. Re-derive whether the journal ships as a correctly-empty

shell or as an activating system.

(journal activates Ch 13)". Re-derive once U11.18 re-derives.

ws56_av wave table — path-invariance was measured over Ch 2-5's forks. The ruled slice carries fifteen

forks, and the Prologue + Ch 1 leg carries the choosings. Re-derive path-invariance over Ch 6-13 and

Pro/Ch 1 before inheriting the deferral; the Josh #22 schema question is unaffected either way.

abilities across Ch 2-5) — whether the player is still Neophyte at Ch 13 is an open scope question now

rather than a settled one. Re-derive the in-slice tier span.

A.1 The density curve (Josh RULED — supersedes the uniform-density reading) + the scorecard spec

The density model is a completion-hours CURVE, not a uniform bar. Josh's in-conversation ruling

(2026-07-24, recorded verbatim in the directive pack):

"THE DENSITY MODEL (ruled): a completion-hours CURVE — full game ≈100-200h main / 1-2k h side+weave /
8-10k h 100%. Ch 2-5 = early-game, deliberately lighter, seed-rich, opening the game. Josh's
in-conversation refinement SUPERSEDES the CANON_AUDIT #7 uniform-density reading."

This RECONCILES the one genuine gap Dive #3 surfaced in the density cluster (owners=12, absent=1): *"the

spoken 'starting chapters less dense' ramp is unwritten AND conflicts with #7's uniform-density bar —

needs Josh to reconcile."* It is now reconciled: density is a ramp, Ch 2-5 sit at the low, seed-rich

end. What the ruling does NOT touch (LOCKED, still binding): the T0_Chapter_Index topography gate

(no-3-consecutive-same-type, mode-variety) and CVD §16/§4.4/§12.2 pacing — those govern *shape within*

the curve, not a flat amount. The curve is a refinement of #7, not a repeal of the gate.

The curve made measurable — the per-chapter content-budget + test-coverage scorecard (SPEC). Each

chapter carries a scorecard row; the early-game target is deliberately the lightest honest floor. Columns:

fieldsourceCh 2-5 early-game target
main_path_beatsspine DT_Beat, beat_type∈{combat,character,puzzle,...}~10-12 / chapter (as authored: Ch2-5 all = 12)
main_bosses / sub-bossesDT_BossEncounter (16 Ch2-5 rows exist)1 main + 3-4 sub / chapter
forksDT_Fork1 / chapter (Ch5 = 2)
side beats (L2)DT_SideQuestBeatseed-count LOW; deep side content post-5090
weave links (L3)Cross_Cultural_Link_Graph≥1 signature link / chapter (LINK_0186 = Ch4↔Ch5)
gather nodes (living-world)Zone-Catalog node rows2-4 / region
ambient personasT0_Character_Index rows / chapterCh2 names 7 (CHAR_0009-0015); floor, not ceiling
test-coverage %QT pack (§A.4 LANE-SOAK)100% of main-path beats have a passing auto-test

The scorecard is a gate artifact, not prose: check_slice_scorecard.py reads it, and no chapter is

"slice-complete" until its row hits target AND test-coverage = 100% of its main-path beats. This is the

density curve as an enforceable law rather than a feeling.

**SLICE-RESCOPE DEPENDENCY (2026-07-27) — the bands must EXTEND before this gate is armed past Ch 5, and

they are deliberately NOT set here.** The table above is a Ch 2-5 early-game band, and the ruled slice now

spans Prologue→Ch 13:

band over Ch 6-13 either passes vacuously or reports a chapter as thin against the wrong floor. Those

eight nodes need their own band values on the same ramp.

reference, not a content-budget node) and Ch 1 is declared out of corpus scope. They need DECLARED

SENTINELS — an explicit exemption the gate reads — not band values. Without them the monotonicity tooth

fires a FALSE regression the moment a 15-node slice is scored, which is the same defect class already

caught for Ch 77's exempt demand_ordinal.

gates shapes, relations and floors; it never asserts an absolute is "correct"). The band/sentinel pass is

its own item, and it is the precondition for arming QT-19 on any node past Ch 5.

name search returns zero while the same search returns hits for other Tools/*.py, so the zero is real

and not a search that cannot match. The band work therefore lands WITH the script, not as a retrofit.

A.2 The canon-first item law (binding on every section)

Josh caught "new" labels stuck on documented canon. The law, now enforced plan-wide: **every item in

every section carries either a real canon citation (CVD / tier doc / registry row / prior plan id / ratified

proposal) OR a positive-controlled absence-proof (the search that WOULD have found it, run, returning

zero). Prior work is NEVER re-invented** (directive #4). The critics' phantom-fold corrections are the

standing precedent and are already applied, not re-litigated: lock-on/target-switch → P2.2; input

set/dodge/interact/wheel → P2.3 (+Q3.2); player HUD/UMG → P2.4; gather/harvest → P2.10/P2.5; journal →

Q3.6; Grimoire → Q3.8; char-progression UI → P2.8; LINK_0186 EXISTS (kill AB-13); Boss_Encounter

already speccs BE_0002..0005 (16 rows — consume, never re-author); Creature_Roster = 132 rows (only

numeric cols blank). An "absence-proof" is a first-class citation: a zero is only trusted with its

positive control (memory: *a-search-that-cannot-match-reports-zero*). Where this frame reconstructs an

item from a 0-byte recovery file (§B, DR-2/DR-8), the 0-byte file IS the absence-proof and is flagged.

A.3 The post-5090 sequence (what the window is building the runway for)

The 5090 + finished book scans arrive in ~2-3 weeks and gate ONLY heavy generative inference (§0 gating

model; TAG LAW: only generative INFERENCE is gated — hand/mocap anim, hit-stop, damage numbers, camera

shake, UMG, the SHAPE telegraph accessibility floor are BUILD-NOW). Post-hardware runs in a fixed order,

and every stage lands as drop-in onto the surface this window leaves (§B):

1. DEEP-READS — full-corpus book triage + deep-read of the scanned library, VLM-OCR of non-Latin

scripts. The input substrate. (Gated: 5090 inference + Josh's scans.)

2. THE FULL ENRICHMENT PASS — over *everything*, grounded in the deep-read output: weavings, culture,

side quests, relationships, and every living-world row (FA/FL/MN/TR) taken from slice-placeholder to

full fidelity — pharmacology, ecology, folklore attribution, significance lenses, persona depth. This

is the pass that makes the seed-rich early chapters deep. It writes onto the stable ids + weave anchors

the DR handshake planted; it does not re-place or re-author structure.

3. GENERATIVE PASSES, PER SURFACE — VFX / SFX / cinematics / HUD art / music / 3D geometry / PBR

textures / voice. Each pass writes its generated asset path back onto a stable id through the

asset-path drop-in contract (DR-2). No pass re-stages the world; it fills the slots.

The whole point of the pre-5090 window is that stages 2-3 are pure fill, never rework. That is what

the handshake (§B) guarantees.

A.4 The re-ranked master wave queue — SUPERSEDED by this volume's MASTER WAVE QUEUE (retained below for provenance only)

The named queue A-D is closed. This re-ranks the remaining surface for the window, consuming every

section's item families. Ranking follows the directive: **E-residue first · nightly-soak + feel waves

early · terrain long-poles parallel from day 1 · canon-author lane on the canon side throughout.**

Two-repo discipline holds: game repo (C:/dev/Humanity/Humanity) and canon repo

(C:/dev/humanity-forgotten) are one-writer-each, so the persistent canon + soak lanes run *in parallel*

with the ranked game waves.

Persistent lanes (run the entire window, parallel to everything):

lanerepowhat runsstartsverified-by
LANE-SOAKgame + harnessNightly-soak cadence: the QT-1..22 test-org expansion runs the machine as alpha/beta tester over the whole built slice each night; Gauntlet-lite soak-player loops Ch2-5; bug ledger accretes; every fix leaves its regression ref (QA-8/QA-9 discipline).THIS WEEK, on this machinea nightly Saved/QA/TestReport + typed bug records; verdicts read from the report, never the exit code
LANE-CANONcanonThe canon-author lane: living-world substrate registries + repairs + weave anchors + the handshake's canon items (DR-2, DR-7, DR-8). Cited-or-cut; proposal-tier → ratified firewall.day 1normalize-doc critic per artifact; fidelity_baseline.json refreshed in the SAME commit; every row a canon citation

Ranked game waves (one writer, game side):

wavethemeitem families consumedtag mixdependsverified-by
W1 · E-RESIDUE *(chip E, IN FLIGHT)*Ch-2 becomes real, not a DEV-ADVANCE stub-walkthe DEV-ADVANCE beats → real sites/scenes/dialogue/sub-bosses (BE_0002_S1/S2, Ebu Gogo — chip G's Ch2 half)BUILD-NOWclosed A-DQA capture: every Ch-2 beat auto-advances on a real fight/scene event, zero N-presses; image critics GO
W2 · FEEL *(early)*the combat-feel presentation floor — the "it landed / it broke / it's coming" readsCF-1 hit-confirm · CF-2 hit-react/flinch · CF-6 Composure-break moment · CF-7 telegraph windup pose · CF-8 camera shake/punch · CF-11 player-facing combat HUD · CF-12 withdrawal-clock readBUILD-NOW (TAG LAW: all feel = build-now)W1image critics read hit/break/tell frames; SHAPE-telegraph channel asserted color-independent (accessibility floor)
W3 · INPUT + TRAVERSAL *(early)*close the Josh-named binding + movement gapsIN-1 bind all 8 verbs · IN-2 crouch · IN-3 dodge · IN-4 interact+prompt · IN-9 ModeSwitch/wheel · IN-10/CF-3/MV-6/TG-1 lock-on+switch (fold→P2.2) · IN-12 menu/log/map keys · IN-5 gamepad · IN-6 rebind persistence · MV-2 climb/mantle/vault · MV-8 stamina-coupled sprintBUILD-NOWW1input-map QA test: every verb+menu key bound; lock-on functional test passes
W4 · TERRAIN long-poles *(PARALLEL from day 1; chip F)*the 3 unbuilt region maps + material — the longest polegeneralize the flores-hardcoded import/dress/stage into region-parameterized drivers · derive_region_bbox per slug · bali/sumatra_java/angkor_khmer builds · W4.8 weightmap-driven biome material · fill empty zone bboxesBUILD-NOW (deterministic GIS)none (parallel lane)each .umap imported at true scale, coastline/relief frame director-verified; greybox QA green
W5 · LIVING-WORLD runtimethe runtime consumers of LANE-CANON's substrateTR-1 gather/harvest subsystem · FL-3 gather-node actor (weightmap-driven, FL-4) · N8.7/TG-5/TG-12 creature spawn+AI · LW-1 day/night · LW-2 weather/monsoon · LW-4 time-fluctuation windows (Ch-4 mechanic) · TG-8/LW-8 ambient-NPC/persona minimum · AB-1/AB-2 ability book + mastery ladderBUILD-NOWLANE-CANON substrate rows; W1forage round deterministic-fair (sigma pity); creature patrol/aggro QA; a lit ambient-village frame
W6 · Ch3-5 REGIONS + progressionstage the three remaining chapters on the built terrain; make cross-chapter realstage CH_03/04/05 beats/sites/forks/sub-bosses · PG-1/PG-2 cross-chapter advance + map transition (the backbone) · PG-3/PG-4/PG-6 flow + save-slots + unified payload · PG-7 unlock-on-progression · PG-10 integrity-band read · PG-11 difficulty presets · new boss-verbs (ATTUNE/PERCEIVE, DISARM/RESCUE, BALANCE, ENDURE/BIND) + the integrity-gated LETHAL fork (Ch5)BUILD-NOWW4 terrain, W5 systemsCh2→3→4→5 end-to-end playthrough with ws.* carried across 4 maps; full-slice soak green; every ws.* write ∈ baked 42
W7 · UI + AUDIO + ECONOMYthe shipping-RPG surfaces + the economy loopUI-1..10 HUD IA + quest-log/map/inventory/ability-book UMG/journal · AU-1 audio subsystem · AU-2 cue manager · AU-3 foley · AU-4 ambience · AU-5 music-state · AU-11 UI SFX · EC-1..7 economy items (D-ECONOMY-MEDIUM ✅ RULED Option B — unblocked)BUILD-NOWW2-W6 surfacesUI QA shots; audio events fire per surface; economy exchange round-trips per region
W8 · HANDSHAKE close *(game side; late-window, before hardware)*audit the drop-in surfaceDR-1 stable-id audit across all staged actors · DR-3/4/5/6 staging-leg audit + placeholder writeback round-tripBUILD-NOWall content wavesevery staged actor carries its canon id (W4.9 DataValidation); one placeholder mesh/SFX round-trips the AG7.5 state machine

Note: the DR staging legs (DR-3/4/5/6) are construction rules applied during W1/W5/W6 — an NPC,

gather-node or dwelling is placed carrying its stable id + asset handle at placement time — then AUDITED

in W8. They are not a separate late build; W8 is the proof, not the placement.

A.5 Decisions this frame carries

Per the standing decision protocol: never a bare question — alternatives, deep-dive, adversarial pass,

recommendation, strongest objection. Creative-within-vision → ruled and applied (show the path);

genuine cardinal/system-canon → briefed for Josh.

**✅ 2026-07-24 — Josh ruled ALL FIVE live briefs in-conversation ("I agree with all your
recommendations"): D-VO-POLICY = PARTIAL · D-STEAM-FORMAT = EARLY ACCESS · D-PRICING = P4 w/ the
$20-permanent-discount-off-$69.99 direction recorded verbatim (tier: AAAAA/Quintuple-A) · D-ECONOMY-MEDIUM =
Option B ruled · D-DEFEAT-AXIS = brief-at-the-feel-wave confirmed. The ship-side three live in
docs/ROADMAP_POST_5090_TO_SHIP.md's register (collapsed same landing); memory:
ship-rulings-vo-steam-pricing.**

D-ECONOMY-MEDIUM — ✅ RULED Option B (Josh 2026-07-24). EC-medium + EC-vendor UNBLOCK; the per-region exchange designs are LANE-CANON author items (cited to each region's real documented systems). The *model* exists

(T1_Trades_Master [ACTIVE v1.0] §9.2 "Trade Economy at System Level" — trade-interdependence, two

economies); the *medium* (coin/price/unit) does not, and the TR/loot/vendor loop is live in Ch2-5.

ahistorical for the era/regions. (B) Historically-real mixed exchange per region — barter +

weight-value + prestige-goods, NO universal currency early — RECOMMENDED. (C) No economy in the slice,

defer entirely — REJECTED: the gather→craft→trade loop is active content in Ch2-5.

mixed exchange, Neophyte-floor only, L2 treasure placed but sparse (early-game curve). Fits §9.2 +

immersive-teaching. Full vendor economy + balance ride post-playtest.

the slice needs only the Neophyte-floor exchange surface + L2 placement, not a full market sim; Josh

backstops via playtest. The only cardinal fork inside this (if it ever surfaces) is a

universal-coin-vs-never *canon* call — that alone would flag; the medium mechanics do not.

D-DEFEAT-AXIS (alias D-HP0-AXIS) — the boss defeat-axis design gap (C:/dev/Humanity/Humanity/TODO_CANON.md §"Design gap"

L194-207; QA image-critic v3/v4 recorded Boss HP 0/100 while Composure 100/100 and the fight continued).

Blocks CF-10 defeat presentation + PG death/respawn polish.

Composure-break-to-Withdrawal thesis and the zero-enemy-stat-delta headline. (B) **Composure-break-to-

Withdrawal is the sole defeat axis; boss Health is a non-lethal pressure/stagger track** — RECOMMENDED,

matches Pillar 8 + the observable-thesis invariant. (C) HP-0 triggers a stagger/execution *window* that

feeds Composure — hybrid; more feel, more surface.

death). This touches the combat pillar (system-canon) — briefed for Josh, recommendation ready; it

is Phase-5M-adjacent and the greybox has no death state to wire until it is ruled.

will die. Health 0 is death. If they're a specific boss or combatant that we don't kill for some

specific canonical reason because it'll gate story progression then they'd have to withdraw at 1

health."** HP is a REAL lethal track (Option A + the canonical clamp): HP-0 = death for killable

enemies — BE_0002's own row carries an explicit death outcome the Option-B analysis MISSED — and

the protected class floors at 1 HP → forced WITHDRAWAL (no-dead-end made mechanical), assigned

per-boss from registry data (wave G's win_condition back-fill), never a global rule.

Composure-break→Withdrawal remains the signature mechanic ALONGSIDE lethal HP. W2 builds the full

defeat state (both paths + tests) under this ruling; the H13 split is retired.

NG+ / prestige forks — NOTE ONLY (out of slice). New Game+ carry-over across "The Forgotten One"

(mastery, familiars, inventory, world-state, the un-pruned seventh vril-seat — decision #28) stays

proposal-tier and pending Josh. **Not in the 2-3-week window; recorded here so the save/progression

waves (PG-6, W6) leave the carry-over seam addressable, nothing more.**

---

B. THE 5090 HANDSHAKE (DR-1..8)

The drop-in doctrine. The post-5090 passes (§A.3) must be *fill, not rework*. That is only true if the

pre-5090 window leaves every surface addressable: a stable id on every actor, a single documented

contract for how a generated asset attaches to an id, placeholder-actor legs already placed for every

generable category, weave anchors planted for the enrichment pass, and a clean substrate for the

deep-read. DR-1..8 are that readiness pass. (Source note: the DR recovery agent's output file

tasks/a641d9b80d0fed63c.output is 0 bytes — the StructuredOutput-cap death class, disk work survives

but the return did not; DR-1..8 are reconstructed from the authoritative task directive + standing canon

homes + the RAG/substrate memory index, and each reconstructed item is flagged with its grounding.)

iditemcanon citation / absence-prooftagdependswave
DR-1Stable-id property contract on ALL staged actors. Every staged actor — SiteMarker, boss, NPC, gather-node, prop, scene anchor — exposes its canon stable id (site_id / boss_id / char_id / mesh_id_ref / scene_anchor_id) as a queryable UPROPERTY, so a generated asset resolves onto a KNOWN id with zero re-placement.AG7.1 mesh_id_ref + AG7.5 writeback-keys-on-id + W4.9 DataValidation (asserts every DataTable RowName still == its registry id — the recorded re-import-renames-a-row / chunk_id-collapse orphan class). Proven precedent: AHumanitySiteMarker.FindForSite keys on site_id (ch2_5_slice_map.md).BUILD-NOWW1 staging + T0.8 importsenforced from W1 onward (construction rule); audited in W8
DR-2THE ASSET-PATH DROP-IN CONTRACT — the one absent piece. Author ONE cross-pipeline contract (a T99_Translation contract amendment + registry_extensions.json column set) declaring, for EVERY generable surface (mesh / VFX / audio / music / cinematic / voice): the write-back column (ue_asset_path / mesh_id_ref / ue_sound_asset_path / …), the AG7.5 five-state machine (pending/in_progress/complete/rejected/regeneration_required), the generation_prompt_hash regen trigger, and the runtime resolver (FDataTableRowHandle→asset, fall back to placeholder).Absence-proof: the instances exist SCATTERED — T0.3 ratified ue_sound_asset_path×3 + cinematic-participant mesh_pipeline_type/ue_asset_path/binding_kind (T99_Translation_Audio.md, registry_extensions.json); AG7.5 mesh state machine; T0.13 cross-repo writeback manifest — but a grep docs/ for a UNIFIED asset-path/drop-in contract = 0. No single contract ties them. This is the absent piece.CANON-AUTHOR-NOWT0.3, AG7.5, T0.13LANE-CANON (early — it is the schema the whole handshake reads)
DR-3Staging leg — SEEDS. Placeholder-actor placement pass for L1.5/L2/L3 in-world seeds (environmental-storytelling props, vril-site seeds, quest/significance-lens seed triggers), each a stable-id marker mirroring AHumanitySiteMarker, so the generative + enrichment passes fill them.SIGNIFICANCE_LENSES.md (33 lenses) + the seed-wiring lane (MASTER_ENHANCEMENT_PLAN significance-lens framework) + L1.5 env-storytelling seams (LW-11/LW-12).BUILD-NOWW1/W6 stagingplaced during W1/W6; audited W8
DR-4Staging leg — DWELLINGS. Placeholder buildable/dwelling markers (home-base plots first) carrying stable ids + asset handles.N8.9 Dwelling_Registry + BuildableController (row counts author-locked, decision #9 — markers only, no content invented).BUILD-NOWW6placed during W6; audited W8
DR-5Staging leg — NPCs. Placeholder-NPC pass: the Ch2 B10 seven named village NPCs (CHAR_0009-0015) + the ambient-minimum, placed as stable-id MetaHuman-slot markers so appearance/voice generation drops in.TG-8 (7 named NPCs + ambient minimum) + T0_Character_Index rows + CN5.8 (one in-engine MetaHuman + stable asset-id; Epic sunsets the browser Creator 2026-11-05 → build sooner).BUILD-NOWW5/W6placed during W5/W6; audited W8
DR-6Staging leg — GATHER. Gather-node actor placement (reuse AHumanitySiteMarker) driven by weightmap LayerInfo, each carrying its flora/mineral stable id + asset handle.FL-3 (gather-node actor, none exists) + FL-4 (region-distributed placement by weightmap LayerInfo) + FL-5/MN-4 (RngDropTable yield rows).BUILD-NOWW4 weightmaps, W5placed during W5; audited W8
DR-7Weave anchors. Plant the cross-cultural weave + significance-lens anchors on staged content (Grimoire nodes, Thread_Grid anchors, the signature slice link) so the post-5090 deep-read enrichment pass ATTACHES with zero re-placement.docs/proposals/CROSS_CULTURAL_WEAVE.md + docs/proposals/SIGNIFICANCE_LENSES.md + Q3.8 Cross_Cultural_Link_Graph (184 edges) + LINK_0186 CONFIRMED EXISTS (registries/T0_Cross_Cultural_Link_Graph/Sheet1.csv — Bali leyak↔Khmer krasue; kills AB-13, consume it).CANON-AUTHOR-NOWW5/W6 weave contentLANE-CANON; anchors land as chapters stage
DR-8The 3 wire-time RAG fixes. Before the post-5090 deep-read enrichment pass consumes the substrate, verify/repair the 3 known substrate-integrity defects, each with a positive control: (1) the silent chunk_id-collapse class (a constant chunk_id collapsed every non-PDF book while gates stayed green — treat harness/rag/ as under-verified); (2) the canon-rebuild-wipes-substrate-vectors class (--scope canon DROPped the SHARED vec table; index_manifest.json is shared — re-verify the gate holds); (3) the substrate region-key / query-time filter (chunks keyed on the CULTURAL slug, region_id→slug expands at QUERY time, substrate MUST be region-filtered at query time).Absence-proof: DR recovery file 0 bytes; reconstructed from the standing MEMORY index — silent-data-loss-chunk-id-collapse.md, canon-rebuild-wiped-substrate-vectors.md (FIXED+GATED — re-verify), substrate-region-key-ruling.md + region-page-pilot-and-substrate-filter.md. To be confirmed against the actual deep-read wiring.BUILD-NOW (harness)before any post-5090 enrichmentLANE-CANON / harness; gate-verified with a positive control each

Handshake exit condition. The window closes 5090-ready when: every staged actor passes the DR-1

stable-id audit (W4.9 DataValidation green); the DR-2 asset-path drop-in contract is ratified and a

placeholder mesh/SFX round-trips its five-state machine; DR-3..6 staging legs are placed and audited

(W8); DR-7 weave anchors sit on the slice's weave-bearing content; and DR-8's 3 RAG fixes are

gate-verified. At that point stages A.3.2 (enrichment) and A.3.3 (generative) are pure fill — the drop-in

doctrine holds and the 2-3-week investment converts to finished game without rework.

---

SECTION 2 — WS-1/2 COMBAT FEEL · MOVEMENT · TARGETING · ENEMY-AI

RECONCILED (Vol2): CR-CHAKRA → cross-ref to AB-5 (the single Chakra-repair owner, LANE-CANON/W-LW1, CA). AU-10 → cross-ref to ws56_av AU-10 (audio home). CF-10's boss-defeat STATE is UNBLOCKED — D-DEFEAT-AXIS RESOLVED 2026-07-24 (Josh overruled: rated-M, HP 0 = death; per-boss non-kill via the pip model; executed by R1 + R-DATA — see the FUN-REBUILD absorption map + the register). §G waves map to the MASTER WAVE QUEUE: W-FEEL1→W2 · W-TGT→W3 · W-AI→W5 · W-MOVE→W5 · W-FEEL2→W9 · W-PRES→W9.

WS-1 / WS-2 ENHANCEMENT — Combat Feel · Movement & Traversal · Targeting & Enemy-AI Breadth

The CH 2-5 vertical-slice enhancement of the combat/player lanes. The trunk built the data layer
(185 abilities, 72 weapons, the 16 slice BE rows, the 42-var worldstate, the §9.5 evaluator) and the
channel layer (C1.16 GameplayCue, native combat tags, the DamageExecCalc, the BE_0002 StateTree)
— but not the FEEL layer: every cue routes to a no-op notify stub, and every feel-read lives on
the debug Canvas HUD. This section closes that. Tag law (binding, §0 + the two dive critics): the
feel primitives — hit-stop, floating damage numbers, target flash, camera shake/punch, hit-react
states, the color-independent SHAPE telegraph channel, UMG — are deterministic BUILD-NOW; only the
final Niagara VFX / generated meshes/textures are GATED-5090, and final mocap/anim is GATED-EXT
(an external-service/hand-auth axis, never generative inference). Presentation lands in tiers:
T0 greybox feel (BUILD-NOW) → T1 placeholder anim/SFX (BUILD-NOW / GATED-EXT for mocap) → T2
final art (GATED-5090). The slice ships on T0+T1; T2 drops in post-5090 without a re-wire.

Positive-control (dive #1 repoCritic verification_done, both critics GO_WITH_FIXES): grep of game

Source/ returns 0 for CameraShake, HitStop, DamageNumber, HitReact, Flinch, Stagger,

Knockback, LockOn, UUserWidget/CreateWidget. Read of InputConfig (4 of 8 verbs bound; no

crouch/dodge/interact/lock-on/gamepad), HumanityCharacter/BossCharacter/GameplayAbility (lock-on =

"P2.2 deferred"; boss header "does not locomote"; targeting = nearest-in-800uu stub). The gaps are real

in CODE; the phantom-folds below are already-tracked plan item ids (fold ledger, §E).

---

A. The hit-confirmation stack + camera feel — *the single highest-leverage new wave*

Josh's named gap ("how the player KNOWS an attack landed"). Rides the DONE DamageExecCalc + C1.16

cue channel — zero new canon deps; the highest "does it feel like a game" delta per engineer-hour.

idcanon citation / absence-prooftagdependswave
CF-1Absence: DamageExecCalc.cpp:151 fires the Hit cue → no-op notify (GameplayCueNotifies.cpp:11); grep `HitStop\DamageNumber\Flash\TimeDilation=0. Seam: C1.16 channel proven (plan §3). Deterministic hit-stop (global SetGlobalTimeDilation` micro-freeze) + target-material flash + floating damage number on the existing Hit cue.BUILD-NOWC1.5/C1.16 (DONE)W-FEEL1
CF-6Absence: DamageExecCalc.cpp:189-199 = tag + stub cue + tone + telemetry; the Pillar-8 payoff is invisible outside the debug HUD. Canon: the node-break IS the signature (T99 Step 4; COMBAT_SYS §5). The on-screen Composure-BREAK MOMENT: hit-stop + full-screen flash + camera punch, fired alongside RecordNodeBreak.BUILD-NOWCF-1W-FEEL1
CF-8Absence: grep `CameraShake\CameraShakeBase=0; HumanityCharacter camera = plain SpringArm+Camera. Deterministic UCameraShakeBase` on hit-dealt / hit-taken / node-break / boss-strike-windup; a core feel primitive, not scoped as a WS item before now.BUILD-NOWP2.1 cam (exists)W-FEEL1
CF-12Absence: WithdrawalClock steps WS_024 (BossStateTreeNodes.h); DebugHUD shows the raw float, no pressure read. Canon: the Withdrawal clock is the anti-enrage signature (T99 §4.7; COMBAT_SYS §4.7 — vril_density -= step, never a damage spike). A "the world is withdrawing" read: tells visibly tighten, wells visibly slow — the enrage-replacement made legible.BUILD-NOWboss ST (DONE)W-FEEL1
CF-10Absence: TODO_CANON "greybox has NO death/stagger/defeat model for HP=0"; P2.14 = ws.* writeback only. Canon: win_condition RULED (T99 §5.1) — REDUCE "still blended, never a pure DPS check"; BE_0002 = FREE ("the fiction of the polo's hold breaking and Rangku Wera freed", CH_02.md L230); no-dead-end §2.5. Greybox death-cam/respawn shell + a boss defeat/withdrawal state (never a death ragdoll for a FREED boss). Carries brief D-BOSS-DEFEAT-AXIS (§C).BUILD-NOWCF-1; brief §CW-FEEL1
AU-10 *(xref → WS-6)*The AUDIO half of CF-1: hit/block/miss/crit cue taxonomy. This section owns the timing hook (the cue fires on the same frame as hit-stop); the SFX bank rides A6.5/A6.8.BUILD-NOWCF-1W-FEEL1 (audio → WS-6)

Verified-by (W-FEEL1): the WS-10 loop (QA-1/2/5/6 LIVE) — a functional test asserts global

TimeDilation dips within the hit frame and a DamageNumber widget spawns; **image critics read a

before/after capture pair** on the C1.18 rig (the standing visual-verification directive) and PASS the

BREAK-moment frame. Runs parallel to wave E (no shared file with the Ch-2 staging).

---

B. Enemy reactions, telegraph & boss-attack variety

idcanon citation / absence-prooftagdependswave
CF-2Absence: grep `Flinch\Stagger\Knockback\HitReact=0; the boss never visibly reacts, so hits read inert. Greybox hit-react anim/pause states per damage + per node-break. Final mocap = GATED-EXT`, the react state machine is BUILD-NOW.BUILD-NOWCF-1W-FEEL2
CF-7Canon (accessibility FLOOR, not gated): T99 §2.6 + Step 1 — "multi-channel readability is a non-negotiable L1 requirement … the Cue carries an audio + shape channel, not color alone"; DIFF Attunements. Absence: BossCharacter.cpp:474 Telegraph → stub notify; the shape channel is designed, unrendered. A windup pose + a color-independent ground/boss shape decal danger indicator. Critic-corrected tag: BUILD-NOW (deterministic decal render), not 5090-gated.BUILD-NOWCF-1W-FEEL2
CF-9Canon: BE_0002 phase_breakdown_object = "2 phases: jungle stalk; cornered frenzy … (evolve-not-swap: adds feint follow-ups on the lunge + shortened telegraphs)"; escalation_vector RULED enum `tighten_telegraph\multiply_telegraph\add_layer (T99 §4, D-COMBAT-TD); Pillar-8 evolve-not-swap "a transition pushes a layer, never pops one" (T99 §2.8/Step 2). Absence: BossCharacter StrikeNow = single MM_Attack_01` swing; P1/P2 labels drive HUD text only. Build ≥2-3 greybox attack shapes per phase from the phase prose, honoring evolve-not-swap.BUILD-NOWCF-2; C1.7 STW-FEEL2

Verified-by (W-FEEL2): a functional test asserts a HitReact state is entered on damage and that P2

adds (not swaps) P1's tasks; an image critic PASSes the telegraph shape in greyscale (the L1

accessibility floor — legible with color stripped). Sequence W-FEEL2 with / just after wave G (G's

sub-bosses + Ebu Gogo consume the react + attack-shape substrate).

---

C. Lock-on & targeting — the P2.2 build spec (the four dive-ids fold here; do not re-mint)

Josh's named gap. CF-3 / MV-6 / TG-1 all restate plan P2.2 ("soft lock-on + toggle +

target-switch"); the input action IN-10 rides P2.3 (UI/input section). This section supplies the

build spec for the P2.2 item; the key binding is cross-section (P2.3), the reticle UMG is

cross-section (P2.4). One net-new sub-item survives the fold: TG-2, the targetable-set abstraction.

idcanon citation / absence-prooftagdependswave
P2.2 (folds CF-3, MV-6, TG-1)Absence: GameplayAbility.cpp:100 + HumanityCharacter.h:33 "lock-on not built here (P2.2)"; targeting = nearest-in-800uu stub. Plan: P2.2 "follow cam + soft lock-on to nearest hostile … toggle + target-switch". Build: soft-lock acquire, target cycle, on-screen indicator, camera yaw-blend to target, strafe-orientation.BUILD-NOWP2.1 cam; P2.3 key *(xref)*W-TGT
TG-2Absence: P2.2 locks "nearest hostile with Composure", but slice fauna (Komodo CR_0001), Ebu Gogo (CR_0010), and constructs carry no Composure. A ITargetable interface + hostility query spanning non-Composure targets — the abstraction P2.2's "with Composure" wording omits.BUILD-NOWP2.2W-TGT
TG-7Absence: DebugHUD.h draws only player/boss bars; no aggro/alert/off-screen indicator. A threat/aggro-state read (debug indicator now, T2 art later) so the player can tell an enemy detected them.BUILD-NOWTG-11W-TGT

Verified-by (W-TGT): a functional test acquires the nearest ITargetable, cycles to the next, and

asserts the camera yaw-blends; a second asserts a non-Composure fauna actor (CR_0001) is a legal

lock-on target. This wave makes multi-enemy combat (W-AI) playable — sequence it before W-AI's

N-enemy encounters.

---

D. Per-weapon / per-ability presentation tiers

The presentation-tier model, grounded in canon: **T1_Combat_System_Spec §5.2 (Per-Weapon Canonical

Structure)** — every weapon carries 4 abilities + a Mastery ability at Proficiency 8 + a Legendary form

at 99; and the cast_pattern enum (`instant | charge_hold | sustained_drain | channeled | passive |

ambient`, §Damage Formula) that the 185 abilities already populate. The engine reads none of it.

idcanon citation / absence-prooftagdependswave
CF-4Canon: T1_Combat_System_Spec §5.2 (4 abilities + Mastery@8 + Legendary@99 per weapon); §Block/Parry/Dodge (per-class defensive properties — Rapier Parry, Madu Horn-Catch, Great-Shield Plant); T0_Weapon_Registry 8-col schema (72 weapons). Absence: weapon CSV has no moveset/anim/combo column; a single MM_Attack_01 swing. A weapon_class → greybox-animset map with light/heavy/combo timing structure so classes feel distinct. T0 timing BUILD-NOW; T1 anim GATED-EXT; T2 VFX GATED-5090.BUILD-NOWCF-1 cue seamW-PRES
CF-5Canon: T1_Combat_System_Spec §Damage Formula cast_pattern enum + T1_Ability_Tree cast_pattern/shape_primitive (185 rows populated); T99 Step 1 (verbs→UGameplayAbility, VFX→GameplayCue). Absence: GameplayAbility.cpp:46 fires ONE VrilPolarity cue for every cast; ability_sfx_id_ref_array EMPTY. A cast_pattern → greybox cast/travel/impact primitive so a charge_hold reads differently from an instant.BUILD-NOWCF-1 cue seamW-PRES
CR-CHAKRA *(canon-repair rider)*Canon-repair: T0_Ability_Tree_Registry/Sheet1.csv:110 B_FA_002,Chakra Thunderbolt — a vril-seat reframe residue (chakra→vril-seat naming per the Vril-Society/anti-fringe firewall). CF-5 renders the ability name in the cast label, so this must be repaired before it surfaces player-facing. Re-anchor within the 185 (never a 186th).BUILD-NOWW-PRES

Verified-by (W-PRES): an image critic confirms ≥3 visually-distinct cast primitives across

cast_pattern classes; a functional test asserts the light/heavy/combo timing window differs by

weapon_class; a grep asserts Chakra = 0 in player-facing ability labels post-repair.

---

E. Multi-enemy combat, enemy locomotion, spawn framework & non-boss AI

Today the enemy surface = one stationary 1v1 boss dist-checking GetPlayerPawn(0). The slice beats

need pursuit, N-enemy fights, fauna/NPC/construct/companion actors, and legible spawns. **All

deterministic BUILD-NOW; only meshes/anims are art-gated** (GATED-EXT/GATED-5090). Spawns obey the

CVD Pillar-1 Hybrid policy — three declared systems ONLY (CVD L168-170: *Aggro Magnet · Rift

Instability Zones · Antagonist Hunter Triggers*; executable test: any random encounter outside the three

= pillar violation). The faction director raises a weight the three systems read; it **spawns

nothing itself**, and the LLM never spawns (T99 Step 8; A.3-A.6). Living ecology is RULED

(migrate/regrow; progression-critical entities immune). The 16 slice BE rows (BE_0002..BE_0005_S4) are

canon — consumed, never re-authored; patrols owned by the runtime executor.

idcanon citation / absence-prooftagdependswave
TG-3Absence: BossCharacter.cpp strike = FVector::Dist; header "stalks + swings, does not locomote". Canon: the Ch-2 stalk-and-corner beat (CH02_B07→B08, BE_0002 phase_breakdown). Enemy AIController + CMC + navmesh path-follow. Foundational — unblocks TG-4 and wave G.BUILD-NOWnavmesh (W4)W-AI
TG-4Canon: BE_0002_S1 = Komodo+python pair; BE_0004 constructs "multiply"; CH_03 dual-serpent, CH_05 river-war backdrop. Absence: rig is 1v1 (GetPlayerPawn(0), one boss). N-enemy encounters + per-target damage + lock-on among several.BUILD-NOWTG-3; P2.2W-AI
TG-6Canon: CVD Pillar-1 L168-170 (three declared spawn systems + the visible-enemy default); T99 Step 8 (director raises a weight, spawns nothing). Absence: only AHumanitySiteMarker (arrival-trigger, non-combat). Spawn volumes + combat-encounter triggers at sites; the three-system random layer as the only random spawner (with the pillar-violation gate). *(Plan home: N8.7 spawner.)*BUILD-NOWTG-3W-AI
TG-9Canon: BE_0002_S2 = "materialized_superstition"; BE_0004 constructs "multiply"; CH_03 twisted-word, CH_05 pangulubalang. Absence: C1.13 env-boss protocol covers only the 6 non-damage canon instances — the materialized-argument / construct enemy class (often multiplying, fightable) is uncovered. A construct enemy class distinct from the 4-step protocol.BUILD-NOWTG-3W-AI
TG-5Canon: T0_Creature_Roster 132 rows (17 Flores); living-ecology RULED (migrate/regrow, progression-critical immune). Absence: no patrol/aggro/flee/leash class in Source. Placeholder-capsule fauna AI (C1.17/N8.7 homes); mesh/anim art-gated.BUILD-NOWTG-3W-AI
TG-11Canon: CH02_B05 Ebu Gogo stealth, B07 Rangku stalk. Absence: no AIPerception/sensing in Source; C1.23 covers PLAYER stealth, not enemy sight/hearing for aggro. A shared perception seam (sight/hearing cones) reused for enemy target acquisition.BUILD-NOWTG-3W-AI
TG-12Canon: the roster is data-authorial (§12 #9); ecology RULED. Absence: spawn_rate blank; no aggro/patrol/leash/flee columns — the runtime AI has nothing to read. Illustrative shapes build now (tuning firewall); final values authorial. Reuses the gen_row_struct struct-regen pattern (FA-2 precedent).BUILD-NOWTG-5W-AI
TG-8Canon: CH02_B10 names 7 village NPCs (CHAR_0009-0015). Absence: N8.2 AHumanityNpcCharacter unbuilt — no placeholder NPC stands in a village. Minimum ambient-NPC actor (placeholder capsule). *(Plan home: N8.2 — slice-minimum only; full persona = WS-8.)*BUILD-NOWTG-3W-AI
TG-10Canon: Shell familiar bonds Ch3 (inside the slice); paired-op Composure hook canon Ch73. Absence: no CompanionController/FamiliarPawn in Source (N8.5/N8.6 unbuilt). A following/targetable/leashing ally pawn (placeholder follower).BUILD-NOWTG-3; P2.2W-AI

Verified-by (W-AI): the CH02_SliceWalk asserts an enemy pursues the player across navmesh

(TG-3) and an N-enemy encounter deals per-target damage (TG-4); a spawn test asserts no random spawn

fires outside the three declared systems (the Pillar-1 gate). **W-AI is the prerequisite substrate for

wave G** (sub-bosses + Ebu Gogo) — land W-AI at/before G.

---

F. Movement & traversal mechanics — *the slice window (HL_0079 sits inside Ch 2)*

A 173 km island with a 2 352 m volcanic spine, ringed by the live FloresOcean plane, is crossed today

only by the DEV M-key teleport. The Ch-2 canopy agility course is a HARD LINE inside the slice. This

section owns the traversal mechanics; the key bindings (crouch/dodge/interact) ride P2.3

(UI/input, cross-section); site-to-site fast-travel (MV-1) rides the transitions section.

idcanon citation / absence-prooftagdependswave
MV-3Canon (HARD LINE): CH_02.md L230 "agility_course the Flores forest canopy, canopy-horizontal movement, with a forest-pod Puzzle variant … one course per chapter across three variants [SRC: T0_Hard_Lines @ HL_0079]"; T1_Combat_System_Spec §Agility Course System (77 courses; Standard/Hardcore/Puzzle; Ch2 = "collecting 12 forest pods … without stopping"). Absence: grep agility/course = 0. The Ch-2 canopy course runtime (timed traversal + letter-fragment FLORES + the 12-pod puzzle variant).BUILD-NOWMV-2W-MOVE
MV-2Absence: HumanityCharacter.cpp CMC has no climb/mantle/vault/swim mode (plan P2.1 specs walk/run/sprint/jump/crouch only). Canon: the canopy course + volcanic spine demand them. Custom CMC modes: climb/mantle/vault.BUILD-NOWP2.1 CMCW-MOVE
MV-5Absence: FloresOcean plane is LIVE but no water PhysicsVolume / MOVE_Swimming / dive — the player falls in and cannot swim. Canon: TODO_CANON WS-4 "real water pass open". CMC swim config + shore-water volume.BUILD-NOWMV-2W-MOVE
MV-4Canon: T1_Combat_System_Spec §Dodge Mechanic — Fluid Dodge (T1 Water), Wind Step (T1 Air), Stone Skin (T1 Earth) are the mobility ability-class; DT_AbilityTree ability_class=mobility rows. Absence: C1.6 grants only the 8 combat-MODE verbs; no dodge exists. Wire the mobility abilities (dodge/dash) that ALTER movement, not Composure. *(Binding = P2.3, cross-section.)*BUILD-NOWC1.6 (DONE)W-MOVE
MV-7Canon: CVD Pillar-10 L234/L706 "movement modifiers (jungle vs desert vs steppe vs ice)"; the Zone-Catalog footfall_surface column exists as the data hook (T0.2 DONE). Absence: no engine consumer. A footfall_surface → movement-modifier reader (jungle-slow / scree-slide) — the Pillar-10 kinesthetic-differentiation seam, illustrative constants under the tuning firewall.BUILD-NOWMV-2W-MOVE
MV-8Absence: Input_SprintStart raises MaxWalkSpeed with no Stamina cost; Stamina is combat-only. Canon: climb/swim/dodge draw stamina (T1_Combat_System_Spec resource model). Couple the Stamina attribute to the new movement modes.BUILD-NOWMV-2; P2.7W-MOVE
MV-9Absence: CMC falling works but nothing consumes fall height; HP=0 has no model (shares CF-10). Canon: the 2 352 m spine + jump + courses need a fall model. A fall-damage / hard-landing doctrine (numbers = tuning firewall).BUILD-NOWCF-10W-MOVE

Verified-by (W-MOVE): the Ch-2 Flores canopy course completes headlessly via the WS-10

AI-playtest InjectInputForAction path (12 pods collected, no stop) — the HL_0079 course is the wave's

formal exit; a shoreline test asserts MOVE_Swimming engages at the water volume; a footfall test

asserts the jungle modifier applies over a footfall_surface=jungle zone; a VERTICAL exit test

asserts the climb mode ascends a tagged vertical surface (v1.3 fold entry 54 — the canopy course is

horizontal, so without this the wave closes green with no vertical capability proven; if the schedule

cannot absorb the CMC climb mode, ship the fallback instead: traversal_capability_pending tags on

vertical zone rows so the slope teeth stop certifying sites the player cannot traverse).

---

C-brief. D-BOSS-DEFEAT-AXIS — the boss HP=0 defeat model *(open brief, recommendation ready)*

The gap (TODO_CANON): the greybox has no death/stagger/defeat model for HP=0 — it blocks CF-10 / PG

presentation polish. Not a bare question — the alternatives, deep-dive, and recommendation:

the polo's hold breaking and Rangku freed (CH_02.md L230), not a corpse; violates §17.1 (the host

is a coerced victim) and the RULED win-condition enum (T99 §5.1 REDUCE "never a pure DPS check").

win_shape resolves), NOT HP=0. On win-condition met → a boss defeat/withdrawal state plays the

canon resolution (FREE → the hunter is freed and exits; PACIFY → yield; PURGE → the manifestation

purged). HP=0 is retained only as a fallback safety valve (the Ch-2 HP fallback at 15/18),

routed to the same withdrawal state, never a ragdoll for a FREE/PACIFY/PURGE win. Aligns with

no-dead-end (§2.5) + the RULED enum + the freed fiction.

Strongest objection to Alt 2: the win-condition→defeat mapping needs the win_condition/win_shape

columns populated on the 16 slice rows (declared in T99 §4, back-fillable from the phase prose) —

so the brief carries a small data dependency (16-row back-fill), not just an engine choice. **Rec:

Alt 2**, with the 16-row win_condition/win_shape back-fill riding the same commit as the CF-10 shell.

Josh backstops via playtest; the choice is reversible (a defeat-state swap), so erring toward the

canon-honest FREE model is the cheap error.

---

G. Wave assignment — the re-ranked queue for the 2-3-week window

Six new feel/traversal waves, slotted against the E/F/G/H residue. Ranked by leverage (feel-core

first — it is the largest "is this a game" delta and has zero new deps):

wavescopeitemsrides / blocksverified-by
W-FEEL1Hit-confirmation + camera feelCF-1 CF-6 CF-8 CF-10 (+AU-10 audio→WS-6)parallel to E; no shared fileimage-critic before/after pair + TimeDilation/DamageNumber functional test
W-TGTLock-on = the P2.2 spec + targetable-setP2.2 (folds CF-3/MV-6/TG-1) · TG-2 · TG-7blocks W-AI multi-enemyacquire/cycle/yaw-blend test; non-Composure fauna targetable
W-AIEnemy locomotion · multi-enemy · spawn · fauna · constructs · ambient NPC · allyTG-3 TG-4 TG-5 TG-6 TG-8 TG-9 TG-10 TG-11 TG-12prereq for wave G; needs W-TGTSliceWalk pursuit + per-target damage; Pillar-1 spawn-gate test
W-FEEL2Enemy reactions · telegraph shape · boss-attack varietyCF-2 CF-7 CF-9with/after G (G consumes it)HitReact-state + evolve-not-swap test; greyscale telegraph image-critic
W-MOVECMC modes · HL_0079 course · mobility · regional modifiers · fall modelMV-2 MV-3 MV-4 MV-5 MV-7 MV-8 MV-9needs P2.3 binds (xref) + E/F terrainheadless canopy-course completion (HL_0079 exit); swim + footfall tests
W-PRESPer-weapon/ability presentation tiers + Chakra repairCF-4 CF-5 CR-CHAKRArides ability/weapon CSVs + W-FEEL1 cue seam≥3 distinct cast primitives (image-critic); per-class timing test; Chakra=0 grep

Residue-wave interlock: W-AI lands the enemy substrate wave G (BE_0002_S1/S2 + Ebu Gogo) needs —

G's Ebu Gogo pursuit = TG-3/TG-11, BE_0002_S2 = the TG-9 construct class; sequence **W-TGT → W-AI → G →

W-FEEL2. The T2 final Niagara/VFX art** for every CF/CF-* cue rides wave H / GATED-5090 (the

polish riders) — the T0/T1 feel ships now, T2 drops in without a re-wire. W-MOVE depends on the

P2.3 binding layer (UI/input section) for crouch/dodge/interact keys and on E/F for the walkable Flores

terrain.

Test-coverage rider (WS-10 / QT expansion): the QT-1..22 autonomous test-org gains three combat

packs this program adds — QT-feel (hit-stop frame + damage-number spawn + BREAK-moment image pair),

QT-target (acquire/cycle/yaw-blend + non-Composure targetable), QT-traverse (headless canopy

course + swim volume + fall model). The nightly soak (starting this week) exercises the SliceWalk with

the feel + AI waves live, so a feel regression surfaces as a failed capture the morning after it lands.

---

E-ledger. Phantom-fold & cross-section map — *nothing here is re-invented*

Applied verbatim from the binding critic corrections; every fold points at an already-tracked plan id so

no consumer builds a duplicate:

P2.3). Presented above as the P2.2 build spec, not new items.

P2.4 (UI section). This section fires the cue/feel events; P2.4 owns the widget home.

section owns the MECHANIC each binding drives (dodge motion, crouch state, interact dispatch); the

binding layer is P2.3's.

hooks; the SFX banks ride the audio lane.

cinematic listens for; the Sequencer side is WS-5's.

(out of the Ch2-5 slice window).

standalone 8th Composure node, D-COMBAT-TD R4); its binding = P2.3; its win-payoff (frees Rangku) =

the CF-10 defeat-axis brief. gather-at-water / recharge-as-checkpoint (Ch-2 first-water) →

P2.10/PG-5 (transitions/PG section).

---

SECTION 3 — WS-11 UI/UX & PRESENTATION LAYER

RECONCILED (Vol2): SHAPE-telegraph floor re-cited T99_Translation_Combat §2.6 (was CVD §2.6; cite-critic C2). U11.32 Chakra repair → cross-ref to AB-5 (single owner). The 11c INPUT cluster (U11.7–U11.13) rides the early INPUT wave (master W3), NOT the late UI wave (cohere H8) — W-MOVE/W-AI depend on those binds. HUD reads U11.1–U11.4 land in W2 FEEL (the CF-11 home); book screens/menus in W10.

WS-11 — UI/UX & PRESENTATION LAYER *(the playable-surface presentation layer; folds P2.4 + P2.5 + the dive UI/IN/MAP/PH/PF/ST/LOC clusters; ~100% BUILD-NOW)*

Why a workstream, not a P2 sub-row. The mappers found the playable surface is real underneath
and invisible on top: the ONLY HUD is HumanityDebugHUD (Canvas DrawText), the ONLY input path
is an 11-action IMC with 4 of 8 verbs keyless, and there is no map / pause / settings / rebinding /
subtitle / book / photo / loading surface anywhere in game Source/ (positive-controlled: dive-1
repoCritic grepped UMG · minimap · pause · photo-mode · loading = 0). P2.4/P2.5 named the HUD and
the loc-scaffold; §12 #26 bundled the rest as "no specs today." This WS is that bundle, specced and
itemised against the built runtime it renders (UQuestSubsystem Q3.3 DONE · GAS actor C1.1 DONE ·
WorldState T0.10 DONE · cue channel C1.16 DONE).
Tag law (binding, dive critics): UMG, damage numbers, hit markers, camera-shake reads, the
color-independent SHAPE telegraph channel (an L1 accessibility FLOOR, T99_Translation_Combat §2.6) are all BUILD-NOW
only generative INFERENCE is 5090-gated. The only gated residue here is final HUD/icon art
(+5090-final) and localized non-English string/VO content (GATED-SCAN); every runtime, widget,
and placeholder ships now. The dive tag over-gates (CF-11/CF-1/CF-6/CF-7 tagged +5090-final) are
corrected to BUILD-NOW here.
Two disciplines this WS enforces by construction:
- Reveal-gating (HL_0028). Substrate-perception (vril-signature/polarity reads) unlocks only at
Adeptus-Minor tier-6 (Ch-15 onset). The ability book, Grimoire, and any perception HUD MUST filter
by tier/arc so no late-arc name, description, or tier-6 read surfaces for a Neophyte in Ch 2-5. A
screen that cannot hide is not shippable — the gating IS the feature.
- Empty-state by design. The journal (Q3.6) and Grimoire (Q3.8) are hard-anchored to Ch-13/38/57;
in the Ch 2-5 slice they ship as *empty shells that are correctly empty*, not as stubs to be filled
later. The Ch-3 healer's-child seed is the first thing the journal is allowed to write.
[RESCOPE RE-DERIVE — see §A.0, with U11.18: Ch 13 is now the slice's terminal node.]

11a. HUD / UMG core *(folds P2.4 · CF-11 · the debug-HUD replacement)*

IDItemCanon citation / absence-proofTagDependsWave
U11.1WBP_HumanityHUD UMG framework — retire the Canvas HumanityDebugHUD: player bars, boss Composure bar, interact prompt, objective tracker slot, cue-driven statusplan P2.4 L367 (BUILD-NOW); absence-proof CF-11 ev HumanityDebugHUD.cpp Canvas-only, `grep UUserWidget\CreateWidget=0`BUILD-NOWC1.1✅ Q3.3✅ T0.10✅UI
U11.2Lock-on reticle + target indicator + threat/aggro indicator (UMG layer; camera yaw-blend is P2.2/TG-1)plan P2.2 L365; absence-proof TG-7 ev DebugHUD.h draws player/boss bars only, no aggro/alert indicatorBUILD-NOWP2.2 U11.1UI
U11.3Damage-number + hit-marker + floating-combat-text widget pool (the UMG *home* for hit confirmation; the hit-stop/shake feel primitive is the FEEL wave)absence-proof CF-1 ev damage cue → no-op notify, grep DamageNumber=0 (corrected tag: BUILD-NOW, not +5090)BUILD-NOWU11.1UI
U11.4Encounter HUD reads: per-mode Composure node-break pips + Withdrawal-clock "world is withdrawing" pressure read (CF-6/CF-12 *reads*; the camera-punch moment is FEEL)CVD Pillar-8 Composure; BossStateTreeNodes.h WS_024 step; absence-proof CF-12 ev DebugHUD shows raw WS_024 float, no pressure indicatorBUILD-NOWU11.1 C1.16✅UI

*Verified-by:* image critics read the captured HUD frames (QA-6 loop, standing visual directive); a

functional test asserts every bound read tracks its WorldState/attribute source (no hard-coded HUD ints).

11b. Menus · flow · settings *(folds ST · AU-6 audio tab · PG-3 front-end surface)*

IDItemCanon citation / absence-proofTagDependsWave
U11.5Pause + options-menu framework + UGameUserSettings (video/audio/gameplay/accessibility/controls tabs); the audio tab is AU-6's SoundClass/SoundMix slidersabsence-proof dive-1 missed-domain "Settings/pause/options" + AU-6 (no SoundClass/SoundMix, no audio settings UI); grep pause=0BUILD-NOWP2.3 U11.10UI
U11.6Front-end / boot flow UMG — New Game (Ch-2) · Continue (latest save) · Chapter-select (test harness); the surface for PG-3 (progression owns the flow)plan PG-3 (dive-1); today only a cvar dev auto-start (humanity.QuestSlice.AutoStart)BUILD-NOWPG-3 U11.5UI

11c. Input · bindings · control-scheme UX *(folds P2.3 · IN-1..12 · MV-10)*

Authority is P2.3 + code — no T99_Translation_Input exists (the translation family holds
AssetGen/Audio/Cinematic/Combat/Terrain/UE5_Build, not Input/UI; U11.31 authors the UI member). The
IMC today maps 11 KBM actions, 4 of 8 combat verbs bound, bCanCrouch=true with no crouch key.
IDItemCanon citation / absence-proofTagDependsWave
U11.7Input-config completion: bind the 4 keyless verbs (Puzzle/Familiar/Astral/CharacterEngage) + crouch + dodge + interact + ModeSwitch + lock-on + menu/pause/log open-keys; free the E-collision (E=Environmental vs interact)plan P2.3 L366; absence-proof IN-1/2/3/4/10/12 + MV-10 ev InputConfig.cpp:82-85 (4 verbs), :53-98 no crouch/dodge/interact/lock-on/menuBUILD-NOWP2.3 P2.1UI
U11.8Gamepad bindings + KBM parity (IMC maps only KBM; DefaultInput.ini has AxisConfig deadzones, zero action mappings)absence-proof IN-5 ev InputConfig.cpp:53-98 all EKeys KBM; plan §12 #26 (gamepad+KBM)BUILD-NOWU11.7UI
U11.9Rebinding UI + persistence — PlayerMappableKeySettings + UEnhancedInputUserSettings save/loadabsence-proof IN-6 ev MakeAction sets only ValueType, no mappable settings; plan §12 #26 "remap breadth"BUILD-NOWU11.5 U11.7UI
U11.10Input-context stack (combat / menu / dialogue / cinematic) so menus + dialogue suppress the combat+verb IMCabsence-proof IN-7 ev HumanityCharacter.cpp:198 single AddMappingContext(...,0)BUILD-NOWU11.7UI
U11.11Accessibility input options: sprint/crouch hold-vs-toggle, look-sensitivity slider (fixed 0.07 legacy today), settable invert-Yabsence-proof IN-8 ev HumanityCharacter.cpp:268-276 hold-only; DefaultInput.ini:8 Sens=0.07; InputConfig.cpp:70-75 hard negate-YBUILD-NOWU11.5 U11.7UI
U11.12Dev-key graduation map (IN-11): F1/F2/F3/N/M/1-3 placeholders → real UX surfaces (difficulty menu U11.5-tab → PG-11 · beat-staging · dialogue UI U11.23 · map/travel U11.21) — the honest graduation docabsence-proof IN-11 ev InputConfig.cpp:87-98 dev keys marked greybox, no graduation docBUILD-NOWU11.7UI
U11.13Ability / dialogue wheel — ModeSwitch radial + six-option dialogue wheel (input + UMG widget; Q3.2 owns SELECTION)plan P2.3 L366 (ModeSwitch+wheel) + Q3.2 L386 (six-option); absence-proof IN-9 ev no wheel/ModeSwitch actionBUILD-NOWQ3.2 U11.7UI

*Verified-by:* AI-playtest via InjectInputForAction exercises every new binding in PIE + packaged

(QA loop); a functional test asserts all 8 verbs and every screen open-key are reachable.

11d. The book screens · quest log · fork UI *(folds AB-* · Q3.6 · Q3.8 · the landed quest/fork panel)*

IDItemCanon citation / absence-proofTagDependsWave
U11.14Ability book (L2) over DT_AbilityTree (185 rows) — tier-gated grid, REVEAL-GATED per HL_0028: ships ONLY with the gating; a Neophyte sees no late-arc name/description and no tier-6 substrate readT0_Ability_Tree_Registry [ACTIVE v0.1] 185 rows (verified); T0_Hard_Lines HL_0028 (row 29): "Substrate-perception unlocks at Adeptus Minor (100)+; Vril Sight tier-6 reads signature/polarity"BUILD-NOW (+5090-final icons)T0.8✅ P2.8 U11.20UI
U11.15Ability-book data contract — reveal-ladder field (tier/arc/first-surface) so U11.14 can filter; AB-7 re-anchor within 185, never mint a 186thbinding correction (AB-7); T0_Ability_Tree_Registry 185-row invariantBUILD-NOWUI
U11.16Quest log + objective tracker — the landed quest panel (game 303e9f2, permanent debug overlay) → real UMG with a toggle (IN-12). Honest count semantics: chapter/beat-level objectives only; NO fabricated X/Y collectible counts until canon supplies per-quest countsplan Q3.3✅ (UQuestSubsystem over DT_Beat); P2.4 L367; absence-proof IN-12 ev DebugHUD draws quest panel every frame, no toggle keyBUILD-NOWQ3.3✅ U11.7UI
U11.17Fork / choice UMG — FORK_CH02_A's real three-way choice (HUD text today, game 303e9f2) → framed widget; six-option-ready; routes the ratified Q3.4 integrity writes (the fork-as-*scene* is CN-3/cinematic; the CHOICE widget is here)plan Q3.4✅ L388; CN-3 ev HumanityDebugHUD.cpp:249-263 draws "press 1/2/3"BUILD-NOWQ3.4✅ U11.13UI
U11.18Journal slice stub (empty-state by design) — Q3.6 activation is Ch-13 canon (hard-anchored Ch13/38/57); Ch 2-5 ships an empty journal shell that the Ch-3 healer's-child seed is the first to write. [RESCOPE RE-DERIVE — see §A.0: Ch 13 is now the slice's terminal node]plan Q3.6 L390 (Ch13/38/57 anchors); CH_02.md healer's-child journal-seedBUILD-NOWQ3.6 U11.20UI
U11.19Grimoire slice stub (empty-state by design) — Q3.8 cross-cultural-link / 22-thread screen; Ch 2-5 seeds nodes on discovery but the scholarly-link-action REWARD layer (Pillar 5) activates on the later anchorsplan Q3.8 L392 (Cross_Cultural_Link_Graph 184 edges, Thread_Grid 664)BUILD-NOWQ3.8 U11.20UI
U11.20Screens shell + open-keys — the book/journal/Grimoire/map/ability screen container, context-swapped input (IN-12), consistent navabsence-proof IN-12 (no menu/screen-open input); plan P2.4BUILD-NOWU11.7 U11.10UI

*Verified-by:* a reveal-discipline functional test asserts the ability book at a Neophyte state exposes

NO tier-6/late-arc row (HL_0028 teeth, mirrors the reveal-ladder gate); image critics read the empty

journal/Grimoire frames to confirm they are *correctly* empty, not broken.

11e. Map · compass · waypoint · travel UI *(folds MAP · MV-1)*

IDItemCanon citation / absence-proofTagDependsWave
U11.21In-game map screen + minimap + compass + waypoint UI (W4.6 minimap-builder is HLOD-only, NOT player UI)absence-proof dive-1 missed-domain "in-game map/minimap/compass/waypoint" ; grep minimap=0; W4.6 L408 (HLOD builder)BUILD-NOWW4.6 W4.7 U11.20TRANS
U11.22Travel-beat UI — the slice implements RULED travel beats forward + free roam *within* regions; free cross-region travel is Vimana-gated Ch-55 (NOT a slice gap). UI = travel-beat prompt + region-transition confirm, not a fast-travel networkWGM §7 (Vimana-gated cross-region travel, Ch-55); binding correction (free travel = Ch-55, ruled beats forward now); MV-1 (173km dev-teleport stopgap)BUILD-NOWU11.21 PG-2TRANS

11f. Localization · subtitles · fonts *(folds P2.5 · LOC · CN-4)*

IDItemCanon citation / absence-proofTagDependsWave
U11.23Subtitle + dialogue-line UI runtime — subtitle box, speaker attribution, advance input (CN-4; VO gen is 5090-gated, the box is not)absence-proof CN-4 ev scenes.csv SC_CH02_polos_offer dialogue_initiation, no DialogueLineRow.h in SourceBUILD-NOWP2.5 CN-2 U11.10UI
U11.24Loc / subtitle standards + non-Latin & RTL font runtime + UI-scaling (P2.5 String-Tables is only the substrate scaffold)plan P2.5 L368 ("Loc STRATEGY is a Josh gap"); absence-proof dive-1 missed-domain "localization/subtitle/RTL font"BUILD-NOW (runtime) · GATED-SCAN (non-English string/VO content)P2.5 T0.7✅UI

11g. Photo · codex-capture · loading UX *(folds PH · PF)*

IDItemCanon citation / absence-proofTagDependsWave
U11.25Photo / scan / codex-capture mode — AAA staple, zero coverage; ties to the L2 Beastiary/codex (T3_Creatures_Tameable DOCUMENT verb) + significance-lens discoveryabsence-proof dive-1 missed-domain "photo/scan/codex-capture"; grep photo-mode=0BUILD-NOWU11.20UI
U11.26Loading / level-streaming / transition-screen UX — loading screen + hitch-masking across the Flores→Bali→Sumatra map changes (X9.5 is offline benchmarks only, no player UX)absence-proof dive-1 missed-domain "performance/loading/streaming UX" + PG-2 (level transition); grep loading=0BUILD-NOWPG-2 U11.21TRANS

11h. The teaching layer (FTUE) — implement the RULED spine design

**Teaching canon owners (recall; the teaching-onboarding recall agent errored, so these are cited
directly against the docs):** T1_Story_Spine [ACTIVE v1.0] # CHAPTER 2 (the mode_variety line owns
the tutorial beats: *"combat: T (tutorial bear forced-run)"*, fire-making Type-6, inscription-locked
Return/Backtrack, vril-mechanics introduction, vril-sight awakening as the arc's first-transformation
moment); docs/spine/CH_02.md (the diegetic Attunement design — *"None of this is spoken. It is felt,
through the hands, at the water"* L28; the first-recharge learning beat CH02_B04; the cold-air reveal
cue L63; attunement waking at the Neophyte vril-trace register, gated below tier-6 per HL_0028 L21);
T0_Hard_Lines HL_0028 (the capability gate the teaching must respect); CVD Pillar-8 + T99_Translation_Combat §2.6 (the
multi-channel telegraph, an L1 accessibility floor). Nothing here is invented — it is RULED spine
design with no UX spec; §12 #26 names "tutorial/onboarding" with zero coverage.
IDItemCanon citation / absence-proofTagDependsWave
U11.27CAVE_BEAR forced-run tutorial — the Ch-2 cave bear you cannot fight, teaching flee/traverse (the RULED first-combat beat); implement as a scripted pursuer + traverse gate, not a winnable fightT1_Story_Spine [ACTIVE v1.0] # CHAPTER 2 L52 "tutorial bear forced-run"; CH_02.md combat spine (real playable, not flight-by-design)BUILD-NOWP2.1 U11.1 (+MV traverse verbs, TG-3 pursuer)FEEL/UI
U11.28Diegetic Attunement teaching — first-water recharge (hands-open at the waterfall) + the cold-air-in-a-warm-place reveal cue + vril rising as attunement wakes; taught through the body, NOT a tier-6 Vril-Sight HUDCH_02.md L28/L63/L81 + CH02_B04 first-water beat; HL_0028 (no tier-6 read for a Neophyte)BUILD-NOWU11.1 A6.5/A6.8 (cue)FEEL/UI
U11.29Verb + telegraph teaching — teach the 8 combat-mode verbs, Composure, and the color-independent SHAPE telegraph channel (accessibility floor) prompt-light / first-use contextual, never a wall of tooltipsCVD Pillar-8 + T99_Translation_Combat §2.6 multi-channel telegraph; C1.16✅ cue channel (shape channel un-rendered today, CF-7)BUILD-NOWU11.1 U11.7 U11.29-specFEEL/UI
U11.30Author the one missing UX specdocs/proposals/UX_TEACHING_SPEC.md (FTUE / diegetic-teaching information architecture: forced-run, Attunement cues, verb+telegraph onboarding, prompt-light doctrine), then normalize-doc critic-gateabsence-proof: no teaching/FTUE/onboarding spec doc exists (teaching recall found no owner; §12 #26 "tutorial/onboarding" = zero coverage)BUILD-NOWUI (author early)

*Verified-by:* AI-playtest asserts the forced-run cannot be "won" and the traverse gate opens; image

critics confirm the Attunement cue renders diegetically (no tier-6 perception overlay); the reveal test

(U11.14) doubles as the HL_0028 teeth for the teaching layer.

11i. Contract doc + canon repairs

IDItemCanon citation / absence-proofTagDependsWave
U11.31Author docs/translation/T99_Translation_UI.md — the UI/HUD/input engine-translation contract (the missing member; family has AssetGen/Audio/Cinematic/Combat/Terrain/UE5_Build, NOT UI); normalize-doc DRAFT→ACTIVE; folds §12 #26 "HUD/UI IA + control-scheme + loc strategy"absence-proof docs/translation/ listing (6 members, no UI/Input); plan §12 #26 (the whole UX-spec bundle)BUILD-NOWU11.1–U11.24UI
U11.32Canon repair — "Chakra Thunderbolt" (B_FA_002) → vril-seat reframe. The literal "Chakra" in the ability CSV is vril-seat reframe residue; RENAME (care-doctrine rename-not-remove) to a vril-seat-consistent name; registry edit + --emit-baseline same commitT0_Ability_Tree_Registry [ACTIVE v0.1] row 110 B_FA_002,Chakra Thunderbolt,Fire+Air; memory reframe-vril-seat-and-anti-fringe ("vril-seat" not chakra)BUILD-NOW (canon-side)UI

11j. Folded dive-item crosswalk (nothing lost; phantom-folds recorded)

Dive item(s)ResolutionHome
UI-1..10 (HUD/UMG surfaces)folded — the debug-HUD replacement + reads + book screensU11.1–U11.4, U11.14–U11.20
IN-1/2/3/4/10/12 (keyless verbs, crouch, dodge, interact, lock-on, menu keys)folded into the input-completion pass (already P2.3, not new)U11.7
IN-5 gamepad · IN-6 rebinding · IN-7 contexts · IN-8 accessibility · IN-9 wheel · IN-11 dev-key graduationfolded, one item eachU11.8/9/10/11/13/12
MAP (map/minimap/compass/waypoint) · MV-1 (travel)foldedU11.21, U11.22
ST (settings/pause/options) · AU-6 (audio settings tab)foldedU11.5
LOC (subtitle/RTL font/UI-scale) · P2.5 · CN-4 (subtitle box)foldedU11.23, U11.24
PH (photo/codex-capture) · PF (loading/streaming UX)foldedU11.25, U11.26
AB-1 (ability book)folded — ships ONLY with HL_0028 reveal-gatingU11.14 (+U11.15)
AB-7 (missing/187th ability)re-anchor within 185, never mint a 186thU11.15
AB-13KILLED — LINK_0186 already exists (Cross_Cultural_Link_Graph row 184); phantom
CF-11 (player combat HUD)BUILD-NOW (dive tag +5090-final corrected)U11.1
CF-1/CF-3/CF-6/CF-7/CF-12 UMG *surfaces* (numbers, reticle, node pips, shape-tell, pressure)UMG home folded here; the FEEL primitives (hit-stop, camera shake) stay in the FEEL waveU11.2/3/4
CN-3 fork-as-scenethe CHOICE widget is here (U11.17); the framed *scene* is cinematicU11.17 / WS-5
Journal→Q3.6 · Grimoire→Q3.8 · char-progression UI→P2.8phantom-fold: already plan ids, consumed not re-authoredU11.18/19, P2.8

11k. Wave rollup + verified-by (this WS in the re-ranked queue)

Chakra repair): U11.1–U11.20, U11.23–U11.25, U11.30–U11.32. *Verified-by:* every widget frame read

by image critics (QA-6); reveal-discipline + all-verbs-reachable + no-hard-coded-HUD-int functional

tests; AI-playtest drives all bindings in PIE + packaged; nightly-soak from this week.

*Verified-by:* forced-run-unwinnable + Attunement-diegetic + shape-telegraph-rendered assertions.

U11.26. *Verified-by:* a Flores→Bali map-change soak carries ws.* across and masks the hitch; the

map screen reads real Zone-Catalog site rows.

*Slice honesty:* the journal (U11.18) and Grimoire (U11.19) are empty in Ch 2-5 by canon, not by

under-build; the ability book (U11.14) is deliberately sparse (Neophyte, ~11 abilities across Ch2-5) [RESCOPE RE-DERIVE — see §A.0, with UW-2];

the map (U11.21) shows within-region roam, not cross-region fast-travel (Ch-55 Vimana). None of these

is a gap — each is the slice implementing the locked structure.

---

SECTION 4 — WS-3+ QUEST / PROGRESSION / TRANSITIONS / SAVE

RECONCILED (Vol2): CN-1..CN-9 → cross-refs to ws56_av (the single scene-runtime home; this section retains the quest-side binding view only). This section's PG-1/PG-6/CN-2/SL-2 are the backbone owner and land EARLY; PG-2's region-map handoff rides AFTER terrain (master W8) — ws4_regions RX.3 is its regions-side cross-ref (cohere H1). MG-1..4 are homed in master W8 REGIONS (cohere H9). D-DEFEAT-AXIS REC(a) == ws1_feel Alt-2 == the register's Composure-break-to-Withdrawal axis; Josh-pending.

WS-3+ ENHANCEMENT — Quest / Progression / Transitions / Save (the Ch 2-5 vertical-slice spine)

The built Q3.3 UQuestSubsystem executes ONE chapter (CH_02) as data (game bc356dc; produce-before-consume
DAG over DT_Beat, fork present/choose over DT_Fork, save/restore on the SaveGame seam, the 42-var
WorldState baked). The slice target is a four-chapter playthrough — Ch 2→3→4→5 across four region maps —
with cross-chapter progression, save UX, the unlock web, the integrity-band read, the scored-interaction
runtime, and dialogue/scene presentation all standing up over that seam. Nothing below is hardware-gated
except dialogue VO audio, final cinematic renders, and integrity-appearance final meshes (the DR handoff, §E).
CANON-FIRST: every item carries a canon citation or a positive-controlled absence-proof (grep=0 in game
Source/). The dive's PG/CN gap ids are carried as the item ids; new runtime clusters use MG-/UW-/IB-/SL-.

The one binding correction this section executes

There is NO free-travel gap. MV-1 ("173 km island crossed only by a DEV M-teleport; no world-map/fast-travel")

is a phantom for the slice: free cross-region travel is Vimana-gated at Ch 55 (WGM §7 L764 "Vimana enables

free travel between all locations visited"; Vimana *acquired* Ch 55, WGM L85/L985/L997). Ch 2-5 is deep pre-Vimana

ground-travel arc (WGM §11 "Travel Methods by Arc" L989-999: Act 1-2 = walking/riding/river+coastal sailing). The

slice therefore implements ruled directional travel-beats forward + free-roam within the loaded region, never a

fast-travel menu. Intra-region locomotion (the 150 km site spacing, climb/swim/vault) is MV's scope; this section

owns only the chapter-advance + region-map handoff along the ruled onward line (PG-2).

---

A. The item table

iditemcanon citation / absence-prooftagdependswave
PG-1Cross-chapter advance flow (Ch2→3→4→5): on chapter-complete clear the transient local.* bucket, carry durable ws.*, load the next chapter's beats.STATE_DELTA_GRAMMAR.md §: local.* chapter-scoped produce-before-consume (1834 rows, cleared at boundary) vs ws.* durable→WS_NNN. AP: HumanityQuestSliceDriver.h hard-loads only CH_02; LoadChapterFromContent has no next-chapter caller.BUILD-NOWQ3.3, T0.10WT
PG-2Region-map transition + ruled travel-beat (Flores→Bali→Sumatra/Java + the Angkor there-and-back excursion): OpenLevel/stream the next region carrying GameInstance-scoped ws.*; the travel-beat is the chapter-end onward line, not a fast-travel menu. Kills MV-1.WGM §11 L989-999 (ground travel Act 1-2) + per-chapter "Travel to next chapter" beats (L121 Flores land, L133 sea to Bali) + §7 L764 (free travel Vimana-gated Ch 55). AP: grep no OpenLevel/ServerTravel in Source/; only FloresIsland.umap in-engine.BUILD-NOWPG-1, W4.1, D-region-terrainWT
PG-6Unified save payload + mark_write region-mark ledger. Persist player attrs, ability/mastery unlocks, integrity band, reputation, journal, familiar-bonded list, and the durable community mark_write ledger.Contracts §1.2 Save-State list (L62: integrity level, path bucket, convergence states, NPC relationship, journal entries, grimoire links, familiar-bonded, trade mastery, inscription tier); STATE_DELTA_GRAMMAR append=+token set-insert (154 rows = the ledger arm). AP: QuestSaveGame.h = ChapterId+CompletedBeats+LocalFlags+ChosenForks only; TODO_CANON OPEN-4 mark_write unpersisted.BUILD-NOWQ3.3, P2.7WT
CN-2OnBeatEntered/OnBeatCompleted delegate on UQuestSubsystem — the single handoff seam that scene, save-autotrigger, and travel bind to by beat_ref.Plan CN5.6 "quest beat entry/exit"; spine DT_Beat. AP: QuestSubsystem.h has no scene/beat delegate; AdvanceBeat/RecordQuestTelemetry only.BUILD-NOWQ3.3WT
PG-3Slice front-end flow: New Game (start Ch2), Continue (load latest slot), chapter-select (test harness).Plan P2.1 boot map / GameInstance. AP: only cvar dev auto-start (humanity.QuestSlice.AutoStart); no main-menu class in Source/.BUILD-NOWPG-1, P2.7WU
PG-4Save-slot UX (UMG): multiple slots + per-slot metadata (chapter, timestamp, playtime, integrity band, region), save/load/continue menu.Contracts §1.8 L193 ue5_save_slot_classification + USaveGame slot structure. AP: SaveProgress/LoadProgress/SaveAsync callers all in HumanityQuestAutomationTests.cpp; single passed SlotName, no enumeration.BUILD-NOWPG-6, P2.4WU
PG-5Autosave / checkpoint: recharge-well-as-checkpoint actor + autosave on beat-complete and on chapter-transition.Contracts §1.8 (USaveGame); boss_roster_rows.json "per-stage checkpointing, judgment-free" (relief valve); plan P2.7/P2.14. AP: grep no Checkpoint/Autosave symbols in Source/.BUILD-NOWPG-6, CN-2WU
UW-1 (PG-7)Ability-unlock-on-progression via the four-axis gate (mastery-band × trade × integrity × questline). Slice = Neophyte Tier-1 questline-unlock grants on beat-complete (Ch2 +4 / Ch3 +2 / Ch4 +5 / Ch5 +0); metroidvania retroactive-unlock flag.T1_Ability_Tree §2 L49 (Tier-1 Neophyte quest-gate) + L68 hard line (every tier a canonical quest-unlock, not threshold) [CVD §17.5]; §3 L74 (per-trade quest gates → T1_Trades_Master); §1 L31 (integrity-locked access → CVD §17.4 five-band); boss_roster_rows.json "verb curve dodge/strike Ch 2-5 → perceive Ch 6", "metroidvania retroactive-unlock, no unearned spikes". AP: HumanityAbilitySet grants the full kit at char-init; grep no Mastery/Progression component.BUILD-NOWQ3.3, DT_AbilityTree(185)WR3
UW-2 (PG-8)Mastery ladder componentUHumanityMasteryComponent 12-tier read; slice needs only the Neophyte tier-read + roster (all Ch 2-5 = Neophyte) [RESCOPE RE-DERIVE — see §A.0: the in-slice tier span through Ch 13 is now open]. Key on GRADE index (player-facing), GATE index for the 120-roster.T1_Ability_Tree §2 L47-64 (12-tier scale); CH_05 "next tier unlocks arriving at Ch 6"; plan P2.8 + decision #7. AP: grep no UHumanityMasteryComponent.BUILD-NOWUW-1WP
IB-1 (PG-10)Integrity 5-band derivation + player-facing BAND read (not a raw int) + the ONE canon player-only ±10% integrity_band_field GAS modifier + PathLockState freeze at Ch65. Slice sits in L3 Drifting.CVD §9.2 five-band (Integrity_Paths §3.2 L55-61: L1 +60..+100 … L5 −60..−100; §4 world-state 1:1 L105-109); §3.5 Ch65 collapse 5→3 + tie-0→EVIL (Josh 2026-07-15); plan P2.9. AP: QuestSubsystem.GetIntegrityScore returns raw int; DebugHUD prints "integrity_score: %d".BUILD-NOWQ3.3, FORK dispatcher (Q3.4)WU
MG-1UHumanityScoredInteractionSubsystem — ONE bronze/silver/gold scoring spine under which both N8.8 minigames (MG_ rows) and Q3.7 puzzles register; non-blocking (no progression gate); medals→save.minigame-galaxy §2.2 (bronze/silver/gold + platinum-ghost, the L2 testable floor) + §2.8 (non-blocking, no-dead-end) + §2.7 (~6 engine families); plan N8.8 + Q3.7. AP: DT_Minigame = 2 DRAFT rows (MG_0001/0002), no runtime; grep no minigame subsystem.BUILD-NOWQ3.3, PG-6WR3
MG-2Duel-parry engine + caci (MG_0001, Ch3 B09) — the reflex-timing/read whip-and-shield duel; the slice's one true Tier-M marquee.T0_Minigame_Registry MG_0001 (Caci, duel-parry, CH_03, marquee, care_tier elevated, Manggarai secular honour-contest); minigame-galaxy §2.7(4). AP: no duel/parry handler in Source/.BUILD-NOW-placeholderMG-1WR3
MG-3The ≥6 slice scored-interaction handlers wired to their beats: caci (Ch3 B09 · duel-parry), twisted-proverb un-inversion decode (Ch3 B07 · Q3.7 inscription), Tirta-Empul 30-spout purification (Ch4 B04 · rhythm/cue), subak water-allocation (Ch4 B05 · logic-flow), Borobudur 1,460-panel numerology (Ch5 B03 · decode), baray inlet/reservoir/sluice/rice-grid flow (Ch5 B09 · logic-flow).ch2_5_slice_map §CH03-05 "Special systems NOT in-engine"; minigame-galaxy §2.7 engine families; Q3.7 InscriptionDecoder (proverb/numerology decode). AP: no puzzle/minigame runtime in Source/.BUILD-NOW-placeholderMG-1, Q3.7WR3/WR4/WR5
MG-4Medal persistence + Games-Master accrual into the save payload (L2 completion; oracle micro-mechanics l2_counts=false excluded).minigame-galaxy §2.2/§2.4 (Games Master = Gold on every Tier-M/S) + §2.7 oracle exclusion; MG_ registry l2_counts col.BUILD-NOWMG-1, PG-6WR5
CN-1UScenePresentationSubsystem — play a scene by scene_anchor_id (lightweight beat-triggered runtime, not full LevelSequence assets); add the module deps.Plan CN5.3/CN5.6; DT_SceneAnchor = 439 rows in-engine, zero consumer. AP: grep LevelSequence/SceneAnchor in Source/…/Private = 0; Build.cs L14-30 no LevelSequence dep.BUILD-NOWCN-2WU
Q3.2Six-option dialogue SELECTION engineDialogueNode {4 bio-variant sets keyed by band, 1 Good{shift}, 1 Evil{shift}, form enum}; SelectOptions(biographyState) + ApplyIntegrityShift. Content authored, not procedural; VO audio 5090-gated.Plan Q3.2; Integrity_Paths §("six-option voice system") + CVD §17.4 band-keyed voice. AP: no DialogueLineRow.h in game Source/.BUILD-NOW (VO GATED-5090)IB-1, CN-1WU
CN-4Dialogue scene presentation — camera-on-speaker, subtitle box, advance input; non-combat beats currently show only an objective + N-advance.Plan CN-4; scenes.csv SC_CH02_polos_offer (anchor_type=dialogue_initiation). AP: no per-line dialogue substrate in Source/; VO gen 5090-gated (§13).BUILD-NOW (VO GATED-5090)CN-1, Q3.2WU
CN-3Fork-as-framed-scene — give FORK_CH02_A a framed scene (author the missing scene_anchor for CH02_B09); the built fork is currently a HUD text prompt (Josh-named gap). Generalizes to FORK_CH03_A/04_A/05_A/05_B.forks.csv FORK_CH02_A anchor CH02_B09; plan CN-3. AP: scenes.csv has no B09 row; DebugHUD.cpp:249-263 draws "press 1/2/3".BUILD-NOW-placeholderCN-1, IB-1WU
CN-5Letterbox / cine-mode — entering a scene suppresses the combat/quest HUD, draws bars, switches to a cine ViewTarget.Plan CN-5. AP: grep Letterbox/CineMode = 0; DebugHUD.cpp:116-373 unconditionally draws combat/quest panels.BUILD-NOWCN-1WU
CN-6Skippability + seen-scene ledger — hold-to-skip input + a seen-scene set so scenes are idempotent per playthrough (no re-fire on beat re-entry).Plan CN-6. AP: no skip action HumanityInputConfig.h:48-72; QuestSaveGame has no scene-seen ledger.BUILD-NOWCN-1, PG-6WU
CN-7Boss intro/phase/resolution triggersHumanity.Boss.EmitPhase N debug emitter + StateTree phase-threshold event a scene binds to.Plan CN5.6 + T99 spike#4; scenes.csv SC_CH02_freeing_the_hunter beat CH02_B08. AP: BossCharacter has no cine emit.BUILD-NOW-placeholderCN-1, C1.8WP
CN-8Cine-camera rig — cine camera(s) with ViewTarget-blend cuts framed off participant_refs (greybox actors).Plan CN5.4; camera rules = plan #26. AP: HumanityCharacter.h:102-107 only CameraBoom+FollowCamera (P2.2 deferred).BUILD-NOWCN-1, P2.2WP
CN-9DT_SceneDispatch path-conditional resolver — slice-DEFERRED. Ch 2-5 scene rows are all UNLOCKED/path-invariant so the slice does not need it [RESCOPE RE-DERIVE — see §A.0: re-measure path-invariance over Ch 6-13 + Pro/Ch 1]; carries as a Josh schema-ratification brief (#22).Plan CN5.5 + decision #22; scenes.csv CH_02-05 all path_bucket=UNLOCKED. AP: no DT_SceneDispatch in Source/.BUILD-NOW (schema-gated)Josh #22WP
SL-1 (PG-9)Death/respawn = graduated persistence (P2.14): on death write a graduated ws.* delta + respawn at the last recharge checkpoint with the world ADVANCED, never reset; no progression flag hard-gated on a kill. Slice is pre-journal (journal activates Ch 13) [RESCOPE RE-DERIVE — see §A.0, with U11.18] → death-learning surfaces as "remembered tells" on retry (the early-game Hades loop).boss_roster_rows.json PRE-JOURNAL DEATH-LEARNING RULE + "HADES LOOP: death advances the world" [T1_Combat L343-347]; CVD care/no-dead-end doctrine; plan P2.14 guarded by check_no_dead_end.py. AP: grep no OnDeath/Respawn/Died. Boss HP=0 defeat axis = open Josh brief (§C D-DEFEAT-AXIS).BUILD-NOWPG-5, SL-2WP
SL-2QT-7 softlock-immunity autotest (WS-10 expansion, directive 5) — assert on every build: the DT_Beat DAG is produce-before-consume with a single reachable terminal; every fork option leaves a non-dead state; every scored-interaction beat is skippable/non-gating; the CH02→05 SliceWalk reaches the end from any fork combination.Directive 5 (machine = alpha/beta tester, QT-1..22); plan P2.14 check_no_dead_end.py + the Q3.3 produce-before-consume DAG (game bc356dc: "sole root B01, B08 double-join on B06+B07"). AP: QT test-org map not yet built; positive-control seed = the existing CH02_SliceWalk green run.BUILD-NOWQ3.3, N8.1 no-dead-end lintWT

*Cross-section refs (owned elsewhere, wired here):* PG-11 difficulty-as-UX → C1.11 (combat/feel); PG-12 inventory-minimum → P2.6/economy (Ch 2 chapter_anchored_weapon_add=none, slice-LOW); Journal → Q3.6; Grimoire → Q3.8; input binds (crouch/interact/wheel/lock-on/skip) → P2.3; the qualitative-delta→integer map IB-1/CN-3 read is decision #11.

---

B. Wave queue (re-ranked for the 2-3 week window; each wave has its verified-by clause)

wavescopeitemsverified-by
WT — Transitions & Save Backbonethe cross-chapter spine that makes Ch 2-5 one playthroughCN-2, PG-1, PG-2, PG-6, SL-2CH02→03→04→05 SliceWalk autotest GREEN end-to-end (extends the built CH02_SliceWalk); ws.* durable + mark_write ledger survive three region-map transitions while local.* clears at each boundary; QT-7 softlock autotest GREEN over every fork combination; a captured arrival frame of each of the 4 regions to Josh.
WU — Slice Front-End & Presentationthe readable surface over the seamPG-3, PG-4, PG-5, IB-1, CN-1, Q3.2, CN-4, CN-3, CN-5, CN-6image critics read: New Game/Continue/chapter-select menu · save-slot cards (chapter·timestamp·playtime·band) · the integrity BAND read (not raw int) · the dialogue subtitle box + letterbox · the FORK_CH02_A framed scene; a save→quit→Continue cycle restores mid-chapter; scenes are skippable + idempotent (re-entry does not re-fire).
WR3 / WR4 / WR5 — Per-region scored content + unlocksthe density layer, per chapterMG-1, MG-2, MG-3, MG-4, UW-1each region's scored beats reach Bronze in AI-playtest (WR3 caci+proverb · WR4 purification+subak · WR5 numerology+baray); medals persist to save; ability grants fire on beat-complete at the Neophyte questline-gate (Ch2 +4/Ch3 +2/Ch4 +5); QT-7 re-asserts every scored beat is non-gating.
WP — Progression & cine depth polishafter the backbone readsUW-2, SL-1, CN-7, CN-8, CN-9(deferred)mastery Neophyte tier-read visible; death→respawn advances not resets (guarded check_no_dead_end.py); boss EmitPhase fires a bound scene; DT_SceneDispatch stays deferred pending Josh #22.

Nightly-soak (starts THIS week, current machine): enroll the CH02→05 SliceWalk + QT-7 + every scored-beat

Bronze run + a save→transition→Continue round-trip as a nightly autonomous soak (plan §11.5 QA loop; the machine is

the tester). Any red beat/fork/reachability failure files a typed bug record repro-first.

---

C. Per-chapter content-budget + test-coverage scorecard (this section's slice of the density curve)

The density model is a curve (directive 6): Ch 2-5 = early-game, deliberately lighter, seed-rich. This scorecard

makes the progression/quest budget measurable per chapter — counts read directly from the spine CSVs + slice map.

chapterquest beatsforks (opts)scored-interaction beatsability grantsscene-anchors neededdurable ws.* writes (all ∈ baked 42)QT-7 fork paths
CH_02101 (3)1 (canopy agility)+4polos_offer, freeing_hunter, B09 fork (author)integrity_score, identity_hiding_status(→concealment), familiar(Shell trace)3
CH_03121 (4)2 (caci B09, proverb B07)+2arrival, caci, B11 forkfamiliar_bond(+shell_bonded), identity_hiding(active), journal_status(+healers_child)4
CH_04121 (4)2 (30-spout B04, subak B05)+5arrival, B09 forkantagonist_operational_state, reputation_biography_propagation, familiar(+Kira)4
CH_05122 (7)2 (numerology B03, baray B09)+0arrival×2 (anchor+excursion), B09+B11 forksfaction_standing, six_option_cumulative_record, integrity_level, familiar(+Khan)7 (incl. the integrity-gated lethal datu branch)

Scorecard law: every durable write in all four chapters is grep-verified ∈ the baked 42 (no new var); every fork

path in the QT-7 column must reach the chapter terminal (softlock-immune); every scored beat is Bronze-reachable and

non-gating. Early chapters carry FEWER scored beats by design — the curve steepens post-slice (full game ≈100-200 h main /

1-2 k h side+weave), so the slice validates the structure, not the volume.

---

D. Open decisions carried as briefs (recommendation + options — never bare)

the Composure/Withdrawal fight consumes no HP=0, so the boss neither dies nor staggers. *Options:* (a) Health is a

non-lethal pressure track, defeat is always Composure-break→Withdrawal; (b) HP=0 opens a **stagger/execution

window that accelerates Withdrawal; (c) per-boss win_condition axis (some HP, some Composure). REC: (a)** for the

Pillar-8 slice — it keeps "smarter not stronger" honest and the greybox needs only a defeat shell; the axis choice

is a Phase-5M tuning ruling, not a slice blocker. *Strongest objection:* a pure-pressure boss reads as un-killable to an

action-RPG player expecting an HP payoff — mitigated by the Composure-break MOMENT (CF cluster) as the visible kill-beat.

fork writes (band phrases like +substantial-generative). The band map exists in T1_Integrity_Paths §3.2; this is a

data-import mechanic, not new canon. REC: derive from the §3.2 band midpoints (the illustrative map already banked

in docs/INTEGRITY_DELTA_MAP.md), under the tuning firewall.

E. 5090 handoff touchpoints for this section (the DR drop-in contracts)

Only the generated assets ride the 5090; every RUNTIME/selection/scene seam above is BUILD-NOW and consumes a

placeholder now, the generated asset later, via a stable id (the DR contract):

Kokoro/ElevenLabs VO drops in on V_<voice_id>__<dialogue_line_id> (A6.6). Gen 5090/service-gated.

MetaHuman/MRQ/final-render assets swap in behind the same scene_anchor_id. Gen 5090-gated.

(P2.12); the render layer consumes the final gated mesh later. Selection ungated; mesh gen 5090-gated.

zero hardware dependency and ships on the current machine.

---

SECTION 5 — WS-11 LIVING-WORLD SUBSTRATE & RUNTIME

RECONCILED (Vol2): LW-6 SFX-registry cite corrected to 12 rows (cite C3); LW-9 DOC_MAP line corrected to L127 (cite C4). AB-5 is the SINGLE Chakra-repair owner (CR-CHAKRA / U11.32 are its cross-refs). LW-4 (era-swap runtime) folds into ws4_regions RX.1 (the Ch-4 chapter-integration owner); LW-3 (Pawukon clock) + LW-12 (ws keys) stay here as the primitives RX.1 depends on (cohere H5). §11.6.4 is the AUTHORITATIVE pending-Josh stance for D-ECONOMY-MEDIUM — EC-medium/EC-vendor BLOCKED-ON-BRIEF; EC-inventory/EC-treasure proceed.

11.6 WS-11 — Living-World Substrate & Runtime *(new workstream; the Ch 2-5 slice's living skin)*

Josh's directive-3: the slice must carry the living-world substrate grounded in each region's real biota/geology — fauna, herbs, mineral veins, trades, the ability book, unnamed members. Dive-2 mapped six domains (FA/FL/MN/TR/LW + EC) over the four slice regions (flores_island Ch2-3, bali Ch4, sumatra_java+angkor_khmer Ch5). This WS is the honest split of that map: the data that is CANON and needs a structured home now vs the engine that makes it observable in PIE. It is CANON-FIRST per directive-4 — every row cites the owning page/tier-doc or carries a positive-controlled absence proof; nothing is re-invented (the completeness critic already caught the mis-graded "missing" registries: T0_Creature_Roster HAS 132 rows, T0_Boss_Encounter HAS 16 speccing the slice bosses, Cross_Cultural_Link_Graph HAS 184 incl. LINK_0186 — consume, never re-author).

The gating law (binding): only generative INFERENCE is 5090-gated. Cited rows, struct regen, deterministic spawners, gather/drop dispatch, day/night/weather/calendar drivers, placement wiring = BUILD-NOW. Generative skins (creature meshes, PCG density, pharmacology curves, atmos) ride the 5090. The RNG number magnitudes ride the tuning firewall (Phase-5M audit); the SHAPES and BINDINGS build now on illustrative constants.

The two load-bearing canon spines this WS wires to:

---

11.6.1 CANON-AUTHOR-NOW lane *(canon-side; runs parallel to the trunk NOW; no engine dependency; each lands proposal-tier → normalize-doc critic → fidelity re-baseline)*

Tag key: CA = CANON-AUTHOR-NOW. Wave W-LW1 unless noted.

IDCanon citation / absence-proofTagDependsWave
FA-1 angkor_khmer fauna rows (Siamese/Tonle Sap crocodile, flood-forest fishery + waterbirds, war elephant; + critic's guild: giant barb, sarus crane, fishing cat, Eld's deer, temple macaques)angkor_khmer §3 "CONSUMES the rows the spine already staged"; positive-control: grep angkor in Creature_Roster=0, CR_0024-28 all region_native=sumatra_javaCACreature_Roster schema (exists, 132 rows)W-LW1
FA-6 Two named Flores adds: yellow-crested cockatoo (*Cacatua sulphurea*, canopy-observation beat) + eel-form place-spirit (folklore, Thread 2)flores §3 "two region-ambient adds whose CR_ ids are assigned at the registry-append pass"CACreature_RosterW-LW1
FA-7 Row the ambient non-boss predator/huntable prose-seeds: Flores goat-meat baiting questline + livestock-raider (non-lethal AND lethal lines)flores §3 defers goat-baiting + livestock-raider "to the Section-13 pass"; only BE_0002_S1/BE_0003_S1 rowedCACreature_Roster; Quest_DefinitionW-LW1
FA-8 Flagship real-biota rows @1200CE: Bali myna, Flores hawk-eagle, Javan tiger (roster has only Sumatran), Javan rhino, Sumatran elephant, siamang, Malayan tapir, helmeted hornbillpositive-control: roster lacks all named; era = Javan-tiger-extant (not the 20thC extinction)CACreature_RosterW-LW1
FA-4 Populate cited behavioural fields for the ~28 slice rows: tier_classification + per-zone seat (SHAPE canon-now; spawn_rate magnitude under tuning firewall)awk: spawn_rate 0/132, tier_classification 0/132; feeds FA-3CA (numbers→firewall)FA-1/6/7/8W-LW1
FA-5 Huntable→materials yield ROWS in RngDropTable: hide/leather/meat for boar CR_0004, Timor deer CR_0006, Flores pig CR_0014, Sumatra ungulates; set rng_drop_anchor→TRADE_06/07HL_0061 §17.13 (drops ±1σ); RngDropTable wc=1 (0 data rows), rng_drop_anchor blank all rows; BUILD_PLAN Q-17 flags 0-rows. Critic tag-fix: authoring cited yield ROWS is CA; the engine-wire is the separate BUILD step (see LW-WIRE).CARngDropTable schema (18 cols, exists)W-LW1
FL-1 Mint T0_Flora_Registry (the fork — ruled below, §11.6.3)positive-controlled absence + §2 cited prose with no structured home anywhereCAW-LW1
FL-2 Flora rows for the 4 regions from cited §2 + book_extractions (Lio 45-species pack EXR_SRC_00483; Bali usada; Sumatra datu/jamu). Unnamed members: *Curcuma xanthorrhiza, Andrographis paniculata, Alstonia scholaris, Areca catechu* (Flores); *Plumeria, Cananga odorata, Arenga pinnata* (Bali); *Styrax benzoin, Cinnamomum burmannii* (Sumatra)EXR_SRC_00483 holds the 45-species structured pack (part/prep/mode/effect/compound)CAFL-1W-LW1
FL-7 Poison/medicine duality data modelpoison_class + dose fields; real pharmacology taught honestly (R-17 + rewards-intelligence, never scrubbed). One plant = medicine OR hunting/fishing poison by dose+prep. Members: *Antiaris toxicaria* (dart), *Derris*/tuba (rotenone), *Cerbera odollam*, *Gloriosa*/colchicine"toxic (hunting & fishing poisons)" flagged every region §2/§14; care doctrine — rename/reframe not remove; §17 floor untouchedCAFL-1W-LW1
FL-5 Gather-node yield ROWS in RngDropTable (flora rows as linked_entity; σ floor/ceiling already in the struct → a forage round is deterministic-fair)HL_0061 §17.13; RngDropTableRow 18 cols/0 rows, entity-linked. Critic tag-fix: ROW-authoring = CA; wiring = BUILD (LW-WIRE).CAFL-1/FL-2W-LW1
FL-8 Amend DEEP_BOOK_PROCESSING_CONTRACT: add a flora/plant entity_kind → target-registry map to FL-1 (today flora deep-read seeds route nowhere)contract entity_kind lists creature/deity/folkloric_being… no plant; §2.4 map omits floraCAFL-1W-LW1
FL-9 Trade-4 12-tier gate roster (§5.4) + per-region unlock ROWS: Flores atabhisa dream-taught unlock, odd-count crafting rule, ginger-mbeko kit, Apothecary tier ceiling§5.4 gate roster exists; §14 unlock prose cited but unrowedCAQuest_Definition; FL-1W-LW1
MN-1 Mint the T0 mineral/material registry: per-region ore/mineral rows with real-geology cites + ore→material→craft-output map feeding the Forge/Workshop compoundspositive-controlled: only T0_Source_Material_Registry (research sources); Mining = 1 Trade_Registry row; no ore/material tableCAW-LW1
MN-2 §9 mineral prose → cited rows; author Flores volcanic minerals (obsidian, sulfur, basalt +andesite/dacite/ignimbrite/pumice/titanomagnetite ironsand/kaolin) — absent today§9 prose-only all 4 regions; flores 0 obsidian/sulfur/basalt (positive-controlled grep=0)CAMN-1W-LW1
MN-3 Repair TRADE_02: set compound_membership=The_Forge, fill home_base_upgrade_ceiling + shared_build_grammar_ref (contradicts Hard_Lines today)HL_0082 assigns Mining→The Forge (Trade 2 Mining + Trade 3 Blacksmithing); TRADE_02 compound/ceiling/grammar empty vs TRADE_03CAW-LW1
MN-4 Ore/vein-yield ROWS in RngDropTable, bound to HL_0061 σHL_0061 §17.13 binds yields; DT_RngDropTable 0 rows. Critic tag-fix: ROW-authoring = CA; wiring = BUILD (LW-WIRE).CAMN-1W-LW1
MN-5 ore→material→craft chain table (Mining ore → Blacksmith/Engineering material → weapon/Vimana precursor)T1_Trades §6.1/§7 chain + HL_0083 (T8 Engineering + T2 Mining → Vimana precursor) are prose-only; no registry maps itCAMN-1W-LW1
MN-8 Cited volcanic env-feature rows in Environment_Grammar (obsidian outcrop, sulfur fumarole w/ exposure_hazard, ore vein, quarry face)EnvGrammar schema fits (exposure_hazard, elemental_affinity, protected_care_ref); only EG_0001 Lava Vent + EG_0002 todayCAEnvironment_Grammar (exists, 2 rows)W-LW1
MN-9 Declare the biota/mineral/geology deep-read output lane + schema in the deep-read contract (Josh's substrate has no harvest lane). Critic re-tag: this is a contract amendment authorable NOW — CA, same class as FL-8 (was BUILD in the raw map)deep-read output classes = folklore/civ-marks/weave/quest-seed; no biota/mineral/geology laneCAW-LW1
MN-10 NARROW mining-content care note bound to HL_0003/HL_0123 + care doctrine. Do NOT invent the "D-MINING-HOLOCAUST" firewall the raw label implies — it conflates D-MINING-POINTER (a data-mining tag prioritizer) with HL_0109 (banking); no ore-mining ruling exists on diskpositive-control: HL_0109=banking; no ore-mining firewall on diskCAW-LW1
MN-11 Wire slice metallurgy substrate to the trade chain: Bali *pande* pamor-steel (titanomagnetite ironsand) → Forge; Angkor Kulen sandstone/laterite/iron cramps/bronze → WorkshopBali/Angkor §9 name pande pamor-steel + Kulen sandstone/laterite/iron; unlinked to a material registryCAMN-1/MN-5W-LW1
MN-12 Enumerate Sumatra placer-gold + Sunda tin-belt (cassiterite) rows, carrying the enslaved-labor care note (built-AS-institution, never laborer-as-villain — §17.1 collective care)Sumatra §9 "not a mineral economy", riverine gold; Sunda tin/cassiterite unenumerated; care doctrineCAMN-1W-LW1
TR-2 Author the gather-node / material-item registry schema (region pages name the Ch2-5 nodes + inputs in §2/§9/§14; no structured row catalog to feed the harvest runtime)positive-controlled: registries/ has no recipe/gather/material/resource registryCAFL-1 + MN-1 (shared material spine)W-LW1
TR-3 Author the Book-of-Trades entry data home (mechanic is canon T1_Trades_Master §8; pages cite "Book-of-Trades entries" as the seed unit; no registry/struct exists)positive-controlled: no Book/Codex-of-Trades registry in registries/CAW-LW1
TR-6 Neophyte-gate quest ROWS for the soonest trade homes (Ch7-8; Blacksmith+Herbalism S.India Ch7) as structure — 120 gates are placeholder strings Q_TRx_xxx in DT_Trade only. *Not slice-blocking (no Ch2-5 trade home)* [RESCOPE RE-DERIVE — see §A.0: Ch 7 is in-slice, premise invalidated]Quest_Definition = 16 rows, zero Q_TR gates; twelve_tier_gate col empty; T1_Trades earliest home Ch7CAQuest_DefinitionW-LW1 (low)
LW-5 Mint T0_Festival_Registry (or festival lane); rows for cited immersion festivals + map Pawukon good-days → festival windows. Members: Penti (Manggarai new-year), Patika (Lio/Kelimutu), Keo *nado-mere*, Nage buffalo-sacrifice, Cebong-beo purification; Bali *odalan*, Nyepi/Ogoh-ogohflores L432-482; 295 festival_or_daily_immersion seeds; no festival registry in registries/CALW-3 (Pawukon good-days)W-LW1
LW-6 Author tropical-ambience SFX ROWS into T0_SFX_Registry (wildlife/insect/bird/rain/night beds, dawn-dusk-night) for the 4 regions — placeholder audio; library/generative laterT0_SFX_Registry 12 rows (9 vril-site + Sámi + Haiti Vodou + Australia); CH_02 L224 sfx_substrate [POPULATE→T0_SFX_Registry]CA (audio asset→5090)A6.2 schema reconcileW-LW1
LW-7 Data-defect repair: flores Region_Index.region_environmental_ambient_sfx_id_ref_array = EG_0001;EG_0002 (Environment-Grammar ids, not SFX ids) → repoint to real SFX ids from LW-6Region_Index flores col 24 holds env-grammar ids in an sfx arrayCALW-6W-LW1
LW-9 Create T0_Persona_Index + author the slice's ambient/named personas (own_life daily-rhythm, web_edges) — the doctrine's home registry is missingpositive-control: DOC_MAP L127 "T0_Persona_Index not yet created"; ENTITY_PERSONA_SYSTEM APPROVED-pending-wiringCAW-LW1
LW-11 Structure the L1.5 living-landscape seams (path/stream/dusk-spring avoidances + *sumang* tell-and-cleanse) into ambient trigger hooks/rows (Environment_Grammar is combat-affordance-only, 2 rows)flores L468-475 avoidances+sumang; EnvGrammar 2 combat-terrain rowsCAEnvironment_Grammar; LW-9W-LW1
AB-5 Canon repair — "Chakra Thunderbolt" (B_FA_002): rename via NAMING_METHOD (deep-dive-canon → adversarial-filter → player-vibe). It surfaces in the ability book's full 185 roster and contradicts the vril-seat (never-chakra) reframereframe memory: "Deferred: Chakra Thunderbolt (B_FA_002) rename → NAMING_METHOD"; still literal in Ability_Tree CSV row 110. 185-count LOCKED — this is a rename in-place, never a re-countCAW-LW1

---

11.6.2 BUILD-NOW engine lane *(game-side; the substrate made observable in PIE; folds onto existing WS-2/WS-4/WS-8 seams — no new engine home invented)*

Tag key: BN = BUILD-NOW · BN+5090 = placeholder now, generative-final rides the 5090.

IDCanon/engine anchor (or absence-proof)TagDependsWave
FA-2 Regenerate FCreatureRosterRow.h via Tools/gen_row_struct.py — struct is 44 fields, CSV is 52 cols; cols 45-52 (mesh_id_ref..regeneration_trigger) won't bind on import, so any generative-skin/ecology populate silently dropsstruct header "44 columns"; CSV NF=52; the proven gen_row_struct pattern (36 built structs). *Note: regeneration_trigger (col 52) is the living-ecology regrow hook — LW-ECO reads it*BNgen_row_struct.py (exists)W-LW2
FA-3 Ambient-wildlife spawner/behaviour subsystem consuming DT_CreatureRoster (region + spawn_rate keyed). Today the data is inert — 0 consumers → no wildlife observable at any tier. Folds onto N8.7 (spawner over Creature_Roster 132) + C1.17 (fauna deterministic BT/utility)grep CreatureRoster in Config/Content/BP = 0 consumers; design only in COMBAT_ENCOUNTER_SYSTEM §8/§2.8; spawn obeys HL_0061 "foundational across spawn rates" + Pillar-1 Hybrid three-systemsBN+5090FA-2, FA-4, N8.7, C1.17W-LW2
LW-ECO Living-ecology migrate/regrow with progression-critical immunity (NEW item — the ruled sim made real): over-gather/over-hunt degrades a zone → fauna/flora spawn_rate decays + migrates → regeneration_trigger regrows over time; progression_critical-tagged entities are IMMUNE (never deplete/migrate/vanish)RUNTIME_GENERATIVE_LAYER.md §"Living ecology + the immune set — RULED"; canon-graph progression_critical tag; FCreatureRosterRow.regeneration_trigger colBN+5090FA-3, FA-2, X9.4 (canon_graph)W-LW2
FL-3 Gather-node actor + placement/respawn subsystem — reuse AHumanitySiteMarker trigger-volume + string-key notify; node refs a flora_id, respawns on a timer, interactable pickup. Folds onto P2.10 (UHumanityInteractableComponent typed dispatch: pickup/gather)positive-control: zero gather systems in Source; SiteMarker is the only node patternBNP2.10W-LW2
FL-4 Region-distributed node placement driven by weightmap LayerInfo (forest herbs→forest, tuber→crop, reeds/lotus→wetland, alpine→bare_rock). Folds onto W4.8 PCG binding (structure now, generative density skin post-5090)7 LayerInfo layers exist + HumanityLandscapeImporter consumes them — data EXISTSBN+5090FL-3, W4.8W-LW3
FL-6 Herbalism craft loop gather→process(boil/prepare)→use(timed course over days): mint recipe struct + craft subsystem + recipe rows (loop is fully canon; no recipe struct exists)Angkor gather-boil-7-day + Flores odd-count crafting rule are cited canon; T1_Trades Apothecary loopBNTR-2, FL-2W-LW3
FL-10 Komodo-bite septic wound-status → herbal-cure loop (fauna×flora): bite seeds a creeping wound-condition cured only at a gather node/healer with the region pharmacopoeiaEXR_SRC_00176 routes bite wound-status → Trade-4 gather/cure loopBN+5090FL-3, FL-6, FA-1W-LW3
FL-11 Apothecary compound input-economy wiring: flora inputs feed Alchemy potions/poisons + Culinary vril-food ("Alchemy requires Herbalism inputs") — structure now, balance post-playtestHL_0082 Apothecary = Herbalism T4 + Alchemy T5; §9.1 two separate economies (spellcraft vs consumables)BN+5090FL-2, FL-6W-LW3
FL-12 Generate FloraRegistryRow.h + DT_Flora via gen_row_struct.py once the FL-1 CSV lands (one USTRUCT, DataTable import — the diff IS the review)gen_row_struct.py + 42 built DT_* prove the deterministic patternBNFL-1 (CSV)W-LW2
MN-6 Mining interaction loop (approach node → strike/extract → σ-bounded yield → inventory). No harvest/extract subsystem exists. Folds onto P2.10 (gather dispatch) + P2.13 (σ drop)positive-control: no gather/mine/extract subsystem in Source; HumanitySigmaRNG existsBNP2.10, P2.13, MN-4W-LW2
MN-7 Wire vein placement to terrain (slope + LI_bare_rock weightmap + heightmap elevation) at W4.8 — deterministic now, generative density laterflores .r16 heightmap + LI_bare_rock exist; W4.8 pending; Region_Index has no mineral columnBN+5090MN-1, W4.8W-LW3
TR-1 Gathering/harvest runtime subsystem — the slice's live loop (waterfall botanical, tamarind forage, Sanur reef, caldera forage, Tonle Sap fishery, andesite/stone). The single missing engine home. Folds onto P2.10 + the FL-3/MN-6 nodesSource subsystems = Combat/Quest/WorldState/QA only; no harvest/forage/resource systemBNP2.10, FL-3, MN-6W-LW2
TR-4 Trade-master / apprenticeship presentation surface (slice delivers trades via NPCs granting entries: Emma, Ibu Martina, pande smith, Lio dream-healer) — placeholder now, deep-read fills lateronly HumanityDebugHUD.h in UI/; no trade-master interaction pathBN+5090TR-3, N8.2 (persona runtime)W-LW3
TR-5 Trade-mastery progression state + tier UI read at placeholder tier (slice touches only the Neophyte floor, roots no home base). Folds onto P2.8 (UHumanityMasteryComponent)WorldState schema lacks a per-trade mastery-tier var; UI = debug HUDBN+5090P2.8W-LW3
TR-7 Crafting-station runtime stub (recipes/stations/quality) — correctly deferred by beat-presence (no compound instantiates in Ch2-5; first at Ch7 Forge+Apothecary). Stub structure now. [RESCOPE RE-DERIVE — see §A.0: the first compound is now in-slice]no crafting subsystem; 4 compounds all seat at home-base chapters, none in sliceBNFL-6 (recipe struct)W-LW3 (low)
LW-WIRE σ-drop engine wire — add UHumanityDropComponent binding to the FA-5/FL-5/MN-4 yield rows; serialize the per-channel σ-window map so anti-streak survives save/load. This is the BUILD half the critic split off from the row-authoringP2.13 (DONE+WIRE; UHumanitySigmaRNG built; DT_RngDropTable 0 rows→author first); HL_0061 §17.13BNP2.13, FA-5/FL-5/MN-4 rowsW-LW2
LW-1 Day/night cycle driver (directional-light + sky) at placeholder tier — the Ch-2 night/dusk beats + the night vril-tell need a real clockpositive-control: grep `TimeOfDay\DayNight` over Source = 0; CH_02 L26 night, L149 dusk descentBN+5090LW-12 (ws keys)W-LW2
LW-2 Tropical weather driver consuming the existing Region_Index.weather_cycle_profile token (placeholder rain/wet-dry now, generative sky/atmos later)RegionIndexRow.h weather_cycle_profile unconsumed; grep WeatherState = 0; flores row dry;ash;clearBN+5090LW-12W-LW2
LW-3 Pawukon calendar clock — the deterministic 210-day / 10-concurrent-week combinatorial calendar (Ch-4 canon time mechanic). Co-req: author the cited 55 day-name + tika good-day data listCH_04 L59 Pawukon + Tri Hita Karana; bali L630 "55 day names"; grep Pawukon = 0BNLW-12W-LW2
LW-4 Time-fluctuation runtime — the Ch-4 playable era/environment-state swap window (placeholder era-swap now, generative era-visuals later). Consumes ChapterIndexRow.time_fluctuation_range (data field, no runtime today)Build_Pipeline_Contracts §18 Time Period and Fluctuation Design; bali L2294 "land on a good day read from the tika calendar"BN+5090LW-3, LW-12W-LW3
LW-8 Ambient-NPC presence/schedule — spawn village NPCs at sites at mannequin/persona-minimum tier with a day/night presence schedule; strictly non-gating. Folds onto N8.1/N8.2 persona runtimeENTITY_PERSONA_SYSTEM §2.4 own_life daily-rhythm; no schedule field in Character_Index; TODO_CANON L168 mannequin placeholderBN+5090LW-9, LW-1, N8.2W-LW3
LW-10 Relational-web in-world play surface — make region web_edges readable to the player (NPC talk / trade goods / map edges) at placeholder tier (regions-as-webs is canon, no in-world surface)ENTITY_PERSONA_SYSTEM §2.4 web_edges; region §15; Cross_Cultural_Link_Graph LINK_0117/LINK_0138BN+5090LW-9, N8.4 (reputation)W-LW3
LW-12 Living-world WorldState keys — add time_of_day, weather_state, pawukon_day, active_festival to the ws.* store so day/night/weather/calendar/festival persist + drive dispatchers. Folds onto P2.7 (extend the serialized set) + T0.9 (native tags)Worldstate_Variables 42 rows (WS_001-042), none time/weather/calendar/festivalBNP2.7, T0.9W-LW2 (trunk)

---

11.6.3 FL-1 — the flora-registry fork *(director-delegated; ruled and APPLIED, path shown per CLAUDE.md autonomy — this is EXECUTION-tier schema/tooling, not a Josh flag)*

The fork. Give gather-input flora a structured home as either (A) a NEW T0_Flora_Registry, or (B) an overload of T0_Creature_Roster with species_class=flora (the deep-book precedent — the creature schema already carries a species_class discriminator).

The steelman for B (species_class precedent). One registry, one struct, one spawner already exists (132 rows, 52 cols); the deep-book contract could route plant seeds through the same entity_kind machinery; flora and fauna share a spawn/placement/region-native shape, so FL-3/FL-4 node-placement could reuse N8.7 wholesale.

Why A wins (the grounded pick — APPLIED). The creature schema is tameable/familiar/husbandry-shaped: spawn_rate, tier_classification, bonding-window, tameable, breeding, and the 8 mesh_/generation_ cols (FA-2). Gather-input flora needs a disjoint field set — part, prep, mode, effect, active_compound, poison_class, dose (FL-2/FL-7) — none of which exist on the creature row. Overloading would leave ~30 creature cols null on every flora row AND force husbandry semantics (taming/breeding a plant) onto the discriminator, which the completeness pass would read as schema rot. A purpose-built ~14-col flora schema is the cleaner diff, and the gen_row_struct.py pipeline makes a second USTRUCT free (FL-12) — the precedent that matters is the *pipeline* (one USTRUCT per registry), not the *table*. Ruling: mint T0_Flora_Registry (path A). Consequence: FL-8 amends the deep-read contract to add a flora entity_kind → the new registry (not to Creature_Roster), and the ecology sim (LW-ECO) treats flora nodes and fauna as parallel simulatable classes over their own tables.

---

11.6.4 D-ECONOMY-MEDIUM — the transaction-medium brief *(carried as a BRIEF; recommendation + options, never bare)*

The gap. The trade MODEL is canon — T1_Trades_Master §9.2 (player-driven economy rests on trade interdependence; scarcity is real because materials are region-specific and require physical presence) + §9.1 (spellcraft and consumables are two separate economies) — but the medium (what the player pays with, how a vendor prices, where L2 treasure sits) is undefined. The slice needs *some* exchange the moment the player has gathered materials + drops with nowhere to spend them.

The options.

Recommendation direction (per the pack): Opt-1 — historically-real mixed exchange per region, no universal coin early. Land it as: a medium_of_exchange token on Region_Index (region → accepted media), vendor mechanics as a P2.6 inventory-component consumer (barter table + local-medium pricing), and L2 treasure placement = the σ-drop spine (LW-WIRE) + gather yields. This is proposal-tier pending Josh (economy medium is a cardinal-canon surface: it sets a world rule) — brief presented, not applied.

Economy items (EC) the brief spans *(the EC lean-recovery file returned empty — positive-control: tasks/ac6bd01d4145bf2c6.output and …accfbed6289b3e6b5.output both exist-but-empty; economy is grounded from the D-ECONOMY-MEDIUM brief + §9.1/§9.2 + P2.6, NOT re-derived):*

---

11.6.5 Trade substrate build order + the deferrals *(from the trades map)*

The slice is entirely pre-first-trade-home (earliest ancient home is Ch7, Blacksmith+Herbalism, S.India — T1_Trades_Master) — [RESCOPE RE-DERIVE — see §A.0: Ch 7 is inside the ruled PROLOGUE→CH 13 slice, so this sentence's premise is invalidated; the order below re-derives against the ruled scope]; every trade Ch2-5 touches is *substrate seeding*, not a mastery climb. The trades-map recommended structuring/introduction order for the pre-5090 window:

Tailoring > Engineering > Blacksmith > Herbalism > Mining > Inscription — with Alchemy + Culinary DEFERRED (they are consumer trades: Alchemy requires Herbalism botanical inputs, Culinary requires the vril-food substrate-perception unlock — both HL_0082 Apothecary/Atelier compound trades that need their feeder trade structured first).

This order drives which trade rows/gates (TR-2/TR-3/TR-6) and which compound wiring (MN-11 Forge, FL-11 Apothecary) get authored first. It is a build-priority recommendation, not a canon ranking — the 10-trade/12-tier/120-gate numerical canon is untouched (185 abilities, 10 trades, 22 familiar slots all intact; no item mints an nth+1).

---

11.6.6 Living-World wave rollout *(each wave with its verified-by clause; slots into the global re-ranked queue as the "living-world" wave, W-LW2 the engine core, W-LW1 parallel in the canon lane, W-LW3 folding into the Ch3-5 region + transitions waves)*

WaveContentsRunsVerified-by
W-LW1 — Substrate Authoring (canon-side)All 11.6.1 rows/registries/repairs (FA-1/4/5/6/7/8, FL-1/2/5/7/8/9, MN-1..12, TR-2/3/6, LW-5/6/7/9/11, AB-5)Parallel with the trunk NOW; no engine dependencyEach new registry passes normalize-doc critic GO; run_gates.py green with a refreshed fidelity_baseline.json in the same commit; positive-control greps re-run (angkor fauna >0, flores minerals >0, LINK_0186 NOT re-authored, 185/10/22 counts intact); Chakra Thunderbolt literal = 0 in Ability_Tree post-rename
W-LW2 — Engine Core (game-side)FA-2, FL-12, LW-12, LW-WIRE, FA-3, LW-ECO, FL-3, MN-6, TR-1, LW-1/2/3, EC-inventory, EC-treasureAfter W-LW1 rows exist + the trunk import (T0.8) lands the tablesPIE smoke: wildlife observable in a region (FA-3 consumes DT_CreatureRoster); a forage/mine round yields within ±1σ across N draws (LW-WIRE, HL_0061); the clock advances day→dusk→night and a Pawukon day resolves (LW-1/3); over-gathering a test zone migrates+regrows, a progression_critical node does NOT (LW-ECO); QA-1 capture + run_gates.py + the WS-10 loop green
W-LW3 — Ch3-5 Fold (folds into the region + transitions waves)FL-4/6/10/11, MN-7, TR-4/5/7, LW-4/8/10, EC-vendor, festival windows (LW-5 runtime)Per-region, as each of flores(Ch3)/bali(Ch4)/sumatra_java+angkor(Ch5) stagesEach region stages in a captured playthrough with: gather/mine nodes placed by weightmap (FL-4/MN-7 over W4.8), ambient NPCs on a day/night schedule (LW-8), a readable relational-web surface (LW-10), and a live festival/Pawukon window (LW-4/5); the Komodo bite→cure loop (FL-10) completes end-to-end on Flores
post-5090 *(note-only, not scheduled)*FL-13 (Angkor lowland-Cambodia ethnobotany — acquisition obligation, SRC_00322 names 0 plants), FL-14 (deep-read flora pharmacology/compound-curves/dose + ecolinguistic name-decode), TR-8 (corpus-wide trade_expression deep-read), MN deep-read enrich, all generative meshes/atmos/audio skinsAfter 5090 + book scansThe deep-read enrichment pass over the placeholders authored in W-LW1/2/3; non-destructive (never re-invents the cited cores)

---

11.6.7 Binding-correction & adjacency notes *(apply; do not re-litigate)*

---

SECTION 6 — WS-4+ THE CH 3-5 REGION ROLLOUT

RECONCILED (Vol2): RE.5 cite corrected — HL_0003 only (HL_0032 dropped; it is the 12-side-questline lock, cite C1). RX.1 owns the Ch-4 era-swap chapter mechanic (folds LW-4); its deps now explicitly include LW-3 + LW-12 + the LW-4 fold (cohere H5). RX.3 → cross-ref to PG-1/PG-6 (the ws3_prog cross-map backbone is the single owner; RX.3 is the regions-side verified-by, cohere H1). The 9 RB.1 bbox fills are authored in LANE-CANON.

WS-4+ — The Ch 3-5 Region Rollout *(the CH_02 pipeline generalized to 3 regions / 4 maps; terrain builds are the long poles)*

Ch 2 is the built reference: FloresIsland.umap imported (W4.1, wave D) + dressed + CH_02 staged, BE_0002 StateTree compiled. This section rolls that ONE proven pipeline across the rest of the slice — CH_03 → flores_island (terrain ALREADY BUILT), CH_04 → bali, CH_05 → sumatra_java + angkor_khmer (excursion) — by generalizing three flores-hardcoded drivers, running the deterministic GIS chain against the three un-built regions, filling 9 cited zone bboxes, and CONSUMING the 16 already-authored slice boss rows (BE_0002..BE_0005 in T0_Boss_Encounter_Registry, verified — never re-author). Nothing here needs a generative model: DEM/GDAL fetch, Landscape import, weightmap paint, StateTree build, and data staging are all deterministic. The long poles are the three terrain builds (bali · sumatra_java · angkor_khmer) — network-bound GIS fetches that parallelize, gating only the STAGING of their maps, not each other and not the CH_03 work.

Density register (Josh's curve): Ch 2-5 = early-game, deliberately lighter, seed-rich. The per-chapter budget the rollout stages is the OPENING band — ~7-9 sites, 12 beats, 4-5 encounters, 1-2 forks each — not the completionist density of mid/late game. The rollout builds the STRUCTURE at max honest pre-5090 polish (greybox geometry, real geo-placement, real StateTrees, real forks); the deep-read weave/culture/side-quest enrichment and all generated finish (VFX/SFX/music/MetaHuman) ride the post-5090 pass.

Chapter → region → map (verified: spine headers + Zone Catalogs + Saved/Terrain/)

chapterregion_id(s)map(s) neededterrain statesitesbbox-readyslice bosses (consumed)fork(s)
CH_03flores_islandFloresIsland.umap (BUILT)built (reuse)72/7 → 7/7 after 5 fillsBE_0003 + S1/S2/S3FORK_CH03_A (B11)
CH_04baliBali.umap (NEW)not built — long pole #175/7 → 7/7 after 2 fillsBE_0004 (3-phase) + S1/S2/S3FORK_CH04_A (B09)
CH_05sumatra_java (anchor) + angkor_khmer (excursion)SumatraJava.umap + AngkorKhmer.umap (NEW ×2)not built — long poles #2, #39 (4+5)7/9 → 9/9 after 2 fillsBE_0005 + S1/S2/S3/S4FORK_CH05_A (B09) · FORK_CH05_B (B11, integrity-gated LETHAL)

Positive controls (re-verified this pass, both repos read-only): Saved/Terrain/ holds only flores_island_* → bali/sumatra_java/angkor_khmer confirmed un-built. The 9 empty zone_bounds_wgs84 cells read directly from build/zones/{slug}.csv (flores CH_03: compang_lingko_fields, wae_water_spring, mama_klaras_waterfall, todo_royal_village, lingko_forest_edge; bali: village_balian_ward, wayang_performance_ground; angkor_khmer: kra_traverse, bayon_taprohm). T0_Boss_Encounter_Registry has exactly 16 rows CH_02-05 (BE_0002 ×3, BE_0003 ×4, BE_0004 ×4, BE_0005 ×5) — the slice bosses EXIST as canon.

---

J.1 — Generalize the three flores-hardcoded drivers *(one pass unblocks bali + sumatra_java + angkor_khmer staging)*

The terrain-derive (derive_region_bbox.py --slug) and GIS-fetch (terrain_fetch_preprocess.py --params) drivers are ALREADY region-agnostic (verified: both take a slug/params, derive FAILS LOUD on zero anchored zones). The StateTree builder (build_boss_statetree.py --boss) is ALREADY boss-parameterized. The three that hard-code flores_island/FloresIsland/CH_02/BE_0002 are the import, dress, and stage drivers — generalize each to --slug/--chapter, deriving the boss(es) from DT_BossEncounter by chapter_id, and every terrain number from Saved/Terrain/<slug>_terrain_meta.json (the single-source-of-truth pattern is already in-code).

iditemcanon citation / absence-prooftagdependswave
RG.1import_region_landscape.py — generalize import_flores_landscape.py to --slug <region> (map name /Game/Maps/<PascalRegion>, all numbers from <slug>_terrain_meta.json; idempotent reload + sky rig + PlayerStart + spectator GameMode preserved)Tools/import_flores_landscape.py (flores-hardcoded, verified — flores_island/FloresIsland literals); the W4.1 shim UHumanityLandscapeImporter is region-agnostic C++ (game a591e03)BUILD-NOWW4.1 (DONE)J
RG.2dress_region_map.py — generalize dress_flores_map.py (--slug; sea-level Z derived from the same meta transform per region; ocean plane + raking sun; --sealevel-m honest-frame nudge kept)Tools/dress_flores_map.py (flores-hardcoded, verified)BUILD-NOWRG.1J
RG.3stage_region_chapter.py — generalize stage_flores_ch02.py to --slug --chapter CH_NN (site markers from the region's Zone Catalog zone_bounds_wgs84; PlayerStart at the opening site; boss(es) resolved from DT_BossEncounter where chapter_id==CH_NN; empty-bbox sites FLAGGED never guessed, per the recharge_waterfall/manggarai_village_edge lesson)Tools/stage_flores_ch02.py (CH_02/BE_0002-hardcoded, verified; the UTM→world-cm transform + AHumanitySiteMarker binding are region-agnostic)BUILD-NOWRG.1, RG.2J

Verified-by: run all three against --slug flores_island --chapter CH_02 and assert byte-identical placement to the built FloresIsland.umap (the generalization must reproduce the reference exactly before any new region runs). QA capture leg reused (-HumanityTerrainShot=), image-critic on the frame.

---

J.2 — The 9 cited bbox fills *(the rider pattern: apply_zone_catalog_columns.py, all-or-nothing, --emit-baseline same commit)*

Fill the 9 empty zone_bounds_wgs84 cells so the staging step resolves 7/7 · 7/7 · 9/9. This is canon-side execution (region geometry within the locked structure — apply and show the path, no Josh flag): real named places get a gazetteer geo-citation; composite/named-in-canon sites get a placement sub-box within a cited real locus, explicitly flagged. Landed via the T0.1 single-writer as one rider per region page + its registry mirror; refresh fidelity_baseline.json in the SAME commit (the standing baseline-shift rule).

idfillcitation basis (cited-or-placement)carewave
RB.1aflores compang_lingko_fieldsGEO — the Cancar/Ruteng spider-web *lingko* fields, real Manggarai locus (CH_03.md L8, L28)standardJ
RB.1bflores todo_royal_villageGEO — Todo traditional royal village, Satar Mese, Manggarai (CH_03.md L8, L85; protected living heritage referenced-not-reproduced)standard (protected site)J
RB.1cflores wae_water_springPLACEMENT within the cited Wae Rebo water-source locus (CH_03.md L28 "Wae water-source spring")standardJ
RB.1dflores mama_klaras_waterfallPLACEMENT within the cited Manggarai waterfall locus (CH_03.md L8 "Mama Klara's waterfall")standardJ
RB.1eflores lingko_forest_edgePLACEMENT adjacent to RB.1a (the montane forest-edge clearing line; CH_03.md L88)standardJ
RB.1fbali village_balian_wardPLACEMENT within the cited Ubud-area village cluster (CH_04.md sites L86-99; the *balian* ward)standardK
RB.1gbali wayang_performance_groundPLACEMENT within the cited village cluster — MAIN-boss site, hosts 5 beats (CH_04.md; BE_0004 ground)standardK
RB.1hangkor kra_traverseGEO — the Kra Isthmus portage corridor, real (CH_05.md L15 "portages the Kra Isthmus"; hosts no primary beat — traversal/dialogue)standardL
RB.1iangkor bayon_taprohmGEO — the Bayon + Ta Prohm temples, Angkor Thom, real adjacent (CH_05.md L100; hosts B08 assimilation beat)standard (Khmer stays standard; ELEVATED is scoped only to west_baray/myson_champa per CH_05.md L12)L

Absence-proof discipline: RB.1c/d/e/f/g are placements (no canonical point exists) → each ships flagged in TODO_CANON with the cited real locus it sits inside, exactly as CH_02's two un-bbox'd sites were flagged. Verified-by: check_region_page.py + a re-run of stage_region_chapter.py resolving 7/7 · 7/7 · 9/9; the fidelity gate "FAIL set" grows by exactly these 9 cells + baseline refresh.

---

K/L — The three region terrain chains *(GIS fetch → import → dress → stage; the long poles; deterministic, parallelizable)*

Each region terrain derives its region_bbox from the FILLED zones alone (union + pad) — so the un-built regions build even with empty zones (bali 5/7, sumatra_java 4/4, angkor_khmer 3/5 all derive clean, verified). The bbox fills (J.2) gate STAGING of those specific sites, NOT the terrain build. All three GIS fetches can run concurrently the moment RG.1-3 land — they are network/CPU-bound, no GPU, no cross-dependency.

iditemcanon citation / absence-prooftagdependswave
RT.1bali chain: derive_region_bbox --slug baliterrain_fetch_preprocess --params (COP30 DEM, absolute-height, WorldCover weightmaps) → import_region_landscape --slug balidress_region_map --slug bali → Bali.umapbuild/zones/bali.csv (5/7 bbox'd, verified); no Saved/Terrain/bali_* (absence-proof: un-built); region page _source/02_Tier_2_Region_Pages/bali.md; CH_04.md L8 (Besakih/Tirta Empul/Jatiluwih/Sanur/Uluwatu)BUILD-NOWRG.1-3, W4.3K (long pole #1)
RT.2sumatra_java chain (anchor): same 5-step → SumatraJava.umap (borobudur, palembang_port, samosir_highlands, merapi_slopes)build/zones/sumatra_java.csv (4/4 bbox'd, verified — cleanest derive); no Saved/Terrain/sumatra_java_*; CH_05.md L8BUILD-NOWRG.1-3, W4.3L (long pole #2)
RT.3angkor_khmer chain (excursion 2nd map): same 5-step → AngkorKhmer.umap (angkor_wat, west_baray, myson_champa derive the bbox; kra_traverse + bayon_taprohm fill in)build/zones/angkor_khmer.csv (3/5 bbox'd, union derives, verified); no Saved/Terrain/angkor_khmer_*; CH_05.md L9 (first-class page under the anchor)BUILD-NOWRG.1-3, W4.3, RB.1h/iL (long pole #3)

Verified-by (per region): derive_region_bbox emits a clean region_bbox (fails loud if not); terrain_fetch_preprocess emits absolute-metre heightmap + 7 WorldCover weightmaps at valid vertex size; import_region_landscape read-back asserts component count = ⌈X/quad⌉×⌈Y/quad⌉ and bounds match the meta JSON (the FloresIsland 132-component round-trip pattern); a dressed-coastline capture goes to Josh (frame-claim honesty: numbers stay honest, the sea/rake fix makes the frame TRUE before it ships). W4.3 hardening (absolute-metre encoding + void-fill fallback) is a hard prerequisite — un-hardened it manufactures false craters/tile-seams across the multi-tile SEA regions.

---

F′ — W4.8 biome material, generalized + applied per region *(the F-wave fold — currently flores residue)*

W4.8 (weightmap-driven auto-material + PCG biome binding) does NOT yet exist in the game repo (absence-proof: no M_Landscape_Auto, no weightmap-paint driver — the 7 flores WorldCover maps are imported as LayerInfo DATA only, per the 2026-07-24c ledger; the paint pass is flagged residue). Generalize it once, apply per region as each terrain lands.

iditemcanon citation / absence-prooftagdependswave
RM.1bake_region_material.py + M_Landscape_Auto (layer-blend keyed on WorldCover weightmaps; worldcover_biome from the Zone Catalog routes the template; explicit fallback so an unseen biome never silently no-ops)W4.8 (plan §6, BUILD-NOW, unbuilt); worldcover_biome column present in all 4 build/zones/*.csv (verified)BUILD-NOWW4.1 (DONE)F′
RM.2Apply RM.1 per region (flores residue first, then bali/sumatra_java/angkor_khmer as each *.umap lands) — paints grass/forest/crop/water/wetland/bare-rock/urban from the pixel-aligned weightmapsflores 7 weightmaps built (Saved/Terrain/flores_island_wc_*.png, verified); bali/sumatra_java/angkor_khmer weightmaps emitted by RT.1-3BUILD-NOWRM.1, RT.1-3F′ (rides each region)

Verified-by: a lit oblique capture per region shows painted biomes (not a grey/white slab), image-critic PASS; weightmaps confirmed pixel-aligned to the elevation grid (the W4.5 same-AOI resample). PCG population + Nanite/HLOD batch bake is the 5090-gated tail; the material/paint harness is not.

---

Per-chapter STAGING + ENCOUNTER waves

Staging = stage_region_chapter.py places site markers + PlayerStart + boss(es); encounters = build_boss_statetree.py --boss <id> per slice boss (an EXISTING parameterized tool — the roster is consumed, not authored). The new work is the win-condition verb BEHAVIORS beyond DODGE/STRIKE (the care-doctrine appease/balance/endure seams), shared with C1.6 (ability set) + C1.13 (environmental-boss protocol) + the HP-0 defeat-axis ruling (open in TODO_CANON, blocks presentation polish but not the greybox StateTree).

iditemcanon citation / absence-prooftagdependswave
RS.3CH_03 staging on the built flores map: 7/7 site markers (2 built + 5 after RB.1a-e), PlayerStart, BE_0003 at todo_royal_villageCH_03.md L77-90 (7 sites); flores terrain BUILTBUILD-NOWRG.3, RB.1a-eJ
RE.3CH_03 encounters (consume): BE_0003 (2-phase, PARRY/EXPOSE, axis 45/30/25) + S1 Naga Tana (ATTUNE/PERCEIVE) + S2 Poka Puar (DISARM/RESCUE) + S3 Twisted-Word (DECODE/EXPOSE) — StateTrees built via the parameterized builder; NEW verbs ATTUNE/PERCEIVE/DISARM/RESCUE/DECODE = appease-not-slay behaviors to buildT0_Boss_Encounter_Registry BE_0003/_S1/_S2/_S3 (verified: verbs parry/expose, attune/perceive, disarm/rescue, decode/expose; win PACIFY;EXPOSE / PURGE / REDUCE;FREE / PERCEIVE;REFUTE;EXPOSE); HL_0003 (combat routes through the broker's bought champion, never the Manggarai)BUILD-NOWbuild_boss_statetree.py (DONE), C1.6, C1.13J / G-fold
RS.4CH_04 staging on Bali.umap: 7/7 (5 built + 2 after RB.1f/g), PlayerStart, BE_0004 at wayang_performance_ground (the 5-beat main-boss site)CH_04.md L86-99 (7 sites); RT.1 mapBUILD-NOWRG.3, RT.1, RB.1f/gK
RE.4CH_04 encounters (consume): BE_0004 first 3-phase (PERCEIVE/STRIKE, 30/45/25) + S1 Gate-Naga (EVADE/ATTUNE) + S2 Night-Leyak (BANISH/PERCEIVE) + S3 Barong-Rangda (BALANCE/READ) — NEW: vril_management resource-budget combat + BALANCE dynamic-equilibrium ritual + BANISH; 3-phase graph is UNVERIFIED past 2 (the builder scaffolds N-phase from the table; first real 3-phase — verify explicitly)T0_Boss_Encounter_Registry BE_0004/_S1/_S2/_S3 (verified: 3 phases, verbs perceive/strike, evade/attune, banish/perceive, balance/read); HL_0003/HL_0005 (route through the leyak/bhuta-kala/certification apparatus, never the Balinese community; leyak/Rangda depicted as the tradition holds them)BUILD-NOWbuild_boss_statetree.py (DONE), C1.6, C1.13K / G-fold
RS.5aCH_05 anchor staging on SumatraJava.umap: 4 anchor sites (borobudur, palembang_port, samosir_highlands, merapi_slopes), PlayerStart, BE_0005CH_05.md L90-107; RT.2 mapBUILD-NOWRG.3, RT.2L
RS.5bCH_05 excursion staging on AngkorKhmer.umap: 5 sites (angkor_wat, west_baray, bayon_taprohm, myson_champa, kra_traverse); west_baray + myson_champa carry ELEVATED care (Cham/war surfaces)CH_05.md L96-104, L12 (ELEVATED scoped to west_baray combat-staging + myson_champa sanctuary; Cham-source grounding obligation)BUILD-NOW (greybox) / final content GATED-SCAN (CG-29 Champa/Cham)RG.3, RT.3, RB.1h/iL
RE.5CH_05 encounters (consume): BE_0005 (2-phase, STRIKE/DECODE) + S1 Broker Chelvan (DECODE/PURSUE info-midboss) + S2 Borobudur Gate-Guard (EVADE/ATTUNE) + S3 Naga Padoha (ENDURE/BIND hold-not-win) + S4 devaraja-official (EXPOSE/OUTMANEUVER, at west_baray river-war set-piece B09); NEW: ENDURE/BIND, EXPOSE/OUTMANEUVER, two-peer river-war backdropT0_Boss_Encounter_Registry BE_0005/_S1/_S2/_S3/_S4 (verified: verbs strike/decode, decode/pursue, evade/attune, endure/bind, expose/outmaneuver); HL_0003 (route through the datu/broker/official + begu ganjang/Naga Padoha/constructs, never the Batak/Khmer/Cham)BUILD-NOWbuild_boss_statetree.py (DONE), C1.6, C1.13L / G-fold

---

RX — The chapter-specific mechanics + the transitions backbone

iditemcanon citation / absence-prooftagdependswave
RX.1Ch-4 Pawukon / time-fluctuation window mechanic — a runtime that swaps the level's era-stratum (present ~1200 CE Warmadewa ↔ the reached-forward Majapahit-absorption stratum) within the ONE Bali map, keyed on a beat/Pawukon-clock trigger; NOT free time travel, a ruled beat windowCH_04.md L9/L11 (Majapahit stratum reached across time-fluctuation windows; never the present frame), L59 (the 210-day Pawukon calendar, documented Balinese knowledge-system); ChapterIndexRow.h:27 time_fluctuation_range is a DATA field with no runtime (absence-proof, verified)BUILD-NOWQ3.3 (DONE), WorldState (DONE)K
RX.2Ch-5 excursion structure — the there-and-back SECONDARY loop: anchor (SumatraJava) → ruled ground/water travel beat → excursion (AngkorKhmer) → double back; anchor's resolved beats never re-opened; kra_traverse = the portage transition corridorCH_05.md L9 (there-and-back secondary excursion under the anchor per EXPANDED_COVERAGE_MAP A1), L15 (continuous ground-and-water only — Malacca→Kra portage→Gulf→Tonle Sap→My Son→double back); NOT free cross-region travel (Vimana-gated Ch 55, WGM §7)BUILD-NOWRT.2, RT.3, RX.3L
RX.3Cross-map transitions + save/load backbone + chapter-select flow harness — carry the baked-42 ws.* across a level change + travel-between-maps (identity_hiding_status, familiar_bond_state Shell→+Kira→+Khan, community_state_per_region manggarai→bali→batak, integrity_score/path_bucket, journal_status, age_stage); a boot menu + chapter entry to run CH_02→05 end-to-endslice_map cross-cutting seam (verified: UWorldStateSubsystem exists but cross-map carry is unbuilt — absence-proof); all ws.* writes ∈ the baked 42 (grep-verified, no new var); this is the backbone of the "cross-chapter progression" targetBUILD-NOWP2.7 (DONE+EXTEND), Q3.3 (DONE)M

Verified-by (RX.3): a scripted CH_02→CH_03→CH_04→CH_05 walk asserts every handoff key survives the level change (Shell bonded at Ch3-in, +Kira at Ch4, +Khan at Ch5; community marks accumulate; integrity band carries; octopus/Sanur familiar stays deferred/gated). RX.1 verified-by: the stratum swap is reversible and writes no new ws var. RX.2 verified-by: the excursion doubles back to the anchor with the anchor's beat-state intact (no re-open); FORK_CH05_A/B resolve on the anchor return (integrity-gated lethal route offered on the two corrupt operatives ONLY — datu + court official — never the communities, per CH_05.md L276).

---

Wave assignment — the 2-3-week window (terrain builds as the long poles)

The rollout parallelizes hard: the generalization pass + data fills land day-1, the three GIS fetches kick off immediately after and run concurrently in the background (network-bound), and CH_03 (built map) completes end-to-end while bali/sumatra_java/angkor_khmer terrain bakes.

wavescopeitemslong poleverified-by
J (week 1)Region-generalize + data-fill + CH_03 full (built-map validation)RG.1-3, RB.1a-e, RS.3, RE.3, RM.1none (flores built)drivers reproduce FloresIsland byte-identical; CH_03 stages 7/7 + BE_0003 ×4 StateTrees; playable arrival→caci→boss on the real island
F′ (rolling)W4.8 material generalize + per-region applyRM.1, RM.2rides each terrainlit biome capture per region, image-critic PASS
K (week 2)CH_04 / baliRT.1, RB.1f/g, RS.4, RE.4, RX.1bali terrain (#1)Bali.umap round-trip; 7/7 staged; BE_0004 3-phase verified (first past 2); Pawukon stratum swap reversible
L (week 2-3)CH_05 / sumatra_java + angkor_khmer + excursionRT.2, RT.3, RB.1h/i, RS.5a, RS.5b, RE.5, RX.2two terrains (#2,#3) — parallel to Kboth umaps round-trip; 9/9 staged; BE_0005 ×5; excursion doubles back intact; ELEVATED sites greybox-only (final GATED-SCAN)
M (week 3)Transitions backbone + chapter-select harnessRX.3none (code)scripted CH_02→05 walk carries every ws.* key across 4 maps; boot menu runs the slice end-to-end

Long-pole note: the three terrain builds are the schedule spine, but they are network/CPU-bound deterministic fetches that overlap fully — start all three the moment J's RG.1-3 land; K and L are gated on their terrain finishing, not on each other. The AI QA loop (WS-10) wraps every wave: capture → image-critic → functional/regression → the repro-first bug ledger; Josh's feel-pass is the slice playthrough, never bug-finding.

Care/reveal riders carried forward (already in the spine, verified — the rollout must not leak them): no House-of-Velheim name/family/pattern player-facing across CH_03/04/05 (the family first appears Ch 8; the datu's FAMILY_BRIEFED awareness reads only as unnamed unease); all perception at the Neophyte register (inscription/reverence/lore tells, never a tier-6 vril read — HL_0028); the Khmer Rouge modern trauma held OUT of the ~1200 CE era (standing high-care flag, never spectacle); the CH_05 lethal fork falls only on the two corrupt operatives.

---

SECTION 7 — WS-5/6 AUDIO FRAMEWORK + CINEMATIC EVENTS (the AV layer)

RECONCILED (Vol2): ws56_av is the SINGLE home for CN-1..CN-9 (ws3_prog references) and for AU-10 (ws1_feel references). The audio spine AU-8→AU-1→AU-2 rides master W2 FEEL (early), not W7 — so W2 hit-confirm audio (AU-10) has its spine (cohere H2). CN-1..8 are the master W7 SLICE-PRESENTATION wave; CN-9 parked (Josh #22). AU-13 correctly cites the SFX registry at 12 rows.

WS-5/6 ENHANCEMENT — Audio Framework + Cinematic Events (the AV presentation layer)

Dive-1's AU/CN maps found the same shape twice: **the channels + data are built, the feel + the
consumer are not.** SFX ride 3 hardcoded PlaySoundAtLocation calls that bypass the C1.16 cue
channel entirely; the island is silent; DT_SceneAnchor's 439 imported rows have zero consumer
and Build.cs carries no LevelSequence/MovieScene/MetaSound deps. WS-6 §8 (A6.1–A6.8) and
WS-5 §7 (CN5.1–CN5.9) scoped the *generation* pipeline; this block adds the greybox-tier runtime
that plays a scene and makes a hit audible NOW — the part Josh's Ch2-5 slice needs before any 5090
asset exists. TAG LAW (binding critic correction): only generative *inference* is 5090-gated —
the MetaSound graphs, the SoundClass mix, the scene-presentation subsystem, letterbox, cine-camera,
footstep-by-surface routing are all deterministic BUILD-NOW; only the final generated
WAV/VO/Niagara *asset* drops in later. Every +5090-final below gates the asset, never the seam.
Care: cinematic + audio honor hard_line_relevance / reveal: HELD (the Ch2 polo is a materialized
superstition, never a dukun; no Grand-Sage/Cassius thematic leak in any cue or scene) [SRC:
T99_Translation_Cinematic §2.4, Step 1; T99_Translation_Audio §2.7; HL_0046 gate #25 grand_sage_silence].

Item-ids carry the dive prefix (AU-/CN-); the Fold column names the §8/§7 plan item each expands

(never a net-new duplicate) or marks NEW. +DA = generated-asset drop-in is GATED-5090; the runtime is BUILD-NOW.

---

WS-6 — Audio Framework (the AU items)

The whole lane hangs off one routing decision: today cue→sound is two disconnected paths (the

C1.16 GameplayCue channel fires notify-stubs while placeholder SFX play in PARALLEL via hardcoded

calls — dive AU-2). AU-1 + AU-2 + AU-8 are the spine: build the subsystem, register the cue

manager, link the module. Every other AU item routes through them.

IDItemFoldCanon citation / absence-proofTagDependsWave
AU-8Link MetaSound/MetaSoundEngine/AudioMixer/Quartz C++ modules in Humanity.Build.cs — the unstated prerequisite under A6.5.A6.5 (prereq)ABSENCE: Humanity.Build.cs links only GAS/StateTree/Input/ImageCore, zero MetaSound/AudioMixer/Quartz (dive AU-8, positive-controlled). Needed by A6.5 MetaSounds/Quartz [SRC: §8 A6.5; T99_Translation_Audio §2.2].BUILD-NOWFEEL (audio spine)
AU-1UHumanityAudioSubsystem — the single owner of playback/mix/routing; every SFX/ambient/music call goes through it, not PlaySoundAtLocation. Elevated to first audio move.A6.8 (expand→spine)§8 A6.8 UHumanityAudioSubsystem = BUILD-NOW; ABSENCE: no such class in Source, SFX via 3 hardcoded PlaySoundAtLocation (DamageExecCalc.cpp:68) (dive AU-1). Owner for §2.2 SoundFactory + MetaSounds seam [SRC: §8 A6.8; T99_Translation_Audio §2.2].BUILD-NOWAU-8FEEL (audio spine)
AU-2Register UHumanityGameplayCueManager in DefaultGame.ini + collapse the parallel SFX path into the cue channel — defect fix (cues currently bypass the channel).NEW (fixes C1.16)§3 C1.16 GameplayCue channel is DONE-as-channel; ABSENCE: UHumanityGameplayCueManager exists but 0 hits in DefaultGame.ini; DamageExecCalc.cpp:64 SFX "ride events until the global cue manager is wired" (dive AU-2) [SRC: §3 C1.16; §8 A6.8].BUILD-NOWAU-1FEEL (audio spine)
AU-3Footstep-by-surface + jump/land/dodge/roll foley runtime; PhysMat→footfall_surface map, placeholder cues per surface.A6.5 (expand)§8 A6.5 per-zone footfall from Zone-Catalog footfall_surface (T0.2 column present); ABSENCE: no footstep/foley code or PhysMat map, Content/Audio 0 movement cues (dive AU-3) [SRC: §8 A6.5; §2 T0.2; T99_Translation_Audio SFX Step 1 (footstep reads terrain), Step 5].BUILD-NOW +DAAU-1, AU-8FEEL
AU-9Per-mode/weapon/ability SFX selector — route a cue by combat-mode / weapon_class / ability cast_pattern off the §10.6 sfx_id_ref arrays, not 4 shared cues.A6.2 (expand)§8 A6.2 per-registry sfx_id_ref arrays (weapon/ability/…); ABSENCE: 4 cues reused across 8 modes/185 abilities/72 weapons, no selector (dive AU-9). Wires per SFX Step 6 array discipline [SRC: §8 A6.2; T99_Translation_Audio SFX Step 6 §10.6].BUILD-NOW +DAAU-1, AU-13, A6.2FEEL
AU-10Hit-confirmation audio taxonomy — hit/block/miss/whiff/crit + Composure-break sting differentiation (Josh's named "how the player KNOWS it landed").NEW (audio half of CF-1/CF-6)ABSENCE: DamageExecCalc plays ONE generic impact cue, no block/miss/crit taxonomy (dive AU-10); pairs the deterministic hit-stop/flash feel layer [SRC: T99_Translation_Audio SFX Step 5; §3 C1.16].BUILD-NOW +DAAU-1, AU-2FEEL
AU-4Silent-island fix — per-biome ambient bed slot on Flores (wind/ocean/jungle loops), ambient-playback slot driven by region_environmental_ambient_sfx_id_ref_array.A6.8 + A6.1 (expand)§8 A6.8 ambient bed slot / A6.1 Section-10 cue table; ABSENCE: Content/Audio = 4 combat cues + door only, ambient array declared unpopulated, island silent (dive AU-4) [SRC: §8 A6.1, A6.8; T99_Translation_Audio SFX Step 1 (environmental reads biome + Vril-Site + Section 17)].BUILD-NOW +DAAU-1SLICE-PRESENTATION (AV)
AU-5Music runtime framework — playback slot + combat↔exploration STATE machine + adaptive-graph seam; generation stays 5090-gated, the runtime seam is BUILD-NOW.A6.8 + A6.5 (expand)§8 A6.8 music-playback slot / A6.5 Music-STATE cue routing (ungated); §0 gates only generation; ABSENCE: no music asset/slot/state-machine in Source (dive AU-5) [SRC: §0 gating; §8 A6.5, A6.8; T99_Translation_Audio Music Step 5 (SoundFactory import), Step 6 (MetaSound/Quartz)].BUILD-NOW +DAAU-1, AU-8SLICE-PRESENTATION (AV)
AU-73D/spatial audio config — author a SoundAttenuation asset + consume FSfxRegistryRow.spatial_attenuation; positional falloff on every cue.NEW (wires A6.3 struct)§8 A6.3 FSFXRegistryRow DONE; ABSENCE: no SoundAttenuation asset, PlaySoundAtLocation called with no attenuation arg (DamageExecCalc.cpp:70), spatial_attenuation column unread (dive AU-7) [SRC: §8 A6.3; T99_Translation_Audio §2.2].BUILD-NOWAU-1SLICE-PRESENTATION (AV)
AU-6Audio settings/mix — SoundClass/SoundMix hierarchy (Master/Music/SFX/Voice/Ambience) + volume sliders + GameUserSettings persistence. Shipping-RPG UX hole absent from §8.NEWABSENCE: no SoundClass/SoundMix in Content, no audio keys in DefaultEngine.ini, no settings UI (dive AU-6); sibling of §12 #26 UX-spec gap [SRC: §12 #26; T99_Translation_Audio §2.2].BUILD-NOWAU-1UI
AU-11UI SFX — MetaSounds procedural select/confirm/quest-update/fork-commit/objective-complete cues for the landed quest-panel + fork UI (game 303e9f2, shipped with zero audio).NEW (SFX Step 5)ABSENCE: quest/fork UI landed with no audio, no UI/menu SFX in Content/Audio (dive AU-11); §8 A6.5 procedural UI SFX unbuilt [SRC: §8 A6.5; T99_Translation_Audio SFX Step 5 (MetaSounds procedural UI/footstep)].BUILD-NOW +DAAU-8UI
AU-12Tools/import_audio_assets.py — manifest-driven, format-agnostic SoundFactory importer (the solved-seam bring-in for Sonniss/generated banks at scale).A6.4 (build)§8 A6.4 import_audio_assets.py = BUILD-NOW; ABSENCE: absent from Tools/ (only generate_sfx.py/gen_placeholder_sfx.py) — 4 placeholders imported ad-hoc (dive AU-12). Same import_asset_tasks pattern as mesh [SRC: §8 A6.4; T99_Translation_Audio §2.2, Music Step 5].BUILD-NOWUI
AU-13SFX coverage-map artifact + Ch2-5 registry population — which entity/event needs which placeholder cue; fills the empty per-entity sfx_id_ref arrays.A6.2 (author)§8 A6.2 arrays; ABSENCE: T0_SFX_Registry=12 rows, arrays on 10 registries declared unpopulated, no coverage-map doc (dive AU-13) [SRC: §8 A6.2; T99_Translation_Audio SFX Step 1 (bank plan per region/biome/creature)].BUILD-NOW +DAA6.2UI
AU-SSonniss #GameAudioGDC bundle download → SEGREGATED owned-only tree (no-AI-train wall) — Josh-download, zero compute.A6.7 (execute)§8 A6.7 Sonniss (FREE, acquire now); ROYALTY-FREE-OWNED, ships; feeds AU-12 import [SRC: §8 A6.7; §12 #16; T99_Translation_Audio §2.1 (license table), SFX Step 2 (licensed-first), §4 spike 11 (no-AI-train clause)].BUILD-NOW (acquire)ACQUIRE (anytime)

---

WS-5 — Cinematic Events (the CN items — a LIGHTWEIGHT scene-anchor runtime)

WS-5 §7 (CN5.1–CN5.9) is the FULL generative Sequencer/MetaHuman/MRQ/dispatch pipeline. Josh's slice

wants the greybox tier: play a scene by scene_anchor_id, cut a camera, frame a dialogue box,

render the Ch2 fork AS a scene, letterbox, skip. Dive-1's recommendation stands: build a

runtime presentation subsystem, NOT full LevelSequence assets — the 439 DT_SceneAnchor rows

become playable now; the MRQ/MetaHuman half parks on the 5090. CN-1 is the spine every other CN hangs

off. T99_Translation_Cinematic is the authority for the eventual full pipeline; these items are its

platform-runtime *greybox* realization.

IDItemFoldCanon citation / absence-proofTagDependsWave
CN-1UScenePresentationSubsystem — plays a scene by scene_anchor_id over the 439 DT_SceneAnchor rows (greybox: camera + timed beats, no LevelSequence asset) + add LevelSequence/MovieScene module deps to Build.cs. The consumer that doesn't exist.CN5.3 + CN5.6 (greybox realization)§7 CN5.3/CN5.6; DT_SceneAnchor = 439 imported rows (canon layer in-engine, ledger 2026-07-23c); ABSENCE: `grep LevelSequence\SceneAnchor Source/Humanity/Private = 0, Build.cs:14-30` no LevelSequence (dive CN-1) [SRC: §7 CN5.3, CN5.6; T99_Translation_Cinematic Step 4 (assembly), Step 6 (trigger); SPINE_SCHEMA_v3 §3d (7-col scene row)].BUILD-NOWAU-1 (audio slot)SLICE-PRESENTATION (AV)
CN-2UQuestSubsystem OnBeatEntered/OnBeatCompleted delegates — the beat→scene trigger CN5.6 needs; presentation binds by beat_ref.NEW (unblocks CN5.6)§7 CN5.6 "quest beat entry/exit"; ABSENCE: QuestSubsystem.h has no scene/beat delegate, AdvanceBeat writes telemetry only (dive CN-2); Q3.3 runtime DONE [SRC: §7 CN5.6; §5 Q3.3; T99_Translation_Cinematic Step 6 (beat entry/exit trigger)].BUILD-NOWQ3.3 (DONE)SLICE-PRESENTATION (AV)
CN-3Fork-as-scene (Josh's named gap) — give FORK_CH02_A a framed scene; author the missing CH02_B09 scene_anchor row (its beat has none).NEW (+ author 1 row)ABSENCE: HumanityDebugHUD.cpp:249-263 draws "FORK.. press 1/2/3" text; forks.csv FORK_CH02_A anchor CH02_B09, but scenes.csv has NO B09 row (dive CN-3). Care: honor reveal: HELD [SRC: §5 Q3.4 (fork dispatcher); T99_Translation_Cinematic Step 5 (path-conditional), Step 1 (hard_line_relevance); SPINE_SCHEMA_v3 §3d].BUILD-NOW +DACN-1, CN-2, Q3.4SLICE-PRESENTATION (AV)
CN-4Dialogue scene presentation — camera-on-speaker + subtitle box + advance input; per-line text via String Table. VO gen stays 5090-gated.NEWCH_02 SC_CH02_polos_offer (anchor_type: dialogue_initiation); ABSENCE: no DialogueLineRow.h in game Source, per-line text substrate unbuilt (dive CN-4) [SRC: T99_Translation_Cinematic Step 2 (participant/audio-driven facial), §2.5 (FText subtitle law); §4 P2.5 String Tables; §13 VO gen GATED].BUILD-NOW +DA(VO)CN-1, CN-8, P2.5SLICE-PRESENTATION (AV)
CN-5Letterbox / cine-mode — suppress the combat HUD, draw bars, switch to a cine ViewTarget on scene entry; restore on exit.NEWABSENCE: `grep Letterbox\CineMode Source = 0; HumanityDebugHUD.cpp:116-373` unconditionally draws combat/quest panels (dive CN-5) [SRC: T99_Translation_Cinematic Step 6 (realtime trigger); §11.5 QA (HUD-state capture)].BUILD-NOWCN-1SLICE-PRESENTATION (AV)
CN-6Skippability + idempotence — hold-to-skip input + a seen-scene ledger on the SaveGame so a scene never re-fires per playthrough; optional replay.NEWABSENCE: HumanityInputConfig.h:48-72 no skip action; QuestSaveGame has no scene-seen ledger (dive CN-6) [SRC: §4 P2.7 (save/load stack); T99_Translation_Cinematic Step 6].BUILD-NOWCN-1, P2.7SLICE-PRESENTATION (AV)
CN-7Boss intro/phase/resolution cine-triggers — Humanity.Boss.EmitPhase N debug emitter + StateTree phase-threshold event a scene listens for (testable with NO boss AI).NEW (CN5.6 emitter)§7 CN5.6 realtime trigger + console emitter; ABSENCE: boss StateTree emits no cine event, SC_CH02_freeing_the_hunter beat CH02_B08 has no emitter (dive CN-7). Depends the C1.15 boss-phase→beat framework [SRC: §7 CN5.6; §3 C1.7/C1.15; T99_Translation_Cinematic Step 6, §4 spike 4 (boss-phase fight-AI)].BUILD-NOW +DACN-1, C1.15SLICE-PRESENTATION (AV)
CN-8Greybox cine-camera rig — cine camera(s) + ViewTarget-blend cuts framed off participant_refs; the only camera today is the player follow cam.NEWABSENCE: HumanityCharacter.h:102-107 only CameraBoom+FollowCamera (P2.2 deferred) (dive CN-8); camera rules unspecced §12 #26 [SRC: §4 P2.2 (camera); §12 #26; T99_Translation_Cinematic Step 2 (participant bindings), Step 4 (create_camera/camera-cut track)].BUILD-NOWCN-1, P2.2SLICE-PRESENTATION (AV)
CN-9DT_SceneDispatch path-conditional resolver — SLICE-DEFERRED + needs a Josh schema ruling. Ch2-5 scene rows are ALL UNLOCKED/path-invariant, so the slice does not need it [RESCOPE RE-DERIVE — see §A.0]; the schema (convergence_node_scene_dispatch) is unratified. NOTE-ONLY.CN5.5 (deferred)§7 CN5.5; ABSENCE: scenes.csv CH_02 all path_bucket=UNLOCKED, no DT_SceneDispatch in Source (dive CN-9). Open ruling §12 #22 [SRC: §7 CN5.5; §12 #22; T99_Translation_Cinematic Step 5, §4 spike 7; SPINE_SCHEMA_v3 §1].BUILD-NOW (parked)Josh #225090/POST-SLICE

---

The QA audio-capture tie-in (QT-3/QT-4 → WS-10)

The WS-10 loop (§11.5) verifies by screenshotUHumanityQACaptureSubsystem captures named shots

two defects this block fixes (the silent island AU-4, the bypassed cue channel AU-1/AU-2) — a black

frame is caught, a silent frame is not.

IDItemCanon citation / absence-proofTagDependsWave
QT-AUAudio-capture QA leg — assert cue-fired telemetry (every C1.16 cue routed through AU-1/AU-2 logs to the QA manifest) + a non-silent floor (a scene/combat capture with 0 audio events FAILS), the audio analog of the scene-luma floor. Catches AU-4 silent-island + AU-1/2 bypass regressions.§11.5 QA-1 UHumanityQACaptureSubsystem (luma-floor pattern to mirror); ABSENCE: no audio assertion in the QA rig (loop is visual-only) [SRC: §11.5 QA-1/QA-6; §8 A6.8 (AU-1); dive AU-2/AU-4].BUILD-NOWAU-1, AU-2, QA-1QA-ORG

---

The 5090 drop-in handshake (the AV generation lanes — DR-style contracts)

Per §0 + §13, all AV generation is GATED-5090; the runtime seams above are the pre-wire so a

generated asset drops in with zero runtime edits. The deliverable NOW is the id + path contract

each lane fills — the drop-in point is already named in the T99 docs. Do NOT re-plan these as buildable;

plan them as the contracts the placeholders honor.

IDDrop-in contract (GATED-5090; seam is BUILD-NOW above)Canon citationParked because
DR-AU1Music generation → replaces AU-5 placeholder stems at /Game/Audio/Cues/<cat>/A_<id>. Lanes: composer-in-loop hero themes (human composer — AIVA CLOSED AS SKIP, Josh 2026-07-27) + ACE-Step/YuE local bulk (benchmark-gate, 5090).§13 GATED (music bulk gen); T99_Translation_Audio Music Step 3 (ACE-Step/YuE benchmark-gated), Step 5 (import path), §4 spikes 1–2Every music-model quality signal is vendor-claimed; benchmark-gate is 5090-local; the AIVA API question is CLOSED (Josh ruled skip 2026-07-27 — no email, no negotiation).
DR-AU2Voice generation → fills the CN-4 per-line dialogue slot at /Game/Audio/Voice/<cat>/V_<voice_id>. Kokoro-82M bulk + ElevenLabs behind the §4.4.1 clone gate.§13 GATED (voice bulk gen); T99_Translation_Audio Voice Step 3 (Kokoro), Step 4 (ElevenLabs clone gate), Step 5 (path); §4 spikes 7–9Kokoro throughput/language coverage unbenchmarked; clone gate is §4.4.1; text is Quest §6 (unauthored).
DR-AU3SFX generation → fills AU-3/9/10/11/13 placeholder cues (proposed /Game/Audio/SFX/<cat>/SFX_<id>). Licensed-first (Sonniss/BOOM) → MOSS-SoundEffect local (5090) → Krotos creature lane.§13 GATED (SFX gen); T99_Translation_Audio SFX Step 2 (licensed-first), Step 3 (MOSS gen), Step 4 (Krotos), §4 spikes 12–15MOSS has no independent benchmark; SFX /Game/Audio/... path is PROPOSED-not-ratified (spike 15); creature seat-hours unbudgeted.
DR-CN1MRQ dailies + MetaHuman roster → the WS-5 §7 CN5.7/CN5.8/CN5.9 half; realtime CN-1 ships, MRQ renders for review only.§13 GATED (cinematic-video gen, MetaHuman roster-scale); §7 CN5.7 (render_mrq_dailies), CN5.8/5.9; T99_Translation_Cinematic Step 6 (MRQ headless = review, not shipped)Roster-scale MetaHuman + video gen are 5090-inference; MRQ is a review render, never the shipped path (realtime is).

---

Wave assignment + verified-by

Re-ranked into the 2-3-week window; the AV items thread through the new waves (feel / UI / QA-org /

slice-presentation) parallel to the combat-feel and Ch3-5-region waves.

WaveAV itemsVerified-by
FEEL (audio spine)AU-8, AU-1, AU-2 (spine) → AU-3, AU-9, AU-10 (combat audio)QA capture proves a hit is audible + differentiated; grep proves 0 PlaySoundAtLocation outside AU-1; cue-fired telemetry non-zero in the QA manifest.
SLICE-PRESENTATION (AV)CN-1..CN-8; AU-4, AU-5, AU-7 (world audio)A framed scene plays for FORK_CH02_A + letterbox + skip in a full Ch2 QA pass (image critics read the shots); ambient bed audible in a Flores capture; DT_SceneAnchor consumer count > 0.
UIAU-6, AU-11, AU-12, AU-13Volume sliders move + persist across a save/reload QA test; UI SFX fire on fork-commit (QT-AU telemetry); coverage-map has a row per Ch2-5 entity/event.
QA-ORGQT-AUThe audio-capture leg FAILS a deliberately-muted build (must-fire/must-not-fire fixture, the §11.5 self-testing-gate law) and PASSES the wired build.
ACQUIRE (anytime)AU-S (Sonniss)Bundle in the segregated owned-only tree; AU-12 imports one bank end-to-end.
5090/POST-SLICE (parked)CN-9; DR-AU1/2/3; DR-CN1Not verified pre-hardware — the drop-in contract is the deliverable; verified when a generated asset replaces a placeholder with zero runtime diff.

---

SECTION 8 — WS-10 AI QA / ITERATION LOOP

RECONCILED (Vol2): the QT-1..22 org IS LANE-SOAK in the master queue (nightly, this week). QT-AU (audio-capture leg) is owned by ws56_av. Every QT harness folds into its content wave's verified-by clause — no separate build wave; it is the definition-of-done handed to every wave.

11.5 WS-10 — AI QA / Iteration Loop *(EXPANDED 2026-07-24: the QT-1..22 autonomous test organization; the loop that wraps EVERY workstream)*

The full architecture is docs/proposals/AI_QA_LOOP_ARCHITECTURE.md (PROPOSAL-TIER, critic-fixed; ENGINE-class) — that doc OWNS the role/item table (QA-1..QA-14) and the per-pipeline hook map (§3). This section is the execution organization: the QT-1..22 map turns the four AI roles into a standing test ORG — the four senses, seven bug-class harnesses, the three-tier cadence with a nightly soak that starts THIS WEEK on the current machine, auto-triage, the beta player, the 5090 fleet contract, the coverage-scorecard family (the density CURVE made measurable), and the honest human-only list. Every QT item folds into a QA-x id (extends it, never re-mints it) and inherits QA-8's self-testing-gate law + QA-9's repro-first discipline. It invents no canon; it is ENGINE infrastructure sitting below the pillars, consuming CANON (hard-line floor, reveal windows, §17.1 collective-care, the reference bars, the per-chapter content budget) strictly as data. DOC_MAP row rides on integration (consumer = the QA-org wave + every workstream's verified-by clause).

LIVE TODAY (2026-07-23e; game f25d8a3+, canon 0f365c5+): QA-1/2/5/6 DONE — the loop ran end-to-end on the C1.18 greybox rig and caught five real bugs day one; Tools/run_qa_pass.py reads verdicts from the TEST REPORT never the exit code (self-test 9/9); the typed bug ledger is at 11 records under QA/bugs/; QA-8 teeth and QA-9 repro-first are already operating (every fixed record carries a regression_test_ref). Ground truth the org is built on: the rig captures 8 named shots (greybox_spawn, _hud_wellspring, _hud_forgotten, _boss_closeup, _quest_panel, _direct_broken, _phase_p2, _feel_swing) and has ALREADY hit a soak-class failure — a Automation RunTests hang, TESTS: TIMEOUT after 900s / tests_exit=124, capture-leg green — which is exactly what the nightly heartbeat (QT-13) and auto-triage (QT-14) exist to catch.

11.5.1 The four senses — how the machine perceives the build

The beta player perceives through four channels; its hands (input injection, QT-15) are the actuator, not a sense. Each sense already has a live seam; the org completes and generalizes it.

11.5.2 The seven bug-class harnesses (each DT-driven, each QA-8-toothed, each QA-9 repro-first)

Not one hand-authored test per surface — one harness per defect class, data-driven off the DataTables so it scales to every row without re-authoring. Each ships a must-fire fixture (a known-bad row it MUST flag) and a must-not-fire fixture (a known-good row it must pass) per QA-8, refuses to run if its own teeth break, and lands its repro BEFORE any fix per QA-9. Every listed bug class is grounded in a defect the loop already caught or a §3 hook row.

QTBug classData-driven offMust-fire (grounded)Folds →
QT-5Combat invariantsDT_BossEncounter/DT_BossPhase (343) — one test per boss row × presetBUG-0001 driver false-green; BUG-0004 lever-stack froze at first d_local; zero-enemy-stat-delta must hold at all tensions; every declared composure node breakable; no enrage HP-spikeQA-3
QT-6Readability / HUD / feelthe shot manifest × 5 difficulty presetsBUG-0003 black-frame luma; BUG-0005 zero-lights arena; BUG-0006..8 HUD legibility; the SHAPE-telegraph channel (accessibility FLOOR, BUILD-NOW) reads at every presetQA-1/QA-6
QT-7Beat-graph reachabilityDT_Beat (891)/DT_Fork (90)/DT_ForkOption (305) via condition_expran unreachable beat; a fork option with no completable path; a ws.* consumed before produced; a dead-end deathQA-3
QT-8Data integrityevery DT (RowName==registry id, FK-handle resolves, FText round-trip)the re-import-renames-a-row orphan (the recorded chunk_id-collapse class); an FString player-facing cell; a dangling FDataTableRowHandleQA-3/QA-10
QT-9Care / reveal runtimeT0_Hard_Lines (+Runtime enum) · reveal windows · T0_Character_Index persona (163)a House-of-Velheim pattern surfacing before ~Ch38; a VoiceRouter §17.12 gender-lock breach; a §17.5 pre-reveal name leak; breeding→legendary (HL_0057/58); a missing 13-field personaQA-3/QA-6
QT-10Audio event-firecue_id/sfx_id_ref arrays (§10.6, per registry)a declared cue that never fires on its trigger; a MetaSound not consuming tempo/bar/stem-role; footfall not keyed to footfall_surfaceQA-3
QT-11Save/load + map handoffthe 42 ws.* vars + the cross-map handoff key seta ws.* value lost across a level change; identity_hiding_status/familiar_bond_state/community_state_per_region/integrity_score/journal_status/age_stage not carried Ch2→3→4→5; σ-window map not surviving reloadQA-3

The care/reveal harness (QT-9) enforces the §17 hard-line FLOOR mechanically — the one absolute the machine judges on its own. Everything ABOVE that floor it does NOT scrub: it opens an enhancer intake (QT-20/QA-13) for a RENAME/REFRAME, never a removal or a rated-G defang (care doctrine, CVD §17.1, delegated-bolder calibration — Josh is the backstop).

11.5.3 The three-tier cadence + the nightly soak (starts THIS WEEK)

The beta-player fidelity ladder is a three-rung gate — a rung never skips the one below it (scripted gates agent, agent gates soak).

SOAK SCOPE UNDER THE RESCOPE (2026-07-27). The soak matrix grows with the slice — 15 nodes, not 4 —

and it is the one leg that does NOT fan out: it is wall-clock, and a 3-4× larger matrix costs 3-4× the

wall-clock at the same instance count. The QT-16 Gauntlet fleet is exactly what the 5090's parallelism buys

here, and it is the one item where the hardware buys THROUGHPUT rather than capability. Two riders the

build order forces: (1) the companion/ally runtime debuts in Ch 13, the slice's TERMINAL chapter, so it

gets one chapter of soak where everything else gets twelve — build and soak it against a STAND-IN early so

Ch 13 is its integration and not its birth; (2) the Prologue and Ch 1 enter the matrix LAST and carry the

slice's only never-run terrain path, so their first soak nights are also that path's first evidence.

QT-13 — THE NIGHTLY SOAK, this week, this machine (BUILD-NOW). An unattended scheduled overnight pass over the greybox + Ch2-5 rig (extending per region leg as Ch 6-13 land, and to the full 15 nodes at slice-end): (1) the full accreted Tier-1 regression suite; (2) a Tier-2 agent walk of the current playable surface; (3) a capture set the morning critic reads; (4) a hang heartbeat (the current on-demand run_qa_pass ALREADY hit TIMEOUT after 900s — the nightly wraps each leg in a MarkHeartbeatActive-style watchdog so a hang opens a record instead of stalling the run); (5) an auto-triaged bug delta + a scorecard delta waiting each morning. This is NOT 5090-gated — only the *volume/parallel* soak is (TAG LAW: only generative inference gates on the 5090). Absence-proof that it is genuinely new: run_qa_pass.py is invoked on-demand in the workflow logs, there is no scheduled-task/cron entry and no Saved/QA/nightly/ tree today.

11.5.4 Auto-triage, the beta player, and the 5090 fleet

11.5.5 The coverage-scorecard family — the density CURVE made measurable

Per-chapter content-budget and per-chapter test-coverage are ONE scorecard family (coverage_scorecard.json per node, rolled up 79-wide) that the gates watch. This is the density ruling made observable: CANON_AUDIT §7 RULES every chapter a dense woven experience (a few sub-bosses culminating in one main boss; combat/exploration/discovery/puzzle/mystery/lore/trade/gathering/side-quest/folklore all woven) — and Josh's in-conversation refinement (2026-07-24) supersedes any uniform-density reading with a CURVE: the completion-hours target is ≈100-200h main / 1-2k h side+weave / 8-10k h 100%, and the early chapters (Ch2-5) are deliberately LIGHTER, seed-rich, opening the game. The scorecard's per-chapter TARGET is therefore a rising band, not a flat floor.

and the off-curve nodes carry declared sentinels.** The slice is now Prologue→Ch 13, so the gate would be

asked to score eight nodes whose band does not exist and two nodes that are not on the curve at all: the

Prologue is a ceiling TUTORIAL (its job is presentation, not content budget) and Ch 1 is declared out of

corpus scope. Clause (a)'s monotone-rising SHAPE is exactly what mis-fires here — a false regression, the

same defect class already caught for Ch 77's exempt demand_ordinal. The fix is the band/sentinel pass,

which is its own item and lands WITH check_slice_scorecard.py (which does not exist yet); no band values

are written into this spec ahead of it, because inventing them would cross the tuning firewall this very

item exists to defend. Until then QT-19 arms over Ch 2-5 only, and its scope grows band-by-band.

11.5.6 The human-only list — what the machine does NOT test (honest)

The machine owns floors; Josh owns the ceiling. These are explicitly NOT gated and route to Josh (the J-cadence dailies packet) or to the enhancer intake (QA-13), never to a bug record:

11.5.7 Accretion + CI — the standing spine

11.5.8 The QT-1..22 map — id · fold · tag · citation/absence-proof · depends · wave

QTItem (fold → QA-x)TagCitation or absence-proofDependsWave
QT-1SIGHT sense (→ QA-1, QA-6)DONE-partial (live, greybox)AI_QA_LOOP_ARCHITECTURE.md QA-1/QA-6; 8 shots live (bbgbissd4 run log)QA-1, QA-6QA-ORG (live)
QT-2STATE-sense / proprioception (→ QA-7, QA-3)DONE-partial (live)score_greybox.py + CombatTelemetrySubsystem; SILQ §6.1 scorecardC1.10QA-ORG (live)
QT-3HEARING sense (→ QA-3, QT-10)BUILD-NOWabsence-proof: WS-6 §3 today=needs-build; no cue→trigger matrix in harness/A6.5, QT-10LIVING-WORLD/audio
QT-4FAULT-sense / log stream (→ QA-11)BUILD-NOW / partialrun_qa_pass reads report markers; Saved/Logs, Saved/Crashes pathsQT-14QA-ORG
QT-5Combat-invariant harness (→ QA-3)DONE-partial → BUILD-NOW (DT-generalize)C118 test pair live (zero-stat-delta + lever-response); BUG-0001/0004QA-2, C1.18, DT_BossEncounterFEEL
QT-6Readability/HUD/feel harness (→ QA-1/QA-6)BUILD-NOWBUG-0003/0005/0006-8; SHAPE-telegraph accessibility FLOOR (TAG LAW = BUILD-NOW)QA-1, P2.4UI
QT-7Beat-graph reachability harness (→ QA-3)BUILD-NOWcondition_expr (49-case) + DT_Beat/DT_Fork/DT_ForkOption; no_dead_end scaffoldQ3.3, T0.11Ch3-5 REGIONS
QT-8Data-integrity harness (→ QA-3/QA-10)BUILD-NOWW4.9 UEditorValidatorBase; the chunk_id-collapse memory; registry_fidelityT0.8, W4.9QA-ORG/trunk (I)
QT-9Care/reveal runtime harness (→ QA-3/QA-6)BUILD-NOWT0_Hard_Lines+Runtime enum; reveal-window memory; §17.1; HL_0057/58C1.21, N8.1, N8.11LIVING-WORLD
QT-10Audio event-fire harness (→ QA-3)BUILD-NOWabsence-proof: WS-6 §3 needs-build; sfx_id_ref arrays (§10.6) undeclaredA6.1, A6.5LIVING-WORLD/audio
QT-11Save/load + map-handoff harness (→ QA-3)BUILD-NOWslice §"cross-cutting seams": cross-map ws.* carry unbuilt; 42 baked varsP2.7, T0.10TRANSITIONS
QT-12Three-tier beta-player ladder (→ QA-3/QA-4/QA-14)BUILD-NOWAI_QA_LOOP_ARCHITECTURE.md §2.1 fidelity ladderQA-2, QT-15QA-ORG
QT-13Nightly soak — this week, this machine (→ QA-14 BUILD-NOW tier)BUILD-NOWabsence-proof: no cron/scheduled-task, no Saved/QA/nightly/; 900s hang seen (banxsd9pw)QT-5..11, QT-14QA-ORG (this week)
QT-14Crash/error/timeout auto-triage (→ QA-11)BUILD-NOWAI_QA_LOOP_ARCHITECTURE.md QA-11; tests_exit=124 timeout is record #1QA-5QA-ORG (this week)
QT-15AI beta-player agent (→ QA-4)BUILD-NOWInjectInputForAction (EnhancedInput Runtime); NeoStack PIE Lua bridgeQA-1, P2.3QA-ORG
QT-165090 soak fleet (→ QA-14)GATED-5090Gauntlet.uplugin; GauntletTestController.h MarkHeartbeatActiveQT-13POST-5090 (parked)
QT-17Content-budget scorecard (→ QA-7)BUILD-NOWCANON_AUDIT §7 (density RULED) + Josh curve 2026-07-24; DTs per §11.5.5T0.8, D (spine extract)QA-ORG + Ch3-5
QT-18Test-coverage scorecard (→ QA-7)BUILD-NOWderived from QT-5..11 coverage; SILQ §6.1 shapeQT-5..11QA-ORG + Ch3-5
QT-19Unified coverage family + gate (→ QA-7)BUILD-NOWtuning-firewall (SILQ §2.3/§5): gates SHAPE/RELATION/FLOOR, logs absolutesQT-17, QT-18QA-ORG
QT-20Human-only list + Josh-beta intake (→ QA-12/QA-13/Josh-beta)STANDING (process)care doctrine (CVD §17.1, delegated-bolder); AAA_REARCHITECTURE_BRIEFevery wave (J-tag)
QT-21Regression accretion + graduation (→ QA-9/QA-5)DONE-partial (live)11-record ledger, fixed⇒regression_test_ref; SILQ §3.1 graduationQA-5QA-ORG (live)
QT-22CI wiring + self-testing-gate integration (→ QA-10/QA-8)BUILD-NOWW4.10 RunUAT + -run=DataValidation; QA-8 teeth; run_gates unpipedW4.10, QA-8QA-ORG

Verified-by (the QA-ORG wave's own clause, and what WS-10 supplies to every OTHER wave): the QA-ORG wave is verified when (1) each of QT-5..11 ships green must-fire + must-not-fire fixtures and refuses to run toothless (QA-8); (2) the nightly (QT-13) completes one unattended overnight pass on the current machine, producing a triaged bug delta + a coverage-scorecard delta with the hang-heartbeat armed; (3) run_gates.py stays green unpiped and the coverage gate (QT-19) is armed against the curve, not an absolute. WS-10's product is the verified-by-playing clause it hands to every content wave — FEEL/UI/Ch3-5-REGIONS/TRANSITIONS/LIVING-WORLD each inherit their QT harness as their definition-of-done, so "it works / it reads / it's fun" never ships without a backing frame, a green repro, and a scorecard.

---

THE MASTER WAVE QUEUE (rebuilt — zero orphans, dependency-correct)

**STATUS AS OF 2026-07-26 EVENING — THE WAVE QUEUE IS CLOSED (the ▶ PROGRESS LEDGER is the
per-landing authority):** W1-W8 ✅ · W9 ✅ (3 passes) · W10 ✅ (the shipping surface + the
executable reveal table) · W-SPACE ✅ ALL regions · the COMBAT ADDENDUM TAIL ✅ (foundry /
status / arena-mutation flagship / presentation seam) · Ch-5 staged ×4 maps + PG-2 seams ✅ ·
LANE-SOAK ARMED ✅ (first run green) · the slice is STRUCTURALLY END-TO-END on a real player
HUD with 54/54 tests and every space/state/reveal tooth green. Remaining pre-5090: the
canon-residue batch (named in ledger 2026-07-26g), polish riders, the nightly soak cadence.
The earlier per-wave detail block below is superseded by this line and the ledger.
*(The block below reflected mid-day 2026-07-26:)* **W1 ✅ · W2 ✅ · W3 ✅ · W4 ✅ (true weightmap
tier; BUG-0016/0015 closed) · W5 ✅ · wave-G ✅ · W6 ✅ (foundation: material-spine runtime +
B04 recharge) · W7 ✅ (foundation: scenes + ambient beds audible) · W8 ✅ (Ch-3 staged + seam;
Ch-4/Bali staged; PG-2 cross-map = open) · W9 ◐ IN PROGRESS (passes 1-2 landed: parry, attack
library w/ punish windows, counter-class law, caci, hitzones/part-breaks, the weakness-read,
spawn-Z; pass 3 in flight: S2/S3 mechanics + state isolation; the tail = the
COMBAT_PROGRAM_ADDENDUM's six systems) · W10 ⬜ NEXT (the shipping surface — all its canon
inputs are ready) · W11 ⬜ · LANE-CANON ✅ for the slice (the table CLOSED: strings ×4, bboxes
0-empty, material spine, fauna 150, festivals, SFX, the element matrix, clue lane, pip schema;
residue = personas/TR-3/TR-6/rune-registry reconciliation) · LANE-SOAK ⬜ arming next ·
NEW WAVES ADDED THIS SESSION: W-SPACE ✅-on-Flores/◐-remaining-regions (the audit→sculpt→
teeth factory stage) + the COMBAT ADDENDUM tail ⬜ (foundry/status/combo/healing/ladder-seam/
arena-mutation + the Rune Forge).**

Supersedes synth_program §A.4. Covers every item in all 8 sections (217 unique items after

dedupe). Ranking follows the directive: **E-residue first · nightly-soak + feel + audio-spine early ·

input/targeting before the movement + AI that need the binds · terrain long-poles parallel from day 1

· W-AI before the region sub-bosses (wave-G fold) that consume it · canon-author lane on the canon

side throughout.** Two-repo discipline: canon (C:/dev/humanity-forgotten) and game

(C:/dev/Humanity/Humanity) are one-writer-each, so the persistent canon + soak lanes run in PARALLEL

with the ranked game waves. Each wave inherits its WS-10 QT harness as its definition-of-done.

Persistent lanes (run the ENTIRE window, parallel to everything)

lanerepowhat runsstartsverified-by
LANE-CANONcanonThe canon-author lane: W-LW1 substrate authoring — all 31 CA rows (FA-1/4/5/6/7/8 · FL-1/2/5/7/8/9 · MN-1..5/8..12 · TR-2/3/6 · LW-5/6/7/9/11 · AB-5 Chakra repair — the single owner) + the 9 RB.1a-i bbox fills + DR-2 asset-path drop-in contract + DR-7 weave anchors + DR-8 the 3 RAG fixes. Cited-or-cut; proposal-tier → ratified firewall.day 1normalize-doc critic per artifact; fidelity_baseline.json refreshed in the SAME commit; every row a canon citation; positive-control greps re-run (185/72/22/120/33/10/163/42 counts intact; LINK_0186 not re-authored; Chakra literal = 0 post-rename).
LANE-SOAKgame + harnessThe QT-1..22 test-org (WS-10) + QT-AU audio-capture leg + the content-budget/test-coverage scorecard family: the machine runs as alpha/beta tester over the whole built slice each night; Gauntlet-lite soak-player loops Ch2-5; bug ledger accretes; every fix leaves its regression ref (QA-8/QA-9).THIS WEEK, on this machinea nightly Saved/QA/TestReport + typed bug records; verdicts read from the report, never the exit code; the hang-heartbeat armed (the 900s-timeout class); the coverage gate armed against the CURVE, not an absolute.

Ranked game waves (one writer, game side)

wavethemeitem families consumed (owners)dependsverified-by
W1 · E-RESIDUE *(in flight)*Ch-2 becomes real, not a DEV-ADVANCE stub-walkthe DEV-ADVANCE beats → real sites/scenes/dialogue/sub-bosses; pulls forward the minimal TG-3/TG-9/TG-11 its Ch2 sub-bosses need (Ebu Gogo pursuit, BE_0002_S2 construct)closed A-Devery Ch-2 beat auto-advances on a real fight/scene event, zero N-presses; image critics GO
W2 · FEEL + AUDIO SPINE *(early)*the "it landed / it broke / it's coming" reads + the audio that carries themCF-1 hit-confirm · CF-6 Composure-break moment · CF-8 camera shake/punch · CF-12 withdrawal-clock read · CF-10 death/respawn SHELL *(boss-defeat STATE = BLOCKED-ON-BRIEF D-DEFEAT-AXIS)* · HUD reads U11.1–U11.4 (the CF-11 home) · audio spine AU-8→AU-1→AU-2, then AU-3/AU-9/AU-10W1image critics read hit/break/tell frames; SetGlobalTimeDilation dip + DamageNumber-spawn functional test; hit is AUDIBLE + differentiated (cue-fired telemetry non-zero, 0 PlaySoundAtLocation outside AU-1); QT-feel pack green
W3 · INPUT + TARGETING *(early)*close the Josh-named binding + lock-on gaps; the WS-2 player prereqsINPUT (ws_ui 11c): U11.7 bind all 8 verbs + crouch/dodge/interact/menu · U11.8 gamepad · U11.9 rebind persistence · U11.10 context stack · U11.11 accessibility · U11.12 dev-key graduation · U11.13 wheel — TARGETING: P2.2 lock-on (folds CF-3/MV-6/TG-1) · TG-2 targetable-set · TG-7 threat indicator — PREREQS (cited): P2.10 interactable · P2.6 inventoryW1, P2.1 caminput-map QA: every verb + menu key bound; lock-on acquire/cycle/yaw-blend + non-Composure fauna targetable; InjectInputForAction drives every binding in PIE + packaged
W4 · TERRAIN long-poles *(PARALLEL from day 1)*the 3 unbuilt region maps + biome material — the longest poleRG.1-3 region-generalize the flores drivers · RT.1/RT.2/RT.3 bali/sumatra_java/angkor_khmer GIS→import→dress→stage · RM.1/RM.2 (F′) weightmap biome material · RB.1a-i consumed (authored LANE-CANON) · RS.3+RE.3 CH_03 on the built Floresnone (parallel lane); W4.1/W4.3 hardeningdrivers reproduce FloresIsland byte-identical; each .umap round-trips at true scale, coastline/relief director-verified; lit biome capture per region (image-critic); CH_03 stages 7/7 + BE_0003 ×4
W5 · TRAVERSAL + ENEMY-AIplayer + enemy locomotion over terrainW-MOVE (ws1_feel): MV-2 CMC modes · MV-3 HL_0079 Ch-2 canopy course (in-slice HARD LINE) · MV-4 dodge · MV-5 swim · MV-7 regional modifiers · MV-8 stamina · MV-9 fall — W-AI (ws1_feel): TG-3 locomotion · TG-4 multi-enemy · TG-5 fauna AI · TG-6 spawn (Pillar-1 3-system gate) · TG-8 ambient NPC · TG-9 constructs · TG-10 ally · TG-11 perception · TG-12 roster fieldsW3 binds + W4 navmesh/terrainheadless canopy course completes (12 pods, no stop — HL_0079 exit); swim + footfall tests; SliceWalk enemy PURSUES + N-enemy per-target damage; no random spawn outside the 3 declared systems
W6 · LIVING-WORLD runtime *(W-LW2; RE-SCOPED 2026-07-24 — see the FUN-REBUILD map below)*the runtime consumers of LANE-CANON's substrate + the Ch-2 keystone-teaching consumers (R4)FA-2 struct regen · FL-12 flora struct · LW-12 ws keys · LW-WIRE σ-drop wire · FA-3 wildlife spawner · LW-ECO migrate/regrow + immune set · FL-3 gather-node actor · MN-6 mining loop · TR-1 harvest subsystem · LW-1 day/night · LW-2 weather · LW-3 Pawukon clock · EC-inventory (P2.6) · EC-treasure (LW-WIRE)LANE-CANON W-LW1 rows; W4 weightmaps; W3 P2.10wildlife observable in a region; a forage/mine round yields within ±1σ across N draws; clock advances day→dusk→night + a Pawukon day resolves; over-gather migrates+regrows, a progression_critical node does NOT
W7 · SLICE-PRESENTATION / scenes *(AV — the single scene-runtime home)*play a scene, cut a camera, frame a fork, break the silenceCN-1 scene subsystem · CN-2 OnBeat delegate · CN-3 fork-as-scene · CN-4 dialogue presentation · CN-5 letterbox · CN-6 skip/idempotence · CN-7 boss cine-triggers *(resolution scene partial BLOCKED-ON-BRIEF D-DEFEAT-AXIS)* · CN-8 cine-camera rig · Q3.2 six-option dialogue selection · world audio AU-4 silent-island · AU-5 music runtime · AU-7 spatial. *(CN-9 parked — Josh #22.)*W2 audio spine, Q3.3, P2.2 cine-cama framed scene plays for FORK_CH02_A + letterbox + skip in a Ch2 QA pass (image critics); ambient bed audible in a Flores capture; DT_SceneAnchor consumer count > 0; scenes idempotent on beat re-entry
W8 · Ch3-5 REGIONS + progressionstage the 3 remaining chapters; make cross-chapter realBACKBONE: PG-1 advance · PG-6 unified save · CN-2(xref) · SL-2 softlock autotest *(early)* — PG-2 region-map handoff *(here, after terrain)* · PG-3/4/5 flow+save-slots+autosave · IB-1 integrity band — REGIONS: RS.4/RE.4 CH_04 · RX.1 Ch-4 era-swap *(folds LW-4; deps LW-3+LW-12)* · RS.5a/RS.5b/RE.5 CH_05 · RX.2 excursion + new boss verbs + the integrity-gated lethal Ch5 fork — CONTENT: MG-1..4 scored-interaction · UW-1/UW-2 unlock+mastery · SL-1 death-learning · CN-3(xref) — W-LW3 fold: FL-4/6/10/11 · MN-7 · TR-4/5/7 · LW-8/10 · LW-5 festival windows · EC-vendor *(BLOCKED-ON-BRIEF)*W4 terrain, W5 AI, W6 living-worldCh2→3→4→5 end-to-end with ws.* carried across 4 maps (every write ∈ baked 42); QT-7 softlock-immune over every fork; each region's scored beats reach Bronze; BE_0004 3-phase verified; Ch5 lethal fork falls only on the 2 corrupt operatives
W9 · REACTIONS + BOSS VARIETY + PRESENTATION TIERS *(W-FEEL2 + W-PRES; RE-SCOPED 2026-07-24 — see the FUN-REBUILD map below)*the puzzle-boss chain-meter template + the combat depth the region sub-bosses consumeW-FEEL2: CF-2 hit-react · CF-7 telegraph shape (accessibility floor) · CF-9 boss-attack variety (evolve-not-swap) — W-PRES: CF-4 per-weapon animset · CF-5 per-ability cast primitives *(requires AB-5 Chakra repair landed — LANE-CANON)*with/after W8 sub-bosses; W2 cue seam; AB-5HitReact-state + P2-adds-not-swaps test; greyscale telegraph image-critic; ≥3 distinct cast primitives; per-weapon_class timing test; Chakra=0 grep player-facing
W10 · UI + BOOK SCREENS + LOC + ECONOMY *(RE-SCOPED 2026-07-24 — see the FUN-REBUILD map below)*the shipping surface built FROM the translation table + the discovery layer + the economy loopU11.5/U11.6 menus+front-end · U11.14–U11.20 book/journal/Grimoire/quest-log/fork screens (reveal-gated) · U11.21/U11.22 map+travel (after terrain) · U11.23/U11.24 subtitle+loc runtime · U11.25/U11.26 photo+loading UX · U11.27–U11.29 teaching layer (co-req W2 feel) · U11.30 teaching spec · U11.31 T99_Translation_UI · audio AU-6/AU-11/AU-12/AU-13 · EC-medium/EC-vendor *(BLOCKED-ON-BRIEF)*W2–W9 surfacesevery widget frame read by image critics; reveal-discipline test (Neophyte sees no tier-6/late-arc row); volume sliders persist across save/reload; UI SFX fire on fork-commit
W11 · HANDSHAKE close *(game side; late-window)*audit the drop-in surfaceDR-1 stable-id audit across all staged actors · DR-3/4/5/6 staging-leg audit (seeds/dwellings/NPCs/gather) + placeholder-writeback round-tripall content wavesevery staged actor carries its canon id (W4.9 DataValidation); one placeholder mesh/SFX round-trips the AG7.5 five-state machine

*Note: the DR staging legs (DR-3/4/5/6) are construction rules APPLIED during W1/W6/W8 — an actor is

placed carrying its stable id + asset handle at placement time — then AUDITED in W11. W11 is the proof,

not the placement.*

FUN-REBUILD ABSORPTION MAP (2026-07-24 — the Ch-2 player-fun review folded in)

The step-back playthrough review (four PXR sections + both fresh-context critics, GO_WITH_FIXES)

produced eight rebuild threads — R1-R8 + R-DATA, specified in docs/FUN_REBUILD_PLAN.md (the

detailed item specs live there; this map is the queue authority for WHERE each thread lands). **No new

waves**; the three re-scopes below AMEND the W6/W9/W10 rows above in place. Two new obligations only: a

runtime clue-state addition (WS-C lineage, feeds W10) and the canon-lane DT_Clue table + R-DATA columns

(the latter APPLIED 2026-07-24).

R-wave (FUN_REBUILD_PLAN)absorbed bynote
R1 · R-RANGKU (defeat-axis BUG-0014 fix, freed win-route, sub-boss gating verify, death consolation, collapse/free presentation)W1 (staging) · W2 (CF-10 defeat STATE) · W7 (CN-7 resolution scene)executes the D-DEFEAT-AXIS resolution; sub-boss gating = already fixed by BUG-0013, verify+test only
R2 · R-GUARDIAN (chain-meter template: pip UI, 2-of-3 counter classes at Ch2, monotonic-ease, safe-lane-is-dodge, wipe-on-mistake)W9 (re-scoped below)the puzzle-boss template the whole game inherits
R3 · R-CLUES (DT_Clue, clue-staged objectives, field-sense pre-Ch-13 seam, guardian A+D clue chain, cold-air channel)WS-C runtime clue-state + W10 (display) + W1 (wire) + LANE-CANON (authoring)clue = legibility, NEVER a gate; field-sense NOT journal pre-Ch-13 (HL_0070)
R4 · R-BEATS (fire-making B02, first-recharge B04, unlock-order rebind)W1 (staging) + W6 (re-scoped below)the two keystone teaching beats become played loops
R5 · R-FORK (carve-as-scene, no integrity integer, de-authored option copy)W7 (CN-3 fork-as-scene)R7 supplies the spoiler-safe option strings
R6 · R-ECONOMY (vril 3-channel regen, damage-formula shapes, parry primitive + stamina-both-ways)W2 (feel) + W5 (MV-8/MV-4) + W9 (parry, CF-5)all cited to T1_Combat_System_Spec L43/L61/L417; magnitudes → Phase-5M
R7 · R-STRINGS (spoiler-safe player-string fields, site display_name + extractor, the full translation table)LANE-CANON (author + extractor FIRST) + W10 (consume)the two leak classes W10 cannot fix alone
R8 · R-PRESENCE (Ebu Gogo presence channel, real evade stakes, refusal-as-perception-pick)W1 (stage B05) + W2/W7 (presence AV) + W9 (refusal-pick)never a fail-wall, never a hunt-the-people beat (HL_0005)
R-DATA · per-boss non-kill schemaLANE-CANON DONEW9 (consumer)APPLIED at director level 2026-07-24 (extension rail; 16 slice rows). R1.3+R2.1 unblocked

W6 re-scope (AMENDS the W6 row): ADD the Ch-2 keystone-teaching consumers — the vril-site

rapid-recharge interaction (B04; the Vril bubble visibly fills in the spray — CVD §18.4

substrate-as-real; spec L43 channel-c) on the vril-site/LW-WIRE seam, and the fire-making gather loop

(B02) on the FL-3 gather-node + TR-1 harvest subsystem. Verified-by adds: B04 recharge visibly fills

the bubble in a Ch-2 QA pass; the B02 fire loop yields on a real gather→strike, no N-press.

W9 re-scope (AMENDS the W9 row): from "boss-attack variety" to **the puzzle-boss chain-meter

template** (R2 + R1 depth + R8 refusal-pick). ADD: the NEW parry primitive (a timed deflect — does not

exist; dodge does); per-attack counter-class tagging (dodge-only / parry-only / elemental-neutralize on

cast_pattern); the pip-meter UI (5/7/9+, pip_reveal_threshold-driven appearance); thermal-only

elemental-neutralize at Ch 2; monotonic de-escalation (vary the READ, never re-tighten the window).

Consumes R-DATA's columns (live). Verified-by adds: pips fill on a correct counter and WIPE on a

mistake; the freed-path pips appear at Rangku ≤25% HP and NOT before; the guardian eases monotonically

with no window re-tighten; a parry deflect whiffs a parry-tagged strike; kill-instead docks integrity +

closes a fork. Honest caveat carried: the serpent read-channel (anim) is T2-deferred — W9 ships the

logic, not the "template" feel.

W10 re-scope (AMENDS the W10 row): build the shipping surface FROM the R7 translation table, never

the debug draw, and host the discovery surface: ADD the field-sense re-read affordance + the

clue-staged objective display + the "sense updated" toast (the pre-Ch-13 stand-in for the Ch-13

journal, HL_0070); ADD integrity-as-appearance/voice (no integrity_score integer) and

difficulty-as-diegetic (no d_local/lever names/hash on any player surface). CONSUME the R7.1

spoiler-safe player-objective/option fields + the R7.2 site display_name/chapter-title strings.

Verified-by adds: the reveal-discipline test (no B06/fork-opt-2 pre-tell reaches the player surface);

the field-sense panel gains an entry only after a clue fires, never pre-stated; no

mode-taxonomy/raw-ID/number leaks in any shipped widget frame.

THE CUT LINE — honest about the 2-3-week window

The window's TARGET is the full slice STRUCTURE playable on placeholders (directive #1). "Complete

structure" ≠ complete fidelity. Three explicit buckets:

SHIPS IN THE WINDOW (built now, on placeholders):

progression across 4 maps, feel + audio spine, input + lock-on, traversal (incl. the HL_0079 canopy

course) + enemy AI, the living-world runtime, the scene layer, and the three staged regions with

save/progression. This is the honest "100% structure" deliverable.

variety / per-weapon+ability presentation), W10 (full UI + book screens + loc + economy UX), W11

(handshake audit). These deepen feel and surface, not the playable spine.

HANDED TO THE 5090 (drop-in, NOT built in the window — the window builds the SOCKET):

final VFX rides GATED-5090; the T0/T1 feel ships now).

(DR-AU3), MRQ dailies + MetaHuman roster (DR-CN1) — the seams (AU-3/5/9/10/11, CN-1/4/7) build now.

pharmacology/ecology fidelity, significance lenses — writes onto the DR-1 stable ids + DR-7 weave

anchors this window plants. Pure fill, never rework — that is the handshake's guarantee (§B).

BLOCKED-ON-BRIEF (Josh gates — status as of 2026-07-24):

EC-medium + EC-vendor unblocked.

per-boss pips at threshold).** CF-10 boss-defeat STATE, CN-7 resolution scene, SL-1 unblocked;

executed by the R1 wave + R-DATA (see the FUN-REBUILD absorption map above + the register).

Realistic-window honesty: at the team's ~5–10× execution rate the in-window deliverable is the full

slice STRUCTURE (MUST-SHIP core, and likely the polish tail); the density/fidelity climb is explicitly

the post-5090 curve work, per the seed-rich early-game band of the density ruling.

---

---

THE DECISIONS REGISTER (options · deep-dive · adversarial · recommendation · strongest objection — never bare)

Per the standing decision protocol. Creative-within-vision calls are ruled + applied by the director

(shown in the sections, not asked); only genuine cardinal / system-canon forks are carried here for

Josh. The 3 SHIP briefs are carried by reference to docs/ROADMAP_POST_5090_TO_SHIP.md (they are

post-5090 / ship-facing, not pre-5090-window decisions).

D-ECONOMY-MEDIUM — transaction medium + vendor mechanics + L2 treasure placement *(RESOLVED — Josh RULED Opt B, 2026-07-24)*

RESOLUTION: Josh ruled Opt B verbatim — "historically real mixed exchange per region," no universal

coin early. EC-medium + EC-vendor are UNBLOCKED and land per the Opt-B mechanization below

(medium_of_exchange on Region_Index; vendors price in the local medium; L2 treasure = the σ-drop

spine). [Historical note retained: an earlier draft wrongly pre-marked this "director-applied" before

the ruling existed — the flag-then-rule path was the correct one and it has now been ruled.]

The gap. The trade MODEL is canon (T1_Trades_Master §9.2 trade-interdependence + region-specific

scarcity; §9.1 two separate economies). The MEDIUM (what the player pays with, how a vendor prices,

where L2 treasure sits) is undefined, and the gather→craft→trade loop is live in Ch 2-5.

for the 1200 CE regions.

early.** Barter + region-appropriate proto-currency (rice/cloth/metal-weight where the real region

used it); vendors price in the local medium; L2 treasure = σ-bounded drops (HL_0061) via

RngDropTable + gather yields. Land as: a medium_of_exchange token on Region_Index, vendor

mechanics as a P2.6 inventory consumer, L2 treasure = the σ-drop spine (LW-WIRE) + gather yields.

Fits §9.2 + §9.1 + immersive-teaching; extends to the Tier-C MMO cross-player economy.

materials + drops with no sink; reads incomplete against the 100%-structure target.

Strongest objection to B: per-region exchange multiplies vendor-UI complexity. Rebuttal: the

slice needs only the Neophyte-floor exchange surface + L2 placement, not a full market sim; Josh

backstops via playtest. Blocked items: EC-medium, EC-vendor. Proceeding regardless: EC-inventory

(P2.6), EC-treasure (LW-WIRE).

D-DEFEAT-AXIS — the boss HP=0 defeat model *(RESOLVED — Josh OVERRULED the recommendation, 2026-07-24)*

RESOLUTION (verbatim intent): "Rated M game. Things will die. Health 0 is death. If they're a

specific boss or combatant that we don't kill for some specific canonical reason because it'll gate

story progression then they'd have to withdraw at 1 health." Refined same-day: "can't free everyone" —

non-kill paths are PER-BOSS, and for fight-first bosses the pip chain APPEARS only at a per-boss HP

threshold (~25%), revealing the alternative win. Executed by: the R1 wave (FUN_REBUILD_PLAN — the

defeat-axis derivation fix BUG-0014, the freed win-route, consolation surfacing) + R-DATA (the four

explicit Boss_Encounter columns has_nonkill_path/pip_count/pip_reveal_threshold/defeat_protected,

16 slice rows populated). Opt B below is retained for provenance only — it was NOT adopted; HP is lethal,

Composure is the boss keystone read, and defeat_protected (rare, canon-cited) is the only 1-HP clamp.

CF-10 boss-defeat STATE, CN-7 resolution scene, SL-1 death polish: UNBLOCKED.

*(The original brief, for provenance:)*

*(Aliases in drafts: D-BOSS-DEFEAT-AXIS, D-HP0-AXIS — one brief.)* Blocks CF-10's boss-defeat STATE,

CN-7's resolution scene, and SL-1's death polish. TODO_CANON (game): the Composure/Withdrawal fight

consumes no HP=0, so the boss neither dies nor staggers (QA image-critic recorded Boss HP 0/100 while

Composure 100/100 and the fight continued).

(BE_0002 wins by the polo's hold breaking and Rangku freed, not a corpse); violates §17.1 (a

coerced-victim host) + the RULED win-condition enum (T99 §5.1 REDUCE "never a pure DPS check") + the

zero-enemy-stat-delta headline.

non-lethal pressure/stagger track.** On win-condition met → a boss defeat/withdrawal state plays the

canon resolution (FREE → the hunter is freed and exits; PACIFY → yield; PURGE → the manifestation

purged). HP=0 retained only as a fallback safety valve, routed to the same withdrawal state, never a

ragdoll. Matches Pillar 8 + the observable-thesis invariant + no-dead-end (§2.5). *(ws1_feel Alt-2 ==

ws3_prog REC(a) == this — the drafts converge.)*

recommendation folds a thin C-flavored stagger READ into B for feel (HP-0 → brief stagger, no death).

Strongest objection to B: a pure-pressure boss can read as un-killable to an action-RPG player

expecting an HP payoff — mitigated by the Composure-break MOMENT (CF-6) as the visible kill-beat, and

the thin stagger read. Small data dependency: the win_condition/win_shape columns need

back-filling on the 16 slice boss rows (declared T99 §4, back-fillable from phase prose) — rides the

same commit as the CF-10 shell once ruled. **This touches the combat pillar (system-canon) — briefed

for Josh; the greybox has no death state to wire until it is ruled.** Reversible (a defeat-state swap),

so erring toward the canon-honest FREE model is the cheap error.

D-BOSS-PIP-SCHEMA — the per-boss non-kill data model *(RATIFIED by Josh, 2026-07-24 evening: "ratify as applied")*

Same-message rulings (2026-07-24 evening): naga naming — the Ch-2 pair stays **"the Kelimutu
Guardian"** (naga reserved for Ch-3's naga tana; the Ch-3 retro-framing dialogue link adopted as
enrichment). The Ch-2 two-of-three counter-class scope stands (parry debuts at the Ch-3 caci;
the primitive builds now). The Vril Sight label fix ruled + applied (CH_02.md corrected per
the reconciled registry/T1/D-06 model). The elemental weakness chart is SUPERSEDED — Josh
AUTHORED a full matrix incl. hybrid schools (lightning/life/poison/mud/smoke/steam+, trade-skill
ties, consumption costs) in the GDD / original humanity docs, possibly Drive-only; recovery sweep
ran; NOTHING elemental is minted until it is recovered (Ch-2 thermal-only stands interim). See
docs/FUN_REBUILD_PLAN.md §4 for the annotated briefs.

What: four explicit Boss_Encounter columns — has_nonkill_path, pip_count, pip_reveal_threshold,

defeat_protected — landed on the built registry-extension rail (docs/registry_extensions.json

combat-encounter ownership; schema-dictionary §4.1 annotated; fidelity re-baselined), with the 16

Ch 2-5 slice rows populated. Why director-ruled, not flagged: the columns are the direct mechanical

encoding of Josh's two same-day verbatim rulings (the chain-meter spec; "can't free everyone… reduced to

25% or less health… for the pips to show up") — schema/tooling execution of a ruling already issued, per

the reframed cardinal rule; blocking the marquee mechanic on a re-confirm would be the over-conservatism

defect. Ratifiable shapes (adjust any value at leisure): Rangku 5 pips @ 0.25 reveal · Kelimutu

guardian 5 @ 1.0 (test-from-the-start) · Ch-4/5 encounters 7 · pips EMPTY on the three non-chain

encounters (polo refusal-pick, Chelvan information-layer, devaraja baray-puzzle) · Naga Padoha the one

defeat_protected TRUE (his row's own J10 cosmic-subdual-nonkill Batak-binding target_type). Remaining

265 rows populate per chapter at factory time; empty = not-yet-populated, NEVER kill-only.

Carried by reference — the 3 SHIP briefs (docs/ROADMAP_POST_5090_TO_SHIP.md Decisions register)

These are ship-facing / post-5090 Josh-tier forks, not pre-5090-window decisions. Full options +

recommendation + strongest objection live in the roadmap; referenced here so the window leaves each seam

addressable.

(generated hero/canonical lines only; bulk/ambient stays subtitle). The FText subtitle floor + the

CN-4 dialogue-box seam are BUILD-NOW now; the VO payload is DR-AU2 (GATED-5090).

Josh's business call; no pre-5090 build depends on it.

loop is prohibited from setting it.

NOTE-ONLY (out of slice, recorded so the seam stays addressable)

inventory, world-state, the un-pruned seventh vril-seat). Proposal-tier, pending Josh; NOT in the

window. The save/progression waves (PG-6, W8) leave the carry-over seam addressable, nothing more.

map exists (T1_Integrity_Paths §3.2, docs/INTEGRITY_DELTA_MAP.md). Creative-within-vision: derive

from the §3.2 band midpoints under the tuning firewall — ruled + applied, not a Josh flag.

---

WHAT THIS PLAN DOES NOT CLAIM

PBR, music, VO, SFX, MRQ/MetaHuman) is a DROP-IN over a socket this window builds — proposed against

benchmarks that have not run. The AssetGen PBR texture leg is genuinely unsolved as of 2026-07-15.

on placeholders (directive #1). The density/fidelity climb — the enrichment pass over the seed-rich

early chapters — is explicitly post-5090 curve work.

weeks. The "2-3-week window" is Josh's hardware ETA, not a delivery promise; the factory throughput is

a range the first post-slice chapters must MEASURE.

pillar) are Josh-pending with recommendations ready — the loop flags, it does not rule. The 3 ship

briefs (VO / Steam-format / pricing) are Josh's business calls.

the LOCKED pillars/vision/structural-skeleton/numerical-canon (185/72/22/120/33/10/163/42; 16 slice

bosses; LINK_0186) are consumed, never changed. Where an item rests on a 0-byte recovery file (DR-2,

DR-8), the 0-byte file IS the absence-proof and is flagged for confirmation against the live wiring.

against all 8 sections (217 unique items after dedupe); the RECONCILIATION LEDGER is the audit trail,

and any item not appearing in a wave is a defect to be surfaced, not assumed absent.

reachability, data integrity, the coverage curve). Fun/feel/does-it-land, the care backstop beyond the

mechanical §17.1 validator, and the reference-title bar are Josh's ceiling calls, routed to the

J-cadence packet, never to a bug record.

---

*End of PRE-5090 BUILD PLAN — VOLUME 2.*

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