pipelines/LENS_zelda-dungeon-tool-ladder_DRAFT.md
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.
---
---
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.
---
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.
---
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.
---
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.
---
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.
---
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.
---
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)."*
---
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.
---
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.
---
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
bOrientRotationToMovement → bUseControllerDesiredRotation 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.
---
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.
---
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.
---
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.
---
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.
---
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.
---
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.
---
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.
functions and climactic_affordance are real, populated, multi-value vocabularies. This is why Z-1 lands
there rather than minting a registry.
---
| class | n | findings |
|---|---|---|
| MISSING | 3 | Z-1 (interior gate schema) · Z-2 (factory riders) · Z-3 (re-open ledger) |
| WEAKER | 8 | Z-4 · Z-5 · Z-9 · Z-10 · Z-11 · Z-12 · Z-14 · Z-16 |
| DESIGNED-UNBUILT | 1 | Z-13 (pop-up layout) |
| COVERED | 3 | Z-6 · Z-7 · Z-8 |
| DIVERGENT-BY-DESIGN | 1 | Z-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.