LENS_zelda-dungeon-tool-ladder_DRAFT.md

pipelines/LENS_zelda-dungeon-tool-ladder_DRAFT.md

Comparator lens audit — THE ZELDA DUNGEON / TOOL-LADDER LENS

Lens id: zelda-dungeon-tool-ladder · Wave P1-B · read-only audit of C:\dev\humanity-forgotten

(canon) + C:\dev\Humanity\Humanity (built-system reference).

Title set: Ocarina of Time (primary) · ALttP / Link's Awakening / ALBW · Twilight Princess ·

Skyward Sword. What the set teaches: the lock/key/tool/exam-boss interior grammar (an interior

teaches a verb, tests it, twists it, then boss-exams it); item-gated world unfolding where each

permanent tool retroactively re-opens earlier space; Z-targeting as the contract that defines 3D

melee stance and camera; perception-modes as playable search verbs; acquisition as an authored

scene; heart-piece-grain completionism; and teaching with zero tutorial text.

Wave focus applied: our twenty bounded rift dungeons, the important-crossing dungeons on the

78 typed travel seams, and the chapter site-belt (the §3b typed site rows).

Method law held. Every zero below is positive-controlled with a term I know exists, in Python

where quoting/brackets are involved. Every finding was attacked before it was written; the ones that

died are recorded in §"Refuted and dropped". Dedupe baseline read in full and respected:

docs/DESIGN_GAP_REGISTER.md (9 ranked + rows 10-19 recovered + entries 20-45), the

docs/PRE_5090_BUILD_PLAN.md ledger 2026-07-27n..27w, docs/pipeline_review/HOLLOW_EXPANSION_INTEGRATION_2026-07-27.md

(§1.2 + the D-1/D-2/X-1..X-20 ruling block), docs/proposals/PRESENTATION_DOCTRINE.md (all three

forks RULED), docs/proposals/REALM_DESIGN_PROGRAM.md §2.2, docs/FACTORY_CONTRACT.md, and

docs/COMBAT_PROGRAM_ADDENDUM.md.

Positive control the cluster note demanded, discharged first: lock-on IS built — I read

C:\dev\Humanity\Humanity\Source\Humanity\Private\Combat\HumanityTargetingComponent.cpp end to end

(acquire / screen-centre scoring / left-to-right cycle / hysteresis break / lock ring) plus its

automation test at QA/HumanityCombatAutomationTests.cpp:824. Absence is never claimed below.

Parry and the chain meter are also built (HumanityAttackComponent.cpp:83-141 with

EHumanityCounterClass::ParryOnly, HumanityChainMeter.cpp). GTA's interior-density DIVERGENT

verdict is respected: nothing below asks for ambient enterable urban interiors.

Verdict classes per the standing wave rule. DESIGNED-UNBUILT is never reported as MISSING.

---

FINDINGS (16) — MISSING ×3 · WEAKER ×8 · DESIGNED-UNBUILT ×1 · COVERED ×3 · DIVERGENT-BY-DESIGN ×1

---

Z-1 — The SITE is the atom: no schema anywhere expresses a gate *inside* a bounded space

Class: MISSING (schema + doctrine) · Priority: HIGH · Owner: spec-doc (the §3b site-row

grammar) + W-SPACE · Wave: pre-5090, before the first slice dungeon is staged ·

Workable tag: SCHEMA-SMALL (two columns on a live row shape) · Slice-relevant (the slice's

share is "~3-4 bounded dungeons", docs/PRE_5090_BUILD_PLAN.md L299)

What the title set proves. A Zelda interior is not one space with a boss at the end. It is a

graph of rooms whose edges are gated — by a small key, by the tool the dungeon itself grants, by a

switch thrown two rooms back — and the fun is the player holding that graph in their head. The lock

is the level design; without an intra-space gate there is no interior, only a themed arena.

Current state (cited). Our spatial atom is the typed site row, and it is a real, well-populated

grammar: 380 rows corpus-wide across build/spine_rows/CH_*/sites.csv, columns

`chapter_id, site_id, terrain, functions, ambient_threat, vril_density, climactic_affordance,

protected, display_name. The vocabulary is rich — functions` runs a 12-token multi-value set

(combat/puzzle/learning/character/transformation/traversal/discovery/investigation/stealth/dialogue/

trade/vril_management) and climactic_affordance a 6-token one (none 159 · sacred 48 · threshold 39

· climactic_geometry 23 · vista 20 · weather_dramatic 9, plus combinations). Worked example, Ch 3:

seven sites — wae_rebo_village, compang_lingko_fields, wae_water_spring,

mama_klaras_waterfall, todo_royal_village, lingko_forest_edge, liang_bua_cave — each with an

env paragraph and a hosts CH03_BNN binding [docs/spine/CH_03.md L71-91]. **Not one column, in

any registry or spine row, expresses "this part of this place is closed until you have X."** Beats

bind to a site; sites bind to a chapter; nothing binds to a sub-space.

Positive control. Python scan (not shell grep) for `room|corridor|antechamber|inner chamber|

multi-room|room-to-room|chamber sequence across docs/**/*.md` excluding region_pass2 /

book_extractions / original_predclaude: 385 lines in 121 files, and I read the first twelve — every

one is incidental prose ("room to spare", "in the room", "corridor-arena", the Kra portage

corridor). Zero are an interior-structure design concept. Control that the scan reaches design docs:

the same corpus returns site_id in 102 files. The absence is real.

Self-refutation attempted. (a) *"DESIGN_GAP_REGISTER lists 'Corridor-arena spatial grammar'

as COVERED (FF7R)."* — It does, and I am not re-litigating it. Corridor-arena is a *combat-space*

composition idiom (approach corridor → arena). It says nothing about a gated room graph, and the

register's own row 12 (the boss-arena loopback) proves the register is thinking at arena grain, not

interior grain. (b) *"Designed-unbuilt — the dungeons are only just ruled."* — No: the twelfth

sitting ruled TWENTY bounded dungeons as canon on 2026-07-27 [PRE_5090_BUILD_PLAN.md L290-300;

T1_Combat_System_Spec [ACTIVE v1.0].md L63], and the enrichment tier ruled dungeon crossings

[PRESENTATION_DOCTRINE.md §4.2]. A ruled content class whose data shape cannot represent its

defining feature is a schema hole, not a build queue item. (c) *"The functions token puzzle

covers it."* — puzzle is a beat-mode tag on a whole site; it cannot say which part of the site the

puzzle opens. Survives.

Reuse-first recommendation. Do not mint a dungeon registry and do not build a room graph.

Add two columns to the existing §3b site row: entry_gate (a nullable token naming the verb,

device, mastery tier or key-item that opens this site row — the vocabulary already exists in

T0_Ability_Tree_Registry.ability_id, the six-device schedule, and the twelve mastery tiers) and

internal_shortcut (a nullable site_id this row opens a one-way return to). A bounded dungeon then

authors as 3-6 site rows with gates between them, using the exact grammar that already carries

380 rows, the same hosts CH_NN_BNN beat binding, and the same check_spine_graph.py parser. The

W-SPACE per-site grammar (already the declared home for register row 12) takes the doctrine clause.

Zero new systems; one schema tick; the twenty dungeons become authorable.

---

Z-2 — The twenty bounded rift dungeons and the fifty-piece capacity economy have NO factory rider

Class: MISSING (factory wiring) · Priority: HIGH · Owner: spec-doc (FACTORY_CONTRACT) +

HARNESS (gate 30's declared doc set) · Wave: immediate, zero-token · Workable tag:

DATA-TINY (rider rows + two entries in declared_doc_set)

What the title set proves. Nothing — this is the lens's *consequence* finding. Zelda's dungeon

ladder works because the item schedule, the dungeon count and the heart-piece budget are one

authored artifact. Ours is three artifacts and the machine that binds design to build cannot see any

of them.

Current state (cited). docs/FACTORY_CONTRACT.md is the register that makes "everything we

design reaches the factory" a tooth rather than a promise, enforced by gate 30

(harness/check_factory_contract.py, R1 rider-coverage / R2 home-and-tooth / R3

consumption-reachability / R4 ruling-src). It carries 67 FR rows. Machine scan of those 67 rows:

dungeon → 1 (FR-063, the Fork-C crossing seed, data_home NONE_YET(rank 21),

consumption NONE), rift → 0, capacity → 0, piece → 0, agility → 0, course → 0,

Hollow → 0, cleansing → 0. Control that the scan matches: boss → 10 rows (FR-007/009/014/015/

016/018…), clue → 3, crossing → 2, seam → 1. The search works; the rows are not there.

And gate 30 structurally cannot notice: docs/factory_contract.json declared_doc_set is

exactly four files — COMBAT_PROGRAM_ADDENDUM.md, NATURAL_VOICE_DOCTRINE.md,

DESIGN_GAP_REGISTER.md, ROADMAP_POST_5090_TO_SHIP.md — so the two docs that actually carry the

dungeon rulings (docs/pipeline_review/HOLLOW_EXPANSION_INTEGRATION_2026-07-27.md and the

PRE_5090_BUILD_PLAN.md ledger) contribute zero OWNER: lines to R1 coverage.

Why it happened (stated, not excused). Sequencing. The contract minted at ledger 2026-07-27r;

the Hollow integration record landed at 27n; the TWENTY-dungeon correction landed at 27v — *after*

the contract, and the contract's own doc set was never widened. The contract's docstring names

precisely this failure: *"a ruling became per-chapter factory behaviour only when a human remembered

to edit a prose bullet list — and that memory measurably failed."*

Self-refutation attempted. (a) *"FR-063 covers dungeons."* — FR-063 is the *crossing* enrichment

tier (Fork C) and its own consume cell says NONE_YET(rank 21). It does not reach authored rift

dungeons, the twenty bounded pieces, the reward_class lane, or the meter-credit invariant.

(b) *"The X-lane items X-2/X-10 already track it."* — X-2 is a *ruling record*, X-10 mints a rarity

axis. Neither is a factory rider, and the whole point of gate 30 is that a ruling without a rider is

an orphan. (c) *"DESIGNED-UNBUILT, not MISSING."* — The dungeons are designed; the rider is

absent, and the rider is what this finding is about. Survives.

Reuse-first recommendation. Two moves, both mechanical. (1) Add HOLLOW_EXPANSION_INTEGRATION

and the ledger to declared_doc_set so R1 pulls their OWNER: lines into coverage. (2) Mint four

rider rows on the existing schema: the authored rift-dungeon budget per region (ruling_src → the

X-2 supersession block; data_home → the dungeon-row reward_class schema rider named in X-2;

tooth → NONE(reason) until the row shape mints), the fifty-piece capacity economy

(ruling_src → T1_Combat_System_Spec L63), the agility-course rotation (77 courses × 3 variants,

HL_0079), and the cleansing meter's completion denominator (JB-2 scope). No new machinery — this is

the machinery working as designed, once it is pointed at the right docs.

---

Z-3 — Our "metroidvania" runs one way: nothing records what a new tool re-opens BEHIND the player

Class: MISSING (design surface) · Priority: HIGH · Owner: spec-doc + schema-data (the

site row + the proven forward_track tooth) · Wave: pre-5090 design, execution post-slice ·

Workable tag: SCHEMA-SMALL, reusing an armed cross-file gate

What the title set proves. The hookshot is not a dungeon item; it is a world edit. Every

permanent tool re-reads the map the player already walked, and the memory of "I have seen that ledge"

is the payoff engine. This is the half of metroidvania that is *backward*.

Current state (cited). We use the word and mean the forward half only. boss_roster_rows.json

philosophy: *"VERB CURVE (new verbs in valleys, tested at the next peak — metroidvania

retroactive-unlock; no Wukong unearned spikes)"*, then a forward chain dodge/strike (Ch 2-5) →

perceive (Ch 6) → parry/restraint (Ch 7) → … → perceive-at-T8 (Ch 76-77).

school_roster_rows.json: *"the NEXT CHAPTER is engineered as the showcase (metroidvania

retroactive-unlock: the new verb is the ideal answer to the following chapter's canonical

challenge)"*. MILESTONE_BUILD_PIPELINE.md L331 restates it: *"new verbs in valleys, tested at the

next peak."* All three are forward. The six-device ladder — Devices 1/3/5 forced-Ether at Ch 15

Crown, Ch 38 Third Eye, Ch 56-57 Throat; Devices 2/4/6 player-choice at Ch 19-23, Ch 47-50, Ch 65

[T1_CVD L1316; T1_Ability_Tree [ACTIVE v1.4] L1342] — is a Zelda item ladder with a canonical

acquisition schedule and **no record anywhere of what earlier ground each device makes newly

readable.** And the arc's one revisit window was explicitly steered away from this: Ch 59-65 was

*"RESCOPED (Josh-approved, 2026-07-08) from re-walking seen ground to reaching skipped African

ground"* [docs/spine/CH_59.md].

Positive control. revisit appears 179 times across 30 spine nodes (Ch 59 alone: 26; Ch 60: 24)

— so the corpus is reachable and the concept is live. Reading them shows the density is the

*counter-campaign* arc's narrative return, not a verb-gated space re-open. The one genuine

retroactive-space instance in the corpus is liang_bua_cave at Ch 3 — *"the Ch-2 arrival cave on a

deliberate backtrack — the deep-time Homo floresiensis vril trace read on purpose for the first

time"* [CH_03.md L89-90] — one site row across 79 nodes, and it is exactly the shape being asked

for.

Self-refutation attempted. (a) *"Walked geography forbids it — WGM §4/§6.7 makes Ch 1-58 a

continuous pilgrimage, fast-travel return-only pre-Vimana"* (the constraint register entry 9 names).

— That forbids re-walking *chapters*; it does not forbid a device re-opening a site inside the

region the player is standing in, and Ch 3's own backtrack proves the idiom is canon-legal.

(b) *"The Ch 59-65 rescope is a pre-registered divergence."* — It is, at chapter grain, and I am

honoring it: nothing here proposes re-walking a chapter. (c) *"mark_write.forward_track already

does this."* — It tracks *story marks* (the Ch-2 Kelimutu mark read at the Ch-63 continental

revisit; CH_08/CH_09 marks consumed at CH_59), never space or verbs — which is exactly why it is the

right thing to extend. Survives.

Reuse-first recommendation. Extend the already-armed promise→payoff tooth rather than

inventing a ledger. mark_write {community_id, valence, persistence, forward_track:[CH_NN]} is

verified cross-file at ERROR tier by harness/check_spine_graph.py §6 — 338 mark/forward_track

lines across 51 nodes, and it already retired the CH_08/CH_09 → CH_59 cross-file WARNs by typing

consumer beats. Add the same shape to the site row from Z-1: a site carrying entry_gate also

carries reopened_by_track:[CH_NN], and the gate asserts the naming chapter has a beat that

actually reads it. Six devices × 2-4 re-opened sites each = a 12-24 row authored ledger that costs

one column and inherits a working tooth. Start with the three forced bindings (Ch 15/38/56-57),

which are the ones every player gets.

---

Z-4 — The perception ladder is canon, tiered and registry-rowed — and has no minute-to-minute FORM

Class: WEAKER (structural under-specification of ratified canon) · Priority: MEDIUM-HIGH ·

Owner: spec-doc (T1_Vril / T1_Ability_Tree) + the clue lane · Wave: pre-5090 spec, slice

build · Workable tag: SPEC-SMALL

What the title set proves. The Lens of Truth, wolf senses and dowsing are not lore; they are a

*search loop*. Press a button, the world re-renders in a second channel, you sweep a space, you find

the one thing that reads differently, and it costs you something to keep looking. That loop is how a

markerless game stays navigable without markers.

Current state (cited). The canon side is unusually strong. The three-rung perception ladder is

ruled — rung 1 the Neophyte vril-trace from Ch 2, rung 2 Vril Sight at Tier 2 Zelator from Ch 15,

rung 3 the tier-6 substrate read [HOLLOW_REVEAL_ARCHITECTURE_2026-07-27.md L597-599;

T0_Hard_Lines HL_0028]. The visibility law is ruled (invisible to the vril-depleted, visible to

the vril-conscious; *"the player diagnoses by clue"*, PRE_5090_BUILD_PLAN.md L474-476). The

registry row exists: A_E3_002 Vril Sight, element Ether-ThirdEye, tier 2.0 Zelator, unlock Ch_15,

ability_class perception, vril_cost_class low, cast_pattern instant,

persistence_class sustained, description *"active vril perception (surface T2; substrate T6)"*

[registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv]. **What no doc or column supplies:

what the mode renders, over what radius, at what drain per second, what it does to the rest of the

HUD, and what a "sweep" of a space feels like.** persistence_class sustained is the only hint that

it is even a mode rather than a ping, and resource_cost is empty on the row.

Positive control. I enumerated the three *Sight rows directly out of the 34-column registry

(A_E3_002 Vril Sight, A_E3_005 Probability Sight, A_E3_006 Temporal Sight) — the read works and

returns real cells; the mechanic cells are the empty ones. Grep of vril sight across docs/ +

_source/ returns 30+ hits, every one a tier/gate/lore/reveal statement.

Self-refutation attempted. (a) *"Register #17 (diegetic weakness READ channel, MISSING) already

covers it."* — #17 is about reading an *enemy's* weakness, and its own recommendation says "never a

stat sheet." This is the *environmental search* half: finding the drained node, the rift mouth, the

inscription. Adjacent, not the same; they should land on one channel, which is my recommendation.

(b) *"No-markers doctrine means we deliberately have no highlight mode."* — The doctrine is

DIVERGENT on *quest markers*; the visibility law positively *requires* a perceptual channel ("the

player diagnoses by clue"), so this is under-specification, not divergence. (c) *"Phase-5M owns

magnitudes."* — Magnitudes, yes. The *existence* of a render channel is not a magnitude. Survives.

Reuse-first recommendation. Spec the mode on surfaces that already exist. The clue lane

(docs/spine/clues/CH_02.csv, schema `chapter_id, clue_id, chain, source_kind, beat_scope,

trigger_context, player_text, status, src`) already types *what the player can notice and how*;

source_kind already distinguishes observed_behavior from npc_dialogue. Add a perception_gate

value on the clue row (the token ladder is already minted for the Hollow class at X-5:

"populate perception_gate with the three-rung ladder") so a clue can be *rung-2-only*, and give

A_E3_002 its empty resource_cost / duration_class cells a drain-per-second and a radius at the

5M audit. That makes Vril Sight a search verb using the discovery lane we already author into.

---

Z-5 — The one live "this place needs a tool" column is corrupted on 30 of 42 rows

Class: WEAKER (data integrity on a load-bearing gate column) · Priority: HIGH (cheap) ·

Owner: schema-data · Wave: immediate, zero-token · Workable tag: DATA-TINY

What the title set proves. Lock data has to be readable by the machine that places the lock. A

gate column that holds garbage is worse than no column: it looks armed.

Current state (cited). registries/T0_Vril_Site_Registry [ACTIVE v0.1]/Sheet1.csv (42 rows) is

the only live registry with a per-place gating column: mastery_tier_required. **30 of 42 rows

carry a non-mastery value.** The cause is a quoted-list column shift inherited from the frozen

export: row VS_CH02_001 reads literally

...,False,False,"""T01","T22""",NULL,NULL, — the source cell "T01, T22" was split on its comma,

so thread_anchors holds "T01, mastery_tier_required holds T22", and every downstream column

(cvd_anchor, notes) shifts one place left. Other rows carry False / True in the mastery cell

(VS_CH15_001/002, VS_CH38_001, VS_CH64-74_*). Only six rows carry a real mastery token:

VS_CH42_001 ADEPTUS_MINOR · VS_CH45_001 PHILOSOPHUS · VS_CH49_001 / VS_CH50_001 ADEPTUS_MAJOR ·

VS_CH67_001 / VS_CH68_001 Adeptus_Exemptus.

Positive control / provenance. This is not a harness conversion bug — I read the frozen

_source/00_Tier_0_Master_Indices/T0_Vril_Site_Registry [ACTIVE v0.1].xlsx with openpyxl and the

cells are already split there ('"T01', 'T22"'). The defect is a Drive-era export artifact that

the faithful CSV conversion preserved exactly as it should have.

Self-refutation attempted. (a) *"The CSVs are gate-baselined; touching them reddens the

suite."* — True and handled: docs/fidelity_baseline.json is refreshed via

registry_fidelity.py --emit-baseline in the same commit, which is the documented procedure for

every intended registry edit. (b) *"Just edit the xlsx."* — Explicitly forbidden by CLAUDE.md

("do NOT edit the T0 xlsx here"); the repair belongs on the live CSV layer. (c) *"Cosmetic."* — The

column is the only machine expression of a tool-gated place in live canon, and Z-1's entry_gate

work will want to read it. Survives.

Reuse-first recommendation. A deterministic repair script (the proven O-1 transform vector):

re-split each shifted row, restore thread_anchors as a semicolon list (the convention 6 clean rows

already use — T03;T08;T13;T17), re-home mastery_tier_required / cvd_anchor / notes, and

--emit-baseline in the same commit. Then a fresh-context critic on the content, per the standing

rule that a registry edit is never "trivial mechanical." 42 rows; one afternoon of zero-token work.

---

Z-6 — Acquisition-as-authored-scene: COVERED, and better than the lens expected

Class: COVERED · Priority: — · Owner: none · Wave: — · No action

What the title set proves. The tool arrives in a staged, named, taught moment. Getting the

hookshot is a memory; a loot row is not.

Current state (cited). Our device bondings are authored beats with fiction, actors and a

worldstate write. Ch 15: the Crown device force-bonds on the boss win at Amarna — beat CH15_B13,

`out {ws.antagonist_operational_state_per_region: erasure_vessel_toppled_egypt;

ws.worn_rune_loadout: crown_device_force_bound}`, with the §5.5 note *"the Crown device (Device 1)

receives its forced Ether binding here at the boss win — one of the three canonical forced Ether

bindings, cannot be respec'd"* [docs/spine/CH_15.md L136/L178-180/L282]. Ch 38: the Third Eye

force-bonds at the crest of the seven-stage root-to-crown climb — *"something she has carried

dormant since Egypt … comes awake at last: the Third Eye … force-bonding in the one place on earth

clear enough to bear it"*, beat CH38_B03, sub-boss BE_0038_S2 [docs/spine/CH_38.md L28/L114/L97].

school_roster_rows.json even names the Zelda move explicitly: *"The entry gate TESTS tomb

navigation WITHOUT the verb — absence felt first, the metroidvania pre-grant contrast."*

Verdict note. The lens spec listed acquisition staging as an upgrade target for our device

beats. On the evidence it is already the strongest thing this lens found. Reported as COVERED so a

later wave does not spend a rider on it. The *staging* is covered; what is not is what the tool then

re-opens — that is Z-3, and it is a different aspect.

---

Z-7 — Boss-as-exam: COVERED in doctrine and partly BUILT

Class: COVERED · Priority: — · Owner: none · Wave: — · No action

Current state (cited). The Pillar-8 doctrine binds every boss: blended never single-mode,

primary + secondary verb, a three-axis Patterns/Puzzles/Preparation split never 100/0/0, phase

escalation that *evolves* the moveset rather than swapping it, ≥2 counters per signature attack,

and a Hades reward on win AND on death [COMBAT_ENCOUNTER_SYSTEM.md L425]. Win conditions vary

(HP / part-break / pacify / perceive / restraint) and the verb curve is authored per chapter with

"no unearned spikes" [MILESTONE_BUILD_PIPELINE.md L325-336]. School climaxes grant the verb and

the next chapter showcases it [school_roster_rows.json]. Engine side: parry with a longer

post-parry exposure window (ParryStaggerMult), per-attack counter classes

(EHumanityCounterClass::ParryOnly | Any), and the chain meter are all built

[HumanityAttackComponent.cpp:83-141, HumanityChainMeter.cpp; ledger 2026-07-27w "game systems

wave 1 landed at e1994ea (parry, chain-meter…)"]. Our exam bosses test taught verbs by construction;

the school roster's failure-catalog guard is literally *"every school exam tests only verbs its own

curriculum taught (anti-Wukong)."*

---

Z-8 — Heart-piece grain: COVERED, and more precisely specified than the comparator

Class: COVERED · Priority: — · Owner: none · Wave: — · No action

Current state (cited). T1_Combat_System_Spec [ACTIVE v1.0].md L63: a fifths quantum (five

pieces = one unit, uniform across Health / Vril / Stamina-Rage), fifty capacity pieces in the arc

economy, TWENTY locked to authored rift dungeons (ten Vril + ten Health = exactly two bubble

layers and two health bars, "a legible player promise"), thirty carried by agility-course puzzle

variants, achievements and world secrets; ceilings fixed at seven Vril layers (mirroring the seven

devices) and five Health bars (mirroring the five integrity bands); one dungeon grants one PIECE,

never a unit (the granularity lock). Josh named the heart-piece register himself in the X-2 ruling.

This is the cleanest COVERED on the board and the anchor Z-1 and Z-2 both serve.

---

Z-9 — The identity-board discipline exists for nine realms and for nothing else

Class: WEAKER · Priority: MEDIUM-HIGH · Owner: P5-factory (asset passes) + spec-doc ·

Wave: 5090 asset waves; the brief authored pre-5090 · Workable tag: SPEC-SMALL (reuse an

existing template at a new grain)

What the title set proves. Every Zelda dungeon has one theme, one palette, one motif and one

enemy dialect, and you can name a dungeon from a single screenshot. That is a *production

discipline*, not an art whim — it is what stops twenty interiors reading as one brown interior.

Current state (cited). We have the discipline, scoped to realms. REALM_DESIGN_PROGRAM.md

§concept-board contents: *"PALETTE (named colors with values AND the rule for where each is allowed

to appear, because a palette without placement rules produces nine realms that use their palettes

the same way); LIGHT DOCTRINE (source, direction, color …)"* [L999-1001], plus palette_law as a

named art-direction hook on the realm schema [L533] and per-realm plate sheets covering silhouette,

architecture, palette [L766]. **The twenty authored rift dungeons and the dungeon-crossings inherit

none of it.** On the site side the asset columns are empty: T0_Vril_Site_Registry's

`mesh_id_ref, mesh_pipeline_type, substrate_material_ref_path, mesh_tags, generation_status,

generation_prompt_hash are blank on all 42 rows, and PIPELINE_READINESS_ROADMAP.md` independently

flags that *"the mesh_tags object … exists in no consumable form"*.

Self-refutation attempted. (a) *"Register #4 (readable silhouettes) covers it."* — #4 is

creature-families and wayfinding landmarks, explicitly. Interior identity is neither.

(b) *"DT-7's accuracy floor makes dungeon theming suspect."* — The doctrine already answers this:

*"accuracy binds the LAND; enrichment adds CONTENT"*, and §4.2 states building a seam UP into a

dungeon is compliant by construction. A palette law is content, inside an accurate place.

(c) *"Post-5090, not now."* — The generation runs post-5090; the *brief* is authored text and is

exactly the kind of thing that must exist before the GPU arrives. Survives.

Reuse-first recommendation. Reuse the realm concept-board template at dungeon grain: one

half-page identity brief per authored dungeon (palette + placement rule, light doctrine, one

structural motif, the enemy dialect it draws from the chapter's own roster), stored beside the

site rows and consumed by the same asset-generation prompt composition the realm boards feed. No new

pipeline; a second instantiation of one that is already specced.

---

Z-10 — Lock-on is built; the targeting CONTRACT in enclosed space is unwritten and unconfigured

Class: WEAKER (built-gap; the system exists, three contract clauses do not) · Priority:

MEDIUM-HIGH · Owner: W-TGT / P2.2 + spec-doc · Wave: W3 (input/traversal), before the first

interior is staged · Workable tag: ENGINE-SMALL (three clauses, one component)

What the title set proves. Z-targeting is a *contract*, not a feature: while locked the body

strafes and faces the target, the camera holds a two-actor frame, and the lock **breaks on line of

sight** — which is what makes pillars, doorways and enclosed rooms tactical instead of camera-hostile.

Zelda's interiors are only playable because that contract holds indoors.

Current state (cited). Built, and honestly labelled: UHumanityTargetingComponent gathers

candidates through IHumanityTargetable (never Composure, per TG-2), scores on screen-centre

proximity with a distance tie-break, cycles left-to-right on screen, and breaks with range hysteresis

[HumanityTargetingComponent.cpp]. Three clauses are absent in code and in every doc:

1. No occlusion test anywhere. GatherCandidates runs a distance check only (`FVector::DistSquared

... <= AcquireSq) with no line trace, and IsStillValidTarget` breaks only on

!IsLockOnTargetable() or range exit. An enemy through a wall is a legal, lockable, cyclable

target.

2. No stance change under lock. MoveComp->bOrientRotationToMovement = true is set at

construction [HumanityCharacter.cpp:80] and Input_LockOnToggle only calls

TargetingComponent->ToggleLock() [:678] — nothing switches to controller-desired rotation, so

there is no strafe/face-the-target stance, which is the *movement* half of the Z-targeting

contract.

3. No camera-collision doctrine. The boom is created with TargetArmLength 400,

SocketOffset (0,0,60), bUsePawnControlRotation = true and its own comment marks both values

ILLUSTRATIVE; bDoCollisionTest / ProbeSize are never touched

[HumanityCharacter.cpp:100-110]. Grep for bDoCollisionTest|ProbeSize|CameraLagSpeed across

Source/Humanity returns zero.

Doc side: PRESENTATION_DOCTRINE.md CC-1..CC-10 governs the scene↔gameplay camera boundary,

and §2.2 "What CC-1..CC-10 do not cover" scopes out only sub-level streaming — the *combat*

camera in a bounded space is in neither list. The build plan's own self-flag survives:

PRE_5090_BUILD_PLAN.md L1729 P2.2 *"(Camera SPEC is a Josh gap — §12.)"*

Self-refutation attempted. (a) *"Register #29 (presentation doctrine, camera) is closed."* — It

is, and correctly: that entry was scoped to camera continuity, cut policy and transitions, all three

now RULED. The doctrine itself declares what it does not settle, and this is outside it.

(b) *"Greybox values; 5M will tune."* — Occlusion-break and stance are not tuning, they are

behaviour; and DESIGN_GAP_REGISTER row 12's boss-arena shortcut plus Z-1's interiors both put the

camera indoors. (c) *"Soft-lock deliberately keeps player look authority, so a hard strafe stance

would fight it."* — Real tension, and the recommendation respects it: make the stance a *lock-scoped

default* with look authority preserved, not a hard camera seize. Survives.

Reuse-first recommendation. Three clauses onto the existing P2.2/W-TGT item, no new system:

(1) an occlusion trace in GatherCandidates and a grace-timer occlusion break in

IsStillValidTarget (the hysteresis pattern already there is the model); (2) toggle

bOrientRotationToMovementbUseControllerDesiredRotation on lock acquire/clear inside

ToggleLock; (3) set the boom's collision probe and declare the enclosed-space arm-length rule in

PRESENTATION_DOCTRINE §2.2 as CC-11, so the doctrine that owns the camera owns all of it. The

W-TGT verified-by test already exists and extends by two assertions.

---

Z-11 — Teach-test-twist-exam is ruled law — for realm rulesets only

Class: WEAKER · Priority: HIGH (cheapest high-leverage item in the audit) · Owner:

spec-doc (promote one law) · Wave: pre-5090 · Workable tag: SPEC-TINY (one clause,

re-scoped)

What the title set proves. The escalation happens *inside* one interior across four to six

rooms: teach the verb safely, test it under mild pressure, twist it (the same verb, an inverted

context), then the boss exams it. No tutorial text at any point.

Current state (cited). We have the rule, written better than most shipped games write it —

REALM_DESIGN_PROGRAM.md LAW 5, THE LEGIBILITY LAW: *"Every law is taught before it can cost

anything, in a low-threat zone of the same realm, without a line of tutorial text. Each realm's

threshold zone is its tutorial by construction. This is the natural-voice doctrine applied to

physics: the player learns the local law by watching the world obey it."* [L423-426]. It binds the

nine realm rulesets and nothing else. At chapter grain the equivalent is the verb curve (teach in a

valley, exam at the next peak) — also strong, also not intra-site. **Between them sits the whole

rift-dungeon class and every dungeon crossing, inheriting neither.** A worked instance of what the

grain buys already exists: CH71_B12's road-up teaching loop, where each inert prop asks the player

to match one of the chapter's own wit-verbs, a wrong match branches to an authored mishap and hands

the prop back, *"so nothing here can be failed out of"* [docs/spine/CH_71.md L139].

Self-refutation attempted. (a) *"The verb curve covers teaching."* — At chapter grain, where the

teach and the exam can be five hours apart. A 20-minute dungeon needs the curve inside itself.

(b) *"A rift dungeon is small; it does not need four rooms of escalation."* — The twelfth sitting

put twenty of them across the arc carrying two full bars of permanent capacity. That is the game's

second-largest authored content class; it earns a teaching grammar. (c) *"New doctrine."* — It is

not new; it is LAW 5 with its scope widened by one word. Survives.

Reuse-first recommendation. Promote LAW 5 verbatim from the realm charter into the W-SPACE

per-site grammar as a bounded-interior clause: every bounded dungeon teaches its own verb or

twist in a low-threat first space, tests it once under pressure, twists it once, and exams it at the

close — no tutorial text, the world obeys the rule where the player can watch. Pair it with Z-1's

entry_gate so the twist has something to open. One paragraph; it makes twenty dungeons authorable

to a standard instead of to taste.

---

Z-12 — In a markerless game the outstanding-work surface is a slice stub while the completionist surfaces multiply

Class: WEAKER · Priority: MEDIUM-HIGH · Owner: UI wave (U11.16/U11.18) + the clue lane ·

Wave: W10, spec now · Workable tag: SPEC-SMALL

What the title set proves. Majora's Bombers' Notebook is the answer to a question a markerless

game must answer anyway: *what is still out there, and roughly where?* It is an information

architecture, not a marker — it records what you have learned, never what the game knows.

Current state (cited). The demand side is growing fast: a world-cleansing meter *"completionist-

legible to its own 100%"* [PRE_5090_BUILD_PLAN.md L495], 50 capacity pieces, 231 agility-course

variants (77 × 3, HL_0079), 22 familiar slots, 72 legendary weapon quests, 120 trade mastery gates,

264 unrouted per-region quest seeds. The supply side: U11.16 quest log + objective tracker is

specced with an explicit honesty clause — *"Honest count semantics: chapter/beat-level objectives

only; NO fabricated X/Y collectible counts until canon supplies per-quest counts"*; U11.18 journal

is *"empty-state by design"* with activation hard-anchored at Ch 13 — which, after the slice

rescope, is the slice's terminal node; U11.19 Grimoire likewise

[PRE_5090_BUILD_PLAN_VOL2.md L724-728]. Register entry 27 records the upstream half:

*"Quest discovery has no lead channel: giver/trigger 0/16, no notice-board or rumor surface."*

Self-refutation attempted. (a) *"Markerless navigation is DIVERGENT-BY-DESIGN."* — Yes, and this

proposes no markers. The Bombers' Notebook has no map pins; it is a record of what an NPC told you.

(b) *"No-scoreboard doctrine bans completion counters."* — The no-scoreboard ruling governs

*progression stats*; CVD §17.12 ratifies minigame top-score completion, and the cleansing meter is

ruled completionist-legible to 100% by Josh. A completion read is sanctioned. (c) *"Duplicate of

register 27."* — 27 is *discovery* (how a lead reaches the player); this is *retention* (where a

lead lives once it has). Adjacent, and they should share one surface. Survives.

Reuse-first recommendation. Give the already-planned journal shell (U11.18) one outstanding

read fed by two sources that already exist: the clue lane's status column (active is literally

"a lead the player holds") and the ruled cleansing meter. Diegetic framing per the natural-voice

doctrine — the healer's child's journal is the fiction, and she is already the journal-keeper from

Ch 2 to Ch 38. No new system, no marker, no fabricated X/Y until canon supplies the denominators —

which for the capacity pieces and the meter, it now does.

---

Z-13 — Pop-up rift dungeons have a spawn governance model and no layout model

Class: DESIGNED-UNBUILT · Priority: MEDIUM · Owner: W-SPACE + P5-factory · Wave:

post-slice · Workable tag: SPEC-SMALL

What the title set proves. Nothing in the Zelda set is procedural — which is the point. When a

title needs many interiors it authors a small kit of parts and re-skins it (Skyward Sword's silent

realms, ALBW's caves), because a random room graph reads as noise and a hand-placed lock reads as

design.

Current state (cited). The governance is ruled: pop-up rift dungeons are *"governed by a

sigma-bounded spawn rate plus a rarity grade"*, they *"NEVER draw the bounded pot"*, and a pop-up is

*"a Rift Instability Zone that has become ENTERABLE — it mints no fourth spawn system"*

[HOLLOW_EXPANSION_INTEGRATION_2026-07-27.md §1.2, D-2 R-A membrane-pocket ontology, X-2's three

teeth]. Gate 3 as an assertion is queued (X-12: the spawn table is chapter-scoped and cannot emit

late-arc loci early). What is nowhere: what a pop-up's interior is made of.

Positive control. docs/RUNTIME_GENERATIVE_LAYER.md — the doc that would own a generation model

— contains no layout/room/floor-plan concept at all; its single layout hit is a

block-int4 (AWQ-style) model-weight layout. The Python room-vocabulary scan in Z-1 covers this

corpus too and returns nothing.

Reuse-first recommendation. Do not author a procedural room generator. Reuse the tier-1

traversal kit the presentation doctrine already budgets — *"one corridor kit, re-skinned per

region"* [PRESENTATION_DOCTRINE.md §4.2] — as the pop-up's kit of parts, with the biome skin and

the enemy dialect drawn from the chapter's own roster and the entrance grammar fixed by D-2 (HL_0005

ruin / tomb / megalith). Authored variety lives in the twenty *bounded* dungeons; the pop-ups buy

frequency, not novelty. Recording this as DESIGNED-UNBUILT so a later wave does not read the blank

as licence for a generator.

---

Z-14 — The one-way shortcut home is registered — but scoped to boss arenas, not to interiors

Class: WEAKER (scope of an existing register row) · Priority: MEDIUM-HIGH · Owner:

W-SPACE grammar (the FR-016 rider's home) · Wave: with Z-1 · Workable tag: SPEC-TINY

What the title set proves. The kicked-down ladder is not convenience; it is the interior's

spine. It converts progress into permanence, teaches the space's shape, and makes a bounded interior

a place you *know* rather than a corridor you survived.

Current state (cited). The pattern is already registered and director-verified REAL:

DESIGN_GAP_REGISTER.md row 12 — *"legacy-dungeon loopbacks (the kicked ladder) convert deep

progress into permanent convenience. REC: add to the W-SPACE per-site grammar: every boss arena

carries an unlockable shortcut back to the nearest recharge-well."* It has a factory rider —

FR-016, engine-code, class:boss, status SEED, consumption NONE_YET(rank 7),

data_home NONE(the shortcut clause is a W-SPACE grammar affordance with no data column today)

[docs/FACTORY_CONTRACT.md L130]. The scope is the defect: class:boss. A bounded rift dungeon

is not a boss arena, and the twenty of them are precisely where a loopback earns its keep. The vril

site is already ruled as the save-recharge-loadout sanctum [COMBAT_PROGRAM_ADDENDUM.md §9], so the

return anchor exists.

Self-refutation attempted. *"Re-litigating a register row."* — No: the row's recommendation is

adopted verbatim and its scope class widened from class:boss to bounded interiors. That is

exactly the kind of scope correction the register's own recovered-rows section models (row 14's

"REAL as re-scoped"). Survives.

Reuse-first recommendation. Change FR-016's scope_class from class:boss to cover bounded

interiors, and give it the data column Z-1 mints (internal_shortcut), which retires its

data_home NONE. One rider edit plus one column reused; nothing new.

---

Z-15 — No small-key / boss-key consumable economy: DIVERGENT-BY-DESIGN (director call, flagged)

Class: DIVERGENT-BY-DESIGN · Priority: — · Owner: — · Wave: — ·

Recorded so a later lens does not mint it

What the title set proves. The small key / boss key pair is Zelda's cheapest pacing device: a

consumable that meters progress through an interior without any new verb.

Why we should not import the consumable half. Our gating doctrine is *earned capability*, not

carried objects: every mastery tier requires a quest-unlock, never a numerical threshold

[CVD L977; T1_Ability_Tree §2 L49/L68], and CVD §12.1 frames progression as *"becoming a

practitioner… rather than leveling up a stat."* A consumable key inventory would add a countable

progress currency — the exact shape the no-scoreboard posture and the anti-grind exploration model

push away from — and would collide with the ruled inventory-minimum posture in the slice. The

structural half of the lesson (a lock that a specific thing opens) is fully importable and is

Z-1's entry_gate, whose vocabulary is verbs, devices and mastery tiers — capabilities, not

consumables.

Contested — flagged for the director. This is my own divergence declaration, not a pre-existing

ruled one, and a reasonable reading says a *diegetic* key (a keeper's token, a cut tally-stick, a

named seal) is an object with fiction rather than a currency, and would sit comfortably inside the

R-17 AAA bar. The devil's-advocate-against-timidity pass says the timid version of this finding

would ban a good tool on doctrine-vibes. My recommendation stands narrowly: no *countable* key

inventory; a named, single-instance diegetic seal-object as an entry_gate value is permitted

and is a good idea. Director to confirm the narrow form.

---

Z-16 — Every bounded interior is a reveal surface and only crossings carry the rule

Class: WEAKER (rule scope) · Priority: MEDIUM · Owner: spec-doc + the critic rubric ·

Wave: with Z-1 · Workable tag: SPEC-TINY

What the title set proves. A dungeon is the densest authored surface a game has — theme, motif,

enemy dialect, murals, the boss's staging. In a game whose whole architecture is a held reveal, that

density is the biggest leak risk on the board.

Current state (cited). The rule exists and is excellent — and it is bolted to *crossings*.

PRESENTATION_DOCTRINE.md DT-9: *"a dungeon crossing is the largest authored surface in the seam

system and therefore the easiest place to leak a held reveal, so its encounters, structures, and

imagery are reveal-checked against the destination beat's HELD notes exactly as a scene frame would

be"* — with a worked instance (the CH_04→CH_05 seam's no-water hard-constraint under HL_0043). The

twenty authored rift dungeons are not crossings and inherit nothing from DT-9; the reveal ladder

work in the Hollow record covers the *Hollow class's* visibility, not a dungeon's imagery. Gate 3's

data-table reveal assertion is queued as X-12 and explicitly declared not yet shipped (*"Until it

ships it is a review obligation; state that limit rather than assuming coverage"*).

Reuse-first recommendation. Generalize DT-9 from "a crossing" to "any bounded authored interior"

in one sentence, and add the dungeon class to the X-20 critic-rubric additions already in flight.

The check, the vocabulary and the worked instance all exist; only the scope word changes.

---

Refuted and dropped (attacked before writing; recorded so they are not re-raised)

authored acquisition scenes with worldstate writes. The lens spec's assumption was wrong.

positive-control warning was correct. Narrowed to Z-10's three specific contract clauses.

curve. Narrowed to Z-11 (grain, not existence).

COVERED (Z-8) instead.

closure. Narrowed to the combat/enclosed-space surface the doctrine itself scopes out.

(scope class).

the arc reaches *skipped* ground, deliberately not re-walked ground. Strengthened Z-3 instead.

Narrowed to Z-4 (no minute-to-minute form).

music pacification, BOSS_PERSONAS.md), the gamelan-wayang performance minigame and the rara

rhythm-and-route minigame are authored seeds, and the chain meter is literally a

*"player-performed read."* Not a gap; seeds exist and the minigame registry is the home.

and climactic_affordance are real, populated, multi-value vocabularies. This is why Z-1 lands

there rather than minting a registry.

---

Counts and routing

classnfindings
MISSING3Z-1 (interior gate schema) · Z-2 (factory riders) · Z-3 (re-open ledger)
WEAKER8Z-4 · Z-5 · Z-9 · Z-10 · Z-11 · Z-12 · Z-14 · Z-16
DESIGNED-UNBUILT1Z-13 (pop-up layout)
COVERED3Z-6 · Z-7 · Z-8
DIVERGENT-BY-DESIGN1Z-15

Total 3 + 8 + 1 + 3 + 1 = 16.

Owner split. spec-doc ×6 (Z-1 shared, Z-3 shared, Z-9 shared, Z-11, Z-15, Z-16) · W-SPACE ×4

(Z-1, Z-13, Z-14, Z-16 shared) · schema-data ×3 (Z-2, Z-3, Z-5) · W-TGT/P2 ×1 (Z-10) · P5-factory

×2 (Z-9, Z-13) · UI wave ×1 (Z-12) · HARNESS ×1 (Z-2's declared doc set).

Josh forks required: 0. One contested narrow item for the director (Z-15's diegetic

seal-object form). Everything else is execution within the locked vision — no chapter count, no

numerical canon, no naming canon, no §17 line is touched.

Slice-relevant first (Prologue→Ch 13). Z-1 → Z-11 → Z-2 → Z-5 → Z-10. Those five make the

slice's ~3-4 bounded dungeons authorable, teachable, factory-visible, gate-readable and playable

indoors. Z-3 and Z-9 are design-now / execute-later. Z-12, Z-13, Z-14, Z-16 ride their existing

waves.

Single highest-leverage item. Z-11 — one paragraph promoting LAW 5's scope — because it costs

nothing, needs no schema, and sets the quality bar every one of the twenty dungeons will be authored

and critic-checked against.

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