T99_Translation_Cinematic.md

world/translation/T99_Translation_Cinematic.md

T99_Translation_Cinematic

Translation Doc — Cinematic Pipeline. Realizes T1_Build_Pipeline_Contracts §5 (the Cinematic

Scene Build Pipeline Contract) — its seven cinematic generation categories, its

T0_Scene_Spec_Registry schema, and its two-track (canonical-set-piece / scene-driven) assembly

workflow — as concrete Unreal Engine 5.8 Sequencer mechanics: the platform-specific runtime layer

T1_Build_Pipeline_Contracts §0 always deferred. Status: ACTIVE v1.0 (flipped 2026-07-15 — critic-passed with the corpus-corrected worked cases landed, then the contracts-corrections pass: the §0 flip condition). First authored pass —

derived from the adjudicated research chain ahead of any real region build. Several dependent

engineering spikes are still open (§4); nothing below is licensed to be read as settled where a

spike names it. Repo-native home: docs/translation/T99_Translation_Cinematic.md.

T1_Build_Pipeline_Contracts §0 names six initial Translation Docs (UE5, Meshy, AIVA, ElevenLabs,

Cinematic, SFX); this is the third of those six to reach authored state, following

T99_Translation_UE5_Build (the UE5 slot) and T99_Translation_AssetGen (the Meshy slot, under its

own retired-tooling reconciliation). T99_Translation_Terrain also exists in docs/translation/ as

a split off UE5_Build's terrain leg — a bonus split beyond the original six, not itself one of the

roster. AIVA, ElevenLabs, and SFX remain unauthored; this doc's audio seam (§2.6) consumes their

eventual output contract as an opaque reference, never specifying audio tooling itself.

Cited short-form below: UE_BUILD_AUTOMATION = docs/pipeline_review/tech_research/UE_BUILD_AUTOMATION.md

· RESEARCHED_STACK = docs/pipeline_review/RESEARCHED_STACK.md · T1_Region_Page_Template =

_source/01_Tier_1_Foundation/T1_Region_Page_Template [ACTIVE v2.0].md · T1_Build_Pipeline_Contracts

= _source/01_Tier_1_Foundation/T1_Build_Pipeline_Contracts [ACTIVE v1.0].md · SPINE_SCHEMA_v3 =

docs/SPINE_SCHEMA_v3.md · UE5_Build = docs/translation/T99_Translation_UE5_Build.md.

---

1. Scope + authority

This doc is the runtime realization layer under T1_Build_Pipeline_Contracts §5 (the Cinematic

Scene Build Pipeline Contract) — it turns the seven-category cinematic roster (§5.2), the

T0_Scene_Spec_Registry schema (§5.5), and the two-track assembly workflow (§5.4) into concrete

Sequencer APIs, seams, and per-step artifacts. It does not carry canonical authority of its own.

Authority hierarchy, per Contracts §0: subordinate to the CVD on world canon; subordinate to

T1_Build_Pipeline_Contracts on foreign-key mapping, required columns, and state-machine behavior

— this doc never contradicts those, it only supplies mechanism; subordinate to

T1_Region_Page_Template on the page-side input contract this doc consumes (the Machine Blocks'

Scene index, Section 13). Where the Contract is silent on platform-specific runtime-parameter

inference (Cinematic Sequencer scene direction inference, per Contracts §0's own naming), this doc

owns the inference layer [SRC: T1_Build_Pipeline_Contracts §0].

Versioning discipline it inherits: identical to UE5_Build's — Translation Docs version per

platform update; the Pipeline Contract surface stays stable while the platform-specific inference

layer iterates as build experience accumulates — "iterate as build experience accumulates" is the

governing posture, not a one-shot lock [SRC: T1_Build_Pipeline_Contracts §0].

The reconciliation this doc performs (two items, both translation-layer only — neither edits

the Contract itself):

1. path_bucket vocabulary. Contract §5.5 still enumerates the pre-v3 Decision-2B set —

truly_good, good_enough, evil, convergence_neutral, pre_branch — and Contract §5.11 lists

reconciling that enum as an open item still pending. SPINE_SCHEMA_v3 §1 already ratified the

replacement two-axis vocabulary (TRULY_GOOD, GOOD_ENOUGH, EVIL, UNLOCKED, ALL, with

convergence_neutralALL and pre_branchUNLOCKED) and explicitly calls for the Contract's

own enum to be reconciled "in the SAME commit" as a Contract-side edit — work this doc is not

scoped to perform. This Translation Doc therefore applies the SPINE_SCHEMA_v3 vocabulary as

the operative enum throughout §3 below, on the same "platform volatility absorption" logic

UE5_Build used for its terrain-tool-split reconciliation: the WHAT (path-conditional scene

selection) is unchanged, only the label set has already been superseded at the schema layer the

Contract itself points to once synced [SRC: SPINE_SCHEMA_v3 §1; T1_Build_Pipeline_Contracts

§5.5, §5.11].

2. Region page "Section 13." Contract §5.4, §5.6, and §5.9 repeatedly cite "T8 region page

Section 13" as the page-side home for inline cinematic scene substrate. The CURRENT

T1_Region_Page_Template [ACTIVE v2.0] reorganized after the v3 spine landed: its own Section

13 is now "Quest Framework, All Questline Types," and cinematic scene substrate lives instead

in the Machine Blocks' Scene index (a Derived Index generated from the spine's scene rows

plus the page's own ambient-cinematic additions). The template's own Consumer Loading Patterns

table already states the corrected join point verbatim: "Cinematic (§5): the Scene index +

Section 13" — the Scene index for scene substrate, Section 13 for quest/dialogue dressing

context, not scene rows themselves. This doc reads scene substrate from the Scene index and

treats the Contract's older "Section 13 cinematic scenes" phrasing as superseded by that reorg

— a page-template renumbering the Contract text hasn't caught up to, not a fact this doc invents

[SRC: T1_Region_Page_Template "Machine Blocks", "Consumer Loading Patterns"; T1_Build_Pipeline_

Contracts §5.4, §5.6, §5.9].

Scope boundary against UE5_Build: UE5_Build Step 9 already establishes the base scene-row-

to-Sequencer mapping (scene_anchor_id→asset name/regeneration key, beat_ref→parent-sequence

subsequence slot, scene_type→template selection, anchor_type→trigger-condition class

(corpus-corrected — level/MapName comes from the beat→site join, §3 Step 3),

participant_refs→possessable/spawnable bindings, audio tracks from dialogue SoundWaves + MetaHuman

Animator's audio-driven facial mode, MRQ QA-render as output) and flags thematic_anchor as having

no engine equivalent. This doc does not re-litigate that mapping — it is the deep realization the

mission set out to build: participant resolution against the character/antagonist registries in

full (§3 Step 2), site/level anchoring against World Partition cells in full (§3 Step 3), the

per-track Sequencer assembly mechanism including the Contract's audio-trio expansion and the

two-track director-in-loop-vs-autonomous workflow governance UE5_Build never surfaces (§3 Step 4),

the path-conditional variant mechanism the ending/boss-phase cases exercise concretely (§3 Step 5),

and the realtime-vs-offline delivery legs (§3 Step 6) [SRC: UE5_Build Step 9].

Does not invent canon or schema: every field, column, and enum this doc names is one already

defined by T1_Build_Pipeline_Contracts §5, SPINE_SCHEMA_v3, or T1_Region_Page_Template — this

doc supplies mechanism, never a new FK, column, or numerical fact.

---

2. THE RULED CONSTRAINTS

2.1 Engine version — UE 5.8 pinned

Same pin as every sibling Translation Doc: UE 5.8 confirmed current and terminal for the UE5 line;

re-check every Sequencer/MetaHuman API name against 5.8-era documentation, not older tutorial-era

assumptions — MetaHuman's cloud-to-in-editor migration (5.6+) and the MetaHuman Creator batch/

parametric Python API (5.7, extended 5.8) are the two API surfaces this doc leans on hardest [SRC:

UE_BUILD_AUTOMATION §0, §5.1-5.2; RESEARCHED_STACK Chain 3].

2.2 Claude Code drives NeoStack, schema-bound — the cinematic input contract

Same ruled principle as UE5_Build §2.2, restated for this pipeline's specific input surface: the

seven-column scene row (SPINE_SCHEMA_v3 §3d) plus the region page Machine Blocks' Scene index

plus T0_Scene_Spec_Registry (Contract §5.5) together are the input contract. NeoStack never

composes a shot list from a freehand cinematic brief — every camera/track/timing decision traces to

a named field on one of those three [SRC: RESEARCHED_STACK ADJUDICATED v2; SPINE_SCHEMA_v3 §3d].

2.3 Two seams, not three — PCG's seam does not apply here

UE5_Build's three-seam routing rule (NeoStack / native Python+Remote Control / Epic first-party

MCP) narrows to TWO for cinematic work: Epic's first-party MCP is scoped to PCG graph authoring

specifically [SRC: UE5_Build §2.3] and has no stated role in Sequencer assembly anywhere in the

sources read for this doc.

SeamHandlesExamples in this chain (§3)
NeoStack (interpretive/judgment)canon intent to first-draft shot assembly, authored once per pattern then reused or refinedscene_type shot TEMPLATE authoring, one per the 11 VERBATIM values (Step 4); baseline assembly-intent compose for canonical set piece scenes from a beat's dramatic content (Step 4); director-in-loop refinement iteration on the canonical set piece track (Step 4)
Native Python + Remote Control (bulk/structured, zero judgment)per-row template duplication and population; dependency-state-machine walks; DataTable population; headless MRQ invocationper-scene-row template duplicate + track population once a template exists (Step 4, scene-driven track); the two-track dependency-check walk (Step 4); T0_Scene_Spec_Registry DataTable ingestion (Step 1, reusing UE5_Build Step 2's mechanism); MRQ headless dailies (Step 6)

2.4 Two tracks, not one workflow — the Contract's governing split

Contract §5.4 runs cinematic assembly on two PARALLEL tracks with different human-in-loop

discipline, and every step below inherits the split:

arc, the Ch 76 Two Courts confrontation, Vimana activations) — NeoStack seeds a baseline,

a human director reviews and refines in the UE5 editor Sequencer surface, final assembly locks

only on sign-off. Nine-state machine (`pending → dependencies_check → blocked_on_dependencies →

assembling → assembled → reviewed → accepted / rejected / regeneration_required`) [SRC: T1_

Build_Pipeline_Contracts §5.4.1, §5.7].

the agent assembles from substrate intent and locks scene_spec_ref without a director pass,

proceeding straight to the next queue item; quality and cultural-authenticity review run

BATCH-level, not per-scene. Seven-state machine (`pending → dependencies_check →

blocked_on_dependencies → assembling → complete / rejected / regeneration_required`) [SRC:

T1_Build_Pipeline_Contracts §5.4, §5.7].

Which track a scene row belongs to is a direct function of its scene_type: canonical_set_piece,

architect_appearance, boss_encounter_intro/_phase_transition/_resolution, and convergence_node

route through the director-in-loop track by Contract §5.2's own category definitions; `per_chapter_

cutscene and ambient_cinematic route through the scene-driven track; prologue_cinematic`,

epilogue_cinematic, and chapter_bridging_cinematic (Special Asset Class) carry CVD §17 hard-line

discipline per Contract §5.2 and route through the director-in-loop track on that basis [SRC: T1_

Build_Pipeline_Contracts §5.2].

2.5 Localization-ready strings — same honest flag as UE5_Build

Every player-facing string in a cinematic scene — subtitle/dialogue text above all, plus any UI

overlay text a scene triggers (journal-entry notifications, integrity-meter shifts) — lands in a

string table (FText), never a hard-coded literal, from the first asset built [SRC: T1_Region_Page_

Template §17]. The exact UStringTable/LOCTABLE authoring and gather-commandlet automation

surface was not covered by any source read for this doc and is not confirmed here, identical to

UE5_Build §2.4's flag — treat the FText-column convention as binding and the specific mechanism as

an open item (§4) [SRC: UE5_Build §2.4; T1_Build_Pipeline_Contracts §5.11].

2.6 The audio seam — pending, consumed as opaque refs

The three audio Translation Docs (AIVA/music, ElevenLabs/voice, SFX) are not yet authored. This

chain consumes their eventual outputs — music_cue_id_ref, voice_signature_ref plus per-line

voice track files via dialogue_dataset_ref, and sfx_id_ref_array/sfx_category_array — strictly

as opaque foreign keys whose readiness gates assembly (Contract §5.4's dependency-verification

step), consuming the audio Translation Docs' output contract (pending), per the Contract's own

cross-pipeline linkage framing [SRC: T1_Build_Pipeline_Contracts §5.9]. This doc does not specify

AIVA/ElevenLabs/SFX tooling — that is each pipeline's own Translation Doc, pending. Two of the four

registries these refs resolve against are themselves Contract-flagged as not yet created

(T0_Theme_Registry, T0_Voice_Registry — both "pending" per §5.6/§5.11) — the audio seam is

pending at the registry layer, not only the tooling layer [SRC: T1_Build_Pipeline_Contracts §5.6,

§5.9, §5.11].

---

3. THE CHAIN, STEP BY STEP

Contract §5.2's seven cinematic categories to chain-step index (what this doc realizes, and where):

Contract §5.2 categoryRealized at
Canonical Set PiecesStep 4 (director-in-loop track) + Step 5 (the Ch 77 path-INVARIANT reveal + gloss-coda case)
Architect Appearance ScenesStep 2 (materializing-argument-construct participant resolution) + Step 4
Boss Encounter CinematicsStep 3 (site/boss-marker anchoring) + Step 5 (the Ch 76 Two Courts two-phase dual-dispatch case)
Convergence Node ScenesStep 5, definitionally — path-conditional selection is the category
Per-Chapter CutscenesStep 4 (scene-driven track)
Ambient CinematicsStep 1 (region-page-authored rows) + Step 3 (site anchoring)
Special Asset ClassStep 6 (the realtime-vs-offline delivery question binds hardest at the Prologue/Epilogue bookends)

Step 1 — Scene-row parse and schema reconciliation

seven-column shape `scene_anchor_id | beat_ref | scene_type | path_bucket | anchor_type |

participant_refs | thematic_anchor`, sourced from spine beats plus the page's own ambient-

cinematic additions (the only scene rows a page may author) — plus Section 13 for quest/dialogue

dressing context [SRC: SPINE_SCHEMA_v3 §3d; T1_Region_Page_Template "Machine Blocks", "Consumer

Loading Patterns"].

schema (Contract §5.5) this doc must ultimately populate.

scene_anchor_id ties path-bucket variant rows together (the identical concept in both schemas);

scene_type is the 11-VERBATIM enum, cross-verified identical in both SPINE_SCHEMA_v3 §4 and

Contract §5.5's own enumeration (`canonical_set_piece, architect_appearance, boss_encounter_intro,

boss_encounter_phase_transition, boss_encounter_resolution, convergence_node, per_chapter_

cutscene, ambient_cinematic, prologue_cinematic, epilogue_cinematic, chapter_bridging_cinematic`);

path_bucket re-keys per §1's reconciliation. Three Contract §5.5 fields have **no spine column

at all** — audio_priority_layer, scene_audio_intent, hard_line_relevance — because

SPINE_SCHEMA_v3 §3d explicitly declares them "Cinematic-expanded DOWNSTREAM, not a spine

column": this doc's job, not an omission to chase upstream. Populate them at assembly time (Step

4) from the referenced beat's layers/reveal fields (SPINE_SCHEMA_v3 §3a) plus the scene's

own scene_type/thematic_anchor. hard_line_relevance is the most mechanically inferable of

the three: a beat's reveal: HELD(reason) state already tracks the same reveal-discipline concern

Contract §5.8 names explicitly (Grand Sage pre-reveal leak, three-ending convergence, Cassius

phase-architecture leak, fairy-realm-script pre-Ch-8 identification) — cross-reference the two,

don't invent a third vocabulary. Similarly, the boss thin index's per-phase slot ARRAY (`phases

[{Pn→beat_id}, …], SPINE_SCHEMA_v3` §3d) is "declared once as a pattern and expanded by

Cinematic" — each phase's beat_id becomes one boss_encounter_intro/_phase_transition/

_resolution scene row's beat_ref, per the worked case in Step 5.

audio-trio and boss-phase-array expansions flagged pending until Step 4.

(no duplicate bucket, ALL/UNLOCKED never co-occurring with a committed-path bucket on the same

anchor) — the same discipline SPINE_SCHEMA_v3 §6's gate already enforces at the spine layer;

this step re-verifies post-join, since the audio-trio expansion happens after the spine gate has

already run. Region-page-authored ambient-cinematic rows carry no beat_ref by construction (no

spine beat to anchor to) — no source read for this doc specifies their anchoring substitute;

flagged, not assumed (§4).

"Machine Blocks"]

Step 2 — Participant resolution

T0_Character_Index and T0_Antagonist_Network_Registry [SRC: T1_Build_Pipeline_Contracts §1.3

Cinematic Sequencer paragraph, §5.3].

Crowd/modular actors for background rosters) — the same assets UE5_Build Step 7 already builds

for named/principal NPCs and antagonists, since both registries default mesh_pipeline_type to

metahuman [SRC: T1_Build_Pipeline_Contracts §1.5.1; UE5_Build Step 7].

ls_system.add_actors([actor]) for a participant that persists in the open world independent of

this cinematic (a boss whose PCG-placed marker, UE5_Build Step 6, continues as the same actor

instance through its intro/phase-transition/resolution scene set); `add_spawnable_from_class/

instance or create_camera` for a participant that exists only for the cinematic itself — the

Architect's materializing argument construct is the clearest case, since Contract §5.2 frames its

"emergence" as happening AT the appearance scene, not as a persistent world actor beforehand [SRC:

UE_BUILD_AUTOMATION §6.1, §6.4; T1_Build_Pipeline_Contracts §5.2]. Facial performance for dialogue

beats drives from MetaHuman Animator's audio-driven mode — feed a SoundWave, get facial

animation, Python-automatable with a 5.8 batch API — genuinely documented, not a guess [SRC:

UE_BUILD_AUTOMATION §5.4]; the SoundWave itself is the pending audio seam's output (§2.6). Body

animation retargets from a shared mocap/animation library via IK Rig/IK Retargeter across the

cast, avoiding per-character keyframing [SRC: UE_BUILD_AUTOMATION §5.4].

bindings, with dialogue-beat participants additionally wired to the audio-driven facial pipeline

pending their SoundWave.

is not the open spike. What remains genuinely unresolved by any source read for this doc is a

bespoke, non-dialogue-driven hero performance (a specific nuanced take for, say, the Grand Sage

reveal's climactic beat) — UE_BUILD_AUTOMATION §5.4 is explicit that "a signature shot's creative

performance is still authored, not conjured." Split this cleanly in any build plan: audio-driven

facial is a solved lever, bespoke hero-beat capture is not (§4). MetaHuman batch cloud-throughput

at this project's roster scale is the same open spike UE5_Build §4 item 4 already tracks — this

step inherits it, does not re-open it.

§5.3; UE5_Build Step 7]

Step 3 — Site/level anchoring

(SPINE_SCHEMA_v3 §3a) to a site_id, then through the region page Zone Catalog (which copies

§3b site fields verbatim) to the owning region_id — or, for region-page-authored ambient rows,

directly from the authoring page's own region_id. **Corpus-corrected model (2026-07-15 critic

pass):** the scene row's anchor_type column is NOT a level/map anchor — the executed spine

populates it uniformly with the trigger-condition vocabulary (scene_entry ×~200 /

beat_transition / dialogue_initiation / branch_decision_point / reveal — the last marking

exactly the four arc-reveal moments, CH_66/CH_76/CH_77/Epilogue). anchor_type is therefore Step

6's input (WHEN the scene fires), and level anchoring comes exclusively from the beat→site→region

join this step performs. An earlier draft of this doc (and UE5_Build Step 9's original mapping)

inferred MapName from anchor_type; the executed corpus contradicts that inference, and the

join was always the real mechanism.

that produces that map name, not a new mechanism.

region_id already resolves to one WP-enabled .umap (UE5_Build Step 3); a spine-bound scene row

inherits its region's map through the beat→site→region chain above. Sub-region/streamed content —

Ch 66-69 mythological realm streaming and Personal Dimension astral sub-space streaming, both

named as World Partition subsystem scope at Contract §1.2 — means some cinematics anchor to a

STREAMED SUB-LEVEL rather than a region's base map; the exact sub-level selection mechanism beyond

"the map name in the MRQ command line" is not detailed by any source read for this doc (§4).

Vril-site-anchored ambient/Vimana-activation cinematics additionally read T0_Vril_Site_Registry

for site context [SRC: T1_Build_Pipeline_Contracts §5.3]; a site's climactic_affordance tags

(vista/threshold/sacred/climactic_geometry/weather_dramatic, SPINE_SCHEMA_v3 §3b) are a signal

available to but not schema-mandated for non-boss cinematic staging — SPINE_SCHEMA_v3 §3b only

states the affordance "binds the boss beat" explicitly. Protected-zone Data Layer tagging

(UE5_Build Step 3/6's SafeZone hostile-suppression) is a property of the level/actor a cinematic

anchors into, not a separate cinematic-side mechanism.

with its anchor_type trigger class carried forward untouched for Step 6.

populated (none is a valid value per SPINE_SCHEMA_v3 §3a for beats with no site) — a scene row

whose beat carries site: none has no site-derived anchor and must resolve its map target some

other way (most plausibly the chapter's home region, unconfirmed by any source read for this doc).

Pipeline_Contracts §1.2, §5.3; UE5_Build Step 3, Step 6, Step 9]

Step 4 — Sequencer assembly via Python/NeoStack

resolved; the two-track routing (§2.4) determining assembly discipline.

camera, animation, audio, and visual-effects tracks per Contract §1.14's named Cinematic Sequencer

operations.

total) is NeoStack, done once, reused/duplicated per row — the same "textbook NeoStack case"

UE5_Build §2.3 already establishes for Step 8's quest-graph-from-beat pattern, applied here to

canon intent (a beat's objective/layers) becoming a first-draft shot list. Per-row DUPLICATION

and POPULATION is native Python once a template exists: unreal.LevelSequenceEditorSubsystem's

create_camera for camera+camera-cut track, add_actors/convert_to_spawnable/

add_spawnable_from_class for the Step 2 bindings, binding.add_track(...) for transform/

skeletal-animation tracks, MovieSceneAudioTrack/MovieSceneAudioSection for the audio slot,

MovieSceneSubTrack for nesting into the beat_ref-selected parent sequence [SRC: UE_BUILD_

AUTOMATION §6.1-6.2]. The visual effects track is one of Contract §1.14's five named Cinematic

Sequencer operations ("add ... visual effects track ... configure shots, set keyframes") — its

role is TIMING/TRIGGERING an already-authored Niagara System (built via the Contract's SEPARATE

"Niagara operations" tool-surface category, matching UE5_Build's own note that Niagara VFX carries

"no dedicated step" and follows the author-once/apply-many pattern), not authoring the effect

itself inside Sequencer. The exact native Python track CLASS for a Sequencer-side Niagara cue was

not confirmed by UE_BUILD_AUTOMATION (which verifies transform/skeletal/audio/camera-cut/

subsequence track classes explicitly but names none for VFX) — flagged (§4); the operation's

EXISTENCE is Contract-sourced even where the exact class is not. (Count note: §1.14's Cinematic

Sequencer list enumerates create-sequence / add-tracks (camera, animation, audio, VFX) /

configure-shots / set-keyframes / configure-transition-curves — "five" holds only under that

verb-phrase grouping; the VFX-track claim rides the list itself, not the count.) Populate the

audio-trio fields

(§3 Step 1) and route the row through its track's state machine: canonical set piece rows compose

a BASELINE via the above, then hand to a human director for in-editor Sequencer review/refinement

per Contract §5.4.1's five stages before scene_spec_ref locks; scene-driven rows lock

scene_spec_ref directly on successful assembly, no director pass, with quality/cultural-

authenticity review running batch-level per Contract §5.8.

LS_<scene_id> (Contract §5.4's own path convention), scene_spec_ref` populated back onto

T0_Scene_Spec_Registry on lock.

to the Meshy/AIVA/ElevenLabs hash pattern — recompute at scheduled cadence, flip to

regeneration_required on mismatch (Contract §5.7). Camera blocking, timing, and cut rhythm are

not in the scene-row schema at all (UE5_Build's own flagged gap) — they come from the

scene_type template or the director's refinement pass, never invented at population time.

§6.1-6.2; UE5_Build §2.3, Step 9]

Step 5 — Path-conditional variants

path_bucket the WorldStateSubsystem exposes once the Ch 65 lock fires (SPINE_SCHEMA_v3 §1 —

path_bucket is DERIVED, committed at Ch 65, one of TRULY_GOOD/GOOD_ENOUGH/EVIL/UNLOCKED/ALL

per §1's reconciliation; the ws.* namespace discipline that key rides is SPINE_SCHEMA_v3 §5's

two-namespace grammar).

"worldstate-to-scene_id dispatch logic at convergence anchor points" — realized the same way every

other registry realizes at UE5_Build Step 2: a DT_SceneDispatch DataTable keyed by

scene_anchor_id + committed path_bucketscene_spec_ref, resolved via FDataTableRowHandle

identically to every other cross-registry FK in this pipeline. This is this doc's PROPOSED

realization of a Contract-named object, not a ratified schema (§4).

6) or build-manifest compose time, read the WorldStateSubsystem's committed path_bucket value

(UE5_Build Step 10's subsystem) and select the DT_SceneDispatch row matching this

scene_anchor_id + that bucket, falling back to the ALL/UNLOCKED row where no path-specific

variant exists. The committed-bucket key IS named: WS_004 path_bucket (registry-confirmed in

T0_Worldstate_Variables, and SPINE_SCHEMA_v3 §1's enum is explicitly "reconciled to WS_004"),

with its companion WS_005 path_lock_in_state (UNLOCKED/LOCKED) carrying the Ch-65 lock

itself — two distinct keys the spine cites in compound shorthand ("path_bucket LOCKED"), read

both. What remains open is only the FGameplayTag naming convention the ws.* subsystem will use

for these keys — Contract §5.6 itself lists the dispatch object as a "Session 5F target" — this

doc's dispatch mechanism is the realization pattern, not a claim that the tag grammar is ratified

(§4).

this doc derived both cases from Contract §5.2/§5.5's illustrative examples alone; the executed

v3.1 spine (docs/spine/CH_76.md, CH_77.md) supersedes those examples at both nodes, and this

doc's declared input IS the spine's typed layer. The Contract examples remain cited below only

as the naming-slip note.

forks.** The boss thin index is two-phase across five phase slots: Phase 1 = Cassius Velheim

(P1a social → P1b combat → P1c resolution), Phase 2 = the Father Encounter (P2a grief-geography

consent-boss → P2b at-one-ment or the Evil-path fight) [SRC: docs/spine/CH_76.md §9]. TWO

path_dispatch forks resolve it: FORK_CH76_A (anchor CH76_B06) selects the Cassius

resolution variant off the Ch-65-locked bucket (RESOLVED_TGP_PURGE / RETREATED_GE /

VICTORY_EVIL), and FORK_CH76_B (anchor CH76_B08) dispatches the Father encounter's PHASE

COUNT itself (2/2/3 — the peaceful paths cannot fail into a fight) and writes

ws.father_encounter_variant (REUNION_TGP/NEGOTIATION_GE/COMBAT_EVIL). The executed §13

rows carry path_bucket = LOCKED (post-lock content whose variant resolves via the dispatch

forks, not per-bucket duplicate rows) — DT_SceneDispatch realizes exactly this: key

scene_anchor_id + the dispatch fork's read of WS_004/ws.father_encounter_variant →

scene_spec_ref per variant. Cinematic coverage must span BOTH phases — the intro reveal row

(SC_CH76_the_name, anchor_type: reveal — Cassius NAMED, HL_0035), the Cassius resolution

variants, AND the Father-encounter rows (SC_CH76_armour_laid_down at CH76_B08 with its

2-vs-3-phase variant structure; the King unimpeachable and name-forbidden, HL_0099, on every

variant).

every reveal-arc scene row is path_bucket = ALL (SC_CH77_the_step_into_the_water /

_the_face_given_back / _the_wordless_recognition / _the_held_frame — the same water, the

same face, the same held frame on every road), and the ONLY dispatch is FORK_CH77_A, the

father's-gloss coda (SC_CH77_the_fathers_gloss, path_bucket = LOCKED): present iff the King

survived the Two Courts (reads ws.father_encounter_variant written at Ch 76 Phase 2), absent

on COMBAT_EVIL — a coda that never gates and never changes the recognition `[SRC:

docs/spine/CH_77.md §10b, §13]. There is NO SCENE_CH77_ENDING_*` triplet in the spine —

Contract §5.5's examples are illustrative only, and building three distinct ending scenes would

invert canon at the game's most §17-bound node. Ending differentiation lives in the §18 DERIVED

colouring (the reflection returns the accreted stance the player carries in) — texture, never

distinct scene structure. Dispatch mechanism verification therefore runs on Ch 76 (and every

post-lock node with LOCKED rows), NOT on the Ch 77 reveal.

(Naming note preserved: Contract §5.5's scene_id examples say "CH74" for Cassius. Every OTHER

Contract mention — §1.2, §1.3, §5.2 twice, §5.3 twice, §5.8, §5.9, plus the AIVA and ElevenLabs

cross-pipeline bullets — says Ch 76, and the executed spine confirms Ch 76. The CH74 token is

the Contract's own naming slip; correcting the Contract text is the corrections pass's item,

Josh's call.)

lack, by design) an ALL/UNLOCKED fallback for pre-lock or path-invariant playback — a group

missing both a full TRULY_GOOD/GOOD_ENOUGH/EVIL set AND a fallback is a dispatch gap, not a valid

end state. A LOCKED row (the executed corpus's post-lock value — CH_76's five rows, CH_77's

gloss row) is NOT such a gap: its variants resolve through the node's own path_dispatch fork

(FORK_CH76_A/B, FORK_CH77_A), one row + fork-variant selection, never per-bucket row duplication.

Step 2, Step 10]

Step 6 — Realtime trigger wiring vs Movie Render Queue offline renders

gameplay/quest state, or a headless MRQ render for asynchronous review.

competing shipped paths):** realtime is the shipped default wherever a category's content is

path-conditional (Step 5) or gameplay-event-triggered — a pre-baked video file cannot read live

worldstate, and UE5_Build Step 9 already frames MRQ output as "headless QA-render... for review,"

not shipped delivery. Trigger sources split by category: boss-encounter intro/phase-transition/

resolution cinematics fire from the boss's combat-state machine crossing a phase threshold — this

DEPENDS on the same boss phase→beat fight-AI framework UE5_Build §4 spike #9 flags as unresolved

(a cinematic cannot fire on an event a boss AI doesn't yet emit); per-chapter cutscenes and

ambient cinematics fire from Quest System Blueprint/State-Tree logic (UE5_Build Step 8) at a

beat's entry/exit. Vocabulary note (corpus-corrected): Quest Writing Contract §6's

dialogue_trigger_anchors.anchor_type enum (scene_entry/beat_transition/

dialogue_initiation/branch_decision_point — trigger-CONDITION categories) [SRC:

T1_Build_Pipeline_Contracts §6] is the SAME vocabulary family the executed spine populates the

scene-row anchor_type column with (plus reveal, marking the four arc-reveal moments) — an

earlier draft read the scene-row field as a level/map anchor and flagged the two as unrelated

homonyms; the corpus shows they are one trigger vocabulary consumed HERE, by this step's wiring

(the scene-row value tells the trigger layer WHAT KIND of moment fires the sequence; the map

target comes from Step 3's join). They remain two distinct FIELDS on two distinct objects — bind

each from its own source when wiring Quest→Cinematic dialogue triggers. MRQ headless (`UnrealEditor-Cmd.exe ... -LevelSequence=...

-MoviePipelineConfig=... -windowed -resx -resy -log -notexturestreaming`, or

MoviePipelinePythonHostExecutor for a scripted pipeline) [SRC: UE_BUILD_AUTOMATION §6.3] serves

TWO review purposes per §2.4's two tracks: async/remote dailies for the canonical-set-piece

director-in-loop pass (supplementing, not replacing, live in-editor Sequencer review, Contract

§5.4.1), and the batch-level cultural-authenticity/quality audit the scene-driven track requires

pre-build (Contract §5.8). Whether the Special Asset Class bookends (Prologue opening, Epilogue

closing) — neither path-conditional nor gameplay-event-triggered — ever depart from the realtime

default toward a genuinely pre-rendered video file is a separate open question (Verification,

below); nothing in this chain FORCES realtime for those two the way it does for every

path-conditional or event-triggered category.

dailies pass for director/batch review.

ever depart from realtime toward pre-rendered video — a common AAA pattern for fixed

non-branching bookend cinematics, but unconfirmed here either way; the realtime default stated

above is this doc's working assumption for consistency across categories, not a confirmed ruling

(§4).

UE5_Build Step 8, Step 9, §4 item 9]

---

4. THE SPIKES + UNKNOWNS

Every row is a genuine open question — none of these outcomes are settled by this doc, and none

should be treated as settled by anyone reading it. Trigger = what gates the spike; Owner = who

resolves it. Rows marked "shared" are the SAME spike a sibling Translation Doc already tracks,

inherited here because this chain also depends on it.

#SpikeTriggerOwnerNot yet settled because
1MetaHuman batch cloud-throughput (shared — UE5_Build §4 item 4)Before committing to a MetaHuman-per-NPC pipeline at cinematic-participant scaleProduction/engineeringThroughput/latency/rate-limits at "hundreds of characters" scale undocumented by Epic [UE_BUILD_AUTOMATION §5.6].
2Bespoke hero-beat performance capture (facial/body)Before any Canonical Set Piece scene needing a specific nuanced take (Grand Sage reveal, Cassius resolution) is scheduledProduction/animationAudio-driven facial IS documented and scriptable for dialogue beats — this row is narrowly the NON-audio-driven bespoke case, which no source read for this doc specifies a pipeline for [UE_BUILD_AUTOMATION §5.4].
3ws.* WorldStateSubsystem validation spike (shared — UE5_Build §4 item 3)Before Step 5's path-conditional dispatch can read a real committed path_bucket keyEngineeringStep 5's whole mechanism depends on the subsystem UE5_Build Step 10 builds; that subsystem itself is synthesized architecture, no Epic reference exists [UE_BUILD_AUTOMATION §7.6-7.7].
4Boss phase→beat fight-AI framework (shared — UE5_Build §4 item 9)Before any boss-encounter cinematic (intro/transition/resolution) can fire from a real gameplay eventGameplay engineeringStep 6's realtime trigger for boss cinematics fires off an event this framework doesn't yet exist to emit [UE_BUILD_AUTOMATION §7.4, §10 item 20].
5Sequencer VFX-track native classBefore Step 4's visual-effects track is scripted, not just specifiedWhoever wires Step 4Contract §1.14 names the operation ("visual effects track"); UE_BUILD_AUTOMATION §6.1 verifies camera/transform/skeletal/audio/subsequence track classes explicitly but none for VFX/Niagara.
6Ambient-cinematic (no beat_ref) anchor mechanismBefore a region-page-authored ambient scene row (no spine beat) can resolve its map anchorWhoever wires Step 1/3 for the first regionNo source read for this doc specifies how a beat-ref-less scene row anchors; the beat→site→region join (Step 3) has nothing to join from.
7convergence_node_scene_dispatch schema ratificationBefore Step 5's DT_SceneDispatch realization is treated as canon-aligned rather than this doc's proposalContract owner (Josh / Schema Dictionary work)Contract §5.6 names the object and lists it as a "Session 5F target" — genuinely still open at the Contract layer, not just the Translation Doc layer.
8Streamed sub-level anchor mechanism (Ch 66-69 realms, Personal Dimension)Before any mythological-realm or astral-sub-space cinematic is scheduledUE5-build engineeringContract §1.2 names the streaming scope; no source read for this doc details the sub-level selection mechanism beyond the base-map case.
9Animation Pipeline Contract deferralBefore any cinematic participant needs body-performance content beyond retargeted stock motionWhoever scopes the deferred Animation Pipeline ContractContract §1.2 and §5.11 both defer animation-content generation (mocap/keyframe/generative) out of scope here — the same deferral UE5_Build §3's table already carries.
10UI overlay authoring strategyBefore any cinematic scene needs a journal-entry/integrity-meter/mastery-tier UI overlayWhoever resolves the Buildability Audit UI itemContract §5.11 names this as an open item at Buildability Audit resolution work, unresolved by any source read for this doc.
11String Table / localization mechanism (shared — UE5_Build §4 item 10)Before the first cinematic ships subtitle textWhoever finalizes the FText conventionNo String Table Python/gather-commandlet API confirmed in any source read for this doc [T1_Region_Page_Template §17].
12Pre-rendered vs. realtime for Special Asset Class bookendsBefore Prologue/Epilogue cinematic delivery is lockedWhoever schedules the Special Asset Class buildNo source read for this doc states either way; the realtime default (§3 Step 6) is this doc's working assumption for consistency, not a confirmed ruling.

---

5. Per-region cinematic build checklist

The repeatable loop a region reaching cinematic-ready status drives, keyed to `T1_Region_Page_

Template`'s own Consumer Loading Pattern: "Cinematic (§5): the Scene index + Section 13" [SRC:

T1_Region_Page_Template "Consumer Loading Patterns"]. Precondition: this region's page carries a

populated Scene index (Machine Blocks), every referenced beat resolves per `harness/

check_spine_graph.py`, and UE5_Build's own per-region loop (its §5) has reached at least Step 7

(NPC/MetaHuman generation) for this region's participant roster.

1. Extract — pull this region's scene rows from the Machine Blocks' Scene index (spine-bound

plus the page's own ambient-cinematic additions); pull Section 13 for quest/dialogue dressing

context (Step 1).

2. Resolve participants — join participant_refs against T0_Character_Index/`T0_Antagonist_

Network_Registry`; confirm the referenced MetaHuman (or Crowd/modular) assets exist from this

region's own UE5_Build Step 7 pass (Step 2).

3. Anchor — resolve each row's map target through the beat→site→region join to this region's

.umap (or flag the streamed-sub-level case, §4 item 8) (Step 3).

4. Template-check — confirm every referenced scene_type already has an authored template;

author any missing one ONCE via NeoStack before this region's batch runs (Step 4).

5. Dependency-check — walk the two-track state machine (§2.4); confirm mesh_refs, `voice_

refs, music_cue_id_ref, sfx_category_array/sfx_id_ref_array, and dialogue_dataset_ref`

all resolve to accepted/complete; anything short routes to blocked_on_dependencies and waits

for its upstream, including the still-pending audio Translation Docs (§2.6) (Step 4).

6. Assemble — duplicate template, populate camera/animation/audio-slot/VFX tracks, expand the

audio-trio fields and any boss-phase-array rows (Step 1, Step 4).

7. Route — canonical-set-piece rows enter the director-in-loop review; scene-driven rows lock

autonomously and queue for batch cultural-authenticity/quality audit (Step 4, §2.4).

8. Branch-check — for every path-conditional scene_anchor_id, confirm the full path set (or

its ALL/UNLOCKED fallback) resolves through DT_SceneDispatch (Step 5).

9. Wire delivery — bind the realtime trigger source (boss-state event, quest/beat entry-exit)

per category; queue an MRQ dailies pass for review (Step 6).

10. Validate — run -run=DataValidation against this region's new/changed cinematic assets

(RowName integrity, hard-line/reveal compliance per Contract §5.8's named rules), consistent

with UE5_Build Step 11's project-wide validation pass.

11. Recordscene_spec_ref locks, cinematic_status flips to accepted/complete; note

this region's cinematic build state against §4 — a region can look cinematic-ready and still be

blocked by an unresolved spike (no ws.* validation spike resolved means no path-conditional

scene truly clears Step 5, regardless of page status), mirroring UE5_Build §5's own closing

discipline.

This doc updates as spikes resolve and as the first real region build (or the first canonical set

piece director-in-loop session) surfaces edge cases the adjudicated research couldn't anticipate —

per §1's versioning discipline, that is a Translation Doc refinement, not a Pipeline Contract

amendment, unless a region build surfaces an actual canonical schema gap.

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