Gap audit 2026-07-29 - lane animation-cinematics (12 findings)
Verbatim from workflow wf_d0ca605f-891. Each finding carries either its own register entry id or
the cross-lane merge that absorbed it. This file is the evidence of record the compact register
entries cite.
animation-cinematics#1 [CRITICAL] merged into GAP-140 - No cinematic bill of materials: 450 scenes exist, nothing counts, sizes, tiers, or budgets them
Vision rules. ROADMAP_POST_5090_TO_SHIP.md §P2.7 "Movie cinematics" exit = "the slice's cinematic events render as real rendered cinematics over the scene-anchor runtime; MRQ dailies read by critics and sent to Josh". T99_Translation_Cinematic §3 routes 7 scene categories (Canonical Set Pieces, Boss Encounter Cinematics, Special Asset Class bookends…) through a director-in-loop vs autonomous two-track workflow. The AAAAA/box-office bar makes cinematic volume a first-class production workload.
What exists (verified). build/spine_rows/*/scenes.csv = 450 data rows across 79 nodes (5-8/node; census: per_chapter_cutscene 210 · boss_encounter_resolution 91 · canonical_set_piece 38 · branch_decision_point 32 · boss_encounter_intro 29 · ambient_cinematic 21 · phase_transition 15 · epilogue 5 · prologue 4 · architect_appearance 3 · convergence_node 2), 8 columns, NONE of them duration, shot count, complexity, or production tier. T0_Scene_Spec_Registry = 16 rows only (chapters 55/58/76/77/PROLOGUE/EPILOGUE — zero slice rows except the Prologue), cinematic_status='pending' 16/16, scene_spec_ref 0/16, mesh_refs '[]' 16/16. QT-17's content-budget vector (PRE_5090_BUILD_PLAN_VOL2.md §11.5.5) counts sites/beats/bosses/forks/minigames/weaves/lenses/personas/threads/citations and NOT scenes. ZERO-POSITIVE-CONTROL: grep -riE "cinematics per chapter|scenes per chapter|cinematic (count|budget|minutes|runtime)|minutes of cinematic|cutscene (count|budget)" over docs/ = 0 hits while "per chapter" returns 123 files; grep -i "duration|minutes|shot count|seconds" over T99_Translation_Cinematic.md = 0 hits while the same file returns 9 "facial" hits.
Delta. The lane has a pipeline procedure (T99_Translation_Cinematic §5's 11-step per-region checklist) and zero arithmetic. Nobody can say how many cinematics Ch 7 needs, how many shots or seconds each is, which get the director-in-loop track vs autonomous lock, or what the 79-node total costs. Rank 6 populates the region-page scene index (scene_type/participant_refs/beat_ref) — it does not add a count, a duration, a shot estimate, or a production-tier column, and T0_Scene_Spec_Registry's 434 missing rows are outside its stated scope.
Blocking. P2.7 cannot declare an exit it cannot measure, and P5 — the 60-plus-chapter factory (ROADMAP_POST_5090_TO_SHIP.md lines 471-562) — has ZERO cinematic/cutscene/animation mentions against 27 "chapter" mentions (positive-controlled), so the factory that builds the remaining 65 chapters carries no cinematic lane at all. Hits first at the Ch 2-13 slice build, now.
Proposed home. A cinematic BOM pass minting scene_shot_count / scene_duration_class / production_track (director_in_loop|autonomous) / cinematic_tier on T0_Scene_Spec_Registry, plus the 434-row scatter from build/spine_rows; a new QT-17 census dimension for scenes; a P5-factory per-chapter cinematic lane row beside the existing player-strings / clue / non-kill / ambient-SFX lanes.
animation-cinematics#2 [CRITICAL] merged into GAP-140 - Animation has no data home anywhere: 0 of 1,415 registry columns, and the RULED twelfth DR-2 class was never landed
Vision rules. STACK_CONFLICT_ADJUDICATIONS_2026-07-29.md C-13 RULES it: "ANIMATION's Animation / montage row (keyed ability_id + presentation_tier_ref) takes DR-2 ordinal 12", with PC-5 ruled canon-row-authoritative. PIPE_ANIMATION_2026-07-29.md §3 states the requirement as "A twelfth §2 row… drop path /Game/Animations/<class>/AM_<ability_id> | path takeover | tooth = the PC-5 notify-vs-row check".
What exists (verified). docs/ASSET_DROPIN_CONTRACT.md §2 carries ELEVEN asset-class rows (Named-NPC skeletal, boss/creature mesh, weapon mesh, vril-site mesh, material, SFX, VO, music, VFX, Cinematic scene, HUD art skin). ZERO-POSITIVE-CONTROL: grep -ci "animation\|montage" on that file = 0, while grep -n "^| " on the same file returns the 11 class rows and 7 rung rows. Registry-wide: a scan of all 62 registry CSVs / 1,415 columns for anim|montage|mocap|keyframe|lip|viseme|facial|shot|camera|perform returns 2 hits, both duration_class (ability + status-effect duration, unrelated); the same scan for mesh|generation returns 65 columns. Game side: 309 uassets in Content/, exactly ONE animation asset (Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset), no Cinematics dir, zero AnimMontages; HumanityAttackLibrary.h:66-72 carries WindupSeconds/ActiveSeconds/RecoverySeconds as bare floats with no montage or notify field.
Delta. A ruling exists with no landing vehicle. C-13's own consumers list names the routing table, the install manifest, the night list, the firewall table, the scheduler spec and THE LICENCE SCHEMA COMMIT — the DR-2 twelfth row is not among them, so nothing is queued to write it. Consequence: every animation asset request, every dispatch query, and every write-back has no id, no path convention, no status column, and no resolver key on disk.
Blocking. The 5090 animation lane's autonomy contract (PIPE_ANIMATION §4) dispatches by "a script emits rows where generation_status='pending' on animation-bearing ids" — there are no animation-bearing ids. Blocks the first overnight anim batch and the first montage import; must land before the DR-2 clause commit / Batch 0 or it retrofits across twelve registries.
Proposed home. ASSET_DROPIN_CONTRACT.md §2 twelfth row + the generation_* / asset_licence_ref column family on the ability, weapon, character, creature, boss and scene registries via Batch 0 (one fidelity re-emit), with C-13 cited as its ratifying ruling.
animation-cinematics#3 [MAJOR] GAP-199 - The ruled 248/372 sizing is the VFX element×tier space; the ANIMATION variant BOM is uncounted and undersized by up to ~6×
Vision rules. Josh RULED OPTION (A) FULL PER-TIER VARIANTS, band-collapse OVERRULED (DECISIONS_PENDING_JOSH.md fourteenth sitting; "every spell and ability and movement needs to be beautiful and fluid art" at full strength). COMBAT_PROGRAM_ADDENDUM.md §5 defines the variant unit as "each ability family… per-mastery-TIER presentation variants (animation refinement, VFX density/control, audio confidence, follow-through polish)" PLUS "weapon moveset fluidity scales the same way via the per-weapon mastery track". C-13 sets the animation resolver key = (ability_id, presentation_tier_ref).
What exists (verified). The sized number is element-keyed: DESIGN_GAP_REGISTER.md:1236 "the live key space is 31 elements by 8 live tier values = 248, with 372 the clamp ceiling" — verified against the live registry (T0_Ability_Tree_Registry element = exactly 31 distinct values incl. hybrids and Ether-Crown). ASSET_DROPIN_CONTRACT.md:296 sizes the contract on that number. The animation axis is a different, larger space and is uncounted: 185 ability rows, ability_class 53 distinct, T0_Weapon_Registry 72 rows with weapon_subclass 11 distinct → 185×8 = 1,480 / 424 / 576 / 88 depending on the grain, and no doc picks the grain. presentation_tier_ref is declared and EMPTY on both rails: 0/185 abilities, 0/72 weapons (positive control: tier_numerical 185/185, cast_pattern 185/185 in the same file). PIPE_ANIMATION_2026-07-29.md's honest-supply statement calls 248/372 "the presentation ladder keys" that stay hand-tuned UE craft — folding the animation axis into the VFX count.
Delta. The DR-2 contract, the 5090 workload plan, and the animation dossier all cite one number that only covers per-element effect systems. The per-ability and per-weapon-moveset animation variant sets the ruling actually demands have never been enumerated, so the largest hand-craft workload in the project is sized by the wrong denominator.
Blocking. Rank 13's ability data pass writes ONE presentation_tier_ref per row — a single column cannot express a per-tier variant SET, so rank 13 will close green having populated the rail without creating the BOM. Blocks the DR-2 clause commit's sizing claim and the 5090 variant-volume schedule.
Proposed home. A variant-key manifest (one row per authored (canon_id, tier) key, per the ruling's "the live variant key must be AUTHORED, never synthesized") with separate ANIM and VFX axes and a declared family grain; register entry 97 amended with the second arithmetic; ASSET_DROPIN_CONTRACT.md:296 corrected to name which axis 248/372 sizes.
animation-cinematics#4 [MAJOR] GAP-200 - Mocap-vs-keyframe routing has no owner, no ruling, and no column — the Animation Pipeline Contract is a named deferral to nobody
Vision rules. T99_Translation_Cinematic §4 item 9 records the deferral and its owner verbatim: "Animation Pipeline Contract deferral | Before any cinematic participant needs body-performance content beyond retargeted stock motion | Whoever scopes the deferred Animation Pipeline Contract | Contract §1.2 and §5.11 both defer animation-content generation (mocap/keyframe/generative) out of scope here". Item 2 defers "Bespoke hero-beat performance capture (facial/body)" to owner "Production/animation". PIPE_ANIMATION's own supply statement: generation CANNOT supply hero beats or ladder keys — those "stay hand-tuned UE craft".
What exists (verified). Two unowned seats and one research dossier. PIPE_ANIMATION_2026-07-29.md is explicitly pre-canon ("Nothing here is repo canon until the director lands it") and routes by LANE CLASS (unattended bulk traversal/idle/ambient · attended for care-gated ids, hero beats, ladder keys), never per item. No registry column routes an id to generated / studio-mocap / hand-key / Cascadeur-assisted (the 0-of-1,415 scan above). The ranked queue's 30 items + R-31/R-32 contain no animation item; the animation lane appears in the plan only as C-3/C-4 install staging ("ARDY + Kimodo BOTH staged with primacy benchmark-decided", ledger 2026-07-29al).
Delta. The lane that decides HOW every motion asset is made — and therefore what it costs and who touches it — is a deferral pointing at a role that does not exist, plus a dossier with no landing rank. The routing decision also has no per-item expression, so even once ruled it cannot be recorded against an id.
Blocking. Blocks CN5.4 participant body-animation and every Canonical Set Piece scene ("before any cinematic participant needs body-performance content beyond retargeted stock motion"), and blocks the benchmark-day A/B question 3 ("does Bones-Rigplay-trained output produce anything usable for stylized combat motion") from having a decision surface to write into. Hits at the first slice cinematic and at benchmark day.
Proposed home. Land PIPE_ANIMATION as a T1/T99 Animation Pipeline Contract with an explicit per-item routing enum (animation_source: stock_retarget | generated | studio_mocap | hand_key | cascadeur_assisted) on the twelfth DR-2 class's column family; assign the owner seat in the ranked queue.
animation-cinematics#5 [MAJOR] GAP-201 - Facial and lipsync: the mechanism is named, the cast count and the data home are absent
Vision rules. T99_Translation_Cinematic Step 2 makes it a solved lever and says so: "Facial performance for dialogue beats drives from MetaHuman Animator's audio-driven mode — feed a SoundWave, get facial animation", with "dialogue-beat participants additionally wired to the audio-driven facial pipeline". ROADMAP_POST_5090 §P2.7 exit: "the audio-driven facial mode drives dialogue beats against real voice tracks". §4 item 2 carves out bespoke non-audio-driven hero capture as still-open.
What exists (verified). No facial data home and no count. T0_Voice_Registry = 23 rows / 19 cols (voice_id, voice_substrate, voice_clone_status, recurrence_anchors, cinematic_anchor_array, elevenlabs_voice_id_ref, ue_sound_asset_path…) with no facial, viseme, lipsync, line-count or duration column — ZERO-POSITIVE-CONTROL: the same regex (lip|facial|anim|emot|perform|line|duration|length) matched hard_line_relevance in that file, so the scan was live. T0_Character_Index = 164 rows / 33 cols with mesh_id_ref 0/164, ue_asset_path 0/164, and no facial/rig/metahuman column (only mesh_pipeline_type, itself 0/164). Per-line dialogue substrate absent: Vol2 CN-4's absence-proof "no DialogueLineRow.h in game Source, per-line text substrate unbuilt", and build/spine_rows/CH_NN/ carries beats·boss·clues·fork_options·forks·scenes·sites·sq — no dialogue file. CN5.8/CN5.9 build ONE MetaHuman plus a coefficient-sampling batch harness against that 164-row cast.
Delta. Nothing states how many characters need a facial-capable rig, how many dialogue lines need lipsync, or which scenes are facial-bearing at all — and 66 of the 450 scene rows carry anchor_type dialogue_initiation, so the requirement is already countable and uncounted. The bespoke-hero-capture case has an owner string with no seat behind it.
Blocking. Blocks CN-4 dialogue scene presentation and P2.7's stated exit; also blocks the MetaHuman batch throughput spike (§4 item 1) from having a roster size to test against. Epic sunsets the browser MetaHuman Creator 2026-11-05 (§7 CN5.8), which puts a hard date on the rig-count decision.
Proposed home. A facial-bearing flag + rig class on T0_Character_Index and a facial_performance_mode + line-count rail on T0_Voice_Registry, sized off the 66 dialogue_initiation scene rows; the bespoke hero-beat capture seat named in the ranked queue.
animation-cinematics#6 [MAJOR] GAP-202 - CN5.2 — the camera-language deliverable — is the one CN item the live plan never mentions; the shot grammar has no doc, no script, no rank
Vision rules. PRESENTATION_DOCTRINE.md §1 draws its own boundary: "TD_CINE §3 Step 4 states plainly that camera blocking, timing, and cut rhythm are not in the scene schema and come from the scene_type template — this doc is the input to those templates, not a competing schema". §6 Consumers: "T99_Cinematic_Shot_Grammar (unauthored) — inherits §3 as its cut-rhythm section". PRE_5090_BUILD_PLAN.md §7 CN5.2 = "T99_Cinematic_Shot_Grammar (11 scene_types) + 11 LS_TPL_* templates via build_shot_templates.py" with "Camera blocking/cut rhythm live in the template, NOT the schema".
What exists (verified). The doctrine ruled the CUT POLICY and continuity (CC-1..CC-10, four treatments, CP-0 precedence) and stopped exactly where shot language begins. The successor exists nowhere. ZERO-POSITIVE-CONTROL (three ways): (1) find _source -iname "T99*" returns 10 T99 docs, none named Cinematic_Shot_Grammar, and the name appears only in 4 planning docs as a consumer; (2) PRE_5090_BUILD_PLAN_VOL2.md — the live spec home for the AV layer per Vol1's own pointer "§7 WS-5 + §8 WS-6 → Vol2 §7" — references CN5.1 ×2, CN5.3 ×4, CN5.4 ×1, CN5.5 ×4, CN5.6 ×14, CN5.7 ×2, CN5.8 ×3, CN5.9 ×3, and CN5.2 ZERO times; (3) build_shot_templates.py is absent from the game repo's Tools/ (positive control: 40+ scripts present there, including import_audio_assets.py and the whole terrain/staging chain). Meanwhile 32 branch_decision_point scene rows already carry an off-enum scene_type with no template (PRESENTATION_DOCTRINE §3.5/§5).
Delta. Rank 19 delivered the brief it promised ("precedes CN5.2 template bake") and CN5.2 then fell out of the live plan when Vol2 took over the AV layer. So shot size, lens language, coverage, blocking, eyelines, and camera movement grammar — the actual vocabulary a box-office bar is judged on — have no home, no owner, and no rank, while the templates they feed are the only place cut rhythm is allowed to live.
Blocking. Blocks the 11 LS_TPL_* template bake, and therefore CN5.3 assembly and every per-region cinematic batch (T99_Translation_Cinematic §5 step 4: "confirm every referenced scene_type already has an authored template"). Hits the moment the first slice scene is assembled rather than played as a greybox card.
Proposed home. Author T99_Cinematic_Shot_Grammar as the camera-language sibling of the ruled cut policy (inheriting PRESENTATION_DOCTRINE §3 verbatim), and restore CN5.2 + build_shot_templates.py as a numbered rank with the 32 off-enum rows resolved in the same pass.
animation-cinematics#7 [MAJOR] GAP-203 - The QA belt has zero animation or cinematic teeth, and the montage tooth's id collides with an existing harness
Vision rules. The standing visual-verification directive: no play-quality claim ships without its critic-read capture. PIPE_ANIMATION §3 makes it explicit for this lane — "QA gate: QT-5 (notify tolerance) + QT-6 (readability at 5 presets) + an image/video-critic capture read… no animation quality claim ships without a capture behind it". C-13 requires "the QT-5 divergence check ships as a must-not-fire fixture before the first montage imports".
What exists (verified). ZERO-POSITIVE-CONTROL on the harness roster: PRE_5090_BUILD_PLAN_VOL2.md §11.5.8's QT-1..22 table (lines 1452-1478) contains "anim|cinemat|scene" 0 times against "harness" 8 times. The id is already taken: Vol2 line 1460 defines QT-5 as "Combat-invariant harness (→ QA-3)" over DT_BossEncounter/DT_BossPhase — so PIPE_ANIMATION §3, C-13, and DESIGN_GAP_REGISTER #98 all assign the montage notify-divergence check to an occupied id. QA_WATCHING_PROGRAM.md RB-9 states "Presentation — HUD BUILD-NOW · cinematic PARKED · audio SKELETON-NOW" and §4.4 that "the cinematic rubric is PARKED-UNARMED behind P2.7"; there is no animation rubric at all (grep -ci "animation" on that file = 2, both the bug-family enum token at lines 178/184, against "audio" = 5 with a real RB row).
Delta. Nothing in the 22-harness belt or the 14-rubric board can catch a T-pose, a foot-slide, a notify/row disagreement, a camera pop across a scene boundary, or a facial track that never fires — the exact defects an award-bar claim rests on. And the one tooth that was ruled has no id of its own, so it will either overwrite the combat-invariant harness or be built twice.
Blocking. C-13's precondition ("before the first montage imports") is already reachable — the game has PlayAnimation calls on boss and enemy today (HumanityBossCharacter.cpp:302, HumanityEnemyCharacter.cpp:883) with zero notify binding. Blocks any honest animation-quality report and the SLICE-PRESENTATION wave's verified-by clause.
Proposed home. Mint a distinct QT id for the montage notify-divergence tooth (must-not-fire fixture now, zero montages bound) plus an animation/cinematic playback harness; add an animation rubric row to QA_WATCHING_PROGRAM's RB family beside RB-9's parked cinematic rubric; correct the QT-5 references in PIPE_ANIMATION §3, C-13 and register entry 98.
animation-cinematics#8 [MAJOR] GAP-204 - The animation/VFX CRAFT law is a HIGH register finding that no rank owns — the lane has no craft doctrine while audio got one
Vision rules. DESIGN_GAP_REGISTER.md:1253-1262 (entry 99, spec-doc; HIGH): "Land commit-versus-cancel policy, root-motion policy, a hit-reaction taxonomy, follow-through and settle, and the per-tier fluidity vocabulary the DR-2 prompt composer must quote — under the existing T1_Ability_Tree anchor". Josh's nod recorded in COMBAT_PROGRAM_ADDENDUM.md §5 (mastery-tier animation fluidity as a hard 5090 requirement).
What exists (verified). Findings about the absence, and no law. Verified today: _source/01_Tier_1_Foundation/T1_Combat_System_Spec [ACTIVE v1.0].md (666 lines, 80 KB — the T1 authority owning Block/Parry/Dodge and the weapon frameworks) contains animation ×0 and VFX ×0 against a parry ×14 POSITIVE CONTROL. Corpus-wide the craft terms (root motion | cancel window | hit reaction | follow-through | commit window | AnimNotify) return 9 doc files — the lens draft, its critic, the register, PIPE_ANIMATION, DECISIONS, COMBAT_PROGRAM_ADDENDUM and two spine files' incidental prose — i.e. the finding and the dossier, never a rule; POSITIVE CONTROL: "presentation ladder" returns 24 files. What exists instead is budget doctrine wearing a craft title (ENGINE_OPTIMIZATION_DOCTRINE §5.3/§5.4). Rank 20 authors T1_UI_UX_Spec + T1_Audio_Spec and NOT an animation craft home.
Delta. The audio lane's equivalent mandate produced docs/proposals/MUSIC_COMPOSITION_DOCTRINE.md (155 KB, authored 2026-07-29, ledger 28al: "authored BEFORE any hero-theme work"). The animation lane has no counterpart, so the DR-2 prompt composer and every hand-authoring pass have no craft vocabulary to quote, and the per-tier "fluidity" the ladder sells is undefined.
Blocking. Blocks the DR-2 prompt composer's input (a craft doctrine written after 200 montages exist is a retrofit — the lens's own surviving self-refutation) and the CF-4/CF-5 W-PRES wave, whose verified-by asks an image critic to confirm "≥3 visually-distinct cast primitives" against no declared standard.
Proposed home. A craft-law section under the T1_Ability_Tree presentation-ladder anchor (entry 99's ruled home), paired one-to-one with ENGINE_OPTIMIZATION_DOCTRINE §5.4 so each craft rule names its budget rule; added to the ranked queue beside rank 20.
animation-cinematics#9 [MAJOR] GAP-205 - The lane's quality bar is unrecorded and no comparator lens has ever audited cinematic direction
Vision rules. Josh's box-office-award bar for cinematics (the lane mandate). Its sibling in the audio lane was recorded the same week and is fully citable: PRE_5090_BUILD_PLAN.md ledger 2026-07-29al records "the SCORE DIRECTION… (the 30-year bar — SM64/Zelda/Skyrim/Halo/Pokemon/Animal-Crossing/DK lineage; melody-first + the hummability test)" and it became MUSIC_COMPOSITION_DOCTRINE §0. COMPARATOR_LENS_PROGRAM.md:13 makes the roster itself a gap surface: "An aspect of the game no lens has ever audited is an" uncovered cell.
What exists (verified). ZERO-POSITIVE-CONTROL on the bar: grep -riE "box.?office|blockbuster|academy.?award|oscar|pixar|dreamworks|film.quality|movie.quality|cinema.quality|feature.film" over docs/ (excluding archive) returns ONE hit and it is the PixArt-Σ model name in PIPE_ART; the same search style returns "30-year bar" in 2 live docs. ZERO on the lens coverage: DESIGN_GAP_REGISTER.md §v1.2's live claim board carries 24 cells + ~30 new aspect rows + R-A1..R-A20, of which the nearest are cell 11 "Presentation ladder (anim/VFX craft)" (CLAIMED-RUN — combat ability presentation) and the aspect row "camera-doctrine (sm64)" (gameplay camera) — there is NO cell or aspect row for cutscene direction, staging, blocking, or performance capture. The god-of-war lens ran (4 survivors, register v1.1 entries 20-45) but no LENS_GOW file exists in docs/pipeline_review/ (LENS_BG3 does) and no register entry carries a cinematic-staging finding; PRESENTATION_DOCTRINE Fork A cites "the GoW lens" as a name, not a run audit.
Delta. The one lane explicitly held to a film bar has neither the bar written down nor a single title×aspect audit of the craft it is judged against — while the audio lane got both in the same 48 hours. Every future cinematic decision is therefore made against an unrecorded standard.
Blocking. Blocks the MARKETING_WEB_PROGRAM go-live, which Josh ruled fires at "real cinematic captures" (DECISIONS fourteenth sitting item 5) — the captures have no quality standard to clear. Also leaves the P3 surpass-claim contract (RB-11) with no cinematic band to claim against.
Proposed home. Record the bar in the ledger and open a CINEMATIC_DIRECTION_DOCTRINE as the sibling of MUSIC_COMPOSITION_DOCTRINE; add a cutscene-direction/staging/performance-capture cell to the ASPECT×LENS claim board with its claiming lens (GoW one-shot camera · TLOU2 performance · RDR2 staging) named.
animation-cinematics#10 [MAJOR] merged into GAP-140 - chapter_bridging_cinematic: the ruled transition doctrine's designated story home has zero rows across 79 nodes and no rank
Vision rules. Fork C RULED TIERED TRAVERSAL (PRESENTATION_DOCTRINE §0.C / §4): "transitions are playable navigable segments under the COMPRESSION RULE… all 78 seams type T0-T3 on one SeamlessTravel mechanism", and DT-3 sends the story load to the authored bridging scene: quoted in FORKC_ANALYSIS_CANON_TRAVEL_2026-07-27.md:181 — "Story load belongs to the authored bridging scene (chapter_bridging_cinematic)".
What exists (verified). Zero rows, and the zero is already positive-controlled at source: FORKC_ANALYSIS_CANON_TRAVEL_2026-07-27.md:179 "grep -rn \"chapter_bridging_cinematic\" build/spine_rows/ → zero across all 79 nodes' scenes.csv" and :548 records the control ("the grep itself was verified against boss_encounter_resolution / per_chapter_cutscene, which match"); FORKC_TRANSITIONS_BRIEF:45 repeats it ("positive control PASSED: 11 real scene_type values arc-wide… chapter_bridging_cinematic is not among them"). Independently re-verified in this audit: the 450-row scene_type census contains 11 values and chapter_bridging_cinematic is not one of them. The 78-seam typing pass appears in PRE_5090_BUILD_PLAN only inside the ruling record (lines 666, 1671-1672), never as a numbered rank; PRESENTATION_DOCTRINE §5 routes it away as "a schema and corpus call for the spine/contract owner". It is not a DESIGN_GAP_REGISTER entry (the register does not appear in a corpus-wide grep for the token).
Delta. A ruled doctrine names a data class as the home for the story load at 78 chapter crossings; the class has 0 rows, no per-seam BOM, no rank, and no owner. Rank 21 covers between-site (intra-chapter) traversal, not the 78 chapter-to-chapter seams.
Blocking. Blocks the seam-typing pass and the transition-map plumbing that Fork C's ruling depends on, and blocks the CH_04→CH_05 prototype seam from being authored as anything but a mechanism test. Hits inside the slice — Ch 2→3→4→5 are four of the 78.
Proposed home. A seam-typing + bridging-scene pass writing chapter_bridging_cinematic rows (78 seams typed T0-T3, each with its bridging scene or a declared none-by-design) into build/spine_rows + T0_Scene_Spec_Registry; entered as a numbered rank with the FORKC brief as its authority.
animation-cinematics#11 [MINOR] GAP-206 - The cinematic assembly toolchain is entirely absent while its sibling lanes shipped, and the scene-row count has drifted 439→450 ungated
Vision rules. PRE_5090_BUILD_PLAN.md §7 marks the whole chain BUILD-NOW and ungated — CN5.1 extract_spine_scene_rows.py, CN5.2 build_shot_templates.py, CN5.3 assemble_scene_sequence.py, CN5.7 check_scene_spec.py + render_mrq_dailies.py — with "the entire Sequencer chain ungated; only rendered assets gated", and §13 names retarget_participants.py for the mocap/body-animation library.
What exists (verified). ZERO-POSITIVE-CONTROL: the game repo's Tools/ holds 40+ scripts (import_audio_assets.py — the audio lane's A6.4 equivalent — plus gen_row_struct.py, the terrain fetch/import/dress chain, five stage_*.py, the QA runners) and ZERO of build_shot_templates.py, assemble_scene_sequence.py, retarget_participants.py, render_mrq_dailies.py, check_scene_spec.py, npz_to_bvh.py, extract_spine_scene_rows.py. Content/ has no Cinematics directory and one animation asset among 309 uassets. Count drift: build/spine_rows carries 450 scene rows today, while "439" is the figure quoted throughout both plan volumes and in Vol2 CN-1 as the imported DT_SceneAnchor row count ("439 imported rows, ledger 2026-07-23c"); no gate checks canon↔engine scene-row parity (the gate roster has no scene check — see the QT-table zero above).
Delta. Every named script in the ungated cinematic chain is absent while the audio and terrain lanes' equivalents shipped, so "the Sequencer chain is ungated" has never been exercised once. And the canon layer has silently moved 11 rows ahead of the engine layer with no tooth to notice — the same silent-divergence class as the chunk_id collapse.
Blocking. Blocks CN-1's greybox scene runtime from being fed by anything but hand work, and blocks the first MRQ daily (the QA directive's canonical cinematic case). The 439/450 drift misreports the workload in every plan that quotes it.
Proposed home. The Tools/ cinematic chain as a numbered rank (extractor → template bake → assembler → check_scene_spec → MRQ dailies), plus a scene-row parity assertion in check_spine_graph.py or a new scene gate, and a corpus-wide correction of the 439 figure to the measured count.
animation-cinematics#12 [MINOR] GAP-207 - DOC_MAP advertises the lane's only ruled doctrine as PENDING JOSH, and Fork A has no ledger row
Vision rules. The anti-orphan doctrine: every artifact needs a consumer AND an accurate DOC_MAP row; a doc is not done until it is listed there. PRESENTATION_DOCTRINE closes DESIGN_GAP_REGISTER #29 with ALL THREE FORKS RULED (§0 "THE THREE RULINGS — ALL THREE RULED"; Fork A 2026-07-27, Forks B and C the second sitting) and ships its own replacement DOC_MAP row at line 945 for the director to land.
What exists (verified). DOC_MAP.md:362 still carries the superseded row: status "PROPOSAL — 3 FORKS PENDING JOSH (2026-07-27)", the stale summary "Carries three briefed forks for Josh — the one-shot camera (the GoW lens), the defeat cut…, the loading screen's standing", and "three rows on non-schema concepts (player HP 0, the cross-map seam, the travel card)" where the doc's own authored row reads "four on non-schema concepts (the three ruled defeat rows and the typed cross-map seam)" and describes the ruled tiered traversal. The doc also self-reports the second half: §5 "FORK A'S LEDGER ROW… Forks B and C each have clause-level ledger rows and Fork A does not… named here so the asymmetry is recorded rather than discovered later as an unsupported claim."
Delta. The lane's single ruled artifact is advertised to its own consumers as unruled, and its head ruling (the one-shot camera policy that governs every hard cut) rests on an in-conversation line with no ledger row. Both were flagged inside the doc and neither was landed.
Blocking. The CN5.2 template bake and CN-8 cine-rig read DOC_MAP for status; a builder checking it concludes camera policy is still pending Josh and either stalls or re-briefs a settled ruling. Also leaves Fork A's authority unciteable in any later audit.
Proposed home. Replace DOC_MAP.md:362 with the doc's own line-945 row (status RULED, all 3 forks) and write Fork A's clause-level ruling row into docs/spine/DECISIONS_PENDING_JOSH.md alongside Forks B and C.
Generated by harness/site/structure_site.py — the URL path is the repo path. review root