pipelines/LENS_ac-traversal-stealth-legibility_DRAFT.md
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.
---
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).
---
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).
---
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.
---
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).
---
Cloaking presupposes an observer-perception tier that has no data column anywhereClass: 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).
---
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.
---
awareness_tier points the wrong wayClass: 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).
---
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 Sight — unlock_chapter_ref Ch_15, prerequisites "Intuition 10-29 plus
Egypt activation". A_E3_005 Probability Sight — Ch_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).
---
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).
---
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.
---
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.
---
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).
---
traverse is a primary win verb on eight boss rows and there is no traversal-encounter specClass: 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.
---
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).
---
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.
---
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.
---
A_T_002 Cloaking (Ch 2), A_T_010 True Cloak (tier 4), 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.
environment-combat.md §4.3/§5 (fog,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.
_VOL2 U11.25, BUILD-NOW. Reported DESIGNED-UNBUILT in AC-10.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.
---
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.
BYPASS win conditions and win_shape=passageon 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.
NATURAL_VOICE_DOCTRINE §3-§4: mysterious is allowed, unfun is not;legibility never gates; hard content routes to completionist/L3/no-kill/easter-egg tiers, never walls.
AC never wrote this down; we did.
climactic_affordance as a closed enum with 53 authored vista sites — thecontent AC's viewpoints exist to reward is already placed.
(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.
---
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.
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.