LENS_animal-crossing-cadence-collection_DRAFT.md

pipelines/LENS_animal-crossing-cadence-collection_DRAFT.md

Comparator lens audit — ANIMAL CROSSING: NEW HORIZONS (+ NEW LEAF)

Lens id: animal-crossing-cadence-collection · Wave P1-C (contract-critical) · Read-only audit,

2026-07-28. Repos: C:\dev\humanity-forgotten (canon) + C:\dev\Humanity\Humanity (built-system

reference).

Aspects audited: live-cadence/retention rhythm (festivals, Pawukon) · collection/completionism

(journal, bestiary, links) · immersive-history teaching as a REWARD surface · writing/tone register

(warmth + per-NPC voice) · companion/social low-stakes relationships · economy/vendors (solo

faucet-sink, debt-as-goal) · player-expression (decoration) · minigames + daily ritual (L1.5

ambient) · onboarding/accessibility (no-fail play) · endgame/replay (seasonal return) ·

non-combat progression viability (the NEW aspect row minted in register v1.2).

Method law held: every zero is positive-controlled (control search + hit count stated inline);

DESIGNED-UNBUILT is never reported as MISSING; every recommendation names the existing

system/schema/gate it lands on. Dedupe baseline read in full: docs/DESIGN_GAP_REGISTER.md

v1.0–v1.2 (entries 1-45 + the 24-cell claim board + the new aspect rows), this cluster's divergence

guards, docs/PRE_5090_BUILD_PLAN.md + _VOL2, docs/FACTORY_CONTRACT.md,

docs/NATURAL_VOICE_DOCTRINE.md, `docs/proposals/systems/{base-building,minigame-galaxy,

creature-system}.md, docs/proposals/QA_WATCHING_PROGRAM.md`.

DIVERGENCE GUARD honoured throughout: no dailies-as-chores, no FOMO windows, no real-clock

gating. The import is the CHANGE, never the chore. Every recommendation is written to compose with

anti-grind, no-scoreboard, walked-geography and single-player-first.

THE HEADLINE CORRECTION. The cluster brief predicted this would be the "blankest surface" with

MISSING verdicts for museum-grade collection payoff. **That prediction is wrong and is refuted

below.** AC's museum lesson — *collect a specimen, be paid in a real, well-written fact* — is

already ACTIVE T3 canon at T3_Creatures_Tameable, with a four-tier documentation-reward

ladder and an explicit "the tier rewards knowledge and attention" clause. The real gaps are

narrower and sharper: the ladder exists for one substrate domain, has no read surface, has

~1% data, and the festival/cadence layer has a **calendar-to-playtime binding that nobody has

defined**. Findings are written to that corrected picture.

---

FINDINGS (14) — MISSING ×3 · WEAKER ×7 · DESIGNED-UNBUILT ×2 · COVERED ×1 · DIVERGENT-BY-DESIGN ×1

Plus 8 refuted-and-dropped candidates (recorded in full at the foot of this file, with the

decisive evidence, so they are not re-found by a later lens).

---

AC-1 — The spine's scene_type enum cannot express PARTICIPATION: a festival can only be rowed as a cinematic to be WATCHED

Class: MISSING (schema) · Priority: HIGH · Owner: spec-doc + schema-data (§5.5 scene

vocabulary + check_spine_graph.py) · Wave: pre-slice (it binds Ch 2-5 festival content that is

already authored) · Workable tag: SCHEMA-TINY (one enum value + one gate line).

What AC proves. Its calendar events are staged as *participation* — you fish in the tourney, you

build the ornament, you dance at the countdown. Spectatorship is the failure mode AC deliberately

avoids: an event you only watch is set dressing.

Current state (cited). T0_Festival_Registry already carries the participation bar and clears

it: player_participation resolves opt-in-participate ×11 · observe ×4 · assist ×1 across the

16 live rows (registries/T0_Festival_Registry [DRAFT v0.1]/Sheet1.csv), and the participate rows

carry real verbs — FST_0008 has the player skewer fruit up a banana trunk and *carry the

banten-tegeh balanced on the head through the inner temple gate without spilling*, FST_0004 seats

the off-hand Shield (WPN_033) and grounds the CH_03 PARRY verb. **But the spine's scene layer has

nowhere to put that.** scene_type is a CLOSED 11-value enum enforced as an ERROR by

harness/check_spine_graph.py:92-98: `boss_encounter_intro · boss_encounter_phase_transition ·

boss_encounter_resolution · convergence_node · per_chapter_cutscene · architect_appearance ·

ambient_cinematic · canonical_set_piece · prologue_cinematic · epilogue_cinematic ·

branch_decision_point`. Nine of eleven are boss/cutscene/reveal classes; the only non-boss ambient

value is ambient_cinematic — a cinematic, i.e. a thing that plays at the player. So a

Penti spring offering the player takes a role in must be typed either as a cutscene, an

ambient_cinematic, or a canonical_set_piece. The registry design and the spine schema

contradict each other.

Positive control. The enum was read out of the gate source directly (not grepped for), and the

same file's neighbouring enums (PATH_BUCKETS, CARE_BANDS, SQ_STAGES) read correctly, so the

read is sound. docs/SPINE_SCHEMA_v3.md L83 independently recites the same 11 values and says

"Adopt as-is; do not re-invent." Cross-checked against BG3 register entry #42 ("no downtime/crew

scene_type to stage it") — related but distinct: #42 is about companion downtime; this is about

a communal, culture-bearing, *player-acting* scene class, and it blocks already-authored Ch 2-5

content rather than an unbuilt companion layer.

Self-refutation attempted. (a) *"canonical_set_piece covers it."* — A set piece is authored

spectacle; the registry's own care notes insist the rite is the community's, "never spectacle"

(FST_0001), which is exactly what typing it as a set piece would make it. (b) *"Festivals are L1.5

ambience and don't need spine rows."* — FST_0004 seats a weapon and grounds a boss verb, and FR-039

makes festival authoring a per-chapter factory obligation; ambience does not seat equipment. (c)

*"The enum is ratified canon."* — It is §5.5 vocabulary, an operational T99 artifact, not

CVD/numerical/naming canon; extending it is execution, and the schema doc's "do not re-invent" is a

caution against parallel vocabularies, not a freeze.

Reuse-first recommendation. Add one value — communal_participation (or

festival_participation) — to the §5.5 set, to SCENE_TYPES in check_spine_graph.py, and to

T0_Scene_Spec_Registry. Nothing else moves. It gives the 16 festival rows (and the 295

festival_or_daily_immersion seeds cited at VOL2 LW-5) a legal spine home, and it makes the

participate-vs-observe distinction *machine-checkable*: a festival row whose

player_participation is opt-in-participate but whose scene rows are all cinematic classes is a

detectable defect. Land it in the same commit as the FR-039 festival-authoring pass.

---

AC-2 — The festival calendar has no window-resolution policy: a 210-day cycle cannot fire inside a 1-3 hour chapter

Class: MISSING (design rule) · Priority: HIGH · Owner: spec-doc (the LW-3/LW-5 join) →

W-LW3 build · Wave: slice-relevant (Ch 2-5 rows are the first consumers) · Workable tag:

SPEC-SMALL (one column + one policy paragraph).

What AC proves. AC's real-clock cadence works because the player *lives in* the calendar for

months. Its lesson for us is the inverse one: **when the player is only passing through, the

calendar must come to them.** AC's own concession to this is that a returning player is paid in

CHANGE immediately, not made to wait.

Current state (cited). Both ends are designed and neither meets the other. Calendar side: LW-3

is "the deterministic 210-day / 10-concurrent-week combinatorial calendar" with "the cited 55

day-name + tika good-day data list" (PRE_5090_BUILD_PLAN_VOL2 L1034); LW-12 adds pawukon_day

and active_festival to the worldstate store (L1038); LW-5 says rows "map Pawukon good-days →

festival windows" (L1001). Registry side: every festival row declares its window as a SHAPE

only — FST_0001 "annual turning-of-the-year… (SHAPE only, exact window lands with the LW-3

runtime)"; FST_0011 Galungan "recurs on the 210-day Pawukon cycle… good-day mapping lands with

LW-3"; window_kind distributes **calendar_annual ×6 · event_triggered ×5 · pawukon_cycle ×3 ·

lunar ×1 · daily ×1**. Playtime side: the ruled density curve is "≈100-200h main" across 79 nodes

(VOL2 §A.1 L202-205, Josh RULED verbatim) — on the order of **1-3 hours of main path per

chapter**. Nothing anywhere states how many in-game days a chapter's stay spans, nor what happens

when a calendar_annual window does not intersect the visit. The W-LW3 exit criterion is "a live

festival/Pawukon window" per region (L1087) with no rule for making it live.

Positive control. Searched the full plan for a chapter-duration or day-budget doctrine

(in-game day, time scale, day length, hours per chapter) — zero; the same corpus returns

the density-curve ruling and the LW-1/LW-3 clock rows on adjacent searches, so the corpus is

reachable and the absence is real. grep -rn Pawukon returns 30 hits across docs/_source, all

either the calendar's *arithmetic* (bali S04/S18, the L3 grounding queue) or a build-item

declaration — none is a resolution policy.

Self-refutation attempted. (a) *"LW-3 will decide it at build time."* — LW-3 is specced as the

calendar's arithmetic and the day-name data; a scheduling policy is a design ruling, and the

festival rows explicitly defer to a runtime that has no such clause. (b) *"event_triggered rows

solve it."* — Only 5 of 16; the 10 calendar/lunar/pawukon rows are exactly the ones with no

trigger. (c) *"This is FOMO-adjacent — the guard says don't import windows."* — Inverted: the guard

says don't import *missable* windows, and the absence of a policy is precisely what makes them

missable today.

Reuse-first recommendation. Add one column to the existing T0_Festival_Registry header —

window_resolution with three values on the shape already implied by window_kind:

guaranteed_in_visit (the beat is scheduled into the chapter's stay; the calendar supplies the

*flavour*, never the gate — the correct default for the marquee rows FST_0001/0004/0008/0009),

opportunistic (fires if the player lingers or returns; pure bonus), ambient_daily (the FST_0010

canang-sari class — always available, the L1.5 texture layer). The Pawukon arithmetic still runs

underneath and still teaches the real combinatorial calendar (it is a genuine civilizational-marks

L2 payload, civ_marks_queue/bali.md L14); what changes is that a festival becomes a **staged beat

with a calendar skin**, not a lottery. This is "import the CHANGE, not the chore" made

enforceable, and it costs one column on a DRAFT registry.

---

AC-3 — The museum EXISTS and is ACTIVE canon — but it has no read surface, no build item, and ~1% of its data

Class: WEAKER (spec-rich, surface-and-data-poor) · Priority: HIGH · Owner: P5-factory

(data) + the W10 UI wave (surface) · Wave: post-slice for the full ladder, in-slice for the

Ch-2 Komodo chain · Workable tag: UI-SMALL + DATA-BULK.

What AC proves. The museum is the single best commercial proof of our own thesis as a *loop*:

donate a specimen → receive a real, well-written fact → the collection becomes a place you walk

through. Collection and immersive teaching are the same mechanism.

Current state (cited) — the design half is DONE and better than the lens expected.

_source/03_Tier_3_Characters/T3_Creatures_Tameable [ACTIVE v1.0] is the canonical authority for a

420-plus-entry Beastiary (L78; "222 total entries" at L9 is the older 22+200 reading, superseded

in the same doc by the 22 + 400-plus scope at L78 — flagged as a live-source currency defect,

below). It specifies: the status ladder TAME / OBSERVE / DANGEROUS (L99-100), the **seven

non-combat observations per species canonical completionist benchmark** modelled on the Ch 02

Komodo chain (L113), rare-variant documentation (L170-186), and a four-tier reward ladder (L210-212)

— per-species full-variant → "the species Full Cultural Profile, an extended Beastiary entry

including cross-cultural references, deep ecological role context, and conservation-status

reference"; per-chapter → "the chapter Ecological Witness title and permanent Intuition plus-2";

per-region → "region-level ecological restoration questline access". And the clincher at L217:

"Completion does not grant combat advantages — the tier rewards knowledge and attention." That

is AC's museum contract, written in our own voice, at ACTIVE tier.

Current state (cited) — the three halves that are missing.

1. No read surface, and no build item for one. The UI wave enumerates U11.14 ability book,

U11.16 quest log, U11.17 fork widget, U11.18 journal, U11.19 Grimoire, U11.20 screens shell

(VOL2 §11e/11f, L722-728). There is no bestiary/codex screen item. The only adjacent row is

U11.25 "Photo / scan / codex-capture mode… ties to the L2 Beastiary/codex

(T3_Creatures_Tameable DOCUMENT verb)" (L752) — the *capture* half with no *read* half.

2. No data. registries/T0_Creature_Roster [DRAFT v0.1] carries the exact right columns —

dex_completion_class and collect_verb are live header fields — populated 1/150 and 1/150

(OBSERVATION_CHAIN and DOCUMENT, one row each). trade_8_tameable is the healthiest column

at 95/150 (TAME 36 · OBSERVE 31 · DANGEROUS 16 · CRYPTID 12). The roster is 150 rows against a

canonical 420-plus.

3. No gate. Nothing checks that a chapter's fauna carry an observation chain.

Positive control. Searched PRE_5090_BUILD_PLAN.md (the ranked 30) for

[Bb]e?astiary|codexzero; the same file returns Grimoire on the adjacent search (L1795,

L1964), so the file is reachable and the absence is real. Column populations were counted directly

out of the CSV, not inferred.

Self-refutation attempted. (a) *"The creature-collection lens already ran (register cell 5,

P1-A)."* — It did, and it claimed familiars/bonding + the bond ladder (gate 29 WARN). The

documentation/dex arm is a different column set (dex_completion_class / collect_verb) and

a different reward ladder (T3 §3), and neither appears in the P1-A mint. (b) *"DESIGNED-UNBUILT,

not WEAKER."* — The *design* is designed-unbuilt; the finding is that a piece of **ACTIVE T1/T3

canon has no line item in the build plan at all**, which is a planning gap, not a build queue

position. (c) *"Photo mode covers it."* — Capture without a codex to read is the AC museum with no

exhibits.

Reuse-first recommendation. Three small moves, no new system: (i) fold a **bestiary/codex tab

into U11.20's screens shell** (it already hosts book/journal/Grimoire/map/ability — one more tab,

and U11.25 already names the tie); (ii) add a factory-contract row in the FR-038 pattern

("populate dex_completion_class / collect_verb / observation-chain fields on every creature in

this chapter") so data accrues per-chapter instead of as a doomed later sweep; (iii) fix the

T3 L9-vs-L78 count currency in place (living-source doctrine) so the next agent does not author

against 222.

---

AC-4 — The documentation-reward ladder is fauna-only: flora, minerals, languages, sites and inscriptions carry the substrate and no ladder

Class: WEAKER · Priority: MEDIUM-HIGH · Owner: schema-data + spec-doc · Wave:

P5-factory · Workable tag: SCHEMA-TINY ×2 (one column, copied twice).

What AC proves. The museum has four wings — fish, bugs, fossils, art. Breadth is what makes

the collection a place rather than a list, and each wing pays out a different kind of real

knowledge.

Current state (cited). Our museum has one wing. T0_Flora_Registry is 25 rows × 12 columns

(`flora_id, common_name, scientific_name, region_native, chapter_range, plant_type,

gatherable_parts, trade_uses_note, rarity_class, care_note, sources, notes`) — real botanical

substrate (FL_0001 Tamarind / *Tamarindus indica*), **no discovery state, no documentation tier, no

completion reward**. T0_Mineral_Registry is 19 rows × 11 columns with the same shape (MN_0001

Obsidian / volcanic_glass) and the same absence. Languages are the closest near-miss: CVD L1217

promises "language fragments accumulate to roughly fifteen documented languages by arc completion"

and T0_Language_Script_Registry is ACTIVE — an accumulation with **no completion tier and no

payout**. The Grimoire is the one live knowledge-payout engine (Q3.8: "nodes on discovery, link-

action requiring a scholarly-basis ref, reward on valid link", PRE_5090_BUILD_PLAN L1795) but it

pays connections, not specimens — it is the L3 lattice, not the L1.5 field guide.

Positive control. Counted rows/columns directly from the CSVs. Searched the flora/mineral

headers for any of observ|document|dex|complet|discover → zero, while the same headers return

rarity_class and care_note, so the read is sound.

Self-refutation attempted. (a) *"Trades already reward gathering."* — Trades reward

*materials*; the AC lesson is that the same act must also pay *knowledge*, which is our stated

thesis and which T3_Creatures_Tameable L217 already ratifies for fauna. (b) *"25 flora rows is

just population thinness."* — The thinness is real and separate; the finding is that the **schema

has no place to put a documentation state** even when the rows arrive. (c) *"Care risk — turning a

culture's plant knowledge into a checklist."* — Devil's-advocate-against-timidity applied: the

fauna ladder already handles this by paying "Full Cultural Profile" *entries* with attribution, and

care_note is already a column on both registries. Withholding the ladder from flora would be

care-inflation, not care.

Reuse-first recommendation. Copy the column that already exists: add dex_completion_class

(and, where it applies, collect_verb) to T0_Flora_Registry and T0_Mineral_Registry, and

declare in T3_Creatures_Tameable's own §3 language that the four-tier ladder (per-entry /

per-chapter / per-region / full) is substrate-general, not fauna-specific. Wire the language

wing to the existing T0_Language_Script_Registry accumulation with a per-language completion tier.

That is one already-proven ladder, three more wings, zero new systems — and it converts the

SCIENCE_GROUNDING / ESOTERIC_GROUNDING substrate into a *played* teaching surface, which is the

whole thesis.

---

AC-5 — Non-combat progression viability is asserted, rewarded, and unmeasured: the strictly-no-kill path has named prizes and no route guarantee

Class: MISSING (the measurement + the arc-level guarantee; the verbs themselves are COVERED) ·

Priority: HIGH · Owner: QA loop + spec-doc · Wave: slice-relevant (Ch 2-13) ·

Workable tag: GATE-SMALL (one sweep on existing sweep machinery).

What AC proves. A peaceful player can advance — not as a mercy setting but as a *posture the

game is designed around*. This is the register's newly-minted aspect row

non-combat-progression-viability (animal-crossing) (DESIGN_GAP_REGISTER v1.2), which was minted

by name and left undefined. This finding defines it.

Current state (cited) — much stronger than a naive audit would report. The win-condition

vocabulary is ruled and deeply non-lethal: T99_Translation_Combat carries a 10-verb ruled enum

(D-COMBAT-TD R3, Josh 2026-07-19; EVADE minted 2026-07-20) including **PACIFY — "yield-into-

respect / no-kill de-escalation; the killing blow refusable at explicit integrity cost (Ch

3/7/17/21/27; HL_0021)"**, plus PURGE, PERCEIVE, EXPOSE, FREE, REFUTE, BYPASS, EVADE.

Live distribution on the 281 boss rows is genuinely non-lethal-heavy: PERCEIVE 46 · REDUCE 33 ·

PURGE 16 · PERCEIVE;PURGE 16 · PERCEIVE;FREE 10 · PACIFY 6 (+14 more in combos), and

primary_verb runs strike 64 against perceive 52 / decode 23 / purge 19 / expose 17 /

attune 15 / infiltrate 14. Josh's own NATURAL_VOICE_DOCTRINE §4 names "**the strictly-no-kill

path's special rewards**" as a ratified routing tier. FUN_REBUILD_PLAN L28 records "no kills

forced" as a property of the built mechanics.

Current state (cited) — what is absent. No document anywhere states that a strictly-no-kill run

can traverse all 79 nodes, and nothing measures it. has_nonkill_path is a live Boss_Encounter

column populated 16/281 — but that population is *already queued* as factory obligation FR-038

(docs/FACTORY_CONTRACT.md L152, PARTIAL, gate counter_class_coverage) and was already noted by

the BG3 lens (LENS_BG3_2026-07-27.md L424), so it is not this finding. What is missing is the

arc-level closure: population is per-boss and per-chapter; nobody checks that the *union* of

non-lethal routes forms a connected path from Prologue to Epilogue. The QA program's rubric

aspect_id join (QA_WATCHING_PROGRAM L438-446) would host it and currently has no rubric citing

this aspect — the register itself warns that "a rubric whose aspect has no roster row is WARN-skip

and UNCLAIMABLE".

Positive control. has_nonkill_path counted directly from the CSV (16 TRUE / 265 empty);

searched docs for no-kill|pacifis|non-lethal|peaceful path → 20+ real hits including the ruling

sources above, so the search matches; searched the same corpus for an arc-level claim

(pacifist run|no-kill run|complete the arc without) → zero.

Self-refutation attempted. (a) *"This defangs a rated-R action RPG."* — Explicitly not.

Devil's-advocate-against-timidity applied in the other direction too: this proposes **no reduction

in violence, no new mercy content, and no pacifist mode**. Violence stays CORE; PACIFY already costs

integrity; the gladiator arena stays a killing venue. The claim is only that a path Josh has already

ruled *exists and pays prizes* should be provably walkable. (b) *"The no-dead-end gate covers it."*

check_no_dead_end.py enforces non-empty reroutes per fork; it does not know what a *lethality*

route is, and a chapter can be no-dead-end while every route through it requires a kill.

(c) *"Pillar 3 (action-packed every chapter) forbids it."* — Pillar 3 demands *action*, and PACIFY /

PURGE / EVADE / PART_BREAK are all action. The Ch-2 CAVE_BEAR forced-run (U11.27, "a fight you

cannot win") is canon proof that an unkillable encounter is still a combat beat.

Reuse-first recommendation. Define the aspect as a PACIFIST SWEEP on the existing

build-space-sweep doctrine (COMBAT_PROGRAM_ADDENDUM §10 Phase-5M/5H; the QA program already

calls its own version "the QA twin of the build-space-sweep doctrine", L455): for each of the 79

nodes, assert ≥1 authored route requiring zero required human kills, computed from the data

that already exists (win_conditionhas_nonkill_path ∪ the fork rerouted_paths[]). A node

with no such route is a defect in exactly the way a never-picked bonus-pool option is a defect.

Register the rubric under aspect_id: non-combat-progression-viability so the register's orphan

row is claimed. Zero new content; it makes an existing ruling verifiable by the only player we have

until the Josh gate.

---

AC-6 — "Return is paid in CHANGE" has no pre-Vimana surface: the world does not visibly move while you are away

Class: WEAKER · Priority: MEDIUM · Owner: W-LW3 / schema-data · Wave: post-slice

(but with one in-slice instance: Flores across Ch 2→3) · Workable tag: SPEC-SMALL.

What AC proves. The strongest anti-grind retention mechanism in the medium: the world moves

whether you play or not, so returning is paid in change, never in rested-XP. Register entry #9

(rest/safe-site loop) explicitly rules rested-XP out as a fork and leaves the return-reward half

open; this is the shape that fills it without touching anti-grind.

Current state (cited). Return is real but late and coarse. WGM §7 gives the Ch 59-65 Vimana

revisit band and the five-world-state revisit mechanic — "the five-world-state revisit

mechanic, which continues to govern the previously visited ground each node still reflects on"

(T1_World_Geography_Master [ACTIVE v2.3] L766). Pre-Vimana the arc is a walk-forward pilgrimage

(§4/§6.7). Player-caused change persists: the mark_write region-mark ledger (PG-6, VOL2 L859)

and STATE_DELTA_GRAMMAR's append set-insert (154 rows). Death does not reset the world —

SL-1 respawns "with the world ADVANCED, never reset" (L880). **But no worldstate key represents

elapsed time since a visit**: LW-12's set is `time_of_day, weather_state, pawukon_day,

active_festival` (L1038) — a live clock, not a since-you-left delta — and nothing authors a

"what changed while you were gone" read at region re-entry. The Hearthway return network is

proposal-tier only (base-building.md §6, fork C unratified).

Positive control. LW-12's key list read verbatim from VOL2 L1038; Worldstate_Variables is 42

rows (WS_001-042) "none time/weather/calendar/festival" per the same line. Searched for a

since-last-visit concept (since you left|last visit|elapsed|time away) → zero real hits, while

mark_write and five-world-state both return their real anchors, so the corpus is reachable.

Self-refutation attempted. (a) *"Walked geography means you never return — this is a

non-problem."* — Ch 2 and Ch 3 are both Flores; Ch 5 spans two regions; the Ch 59-65 band returns to

everything. The mechanism has consumers. (b) *"Register #9 already covers it."* — #9 covers the

*anchor* (save/restock/companion talk at a safe site) and explicitly bans rested-XP; the change

half is named as absent there and is what this fills. (c) *"Five world-states covers it."* — At

*chapter* granularity, for the revisit band only, as a narrative reflection — not as a

region-re-entry read.

Reuse-first recommendation. No new system: reuse the **mark_write ledger + the five-world-

state mechanic and declare a re-entry delta read** — on entering a region already visited, the

world surfaces 2-3 diegetic changes drawn from marks already written (the field the player helped

open is planted; the person they spared is at the market; the shrine they left broken is still

broken). Drive it off the existing ledger, not off a timer, so it is causal rather than clock-based

— which sidesteps the FOMO guard entirely and is *stronger* than AC's version, because our change

is about the player rather than about the calendar.

---

AC-7 — "Faucet-sink discipline" is our stated divergence rationale and does not exist as a document

Class: WEAKER · Priority: MEDIUM · Owner: spec-doc (rides the D-ECONOMY brief) ·

Wave: W10 economy · Workable tag: SPEC-SMALL.

What AC proves. Debt-as-goal: a self-paced, never-punishing, unbounded sink that structures a

hundred hours without a single timer. It is the solo faucet-sink model that WoW's auction-house

divergence left uncovered — and it is *aggressively* compatible with anti-grind, because the debt

never penalises you for ignoring it.

Current state (cited). DESIGN_GAP_REGISTER L207-208 lists WoW's "Player-driven economy /

auction house" as DIVERGENT-BY-DESIGN "(faucet-sink discipline)" — i.e. the register justifies

a divergence by naming a discipline we hold. That discipline has no spec. Positive control:

faucet returns exactly 3 hits across docs/** — this register line, and two uses in

ROADMAP_POST_5090_TO_SHIP.md (L58, L634) meaning *generative* faucets (a different sense

entirely). The economy itself is deliberately held: EC-medium + EC-vendor are BLOCKED-ON-BRIEF

pending Josh (VOL2 §11.6.4, cohere H7), with Opt-1 recommended (mixed regional exchange, no

universal coin) — and Opt-3's stated con is the tell: *"leaves gathered materials + drops with

no sink; the slice reads incomplete"* (L1059). EC-inventory (P2.6) is a *storage* sink, not an

economic one.

Self-refutation attempted. (a) *"The economy is BLOCKED-ON-BRIEF, so this is designed-unbuilt."*

— The *transaction medium* is blocked (correctly, it is a world rule → Josh's). The **sink

structure** is a separate design question that nobody has asked, and it does not depend on the

medium ruling: whatever the medium, something must absorb it. (b) *"Anti-grind forbids a money

sink."* — Anti-grind forbids *required repetition*; a self-paced optional sink is the opposite —

it is what gives voluntary play a destination. (c) *"Debt-as-goal is tonally wrong for a rated-R

arc."* — Not proposed as debt. The shape is what transfers: an open-ended, never-punishing,

player-chosen goal ladder.

Reuse-first recommendation. Do not design an economy. Write one page declaring the existing

systems AS the sink ladder, with a pacing curve: base-building modules + compound upgrades

(base-building.md §3.4/§4.3), the 2nd/3rd purchasable loadout sets quick-changed at vril sites

(COMBAT_PROGRAM_ADDENDUM §9), imprint/rune crafting (T0_Imprint_Affix, T0_Rune_Registry), and

vehicle upgrades — these are already four sinks with no declared relationship. Naming them as one

ladder closes the register's own divergence rationale and gives EC-vendor a target when Josh rules

the medium. Explicitly bounded: no timers, no upkeep, no repossession — the AC property we want

is self-pacing, not obligation.

---

AC-8 — Integrity-visible aesthetics and player decoration compete for the same surface, and nobody has split them

Class: WEAKER (design collision) · Priority: MEDIUM · Owner: spec-doc

(T1_Personal_Dimension_Spec + T1_Integrity_Paths §8.9 authority) · Wave: post-slice ·

Workable tag: SPEC-TINY (one clause).

What AC proves. Decoration is the primary expression currency: the player's taste, placed and

photographed, is the reason to keep playing. Expression requires authorship.

Current state (cited). Our home surface is system-authored, not player-authored. Canon:

the Personal Dimension is integrity-visible — "L1 Truly-Good → verdant-light substrate; L3 Drifting

→ neutral-grey balance; L4-L5 Evil → shadow-substrate variants" (base-building.md §5.1, citing

T1_Personal_Dimension_Spec + T1_Integrity_Paths §8.9), and §5.3 recommends extending that skin

to Layer-B world-homes. The player-authored half is proposal-tier and thin: "trade-crafted modules…

walls, roofs, floors, stations, defenses, decor — free-form module placement (DQB2

room-recognition + Minecraft freedom)" (§4.3), with the module catalog and build UI explicitly

handed off (§10, Fable-5 handoff). And the owning T1 doc is a 2-line byte-level stub

(_source/01_Tier_1_Foundation/T1_Personal_Dimension_Spec [DRAFT v0.1].md = 2 lines — this is

register entry #22's stub class, verified by line count). So the AAA hook §5.3 sells — "a

screenshot tells your whole playthrough's story" — is currently a screenshot of a shader the game

chose for you.

Positive control. Line counts taken directly (T1_Personal_Dimension_Spec 2, T1_UI_UX_Spec 2,

T1_Audio_Spec 2 — the register's four-stub class confirmed). Photo mode is not a zero: U11.25

exists (VOL2 L752).

Self-refutation attempted. (a) *"The minecraft-sandbox-build lens (P1-B) claims this."* — It

claims persistence + shareability (register cells 22 and the player-expression-shareability

aspect row). The collision between an authored skin and an authored object layer is a different

claim and appears nowhere. (b) *"Integrity-visible is canon; don't touch it."* — Not touched. The

proposal keeps it exactly and only clarifies its *scope*.

Reuse-first recommendation. One ruling clause, landed in T1_Personal_Dimension_Spec when the

stub is authored (register #22's queued work — no new item): **integrity paints the SUBSTRATE

(light, ground, growth, sky, material weathering); the player authors the OBJECTS (placement,

palette within the era-and-culture-authentic material set, arrangement).** Both read in the same

screenshot and neither overrides the other — the moral portrait and the personal taste become two

legible layers rather than one contested one. Preserves §8.9 authority intact and gives the

build-UI handoff a rule to build to.

---

AC-9 — The warm register has no home in the voice doctrine, and the festival/daily-life scenes are where it is needed

Class: WEAKER · Priority: MEDIUM · Owner: spec-doc (the natural-voice critic lens) ·

Wave: the natural-voice rewrite pass (already the next canon-lane wave) · Workable tag:

SPEC-TINY (one critic question + one default table).

What AC proves. Warmth is a craft discipline, not an absence of edge. AC carries a whole game on

gentle, specific, per-character voice with no antagonist — and it is the calibration set for

exactly the scenes our arc has most of and has specced least: the daily-life and festival beats.

Current state (cited). docs/NATURAL_VOICE_DOCTRINE.md (Josh ruling 2026-07-26, binding on

every player-facing word) specifies the cultural register in §2 — "an elder's cadence, a

healer's directness, a broker's oil… drawn from the persona system (the 13-field personas) +

T0_Voice_Registry" — and the two new critic questions in §5 are "does a person say this?" and

"does this carry the culture?". There is no affective/tonal axis: nothing asks whether a line is

the right *warmth* for its scene. T0_Voice_Registry is 10 rows, every one protagonist or

antagonist (5 protagonist age variants, GRAND_SAGE_REVEAL_VOICE, ARCHITECT_VOICE, 3 Cassius phase

voices); its voice_substrate.timbre_tags do carry warm on 3 protagonist rows, so the vocabulary

exists — it just has no scene-side counterpart and no villager rows. Meanwhile the festival rows

that most need it are authored: FST_0010's canang sari daily offering is explicitly "the texture of

an ordinary Balinese morning".

Positive control. Registry rows enumerated directly from the CSV; `grep -i "warm|tone|cozy|

gentle|register" over NATURAL_VOICE_DOCTRINE.md` returns 2 hits, both §2 cultural-register lines,

against a 56-line file — the doctrine is short and fully read, not sampled.

Self-refutation attempted. (a) *"Register is a P2 lens's job (persona-disco-curriculum-voice-

ui)."* — That lens is queued for the *prose-as-play-surface* and curriculum cells (register cells

10/19); the natural-voice rewrite pass runs first and will set the register defaults by

default-of-silence if nothing declares them. (b) *"10 voice rows is the real gap."* — Adjacent, and

it belongs to the bark-vocal-identity-channel aspect (bl-repeat); this finding is about the

*written* register, which binds regardless of VO scope (partial VO is the ship ruling).

(c) *"Warmth risks defanging a rated-R arc."* — Devil's advocate applied and rejected: the arc's

emotional payload *depends* on the ordinary mornings being warm enough to lose. Uniform grimness is

the flattening failure, not the safe one.

Reuse-first recommendation. Add a third question to the natural-voice critic lens already being

built in §5: "is this the right warmth for this scene?", plus a one-table `scene_type →

default register` map (festival/communal → warm-specific; boss → pressure; reveal → restraint) that

rides the new communal_participation scene_type from AC-1. No new doc, no new pass — it joins a

wave that is already scheduled.

---

AC-10 — Festival coverage is 4 regions of 76, and its factory obligation has an explicitly NULL gate

Class: DESIGNED-UNBUILT (never MISSING — the registry, the obligation and the wave all exist) ·

Priority: MEDIUM · Owner: P5-factory · Wave: per-chapter staging · Workable tag:

GATE-SMALL.

Current state (cited). T0_Festival_Registry holds 16 rows across 4 regions

flores_island ×7, bali ×5, sumatra_java ×2, angkor_khmer ×2 — i.e. chapters 2-5 only, against a live

T0_Region_Index of 76 rows / 79 nodes. That is correct and expected: the rows were authored as the

slice staged. The obligation exists — FACTORY_CONTRACT.md FR-039: "Author this chapter's

festival windows and the region's ambient and SFX rows as part of the staging pass, not as a later

sweep." **But its gate column reads, verbatim: `NONE (no per-chapter festival or ambient coverage

assertion exists; rank 8 authors the cue table)`.** An obligation whose gate is NONE is a sentence,

not a tooth — and the repo's own hard-won lesson is that an unenforced rule against the path of

least resistance loses (OPEN_DECISIONS_BRIEF_2026-07-22 L489, on exactly this class of drift).

Positive control. Region distribution counted from the CSV; FR-039 read verbatim from

FACTORY_CONTRACT.md L153; T0_Region_Index row count from the live CSV.

Reuse-first recommendation. Give FR-039 the tooth it declares missing: a coverage assertion in

the existing gate suite — every staged chapter has ≥1 T0_Festival_Registry row whose

chapter_range covers it, and ≥1 row with window_kind: daily per region (the L1.5 ambient spine;

today daily is 1 of 16 rows, FST_0010, and it is the single best template we have). Same

teeth philosophy as the existing coverage gates; no new content required at gate-authoring time

because the rule fires per staged chapter, not retroactively.

---

AC-11 — Low-stakes relationships have no tier: every relational surface we own is weighted

Class: WEAKER · Priority: MEDIUM-LOW · Owner: schema-data (persona) · Wave: W-LW3 ·

Workable tag: SCHEMA-TINY.

What AC proves. A villager who remembers your last visit and says something small is

disproportionately cheap relational depth — and it is the layer that makes a *village* feel like a

place rather than a quest dispenser.

Current state (cited). Every relational system we own carries weight. Companions run

loyalty_score / loyalty_state / belief-distance with departure thresholds

(WS7_WIRING_BUILD_PLAN §, register #39/#40). Community relations run through the mark_write

ledger and the community-ripple doctrine (killing "ripples through the community and is

remembered", CLAUDE.md content bar). T0_Reputation_Ladder_Registry is 2 rows. The generative

layer *does* own the raw channel — "NPC ambient dialogue (barks, crowd chatter, vendor lines) …

Line content within topic + mood … Persona card; region; **worldstate facts flagged

safe-to-reference**; integrity band" (RUNTIME_GENERATIVE_LAYER.md L64) — so the machinery for

"someone says something small that references what you did" exists. What is missing is the

*acquaintance tier*: a person who recognises you without any ledger consequence.

Positive control. Reputation ladder counted from CSV (2 rows); the generative-layer row read

verbatim; searched persona + docs for small talk|remembers you|last visit|greeting → the single

substantive hit is the generative-layer row above, while loyalty|persona|relationship return

hundreds — so the corpus is reachable and the acquaintance tier is genuinely absent.

Self-refutation attempted. (a) *"GTA register #2 (daily schedules) covers it."* — #2 puts NPCs

*somewhere at a time*; this is about them *knowing you*. Same infrastructure, different field.

(b) *"Personas are 13 fields; add nothing."* — Agreed, and the recommendation adds one field to an

existing card rather than a system.

Reuse-first recommendation. One persona field — recognition_state

(stranger | seen | known | familiar), advanced by ordinary proximity and non-consequential

interaction, read only by the already-designed generative ambient-dialogue channel to select

greeting register. It never enters the loyalty formula, never gates, never scores — which keeps it

clear of the no-scoreboard doctrine by construction. Rides LW-8/LW-9 (persona index + ambient-NPC

schedule), already queued.

---

AC-12 — Minigames, the L2 completion spine, and the arcade are DESIGNED to AC's standard and further than the lens expected

Class: DESIGNED-UNBUILT · Priority: (no new work proposed) · Owner: existing MG-1 item ·

Wave: WR3.

Current state (cited). The daily-ritual / ambient-minigame aspect is not a gap. CVD §17.12

ratifies two L2 completion conditions in canon text — "max upgrades on every craft (the

Vehicle/Mount and base Domains buildables) and top score on every minigame"

(T1_CVD_Creative_Vision_Document [ACTIVE v1.4] L1148) — and minigame-galaxy.md builds the whole

spine on it: a four-tier taxonomy (Marquee / Structured / Ambient parlor / Easter-egg arcade),

one bronze-silver-gold + platinum-ghost scoring model, a five-gate anti-litter bar, the "Games

Master" completion meta, ~6 reusable engine families, and boss-as-game fusion. Tier A is explicitly

AC's texture layer: "tavern knucklebones, cup-and-ball, coin-pitch, drinking-song call-and-response,

a market-haggle rhythm beat, a fishing-catch timing tap… pure L1.5 immersion" (§2.1). The runtime

has a home: MG-1 UHumanityScoredInteractionSubsystem — "ONE bronze/silver/gold scoring spine

under which both N8.8 minigames (MG_ rows) and Q3.7 puzzles register; non-blocking (no progression

gate); medals→save" (VOL2 L867), which correctly cites the live state as DT_Minigame = 2 DRAFT

rows and no subsystem. T0_Minigame_Registry is 2 rows × 19 columns (MG_0001 caci, MG_0002 Senet)

— proposal-tier with open Josh forks, exactly as the scope warning says.

Verdict rationale. DESIGNED-UNBUILT, per the standing rule and the cluster's own scope warning.

No finding is minted. Recorded so the register does not later read this cluster as having found

the minigame layer wanting: the design is at or above the AC bar, and the only outstanding items are

Josh's forks (count/caps, arcade canon, boss-as-game boss numerics) and row population.

---

AC-13 — No-fail play is COVERED, and our version is arguably better than AC's

Class: COVERED (with a small note) · Priority: — · Owner:

Current state (cited). Three independent surfaces meet the no-fail-posture bar.

(1) Difficulty: DIFFICULTY_SYSTEM.md Wellspring — Story: "while it holds you close the world

moves with you; no trial can strand you here. This is the arc for the traveller who came for the

journey and the wonder" — a diegetic, lore-grounded Story tier on a dial that is "ONLY vril density;

NEVER HP / damage / resistance inflation", i.e. no-fail achieved without hollowing the combat.

(2) Content routing: NATURAL_VOICE_DOCTRINE §4 (RULED) — "Progression-gating content = the

solvable-fun tier, always. Genuinely hard / time-consuming / obscure puzzles and challenges route

to the completionist tier… They are PRIZES for the players who want them — never walls."

(3) Structure: the standing no-dead-end / multi-path / non-gating doctrine, enforced by

harness/check_no_dead_end.py.

Note (small, not a finding). AC's version is a *posture* (there is no fail state at all);

ours is a *tier plus a routing rule*. That is a legitimate and, for a rated-R action RPG, better

choice — the register should carry it as DIVERGENT-BY-DESIGN rather than as a gap, so a later

lens does not re-litigate it. The one genuinely open piece is the death/defeat axis

(D-DEFEAT-AXIS / CF-10 boss-defeat state, BLOCKED-ON-BRIEF, VOL2 cohere H13), which the

hades-death-run-realm-identity lens owns (register cell 13) — not this lens's to claim.

---

AC-14 — Real-clock gating and dailies-as-chores: DIVERGENT-BY-DESIGN, pre-registered here so no later lens imports them

Class: DIVERGENT-BY-DESIGN · Priority: — · Owner: register (pre-registration)

AC's retention engine is a real-world clock: the game reads the system time, seasons turn in

real months, and events are missable by real calendar. Three of its load-bearing mechanisms are

therefore rejected here on purpose, and the rejection should be recorded so a future lens or

rubric does not re-open them as gaps:

pilgrimage; also unverifiable by the AI QA loop, which is our only player until the Josh gate.

anti-grind model and with register #9's rested-XP rejection.

and with the completionist promise; AC-2's window_resolution column exists precisely to make

festival windows *non*-missable.

What is imported instead, across AC-2 and AC-6: the CHANGE without the clock — causal,

player-driven world movement surfaced on return, and calendar content staged as guaranteed beats

wearing a real calendar's skin.

---

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

1. "There is no museum / no collection payoff." — The cluster's own expected verdict. Killed by

T3_Creatures_Tameable [ACTIVE v1.0] §L99-113/L170-217: status ladder, seven-observation chain,

four-tier documentation rewards, "the tier rewards knowledge and attention". Re-scoped into

AC-3/AC-4 (surface, data, breadth) rather than existence.

2. "T0_Journal_Entry_Template_Registry is missing (CVD Pillar 6 cross-refs it)." — Killed:

T1_Build_Pipeline_Contracts [ACTIVE v1.0] L224 defers it by design — "registry creation

deferred until consumer demand demonstrates need." *This one nearly reported a false zero:* the

CVD escapes markdown underscores (T0\_Journal\_Entry\_Template\_Registry), so the obvious grep

returns nothing. Re-run with Journal\\?_Entry\\?_Template — the documented

"a-search-that-cannot-match-reports-zero" trap, hit live in this audit.

3. "The journal is missing." — Killed: Pillar 6 is ratified canon with beats Ch 13/38/57, Q3.6

is a build item, U11.18 ships the slice shell empty by canon, and VOL2 L817 states the

emptiness is "by canon, not by under-build."

4. "has_nonkill_path 16/281 is a gap." — Killed as a *new* finding: already an obligation

(FACTORY_CONTRACT FR-038) and already noted by the BG3 lens (L424). Re-scoped into AC-5's

arc-level measurement claim, which is genuinely unclaimed.

5. "No photo mode / no shareability surface." — Killed: U11.25 photo/scan/codex-capture is a

BUILD-NOW item (VOL2 L752); the shareability *aspect* belongs to the minecraft lens.

6. "Only 10 voice rows — NPC voice identity is missing." — Not this lens's: the

bark-vocal-identity-channel aspect (bl-repeat) owns it. Noted inside AC-9 as context only.

7. "Gather nodes have no seasonal rhythm." — Killed: T0_Gather_Node_Registry.respawn_class

is populated 24/24 with a genuinely seasonal vocabulary — seasonal_forage ×7, slow_regrowth

×4, rare_tap ×3, quarry_finite ×3, fumarole_slow ×2, tidal_daily, tidal_replenish,

flood_pulse_seasonal, crop_cycle, daily_offering. The cadence substrate is real; only its

*calendar binding* is open, which is AC-2.

8. "The economy has no vendor/medium design." — Killed: BLOCKED-ON-BRIEF pending Josh by

correct process (VOL2 §11.6.4, cohere H7), with a recommendation on file. Re-scoped into AC-7's

sink-structure claim, which is medium-independent.

---

Contested / for the director

is CVD/numerical/naming/§17 canon, so both are director-applies under the standing protocol — but

AC-1 edits a gate-enforced enum and should ride a single commit with its gate change, per the

never-write-a-gate-enrolled-file-mid-check rule.

written to be the opposite: no content softened, no violence reduced, PACIFY's integrity cost

untouched. If the director disagrees, the fallback is to scope the sweep to the slice

(Prologue→Ch 13) where Josh's own no-kill reward tier is nearest to being playable.

living-source factual fix, not a canon change — but it is a *numerical* string in an ACTIVE T3

doc, so the director should apply it rather than a subagent (the subagent-classifier lesson).

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