LENS_ac-traversal-stealth-legibility_DRAFT.md

pipelines/LENS_ac-traversal-stealth-legibility_DRAFT.md

Comparator lens audit — ASSASSIN'S CREED (traversal · stealth · legibility)

Lens id: ac-traversal-stealth-legibility · Wave P1-B · Read-only design audit (canon repo

C:\dev\humanity-forgotten; game repo C:\dev\Humanity\Humanity read as build evidence only).

Title set: AC1, AC2/Brotherhood, Unity, Syndicate, Mirage; Odyssey (Ikaros) — parkour, social stealth,

viewpoints. Aspects audited: movement/traversal-feel · world-structure/level-design grammar · combat ·

companion/social · quest + side-content structure · onboarding/difficulty/accessibility ·

presentation/identity · navigation & info-surfacing UI philosophy (NEW) · **notoriety/heat as live

systemic state (NEW) · sightseeing & vista reward (NEW)**.

Method law held. Every candidate pattern was checked against the repos before judging. Every zero is

positive-controlled against a term known to exist in the same corpus with the same tool. Every finding

was attacked before it was written; the ones that died are recorded in §"Refuted and dropped".

DESIGNED-UNBUILT is never reported as MISSING.

Dedupe baseline read in full and respected: docs/DESIGN_GAP_REGISTER.md (v1.1, 45 entries — #4

silhouettes, #5 ambient crowd, #17 diegetic weakness read, #19 local-alarm loop, #24 between-site

traversal are the five nearest neighbours and each is cited with its boundary stated),

docs/PRE_5090_BUILD_PLAN.md ▶ THE PRE-5090 WINDOW PLAN (the ranked 30) + _VOL2 §F (the MV rows) and

§11e/§11g (the UI rows), docs/proposals/COMPARATOR_LENS_PROGRAM.md (cell 24 = photography/vista),

docs/NATURAL_VOICE_DOCTRINE.md, docs/proposals/QA_WATCHING_PROGRAM.md. Format exemplar:

docs/pipeline_review/LENS_BG3_2026-07-27.md.

Divergence guard honoured up front. Markerless/diegetic navigation is *doctrine, not a gap*

(docs/DESIGN_GAP_REGISTER.md L205: "Markerless navigation (our wayfinding legibility floor)" listed

DIVERGENT-BY-DESIGN). Nothing below proposes a viewpoint reveal, a marker layer, or a wanted-star

meter. AC-9 audits the *absence of a written doctrine* for a posture we already hold, not the posture.

---

FINDINGS (16) — MISSING ×5 · WEAKER ×9 · DESIGNED-UNBUILT ×2

AC-1 — There is no climbable-surface affordance law: the world never has to advertise what it affords

Class: MISSING (doctrine) · Priority: HIGH · Slice: yes ·

Workable tag: SPEC-SMALL (one clause in the W-SPACE grammar + one enum on an existing registry)

What AC proves. Fifteen years of iteration produced a *contract*: dressing declares function. A

ledge band, a lattice, a beam course, a scaffold plank — the art department authors climbability as a

readable visual language, so the player never guesses and never tests a wall with their face. The

contract is what makes dense vertical space legible at a glance; without it, parkour reads as lottery.

Current state (cited). We have a rich *content* system for vertical play and zero *legibility*

rule under it. T1_Combat_System_Spec [ACTIVE v1.0] §Agility Course System (L288-350) canonises 77

courses, three variants, biome rotation, and explicit vertical templates — "Ch 03 Manggarai mbaru

niang: architecture vertical", "Ch 11 Ituri Forest canopy: arboreal three-dimensional canopy (first

three-dimensional-movement course)", "Ch 12 Dogon Bandiagara cliff: vertical cliff-face (first

vertical-cliff course)", with the Ch-12 template explicitly seeding "Ch 14 Nubia rock-cut tombs, Ch 18

Levant Petra, Ch 34 Canary Islands Guanche cliff-dwellings, Ch 53-55 Andes cliff-terraces". The

section closes by deferring "per-course detail (specific site, layout, hazards, rewards, biome

assignment, template inheritance)" to "Tier 2 ChapterDesign briefs" — a tier that no longer exists

(the 12 T2 stubs were deleted at commit 7c58cdc, per CLAUDE.md Phase 5.5). So the one doc that

would have carried a per-site traversal contract has no owner. The W-SPACE wave, which *is* the

per-site grammar and is COMPLETE across all regions (docs/PRE_5090_BUILD_PLAN.md L815 "W-SPACE

COMPLETE ACROSS ALL REGIONS", ruling at L972-985), is specced entirely as combat space:

"approach→threshold→arena→payoff staging per boss, the graded golden-path trail network, and the

permanent TEETH (slope assertion under every encounter volume + navmesh-continuity route walks)."

Slope is measured to prove ground is *walkable*; nothing anywhere declares what is *climbable*.

Positive control. Python regex sweep over 561 .md/.csv files under docs/ +

_source/01_Tier_1_Foundation/ + registries/ (book_extractions, archive, research_notes

excluded): climb[ _-]?affordance = 0 hits / 0 files; climbab* = 1 hit and it is a metaphor

about Borobudur being "a purpose-built, climbable model of the cosmos"

(docs/proposals/aaa_ws1_opportunity_matrix.md L36); hand-?hold = 6 hits across 4 files, **none

traversal** (they are the difficulty-doctrine "no hand-holding" at docs/COMBAT_ENCOUNTER_SYSTEM.md

L245, a "spoken hand-hold" of dialogue at docs/spine/CH_77.md L229, a "philosophical handhold" at

docs/FOUNDATION_ENHANCEMENT_ROADMAP.md L146, and Chapter_Index prose). Controls on the same sweep,

same tool, same corpus: composure = 348 hits / 64 files, agility course = 111 hits / 58 files,

identity_hiding = 518 hits / 114 files. The search can match; the zero is real.

Self-refutation attempted. (a) *"Register #4 (readable silhouettes) already covers this."* — No.

#4 is scoped verbatim to "creature families (read a threat's family at range) or wayfinding

landmarks (orient off a shape at distance)"; it says nothing about surface function. The two are

siblings under one accessibility doctrine, which is exactly why the fix should ride #4's rail — but

#4 as written would ship and leave climbability un-legible. (b) *"BotW-style climb-anything makes an

affordance law unnecessary."* — We have no climb-anything model (AC-2); and even if we did, the

mobility abilities are *surface-conditioned* by canon (AC-15), so the read is required either way.

(c) *"This is art direction, not design."* — It is a contract *between* them, and its absence is what

sends a solo builder's art pass into rework. Survives.

Reuse-first recommendation. Do not mint a traversal doc. Two existing rails carry it:

(1) add a traversal_affordance_class enum to T0_Environment_Grammar_Registry beside the live

tactical_affordance_class column — values `CLIMB_SURFACE | LEDGE_BAND | VAULT_LOW | BEAM_COURSE |

DESCENT_LINE | NO_PURCHASE` — so climbability becomes data on the same row that already carries

physical_properties_array and alteration_permanence_default; (2) add one clause to the W-SPACE

per-site grammar (the same place register #12's shortcut clause lands): *every authored vertical face

declares its class, and every class has one dressing signature held across all 79 nodes.* Then extend

register #4's proposed image-critic read-at-distance check to ask a second question — "can the critic

tell what this surface affords from the approach frame?" One enum, one clause, one existing critic.

Owner suggestion. W-SPACE (grammar clause) + schema-data (the enum) — folds into window-plan rank

7, whose scope must widen (see AC-14).

---

AC-2 — MV-2 named climb; W5 built mantle/vault. The slice's vertical courses have no capability and no exit test

Class: DESIGNED-UNBUILT (with a scope hole inside the plan) · Priority: HIGH · Slice: yes ·

Workable tag: ENGINE-MEDIUM (one CMC mode) + PLAN-EDIT (one verified-by line)

What AC proves. Ascent is a *mode*, not a jump: a sustained, stamina-coupled, input-directed

locomotion state with its own camera and its own failure. Unity added descent as a separate system

precisely because retrofitting vertical states onto a jump verb does not survive contact with dense

geometry.

Current state (cited). The plan named all three: docs/PRE_5090_BUILD_PLAN_VOL2.md L553 (MV-2) —

"HumanityCharacter.cpp CMC has no climb/mantle/vault/swim mode… Custom CMC modes: climb/mantle/

vault", BUILD-NOW, wave W-MOVE. What shipped in W5 is mantle/vault only:

Source/Humanity/Public/Core/HumanityCharacter.h L366-374 declares MantleReach = 90.0f,

MantleMaxHeight = 130.0f ("tallest vaultable ledge (uu)"), MantleMinHeight = 25.0f,

MantleDurationSeconds = 0.28f; HumanityCharacter.cpp L1010-1090 is a forward-trace + position-lerp

TryMantleVault() bound contextually to Jump. grep -rn -i "\bclimb" Source/ returns 10 hits and

every one is metaphorical ("difficulty climb", "as mastery climbs", "teardown climbed past the

driver's kill") — grep -c -i climb Source/Humanity/Private/Core/HumanityCharacter.cpp = 0.

Control that the search can match: the same grep for mantle over the same file returns 20+ hits.

So the built vertical reach of the protagonist is 1.3 metres.

Against that: the slice is PROLOGUE→CH 13 and its own canon is vertical. Ch 3 = "architecture

vertical" (mbaru niang, five story-levels touched in ascending order — T1_Combat_System_Spec §Puzzle

Variant); Ch 11 = the first three-dimensional canopy course; Ch 12 = the first vertical cliff-face

course; Ch 6 sigiriya_rock_fortress carries functions [puzzle, traversal] (docs/spine/CH_06.md

L100) and Ch 4 uluwatu_seacliff_temple carries functions [traversal] (docs/spine/CH_04.md L98).

The game repo already knows this collides: TODO_CANON.md L1206-1211 flags

uluwatu_seacliff_temple as intentional-SEVERE — "a NON-COMBAT departure/agility marker on a real

seacliff (a 'cliff-vertical traverse ~700 m run above the surf')… left un-sculpted." A 700 m

cliff-vertical traverse is authored against a 1.3 m capability.

The scope hole (the part that is a plan defect, not a schedule). W-MOVE's stated exit criterion is

horizontal-only: _VOL2 L603 and the §F Verified-by block set the wave's formal exit as "the **Ch-2

Flores canopy course** completes headlessly… (12 pods collected, no stop)", plus a swim test and a

footfall test. TODO_CANON.md L631-637 confirms even that is partial ("the FULL HL_0079 canopy course

… is the remaining slice of MV-3, NOT built here"). **No wave in the plan has a vertical-traversal

exit test.** A green W-MOVE therefore certifies a slice whose Ch 3, Ch 11 and Ch 12 courses cannot be

walked.

Self-refutation attempted. (a) *"Designed-unbuilt, so it is scheduled and this is noise."* — The

capability is scheduled; the verification is not, and the AI QA loop is the only player until the

Josh Gate. A wave that exits green on a horizontal test while three slice courses are unplayable is

exactly the failure the honest-tier register exists to prevent. (b) *"The vertical courses are Ch

11/12, late in the slice — build order buys time."* — Ch 3 is the second built node and is

"architecture vertical"; Ch 4's Uluwatu traverse is already staged and already flagged. (c) *"Mantle

covers a cliff if you chain it."* — At MantleMaxHeight=130 uu with a 0.28 s lerp and no wall state,

a 700 m face is 500+ chained lerps with no stamina coupling (MV-8 is queued, not built) and no camera

authority. Survives.

Reuse-first recommendation. (1) Add the CMC climb mode to the existing W-MOVE item MV-2 rather

than a new item — it is already the named scope; couple it to Stamina via the already-queued MV-8

rather than a new resource. (2) Amend W-MOVE's verified-by line to add a vertical exit test:

headless completion of one authored vertical face (the Ch-12 Bandiagara template is the canonical

first, and it is the template the spec says seeds Ch 14/18/34/53-55, so one test protects five later

chapters). (3) Until climb lands, tag every staged vertical site as traversal_capability_pending on

the zone catalog so the slope teeth do not silently certify them.

Owner suggestion. W-MOVE (engine-code) + a one-line edit to PRE_5090_BUILD_PLAN_VOL2.md §F

verified-by (spec-doc, zero-token).

---

AC-3 — Descent has no grammar at all: parkour-down is a positive-controlled zero

Class: MISSING · Priority: MEDIUM-HIGH · Slice: yes ·

Workable tag: SPEC-SMALL then ENGINE-SMALL (one state + one enum value)

What AC proves. Unity's headline traversal change was parkour-down as a separately specced

system: descent is not ascent reversed. Coming down is where players actually spend time in vertical

space, and where an un-specced game produces either a fall-damage punish or a comedy ragdoll.

Current state (cited). The only downward system in the entire plan is a damage model:

_VOL2 L558 (MV-9) — "CMC falling works but nothing consumes fall height… A fall-damage /

hard-landing doctrine (numbers = tuning firewall)", BUILD-NOW, W-MOVE. There is no controlled-descent

state, no slide, no drop-hang, no descent line. T1_Ability_Tree [ACTIVE v1.4] §5D.2 mentions descent

only as a *failure mode* — "Air-axis mobility carries fall-damage-on-misjudgment failure mode at

vertical lift cast types" (L267). The mobility catalog's one downward-flavoured ability,

A_A_018 Soaring Glide (tier 4.0, no unlock_chapter_ref), is a Layer-A ability, not a base verb.

Positive control. Regex over docs/ for `descend|descent|down-climb|downclimb|rappel|abseil|

controlled fall|slide down` returns 30+ hits and every single one is non-traversal: "moral

descent" (the Ch-17 Entu Priestess three-phase boss template, docs/CANON_AUDIT.md L19 and

docs/COMBAT_ENCOUNTER_SYSTEM.md L159/L345), lineage descent ("Indic-descended naga tradition",

"the Batak script descends from… Pallava"), "recursive-descent parser"

(docs/CONDITION_EXPRESSION_GRAMMAR.md L83/L120), and the Prologue's "descent-of-viewpoint sequence"

(docs/review/STORY_REEL.md L156). Control on the same corpus and tool: `fall damage|fall-damage|

hard landing|MV-9` returns the MV-9 rows and the §5D.2 line — so the traversal register is reachable

and descent simply is not in it.

Self-refutation attempted. (a) *"MV-9 is descent."* — MV-9 is what happens *to* you at the bottom;

it has no verb. (b) *"Ch 3's course is ascending-order by canon, so descent is out of scope."* — The

Ch-3 Puzzle variant is "touching all 5 story-levels… in ascending order"; the player still has to get

down, and Ch 12's cliff face and Ch 4's 700 m seacliff are two-way by construction. (c) *"Add it after

climb."* — Agreed on sequence, not on omission: the enum value and the spec clause cost nothing now

and stop the climb state from being authored as one-way. Survives.

Reuse-first recommendation. Fold descent into AC-1's traversal_affordance_class as a

DESCENT_LINE value and into MV-2's CMC scope as the climb mode's second direction (down-climb +

a controlled drop-hang), with MV-9's hard-landing model as the *failure* branch it already is.

No new item, no new doc: one enum value, one clause in the same MV-2 row.

Owner suggestion. W-MOVE, same commit as MV-2's climb mode.

---

AC-4 — Social stealth: we own the richest narrative concealment substrate in the corpus and it has no moment-to-moment mechanic

Class: WEAKER · Priority: HIGH · Slice: yes (Ch 2 site, Ch 9 dominant) ·

Workable tag: SPEC-SMALL (a mechanic clause binding two live systems)

What AC proves. Crowds are a *resource*, not decor: blend, sit, walk with a group, break a

pursuer's line by joining a procession. Social stealth is the single design move that converts ambient

population from a cost centre into a mechanic that pays for its own budget — and it is the only stealth

model that fits a game whose antagonist is a *recognition* apparatus rather than a guard patrol.

Current state (cited). The narrative substrate is exceptional and live. `WS_025

identity_hiding_status is a ratified worldstate enum with six values — FIRST_CONCEALMENT,

ACTIVE_CONCEALMENT, NEAR_REVEAL, REVEAL_RECOVERY, CONCEALMENT_WITH_RECOGNIZED_ALLY,

CONCEALMENT_WITH_HOSTILE_RECOGNITION — with declared consumers "dialogue_resolver`,

NPC_recognition_system, Ch59_65_continental_revisit_dispatcher"

(registries/T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv L26), paired with an

identity_hiding_pressure LOW/MEDIUM/HIGH axis, and it is written by essentially every region page

and spine node (518 corpus hits / 114 files). Ch 9 runs at

CONCEALMENT_WITH_HOSTILE_RECOGNITION, pressure HIGH→MED (docs/spine/CH_09.md L14, L282, L289),

in a chapter whose cast explicitly includes "the assembled-clergy crowd" (L245). The *mechanical*

half is absent: the stealth verb that exists is a reskinned attack (AC-6), and the crowd that would be

the medium is register #5 (per-zone ambient population budget, WEAKER, "no per-zone ambient

population budget or crowd spawner"). Zero corpus hits for social stealth|blend into|blending in;

149 hits for disguis* and every sampled one is an NPC device — deities in human coats (CVD

§17.16 "a good deity may appear as a disguised human quest-giver"; Baal-Hadad at

docs/spine/CH_18.md L201; Dewi Danu at docs/proposals/region_pass2/sections/bali_S12.md L219) —

never a player verb. Control: same sweep returns identity_hiding 518 hits, so the corpus is reachable.

Self-refutation attempted. (a) *"This is register #5 re-minted."* — #5 asks for population as

*sense of place* and recommends a budget column plus the FA-3 spawner ring. This finding is the

*mechanical consumer* that makes #5 pay for itself, and #5 contains no concealment concept. Stated as

a dependency, not a duplicate. (b) *"Crowd stealth is an urban-game idiom; we are a 79-node globe

tour, mostly villages."* — Twelve chapters carry dominant_combat_mode=stealth and the urban ones are

exactly where it lands: aksum_scriptorium (urban), harappa_granary (urban), persepolis_apadana

(urban), hattusa (urban), watched_exploration_port (urban), institutional_europe (urban),

supply_chain_office (urban) — plus festivals and markets as the canonical crowd venue. (c) *"WS_025

is narrative state and should stay narrative."* — Its own declared consumer is an

NPC_recognition_system; the field is *already* specced to drive runtime recognition. The gap is that

no system by that name exists. Survives.

Reuse-first recommendation. Do not build a blend meter. Bind two things that already exist:

(1) identity_hiding_pressure becomes the input to a recognition check on unnamed ambient NPCs

(the register-#5 crowd layer) — high pressure raises per-NPC recognition probability, being *inside* a

crowd volume lowers it; (2) the existing A_T_002 Cloaking ability (Ch 2, "visual concealment for

non-perceptive observers") becomes the *active* answer and the crowd becomes the *free* answer, so the

lane has a no-resource option. Author it as one clause in the stealth spec AC-6 asks for, and let the

crowd budget column carry a crowd_concealment boolean per zone. No new worldstate row; no new meter.

Owner suggestion. spec-doc (the stealth clause) + P5-factory/W9-W10 (rides register #5's

spawner infrastructure, same wave).

---

AC-5 — Cloaking presupposes an observer-perception tier that has no data column anywhere

Class: MISSING (schema) · Priority: HIGH · Slice: yes (Ch 2 unlock) ·

Workable tag: SCHEMA-TINY (one column on two registries)

What AC proves. Every stealth system is a *perception* system wearing a different hat: guards,

captains, hounds and eagles each read the player at different ranges through different channels, and

the player learns the roster. Without per-observer perception, "concealment" has nothing to be

concealed *from*.

Current state (cited). A_T_002 Cloaking is a live Ch-2 ability — ability_class = stealth,

tier_numerical 1.0, unlock_chapter_ref Ch_02, unlock_prerequisites "instinctive escape sequence",

description_brief "visual concealment for non-perceptive observers"

(registries/T0_Ability_Tree_Registry [ACTIVE v0.1]/Sheet1.csv). It is already wired into the slice

build: Source/Humanity/Private/Combat/HumanityAbilitySet.cpp L28-29 places it as the Stealth kit

entry, "PRE-PLACED before the CH02_B05 evade (the Ebu Gogo stalk)", with automation coverage at

HumanityCombatAutomationTests.cpp L184/L201. The description draws a hard line between *perceptive*

and *non-perceptive* observers — and no registry records which is which. `T0_Creature_Roster

[DRAFT v0.1]` is 150 rows × 52 columns with zero columns matching

sight|percep|aggro|detect|awareness|patrol|stealth|silhou; the game repo says so itself in

TODO_CANON.md (W5 canon-side gaps): "**[TG-12 / DATA — no roster behaviour columns] `T0_Creature_

Roster` has NO aggro / patrol / leash / flee / sight-range columns**… the enemy AI's perception… are

enemy-side ILLUSTRATIVE placeholders". T0_Character_Index [ACTIVE v1.1] likewise carries no

perception field. The runtime half is genuinely designed: docs/PRE_5090_BUILD_PLAN.md L1720 item

C1.23 Stealth/detection, BUILD-NOW — "AI sight/hearing cones + detection meter → break-LOS

backstab-grade Composure_Stealth depletion (attribute already exists)" — and the attribute is indeed

live (HumanityAttributeSet.cpp L34 InitComposure_Stealth(100.0f)).

Self-refutation attempted. (a) *"C1.23 exists, so this is DESIGNED-UNBUILT, not MISSING."* — The

*system* is designed-unbuilt and is reported as such. What is MISSING is the data: C1.23 specs

cones on the AI side but nothing declares a creature's or NPC's perception *tier*, which is the

distinction the canonical ability text turns on. Building C1.23 without it produces one uniform

observer and quietly deletes the "non-perceptive" clause from canon. (b) *"Register #1 (aggro spec)

covers it."* — #1 recommends "aggro_radius + detection channel (sight/sound)" for *engagement

pacing*. Perception tier (can this observer see through vril concealment at all?) is orthogonal:

a komodo with a huge aggro radius may be entirely non-perceptive; a Velheim hunter-operative with a

small one may not be. (c) *"The enemy already has a sight cone."* — It does

(HumanityEnemyCharacter.cpp L363-375 AggroHalfAngleDeg, plus the Ebu Gogo stalker's faced-check at

L555-600), and it is aggro-only: nothing reads a concealment state, and the player has no concealment

state to read. Survives.

Reuse-first recommendation. One column, two registries: perception_tier on T0_Creature_Roster

and T0_Character_Index — a small ordered enum (none | mundane | trained | vril_perceptive) whose

top band is exactly the "perceptive observers" canon already names in T1_Ability_Tree §5F.1 ("Ambient

effect intensity registers visibly to perceptive observers"). It rides the same TG-12 roster-column

pass the game lane is already waiting on, and it is the *only* thing that makes C1.23's detection meter

canon-correct rather than uniform. Add it to window-plan rank 16's boss/creature rail rather than a new

item.

Owner suggestion. schema-data (rank 16 rail) → W9 runtime (C1.23).

---

AC-6 — Stealth is one of seven canonical modes and twelve chapters' dominant, and its total system specification is one sentence

Class: WEAKER (spec) · Priority: HIGH · Slice: yes ·

Workable tag: SPEC-MEDIUM (one T1 section, ~1-2 pages)

What AC proves. Stealth as an *optional lane* only works when it is a real subsystem: detection

states with names, a lose-them rule, a re-hide affordance, and a legible cost for being seen. AC

Mirage's retreat toward classic stealth was possible because the subsystem never stopped existing.

Current state (cited). Structurally, stealth is first-class canon. It is one of the seven CVD

§12.2 modes bound to the R1/R2 mode-variety hard line (HL_0049), it is the ratified

dominant_combat_mode of 12 of 79 chapters (registries/T0_Chapter_Index [ACTIVE v1.2]: CH_09,

19, 23, 28, 33, 35, 40, 46, 49, 54, 56, 61), it is a gameplay_function on **26 of 387 spine site

rows**, it is one of the eight built mode-verb tags

(HumanityCombatTags.cpp L28 Ability.Mode.Stealth), and it owns a Composure sub-node whose break

condition is specified — "stealth node by break-LOS-and-reengage (backstab-grade)"

(docs/COMBAT_ENCOUNTER_SYSTEM.md L196). Mechanically there is nothing. The whole of

T1_Combat_System_Spec [ACTIVE v1.0]'s stealth content is **L366: "Stealth encounters: infiltration

and extraction missions."** — one bullet in the ten-category encounter list. The doc has a full

Block/Parry/Dodge section (L417-464) and no detection, LOS, concealment, or alert model. And the built

verb is a reskin: Source/Humanity/Private/Combat/HumanityVerbAbilities.cpp L19-26 —

UHumanityStealthAbility sets a mode tag, a Stamina cost of 8, damage 10 and composure damage 18,

with no LOS precondition, no concealment requirement, and no positional check. The canonical

"break-LOS-and-reengage" is nowhere in the code path.

Self-refutation attempted. (a) *"Greybox tier — the numbers are firewalled and the shape is

right."* — The numbers are correctly firewalled; the *shape* is wrong, and shape is not a tuning

concern. A stealth verb with no LOS precondition is a differently-priced punch, and the QA loop will

certify it as a working stealth mode. (b) *"C1.23 will add it."* — C1.23 specs the AI-side cones and

the meter; it does not spec the player-facing lane (what the player does to hide, what breaks it, what

"lost you" means, how the ability and the free crowd option relate). That is the doc gap. (c) *"No

boss = pure stealth (CVD L217), so the lane is deliberately shallow."* — That prohibition bans stealth

as a *single-mode* boss solution; it says nothing about the lane's depth, and the same rule applies to

Direct, which has a full defensive-layer section. Survives.

Reuse-first recommendation. Author one section under T1_Combat_System_Spec — parallel in

structure to the existing §Block/Parry/Dodge — covering: detection states (unaware / suspicious /

searching / engaged) and their transitions; the break-LOS-and-reengage rule the Composure node already

demands; the lose-them condition; and the two answers (Cloaking as the active/resourced one, crowd or

concealment volume as the free one). Every ingredient is already ratified elsewhere — the concealment

affordance class is designed at docs/proposals/systems/environment-combat.md L137 ("CONCEALMENT —

fog, foliage, darkness, smoke, dust. Breaks LOS → feeds stealth… break line-of-sight and re-engage for

a backstab-grade Composure hit"), the fog/sandstorm concealment volumes are canon-anchored to Ch 20

and Ch 45-46 (same doc L110), and the mode tag and attribute are built. The section is a *fold*, not

an invention. Then normalize-doc it and let C1.23 implement against it.

Owner suggestion. spec-doc (a T1 in-place edit, living-source) — sequence it beside window-plan

rank 19/20's spec-doc lane, before C1.23 builds.

---

AC-7 — Notoriety has no ladder, no clear-verb, and no player-side state: awareness_tier points the wrong way

Class: WEAKER (extends register #19) · Priority: MEDIUM-HIGH ·

Workable tag: SCHEMA-SMALL + SPEC-SMALL

What AC proves. The full loop is four rungs, not one: **witness → bounty/heralds → a named hunter

who persists across sessions → confront or clear** (bribe, tear the posters, kill the herald). The

value is in the *back half* — the named pursuer that remembers, and the player-facing verb that pays

the debt down. Escalation without a clear-path is a punishment system; escalation with one is content.

Current state (cited). Register #19 opens the front door only — "the IMMEDIATE loop (witness →

local alarm → response → decay) is absent. REC: one lightweight witness/alarm loop feeding the

existing antagonist-network escalation. OWNER: W9/W-LW3." Nothing in the corpus carries the back half:

notoriet* = 2 hits, and both are the gap being *named* (docs/DESIGN_GAP_REGISTER.md;

docs/pipeline_review/REJECT_AUDIT_2026-07-21.md); heat[ _-]level|wanted[ _-]level = 0 hits

(controls as in AC-1). The one column that looks like heat points the other way:

T0_Antagonist_Network_Registry [ACTIVE v0.1] has awareness_tier populated 64/64 with values

FAMILY_BRIEFED ×35, UNAWARE ×16, INNER_COUNCIL ×7, FULLY_AWARE ×6 — this is how much the

operative knows about *the family*, not how much the network knows about *the player*. The

persistent-pursuer rung is nonetheless already canon in prose: CVD Pillar 1 declares **Antagonist

Hunter Triggers** as one of exactly three legal random-encounter systems

(_VOL2 L517-518), the modern re-flesh stages Verderer near-misses and hunter-operatives per chapter

(docs/proposals/aaa_ws3_modern_reflesh.md passim), and two boss rows are literally near-miss pursuers

(BE_0054_S4, BE_0056_S3, both primary_verb=traverse, win_condition=EVADE). The trigger has no

*state* that says why it fires now.

Self-refutation attempted. (a) *"A wanted meter collides with no-scoreboard."* — Agreed, and not

proposed. The recommendation is a *diegetic* ladder with no numeric surface, exactly as register #8's

constraint handles the profession skill-up. (b) *"Our persistent reputation/consequence web is already

richer than GTA's."* — It is (register #19 says so, and reputation-prestige-nemesis.md §A-E is

genuinely deep), but it operates at *long-term community* grain. The missing thing is the **hours-long

middle**: I did something here, the response builds, and I can pay it down. (c) *"Duplicate of #19."*

— #19's four terms are witness/alarm/response/decay. The three additions here are (i) the escalation

*rungs*, (ii) the named persistent pursuer who returns, and (iii) the player-facing clear verb.

Stated as an extension with the boundary named. Survives.

Devil's-advocate pass (against timidity). The R-17 sandbox is ruled: "emergent/sandbox violence

against ordinary NPCs is permitted (the GTA fake-killing-spree impulse is allowed)" (CLAUDE.md content

bar). Today that impulse produces *silence* — no witness, no response, no pursuer — which is a defanged

outcome reached by omission rather than by ruling. The bolder read is the correct one: the heat loop is

what makes the permitted violence *mature* (weight + consequence), and its absence, not its presence,

is the care failure.

Reuse-first recommendation. Add a player-side heat_state to the worldstate model (per-region,

four diegetic rungs: unnoticed | remarked | sought | hunted) driven by the register-#19 witness

event, and route the top rung into the already-declared Antagonist Hunter Trigger rather than a new

spawner — the trigger becomes *earned* instead of scripted. Give it two clear verbs that already exist

in canon vocabulary: pay/settle through the faction-standing resolver

(reputation-prestige-nemesis.md §A), or resolve the pursuer as an EVADE encounter on the

BE_0054_S4 / BE_0056_S3 template. Decay rides the same clock as identity_hiding_pressure.

Owner suggestion. W9/W-LW3 (with register #19, same wave) + schema-data (one worldstate row).

---

AC-8 — The slice has no diegetic affordance-read channel: every scouting ability we own unlocks after it

Class: WEAKER · Priority: MEDIUM-HIGH · Slice: yes ·

Workable tag: SCHEMA-TINY + DESIGN-SMALL (one unlock anchor + one consumer)

What AC proves. Eagle Vision / Ikaros is a *diegetic* information channel: it answers "who is

hostile, where is the way up, what here is interactive" without a marker layer. It is precisely the

shape a markerless game needs, because refusing markers without providing a read is not minimalism —

it is a blind player.

Current state (cited). Every perception ability we own unlocks after the slice or is gated far

above it. A_E3_002 Vril Sightunlock_chapter_ref Ch_15, prerequisites "Intuition 10-29 plus

Egypt activation". A_E3_005 Probability SightCh_38, integrity-locked L3.

A_E3_009 Substrate Perception — tier 6.0 Adeptus Minor, questline-gated. The two ambient

"detection" passives in T1_Ability_Tree §5F.3 (Static awareness L365; **Hostile substrate

detection** L369) both require Third-Eye-bonded (Ch 38) plus Throat-bonded (Ch 56-57) devices. And

HL_0028 forbids a tier-6 read early — _VOL2 §11h U11.28 states the teaching must be "taught through

the body, NOT a tier-6 Vril-Sight HUD". So for PROLOGUE→CH 13, the read channel is: nothing.

The one exception is the reuse target. A_E_017 Ground Sense

`element Earth, tier_numerical 2.0 Zelator, ability_class perception_passive, vril_cost_class passive,

unlock_prerequisites "Earth 10-29 Zelator", description_brief "bonded-Root passive ambient terrain

sensitivity"`. It is a tier-2, passive, terrain-reading ability, i.e. exactly an early-tier

affordance sense — and its unlock_chapter_ref is blank (one of the 153 abilities register #32

counts as lacking an unlock chapter), and nothing in the corpus consumes it.

Self-refutation attempted. (a) *"Register #17 already covers the diegetic read channel."* — #17 is

scoped to creature weakness: "the recovered elemental matrix exists as data; the player has no

earned way to read a weakness… a read-tell channel (shape/behavior tells + the clue lane)". This

finding is the spatial/social read — which surface goes up, where the cone points, who here knows

my face. Different data, different channel, same doctrine. Boundary stated. (b) *"Markerless means the

world teaches, not an ability."* — Agreed, and Ground Sense is *diegetic by construction* (passive,

bonded, no HUD). The proposal is not an overlay; it is a sensory register. (c) *"Adding an early

perception ability breaks the reveal ladder."* — Ground Sense is Earth-element terrain sensing at tier

2; it reads *rock*, not the substrate. HL_0028's gate is on tier-6 substrate perception and is

untouched. Survives.

Reuse-first recommendation. Anchor A_E_017 Ground Sense to a slice chapter in the rank-13

ability-registry data pass (Ch 12 Bandiagara — the first vertical-cliff course — is the canon-natural

home: the ability that reads stone arrives at the chapter about reading a cliff), and declare its

consumer as the AC-1 traversal_affordance_class: with Ground Sense, marginal purchase reads through

foot-feel and audio; without it, only the unambiguous classes read. That gives the slice a diegetic

affordance channel using an ability that already exists at the right tier, costs one cell in a

data pass already queued, and mints nothing.

Owner suggestion. schema-data (window-plan rank 13, one cell) + W-MOVE (the consumer).

---

AC-9 — Markerless navigation is a posture with no written doctrine, and U11.21 is about to build a waypoint UI against nothing

Class: WEAKER (the doctrine; the divergence itself is pre-registered and correct) ·

Priority: MEDIUM-HIGH · Workable tag: SPEC-SMALL (one section in a doc already queued)

What AC proves. The viewpoint-reveal tower is Ubisoft's most-copied and most-regretted pattern, and

Mirage's partial retreat is the industry's own calibration data. The transferable lesson is not "add

towers" — it is that an information economy must be *designed*, because a map UI shipped without a

doctrine will default to the pattern its middleware makes easiest.

Current state (cited). The posture is real and pre-registered: docs/DESIGN_GAP_REGISTER.md L205

lists "Markerless navigation (our wayfinding legibility floor)" as DIVERGENT-BY-DESIGN, and L226

repeats "Open-world discovery without quest markers" under Elden Ring. Register #17's recommendation

is written to respect it ("never a stat sheet — respects no-markers + reveal gating", L283). But the

posture has no doctrinal home: grep -rn -i "marker|waypoint|map screen|hud" over the CVD returns

four hits and none is a navigation policy (they are drift-marker glossary terms at L1285/L1371 and a

resource-HUD ownership note at L1003). Meanwhile the build item is live and unconstrained:

_VOL2 §11e U11.21 — "In-game map screen + minimap + compass + waypoint UI", BUILD-NOW, wave

TRANS. The UI contract doc that would govern it does not exist — U11.31 "Author

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)" — and T1_UI_UX_Spec

is one of the four byte-empty T1 stubs (register #22; window-plan rank 20). The lens cluster note is

exactly right: our no-markers ethos "is a POSTURE with no audit surface of its own."

Self-refutation attempted. (a) *"Re-litigating a pre-registered divergence."* — No: the divergence

is endorsed here. The finding is that a divergence with no *written rule* is not enforceable, and a

BUILD-NOW waypoint UI with no rule will resolve the question by default. (b) *"U11.22 already

constrains travel."* — U11.22 constrains *fast-travel* (Vimana-gated, Ch-55) and says nothing about

what a marker may display. (c) *"The QA loop will catch it."* — It cannot: the QA rubric matrix has no

navigation-legibility instrument (AC-16), and RB-9 covers HUD without a markerless clause.

Reuse-first recommendation. Add one short section to the *already-queued* UI spec work (U11.31 /

rank 20, T1_UI_UX_Spec) rather than a new doc: the information-surfacing rule — what the map may

show (walked geography, discovered sites, player-placed marks), what it may never show (undiscovered

objectives, un-walked routes, collectible pins), and the diegetic substitutes the game leads with

(landmark silhouettes per register #4, NPC directions in the natural-voice register, the journal). Then

one QA tooth: a functional test asserting no un-discovered site is map-visible. It costs a section in a

doc that is already on the ranked queue.

Owner suggestion. spec-doc (window-plan rank 20, folding U11.31) + qa-teeth (one assertion).

---

AC-10 — The vista reward: 53 authored vista sites, zero mechanic that pays for stopping to look

Class: DESIGNED-UNBUILT · Priority: MEDIUM · Workable tag: DESIGN-SMALL (a reward hook on

an existing data field)

What AC proves. "Stop and look" is *designed content*, not a byproduct of pretty art — the

viewpoint pause, the synchronised camera, the photo mode. It is the cheapest content in an

open world because the geography is already built and paid for.

Current state (cited). The data spine is already authored and unusually rich.

docs/SPINE_SCHEMA_v3.md L56 makes climactic_affordance a closed enum

(vista|threshold|sacred|climactic_geometry|weather_dramatic), and a scan of docs/spine/CH_*.md

finds 53 sites across 40 chapters carrying vista — e.g. sigiriya_rock_fortress

(CH_06.md L100), bandiagara_escarpment (CH_12.md L102),

drakensberg_ukhahlamba_amphitheatre (CH_13.md L83, the slice's terminal node),

great_wall_ridge (CH_21.md L97), behistun_cliff (CH_19.md L89). Positive control: the same

scan finds 380 climactic_affordance lines total, so the field is reachable and vista is a real

53-row subset. The pattern work has begun in the realm program —

docs/pipeline_review/REALMARC_PATTERN_BRIEF_2026-07-27.md L207 defines "T-C, THE AWE TERRACE — ≥1

beat at a site whose climactic_affordance includes vista or sacred". What does not exist is any

*reward*: photo/observation mode is _VOL2 §11g U11.25 ("Photo / scan / codex-capture mode — AAA

staple, zero coverage"; grep photo-mode = 0), BUILD-NOW; the QA rubric is

QA_WATCHING_PROGRAM.md L386 RB-8 "World rubrics — traversal BUILD-NOW, vista SKELETON-NOW" and

L320 rules vista-class bands "INERT below final tier"; and the whole surface is named as uncovered

matrix cell 24 ("Photography / observation mode: ties the L2 layer, vista rewards, and the

image-critic QA loop").

Self-refutation attempted. (a) *"Designed-unbuilt, so nothing to say."* — Reported as

DESIGNED-UNBUILT, and the addition is the *bridge*: three separate queued items (U11.25, RB-8's vista

half, the T-C awe-terrace pattern) all point at the same 53 rows and none of them references the

others. Naming the join is the finding. (b) *"A vista reward is collectible bloat — the exact AC

failure mode."* — Which is why the recommendation attaches the payoff to the existing L2 lane

(journal/codex entry, significance-lens discovery) and to zero map pins; AC's negative lesson is

respected by construction. (c) *"Post-slice."* — The slice's own terminal node (Ch 13 Drakensberg) is a

vista, sacred amphitheatre and the departure beat; the cheapest version costs one hook.

Reuse-first recommendation. Join the three: make climactic_affordance=vista the *trigger* for

U11.25's capture mode (arrive → the codex/journal offers the frame), let the significance-lens

discovery layer supply the L2 payload, and populate RB-8's vista band from the same 53 rows so the

image critic has a fixture set the day the rubric wakes. No new system, no new field, no map pin.

Owner suggestion. P2/UI (U11.25) + QA loop (RB-8) + canon-author (the T-C pattern) — one join,

three existing owners.

---

AC-11 — No signature traversal move: the identity verb AC repeated for fifteen years has no analogue

Class: MISSING · Priority: MEDIUM (low cost, high identity return) ·

Workable tag: DESIGN-SMALL (one authored move on an existing site class)

What AC proves. The Leap of Faith is not a mechanic, it is an *identity*: one ritualised traversal

payoff, repeated at every landmark for fifteen years, that players can picture before they can

describe the combat. Its cost is one animation and one affordance class; its return is the franchise's

visual signature.

Current state (cited). We have traversal *content* at scale — 77 agility courses, three variants,

Hardcore titles with integrity-band cosmetic variants

(T1_Combat_System_Spec §Agility Course System) — and no repeated *move*. The mobility catalog is

eight Layer-A abilities, all resourced casts, all tier-4+ except A_A_001 Wind Step (Ch 4)

(T0_Ability_Tree_Registry). The built base kit is walk/run/sprint/jump/crouch + mantle/vault + swim

(HumanityCharacter.cpp). Positive control: grep -i "agility course" = 111 hits / 58 files, so the

traversal register is reachable; nothing in it names a signature move.

The candidate is already canon and already repeated. Waterfalls are the recharge network — CVD §18.2

and T1_Vril §5; T0_Vril_Site_Registry [ACTIVE v0.1] carries 42 rows with site_class=waterfall

and vril_function=recharge_passive (row 1 = VS_CH02_001 "Liang Bua Cave waterfall vicinity",

canonical_status LOCKED); the Ch-2 first-recharge is the arc's first-transformation teaching beat

("hands-open at the waterfall", _VOL2 U11.28); and T1_Combat_System_Spec L43 makes rest-at-site one

of three vril-regen channels. The player will do this dozens of times across 79 nodes. It is currently

an interact prompt.

Self-refutation attempted. (a) *"This is inventing a pillar."* — It is staging an existing

canonical ritual as a move; no new system, no new resource, no numerical canon touched. (b) *"The

Ch-76/77 waterfall is the reveal site — a signature waterfall move risks a reveal leak."* — Real risk,

and it cuts the other way: a move the player has performed at forty ordinary waterfalls carries no

signal, whereas a first-and-only waterfall interaction at Ch 76 would. Making it ordinary is the

reveal-safe choice. The Grand-Sage silence gate (#25 grand_sage_silence) is untouched either way.

(c) *"Low priority against a slice deadline."* — Priority is set MEDIUM for exactly that reason; the

point is that it is cheap and it is the kind of thing that must be decided *before* the recharge

interaction is animated, not after.

Reuse-first recommendation. Stage the vril-site recharge as the signature traversal payoff — the

descent into the fall's pool (a plunge/entry that reads as ritual, not as a menu) — reusing the

T0_Vril_Site_Registry site_class=waterfall rows as the affordance set, MV-5's swim mode as the

landing state, and MV-9's hard-landing model as the failure branch. One authored move, one existing

registry, three existing systems. If a second is ever wanted, the Hardcore-variant title system is the

natural cosmetic home.

Owner suggestion. W-MOVE (the move) + W-SPACE (the site staging) — decide before the recharge

interaction is animated.

---

AC-12 — The stealth opener the Composure node demands does not exist as a verb, and the loop has been fencing it away per-boss

Class: WEAKER · Priority: MEDIUM · Workable tag: DESIGN-SMALL + a timidity correction

What AC proves. Assassination sits *beside* a full combat kit without either collapsing: a one-hit

contract verb available from concealment against a legitimate target, and a stand-up fight if you are

seen. Two damage philosophies coexist because each has its own precondition.

Current state (cited). The design already asks for the opener by name:

docs/COMBAT_ENCOUNTER_SYSTEM.md L196 — the stealth Composure node is broken "by break-LOS-and-

reengage (backstab-grade)" — and C1.23 repeats "break-LOS backstab-grade Composure_Stealth

depletion" (PRE_5090_BUILD_PLAN.md L1720). The verb does not exist: UHumanityStealthAbility

(HumanityVerbAbilities.cpp L19-26) is a flat cost/damage/composure ability with no precondition

(AC-6), and backstab|assassinat*|takedown|stealth kill returns no player-verb definition anywhere in

the corpus — only the two design lines above and per-boss *prohibitions*. Meanwhile the canon carries

the right structural guard already: BYPASS is a real win condition (10 boss rows carry

win_shape=passage; win_condition values include PERCEIVE;BYPASS), and CVD L217 bans "pure

stealth" bosses, which is a mode-monoculture rule, not a verb ban.

Devil's-advocate pass (against timidity) — this is the load-bearing part. Boss authoring has been

fencing the verb off case-by-case: docs/proposals/BOSS_PERSONAS.md reads "Win = subdue (HP,

non-lethal), or pacify-via-evidence; no assassination" (Ch 5) and "win subdue-or-pacify… **no

assassination**" (Angkor). The repo's own punchlist already flags this pattern as an over-fence:

docs/proposals/RECASCADE_PUNCHLIST.md L6 — "Ch 5, Ch 28, and Ch 29 all still carry the exact fenced

framing the pass flags (Ch 5 'never an assassination'; Ch 28 'without ever taking the kill'…)".

Against the ruled bar — lethal violence against human NPCs is *core*, §17.1 protects the collective

and not individual culpable combatants — a blanket per-boss "no assassination" is care-inflation, not

care. The correct scoping is the one canon already gives: the verb is available against **culpable

individual antagonists and their enforcers**, never against a protected community, never against a

revered or real figure, and never as the *only* route (Pillar 8's ≥2 counters and the multi-path rule

already guarantee that).

Self-refutation attempted. (a) *"A one-hit kill trivialises encounters."* — It is

precondition-gated (undetected + positional) and, per the Composure architecture, it breaks a *node*

rather than the fight: on bosses it is an opener, not a solution — which is precisely AC's coexistence

lesson. (b) *"§17.1 forbids it."* — §17.1 is collective ("REPRESENT_WITH_CARE is COLLECTIVE, not

individual", CLAUDE.md); the hard-line floor bans genocide, sexual violence, child harm, targeted

hate — none of which a stealth opener on a named culpable operative touches. (c) *"The

integrity system should discourage it."* — It should *price* it, not forbid it: kills already ripple

through community state and integrity band, and that is the mature-by-consequence model the content

bar asks for. Survives.

Reuse-first recommendation. Give UHumanityStealthAbility its precondition (undetected +

behind/above the target) and a two-outcome resolution: on a normal combatant a takedown (lethal or

non-lethal by player choice, both weighted by the existing integrity/community-ripple systems); on a

Composure-bearing boss, a large Composure_Stealth opener rather than a kill. Rule the verb once at

doctrine level in the AC-6 stealth section so per-boss authoring stops re-litigating it, and let the

existing BYPASS/passage win-shape carry the no-kill route. Nothing new is built — the tag, the

attribute, the node and the win-shape all exist.

Owner suggestion. spec-doc (the doctrine line, in AC-6's section) + W9 (the precondition) +

canon-author (strike the blanket per-boss fences the punchlist already flagged).

---

AC-13 — traverse is a primary win verb on eight boss rows and there is no traversal-encounter spec

Class: MISSING (spec) · Priority: MEDIUM-HIGH · Slice: yes (Ch 9, Ch 11) ·

Workable tag: SPEC-SMALL (a clause in the W-SPACE grammar + the agility-course section)

What AC proves. In dense vertical space the chase *is* the encounter — a pursuit resolved by route

choice rather than damage, with its own failure state and its own arena grammar. It needs a spec

because "run away well" is not free.

Current state (cited). registries/T0_Boss_Encounter_Registry [DRAFT v0.1] (281 rows) carries

primary_verb=traverse on 8 rows and win_shape=passage on 10:

BE_0009_S2 (CH_09, The Simien Highland Poacher, win REDUCE), BE_0011 (CH_11, Baron Alexandre

Dupont — a *primary* boss, win PART_BREAK;PACIFY), BE_0011_S3 (CH_11, The Ituri River-Crossing

Forest-Python Guardian, win PERCEIVE;BYPASS, shape passage), BE_0034 (CH_34, win

REDUCE;PACIFY;BYPASS), BE_0054_S4 and BE_0056_S3 (the two Verderer near-misses, win EVADE),

BE_0056_S2 (win PERCEIVE;BYPASS, shape passage), BE_0064 (win PERCEIVE, shape passage).

Two of the eight are inside the slice (Ch 9, Ch 11 ×2). There is no encounter spec for any of it:

T1_Combat_System_Spec §Combat Variety lists ten encounter categories with no traversal/pursuit

entry, the W-SPACE grammar is approach→threshold→arena→payoff (a *standing fight* shape), and

EVADE appears as a win_condition value with no definition anywhere. The Agility Course System is

the closest relative and is explicitly a *solo timed* system, not an encounter.

Self-refutation attempted. (a) *"Register #24 (between-site traversal) covers it."* — #24 is about

the 13-23 km *legs between sites* carrying zero content and the DEV teleport stopgap (window-plan rank

21). This is a *within-encounter* shape: a boss whose win condition is EVADE or BYPASS. Different

grain, different owner. (b) *"traverse is just flavour on the verb axis."* — It is the primary_verb

of a Tier-1 primary boss (BE_0011) whose whole encounter is built on it, and EVADE is a win_condition

the runtime will have to resolve. (c) *"The agility courses cover pursuit."* — They cover timed solo

traversal; a pursuer with a leash, a catch condition and a graduated failure is a different system, and

neither W5's pursuit AI nor W-SPACE's arena grammar has been asked for it. Survives.

Reuse-first recommendation. Add a pursuit/passage shape to the W-SPACE per-site grammar beside

approach→threshold→arena→payoff (route + pinch points + a catch consequence that is a setback, never

a dead end, per the no-dead-end invariant), define EVADE in the win-condition enum documentation the

same way BYPASS is defined, and reuse the built pursuit AI (HumanityEnemyCharacter pursue/leash,

landed W5) plus the Ebu Gogo stalker template rather than a new AI class. One clause and one enum

definition; the eight rows then have something to build against.

Owner suggestion. W-SPACE (grammar clause) + spec-doc (the enum definition) — sequence with

window-plan rank 16's boss-rail pass so the rows fill in one go.

---

AC-14 — The registry that would carry every affordance class holds two rows, and rank 7's scope excludes traversal

Class: WEAKER (data + scope) · Priority: HIGH (cheap, and it changes a queued work order) ·

Workable tag: PLAN-EDIT (one word in a rank) + SCHEMA-TINY

What AC proves. The affordance contract only holds if it is *data* the world is authored against —

which is why AC's climb classes are engine-level surface types, not per-level decisions.

Current state (cited). The rail exists and is nearly empty.

registries/T0_Environment_Grammar_Registry [DRAFT v0.1] has a real schema —

`env_feature_id, feature_name, feature_category, physical_properties_array, elemental_affinity,

ambient_state_gift, tactical_affordance_class, attack_verbs, loaded_potential, exposure_hazard,

enemy_usable, env_boss_verb_disabled, alteration_permanence_default, integrity_valence_skin,

protected_care_ref, … — and 2 rows: EG_0001 Lava Vent (tactical_affordance_class=HAZARD_VOLUME`)

and EG_0002 Sieidi Stone (protected) (NONE). The zone catalogs declare the join and never populate

it: build/zones/flores_island.csv (11 rows) has environment_grammar_refs 0/11 populated, while

footfall_surface is 11/11 (earth ×5, water_edge ×3, stone ×2, forest_litter ×1) and

terrain is 11/11. The affordance *taxonomy* is fully designed one tier up:

docs/proposals/systems/environment-combat.md §5 (L128-140) defines six classes — ELEVATION, COVER,

CONCEALMENT, and three more — as "a typed volume/surface the arena ships with… reasoned over by *both*

the player and the enemy strategy-selector."

The scope hole: window-plan rank 7 reads "[canon-author·M] EG_ environment-grammar rows for

every slice combat surface — all 12 earthly regions, then the fairy realm at slice-end (P2 Combat

socket)" (docs/PRE_5090_BUILD_PLAN.md L74-75). Scoped to *combat* surfaces, the authoring pass will

walk right past the 71 traversal-functioned and 26 stealth-functioned spine sites and produce a

registry that cannot answer "is this climbable" or "does this conceal me" — after which retrofitting

means a second pass over all 12 regions.

Self-refutation attempted. (a) *"Combat surfaces are most of them anyway."* — Measured on the

spine: 387 site rows carry 141 combat, 71 traversal, 26 stealth; the traversal and

stealth sets are large and only partially overlapping. (b) *"Proposal-tier taxonomy — can't build

against it."* — Reported as WEAKER, not MISSING, precisely because the taxonomy is designed; the ask is

to *widen an already-scheduled pass*, not to ratify a proposal early. (c) *"Adds cost to a ranked

item."* — It adds enum values to rows the pass is already writing, and it removes an entire second

sweep. Net negative cost.

Reuse-first recommendation. Edit rank 7 to read "every slice encounter and traversal surface",

add AC-1's traversal_affordance_class and a concealment_class column to

T0_Environment_Grammar_Registry in the same schema commit, and make environment_grammar_refs

non-empty on the zone catalogs part of the pass's own exit criterion (it is a declared FK sitting at

0/11 today). One plan word, two columns, one exit criterion.

Owner suggestion. canon-author + schema-data (window-plan rank 7, before it starts).

---

AC-15 — Canon conditions mobility abilities on surface state and gives the player no way to read it

Class: WEAKER · Priority: MEDIUM · Workable tag: DESIGN-SMALL (a legibility clause on an

existing data hook)

What AC proves. The affordance law is not only about walls. Anything the world *conditions* must be

readable before the player commits — otherwise the system reads as inconsistent rather than as

knowable.

Current state (cited). T1_Ability_Tree [ACTIVE v1.4] §5D.2 (L267) makes surface state a

hard determinant of the mobility class: "Ice-axis mobility carries surface-state failure mode (**Ice

Path requires ground that accepts ice formation; tropical and desert terrain reduce cast

effectiveness**). Fire-axis mobility carries vegetation-ignition collateral (Fire Jet over dry

vegetation triggers Wildfire chain per §5G). Earth-axis mobility carries collision-with-terrain failure

mode." The data hook exists and is populated — footfall_surface on the zone catalogs (11/11 on

Flores) — and its only planned consumer is a *movement-speed modifier*: _VOL2 L556 (MV-7) "a

footfall_surface → movement-modifier reader (jungle-slow / scree-slide)". Nothing turns surface state

into a player-facing read. So the player learns Ice Path's condition by wasting vril on sand.

Self-refutation attempted. (a) *"Discovery through failure is the immersive-sim reward loop."* —

The ruled version of that loop is docs/NATURAL_VOICE_DOCTRINE.md §3: clues "may be mysteries — but

every progression-path puzzle must be SOLVABLE by an attentive player… with in-world information…

legibility never gates". A cast that silently fizzles on unreadable ground is the spatial version of

an unsolvable clue. (b) *"The abilities are tier-4/5 — post-slice."* — True for Ice Path and Earth

Surf; A_A_001 Wind Step is Ch 4 and inside the slice, and the *doctrine* is cheapest to write before

eleven regions are dressed. (c) *"Material feedback is an art task."* — It is, which is exactly why it

needs a design clause the art pass can be held to.

Reuse-first recommendation. Extend MV-7's footfall_surface reader from a movement modifier to a

read channel: each surface value carries a declared visual+audio signature (the same

color-independent, multi-channel discipline the accessibility floor already uses at

T99_Translation_Combat §2.6), and the AC-1 affordance clause states the rule once — *any surface that

conditions a verb declares that condition before the verb is spent.* Ties directly to AC-8: Ground

Sense is the diegetic amplifier of the same channel. No new field: footfall_surface is populated and

already scheduled for a consumer.

Owner suggestion. W-MOVE (MV-7) + the AC-1 grammar clause, same commit.

---

AC-16 — The QA loop cannot fail a mis-read affordance: RB-8's traversal rubric has no legibility instrument

Class: WEAKER (QA loop) · Priority: HIGH (first-class under the Josh Gate) ·

Workable tag: QA-SMALL (one rubric instrument + one fixture set)

What AC proves. Nothing here — this is the lens turned on our own verification. But it is the

finding that makes the other fifteen enforceable: an affordance law with no tooth is a wish.

Current state (cited). Traversal is correctly ranked as a gating surface —

docs/proposals/QA_WATCHING_PROGRAM.md L291/L316 names "only the three P2-gating surfaces (**boss

feel, HUD, traversal)" and L386 lists RB-8 "World rubrics — traversal BUILD-NOW**, vista

SKELETON-NOW". But the rubric's declared instruments are the composition/readability family

(L298: "actor screen fraction, READABILITY DEVICES (tell channels, contrast, audio lead), EFFECT

DENSITY"), none of which asks the one question that matters here: *from the approach frame, can the

critic tell what this surface affords?* And the driver that would catch a mis-read — the player

who commits to a climb that is not one — is the Tier-2 injected-input beta player, which is itself

unbuilt: L210 records the positive control, "`grep -rn "InjectInputForAction|InjectInputVectorForAction"

Source/` returns zero call sites (the only hit is a comment) while the control query

AddMappingContext hits HumanityCharacter.cpp:395 — the search can match, so the zero is real."

Today the QA driver "poses the game for a photograph"; traversal is invisible to it by construction.

Self-refutation attempted. (a) *"Tier-2 is already planned, so this is scheduled."* — The driver is

planned; the traversal-legibility instrument is not in RB-8's instrument list, and a green RB-8

without it will certify pretty vertical geometry that no one can read. (b) *"Image critics can just be

asked."* — They can, once the question is a rubric row with a band and a fixture set; ad-hoc prompting

is the thing the rubric program exists to replace. (c) *"Low priority against engine work."* — The

runbook is explicit that findings which strengthen the QA loop's ability to verify a surface are

first-class, because the loop is the only player until the Josh Gate.

Reuse-first recommendation. Add one instrument to RB-8: affordance legibility — a still from

each vertical/concealment site's approach position, with the critic asked to name what the surface

affords, scored against the site's declared traversal_affordance_class (AC-1/AC-14). The fixture set

is free: the 71 traversal-functioned and 26 stealth-functioned spine site rows, plus the 53 vista rows

for RB-8's vista half (AC-10). Extend register #4's proposed read-at-distance image-critic check rather

than adding a critic. When the Tier-2 driver lands, add the behavioural half (a mis-read = a commit to

a non-affordance) as a second band.

Owner suggestion. QA loop (RB-8 + the rubric template RB-6), authored alongside AC-1's enum so the

band has something to score against.

---

Refuted and dropped (attacked, failed, not reported)

plus stealth_aoe and stealth_utility class rows in T0_Ability_Tree_Registry; Composure_Stealth

is a live attribute (HumanityAttributeSet.cpp L34) with a routing table entry

(HumanityDamageExecCalc.cpp L81) and a broken-node GameplayCue. The real defect is narrower and is

reported as AC-5/AC-6.

sandstorm, ash, smoke as moving concealment volumes anchored to Ch 20 and Ch 45-46) with the

D-11 OBSCURE verb to create them on demand. Folded into AC-6/AC-14 as designed-unbuilt, not minted.

says so.

re-minted; AC-13 states the grain boundary.

patrol + sight cone + leash (HumanityEnemyCharacter.cpp). AC-5 is scoped strictly to the

*observer-perception tier* column that the Cloaking text requires and #1 does not mention.

verb*, and says so.

slope teeth and per-site arena pads, and the amplification doctrine explicitly authors

"caverns/ruins accurate at the mouth then vaster and more complex below". The gap is the *legibility

contract* and the *capability*, not the geometry.

missing written doctrine and the unconstrained U11.21 build item.

and CVD Pillar 1's Antagonist Hunter Triggers are ratified. AC-7 is scoped to the back half of the

ladder and the clear-verb.

punchlist (RECASCADE_PUNCHLIST.md L6 flags the fenced framing as an over-fence) and by the

collective-not-individual reading of §17.1. Reported as a timidity correction inside AC-12.

---

COVERED — where we already match or beat the lens

discipline, explicit template inheritance (Ch 12 cliff → Ch 14/18/34/53-55), letter-fragment

collectibles, Hardcore titles with integrity-band cosmetic variants, and a *cultural-sensitivity

clause on protected courses* (Ch 12 Tellem, Ch 29 Sámi, Ch 57 AIATSIS). AC has nothing comparable to

the last item. T1_Combat_System_Spec §Agility Course System.

catalogs' own area_bounds, approach→threshold→arena→payoff staging, graded golden-path trails, a

slope assertion under every encounter volume and navmesh-continuity route walks — complete across all

regions, with per-region audits checked in (QA/SPACE_AUDIT_*.md).

chapters' dominant mode, 26 site rows, a dedicated Composure node with a specified break condition,

a built mode tag and a live attribute.

on 10 boss rows; the multi-path / no-dead-end invariant is gate-enforced

(harness/check_no_dead_end.py).

(shadow-and-withdraw, withdraws when faced) is built and test-covered

(HumanityEnemyCharacter.cpp L555-600; HumanityCombatAutomationTests.cpp L1502).

(T99_Translation_Combat §2.6, C1.16 cue framework landed) is a genuine accessibility floor and is

the correct rail for AC-1's affordance signatures.

legibility never gates; hard content routes to completionist/L3/no-kill/easter-egg tiers, never walls.

AC never wrote this down; we did.

content AC's viewpoints exist to reward is already placed.

DIVERGENT-BY-DESIGN — deliberate, not gaps

(DESIGN_GAP_REGISTER L205). AC-9 asks only that the doctrine be written down.

layered discovery and the natural-voice §4 routing rule already forbids the wall version.

*clear-verb* diegetically and explicitly refuses the meter.

admitted as one opener among seven modes, never as the game's identity.

long-horizon; the heat loop is scoped to the antagonist apparatus and the hours-long middle, never to

turning a village hostile.

---

Counts

AC-9, AC-12, AC-14, AC-15, AC-16) · DESIGNED-UNBUILT ×2 (AC-2, AC-10) · DIVERGENT-BY-DESIGN ×0 in the

findings list (5 recorded in the divergence section).

AC-13) · MEDIUM ×5 (AC-9 is MEDIUM-HIGH; AC-10, AC-11, AC-12, AC-15 MEDIUM).

care doctrine (rename/reframe, never removal; the §17 floor untouched), not a fork.

scope (AC-14), add a vertical exit test to W-MOVE's verified-by (AC-2), anchor A_E_017 in rank 13

(AC-8).

wave, an existing spec section, or an existing rubric.

cell 24.

Contested / flagged for the director

1. AC-12's timidity correction touches boss-authoring language across several BOSS_PERSONAS

entries. The repo's own punchlist already flags the pattern, and the care doctrine delegates the

ruling — but the change is *visible in canon prose*, so the director should confirm the sweep is

applied at director level rather than by a fan-out (per the subagent-classifier lesson).

2. AC-11's waterfall signature move is deliberately adjacent to the Ch-76/77 reveal site. The

argument is that making the interaction *ordinary* is the reveal-safe choice, but the call belongs

to whoever owns the reveal ladder; gate #25 is unaffected either way.

3. AC-2's vertical exit test implies W-MOVE's scope grows inside a two-week window. If the schedule

cannot absorb the climb mode, the *fallback* is the tagging half only

(traversal_capability_pending on vertical zone rows) so the slope teeth stop silently certifying

sites that cannot be traversed — the honest-tier register, not a schedule fight.

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