assets/CRITIC_sm64-movement-camera-onboarding.md
sm64-movement-camera-onboardingFresh-context adversarial refutation of
LENS_sm64-movement-camera-onboarding_DRAFT.md (15 findings).
Both repos read READ-ONLY: C:\dev\humanity-forgotten (canon), C:\dev\Humanity\Humanity (built).
Every finding's citation was opened and checked. No finding fails outright. This is an unusually
well-grounded draft: the load-bearing zeros are real, the MISSING-vs-DESIGNED-UNBUILT calls are
correct, and one methodological self-correction (CAVE_BEAR) reproduces exactly. The defects are
citation-precision and one wrong mechanism — none change a verdict class, and two amendments make
findings *stronger* than drafted.
---
No finding was refuted. Below is what I attacked hardest and why each held.
The runbook's sharpest rule is that a spec/ruling/registry row anywhere converts MISSING into
DESIGNED-UNBUILT. I searched for each independently.
bDoCollisionTest, ProbeSize, CameraLagSpeed, bEnableCameraLag = 0 hits across all of Source/ (my own grep, not the draft's). Corpus-wide
the occlusion-policy vocabulary returns 2 hits, both false friends ("camera fade" in the *death*
path, FORKB_ANALYSIS_ADVERSARY L75/L563). Critically, T1_UI_UX_Spec [DRAFT v0.1].md is a
35-byte title-only stub — the one doc that could plausibly have hidden camera rules is empty.
Plan #26 verbatim: "None exist as specs today" (PRE_5090_BUILD_PLAN.md L1925). MISSING (spec) is
correct; a declaration of absence is not a design.
a false friend (QA_WATCHING_PROGRAM.md L209, "input buffer" in a list of what the Tier-1 driver
cannot see). The built verbs are confirmed self-terminating and mutually exclusive
(bParryOnCooldown L336, bMantling L375). The chain meter exists but is parry-scoped
(Character.h L111-129: "Consumers: the encounter chain meter, the HUD, the QA loop"). MISSING holds.
item. #26 lists it as absent. MISSING holds.
variant definitions, rewards, titles, biome rotation, protections — and **no failure, reset, or
re-entry rule of any kind**. MISSING holds, and is stronger than drafted (see amendment 4).
DESIGN_GAP_REGISTER.md L207 confirms markerless navigation is registeredDIVERGENT-BY-DESIGN. The draft correctly dropped that candidate rather than re-litigating it.
SM64-15's no-scoreboard self-check is right.
hidden; rank 13 verified at L70 ("Ability registry data pass (unlock chapters ×153…)").
The scoped instruction it adds (sequence mobility first, inside Ch 2-13) is genuinely not in #32.
---
Impact: reasoning replaced, verdict (WEAKER) and recommendation unchanged, evidence strengthened.
The draft argues the camera tooth is scoped away from traversal because "the tooth is T-SEQ-* —
its failure modes are… i.e. cut/sequence continuity." That reading of the prefix is wrong.
§2.2 is titled "The permanent teeth" and the whole family is strip-scoped, not cinematic:
T-SEQ-PRESENCE, T-SEQ-RENDERED, T-SEQ-UPRIGHT, T-SEQ-PHASE-ORDER, T-SEQ-CLOCK
(L154-160). T-SEQ = a tooth over a captured frame strip/burst.
The finding survives on evidence the draft *found but did not use*. QA_WATCHING_PROGRAM.md
L208-210: "Today's drive is a state-teleporting driver: it poses the game for a photograph.
Right for capture, wrong for a beta player — the mapping context, ability gate, input buffer,
lock-on cycle, fork UI focus and traversal are invisible to it by construction." And L225:
"charter would report a clean traversal that was actually teleported." That is the program's own
admission that the QA loop cannot see traversal at all today — a stronger claim than the draft made.
Fix: delete the "i.e. cut/sequence continuity" clause; ground the finding on L208-210 + L225.
The correct residual statement about the tooth is narrower and still true: T-SEQ-CAM-CONTINUITY
asserts only "no angular delta above ceiling; lock target stays in frustum" (L162) — nothing about
penetration, near-clip, self-occlusion, or recovery. Name the Tier-2 agentic driver as the
dependency the recommendation rides, since a teleporting driver cannot produce traversal camera data
at all.
Impact: notation only. Every number in the enumeration reproduces.
The draft writes "12 ability_class=mobility rows" and offers the csv.DictReader read as its
positive control. Strict equality ability_class == 'mobility' yields 8 rows, not 12 — so as
written the control does not reproduce. The draft's 12 reproduces exactly under a substring
filter ('mobility' in ability_class):
| class | n | rows |
|---|---|---|
mobility | 8 | incl. A_A_001 Wind Step T1 @ Ch_04 |
mobility_construct | 1 | Ember Trail T3 |
mobility_combat_hybrid | 2 | Phoenix Strike T6, Cyclone Cradle T7 |
perception_mobility | 1 | Astral Projection T4 @ Ch_15 |
Tier distribution under that filter: 1×T1, 1×T3, 6×T4, 2×T5, 1×T6, 1×T7 — and 10 of 12 empty
unlock_chapter_ref. That is the draft's enumeration, item for item, including the specific
abilities it names. Corpus-wide 32/185 unlock coverage: verified.
Fix: change ability_class=mobility to "ability_class containing mobility (4 sub-classes)".
Note the headline is *sharper* under strict equality — 1 Neophyte of 8 — so the finding does not
weaken either way.
The quote "CF-10's boss-defeat STATE is UNBLOCKED — D-DEFEAT-AXIS RESOLVED 2026-07-24" is
verbatim-correct but lives at PRE_5090_BUILD_PLAN_VOL2.md L412, not L650. The 2026-07-24
ruling itself ("Rated M game. Things will die. Health 0 is death…") is exactly where the draft says,
L360-368. Fix the L650 cite in both the header and SM64-9.
Two facts the draft missed, both of which harden the MISSING verdict:
1. T1_Combat_System_Spec L27 explicitly disowns "per-course traversal scripts" from its own
scope.
2. L43 and L330 assign per-course design to "Tier 2 ChapterDesign briefs" — a tier that has been
deleted (CLAUDE.md Phase 5.5: the 12 empty T2 stubs dropped, the T2 folder gone).
So the course reset rule has a declared non-owner and a *deleted* owner. Independent corroboration:
MV-3's own row carries "Absence: grep agility/course = 0" (VOL2 L552), and my grep -i agility
over Source/ returns 0 (the draft said "comments only" — it is actually a clean zero).
"The player fights a Komodo dragon and a reticulated python at beat four" overstates the
encounter's register. CH_02.md L122 defines CH02_B03 as "the Kelimutu Guardian test — … read the
constriction and strike lanes, step the lane on the tell or attune the breath, and the guardian
withdraws, opening the source — a permitted guardian-test, never a hunt," scored 30/45/25
*puzzle-forward* (L100). It is a genuine combat-mode beat (L64: "Combat is a real playable spine,
not flight-by-design"), so the finding's actual point — a tell-reading, lane-stepping encounter at
beat 4 with no prior movement teaching — holds. Change "fights" to "is tested by".
Everything else in SM64-7 verified exactly: beat order B01(seq 1, hook) → B11(seq 2, discovery) →
B02(seq 3, puzzle, mount_inerie_cone_country) → B03(seq 4, combat); the agility course hosts at
mount_inerie_cone_country (L88) and is visited pre-combat; and CH02_B04 is a *learning* beat that
teaches vril recharge, not movement (L126) — so "no beat is assigned to teaching movement" is
precise, not sloppy.
The draft renders CC-3 as "blends back to the gameplay camera's live pose." The doc's *heading*
reads "CC-3 EXIT RETURNS TO THE LIVE POSE"; its *body* reads "blends back to the gameplay camera's
CURRENT pose" (L456). Heading and body merged into one quotation; substance identical. Also the
camera-boom block is L105-111, not L103-111.
---
I verified the scope split the draft relies on, and it holds: rank 19 is "[josh-brief·S] The
presentation doctrine (camera/cut/transition covers) — precedes CN5.2 template bake"
(PRE_5090_BUILD_PLAN.md L96), and register #29 scopes to "camera continuity, cut policy, diegetic
transition covers" (L338-339). Gameplay-camera occlusion / enclosed-space / yaw authority is a
genuinely different surface, so MISSING survives.
The contest is the *recommendation*. Folding a §GAMEPLAY CAMERA clause set into
PRESENTATION_DOCTRINE.md loads a josh-brief·S item that is gating a template bake with a
materially larger surface. Alternative: land SM64-1's clauses on rank 20 (T1_UI_UX_Spec,
verified a 35-byte stub, spec-doc·M) — which is already where the draft routes SM64-6 (locomotion)
and SM64-8 (onboarding), and which is where its own closing paragraph says the compression lives.
My read: rank 20 hosts all three cleanly and keeps rank 19 small and on-deadline. But the draft's
one-authority argument (the cinematic and gameplay cameras governed by one doc, so CN5.2 reads a
single source) is real, and I am not overriding a reuse-first call on a judgement difference.
Director's call: rank 19 fold-and-slip vs rank 20 consolidation.
DESIGN_GAP_REGISTER.md L425 lists "camera-doctrine (sm64) · retry-failure-latency (sm64; adjacent
D-DEFEAT-AXIS)" under "The new aspect rows… each is a row the QA program's aspect_id join can
now bind." So SM64-1 and SM64-9 are aspects this lens was *commissioned* to produce — not dupes.
Separately, cell 13 ("Defeat axis + retry latency — the Hades economy") is CLAIMED-QUEUED (P1-C)
to hades-death-run-realm-identity (L413). The draft declares this overlap and splits it sensibly
(per-attempt execution-surface latency vs the run economy). The residual risk is ownership of
RecordRetryLatency: two lenses can land the same diagnostic twice. **Recommend the director pin
the split in the register before the Hades lens runs.**
---
No recommendation is care-inflated or defanged relative to the R-17+ bar.
tutorial space, no prompts, no register change," explicitly preserving Ch 2's survival-horror
opener, and it refuses to touch the Prologue's ruled power-ceiling narrative. A timid draft would
have proposed softening the opener to accommodate teaching; this one restructured teach *order*
instead.
2-minute countdown and the rescuer role are quarantined as SM64-D3 DIVERGENT-BY-DESIGN, and the
findings scope only to course/pattern retry. Correct: consequence and weight are preserved.
are a shipping floor on an R-17 action game, and two in-repo analyses independently flag a real
flash risk. The draft ran this check itself and concluded it survives "in the opposite direction";
I concur.
sanitizing violence.
---
Game repo (C:\dev\Humanity\Humanity)
bDoCollisionTest / ProbeSize / CameraLagSpeed / bEnableCameraLag = 0 across Source/.MaxAcceleration / BrakingDeceleration / GroundFriction / GravityScale = 0 — *strongerthan the draft's "seven lines" description*; UE defaults are the shipped model by omission.
JumpZVelocity=450 / AirControl=0.35 L91-92; MantleReach=90 / MantleMaxHeight=130 / MantleMinHeight=25 L371-373; DeathFadeSeconds=0.55 /
RespawnHoldSeconds=0.9 L394-395; DodgeStaminaCost=20 / ParryStaminaCost=12.
climb hit in Source/ is metaphorical (difficulty/mastery "climbs").agility = 0 in Source/. HumanityChainMeter.cpp exists. Targeting "Never snaps" + RInterpToat L273-277.
Checkpoint in Source/ is now 1 hit (a "recharge-as-checkpoint well" comment in HumanityWorldDemandAttributeSet.h L64), not the brief's 0 — no checkpoint *system* exists, so
SM64-9's substance is unaffected.
Canon repo (C:\dev\humanity-forgotten)
CAVE_BEAR = 0; `grep -F 'CAVE\_BEAR' = T1_Story_Spine [ACTIVE v1.0].md` L50 with the full row
`{boss\_id: CAVE\_BEAR, type: TUTORIAL\_FORCED\_RUN, mechanic: "must-run combat tutorial",
canonical\_outcome: "no combat resolution; flight is the lesson"}; bear` in CH_02.md = 0
against a polo control of 47. This is the a-search-that-cannot-match class caught and
self-corrected in-flight — exemplary method discipline, worth preserving as the wave's exhibit.
bands for exactly three P2-gating surfaces), L360, L362, L386 (RB-8 traversal BUILD-NOW),
L62-66 (pixel strips visual-only, timing disarmed) — all verbatim.
"zero-penalty constraints" and Puzzle's "12 forest pods… without stopping"; the biome roster's
"architecture vertical" / "arboreal three-dimensional canopy" / "vertical cliff-face" rows.
mode_variety_check 79/79 and dominant_combat_mode 79/79 (CSV read) — the CLAUDE.md"0/79" note is indeed stale, as the draft says.
route_leg(step_m=50.0) L197, the merapi_slopes site row "agility-pod terrace-proportion variant 120x120" L120, and the
sculpt figure "merapi_slopes 18.4°→0.0°" L820-821 — all verbatim. (merapi_slopes is tagged
Ch5 in the tool table, still inside the slice, so slice-relevance holds.)
CH_PROLOGUE L19/L65/L86/L91/L99 — all verbatim.
MV-8's row independently confirms the header's stamina correction ("Input_SprintStart raises
MaxWalkSpeed with no Stamina cost").
harness/emit_chapter_checklist.py, FACTORY_CONTRACT FR-062 L176 (a real per-chapter obligation rider), the parry/chain hook, PRESENTATION_DOCTRINE.md (945 lines,
CC-3 at L456), ROSTER_PROPOSALS.md L373 accessibility floor, DECISIONS_PENDING_JOSH L524-536
(J-1 hold-on default / 2-minute countdown / J-3 THE RESCUER), FORKB brief L472 + L540.
T1_UI_UX_Spec = 35-byte title-only stub; T1_Audio_Spec = 34 bytes. Register #22's"byte-level EMPTY stubs" claim is accurate.
Internal consistency: counts reconcile — 4 MISSING + 10 WEAKER + 1 DESIGNED-UNBUILT = 15;
priority 6 HIGH + 7 MEDIUM + 2 LOW = 15.
---
Publish after applying A1-A6. A1 (the T-SEQ mechanism) is the only substantive rewrite and it
*improves* the finding — the program doc's own "traversal is invisible to it by construction" is the
strongest sentence available to this lens and belongs in SM64-2. A2 is a notation fix on a finding
whose numbers all reproduce. A3 is a line number. A4 and A5 sharpen. C1 and C2 are routing
judgements for the director, not defects.
The draft's headline compression — that five of six spec findings are one first-ninety-minutes UX
pass that #26 already bundles and the ranked 30 never promoted — is verified true against the
ranked 30 (L60-108) and #26 (L1925), and is the correct call to surface.