world/translation/T99_Translation_Cinematic.md
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.
---
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_neutral→ALL and pre_branch→UNLOCKED) 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.
---
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].
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].
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.
| Seam | Handles | Examples in this chain (§3) |
|---|---|---|
| NeoStack (interpretive/judgment) | canon intent to first-draft shot assembly, authored once per pattern then reused or refined | scene_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 invocation | per-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) |
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].
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].
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].
---
Contract §5.2's seven cinematic categories to chain-step index (what this doc realizes, and where):
| Contract §5.2 category | Realized at |
|---|---|
| Canonical Set Pieces | Step 4 (director-in-loop track) + Step 5 (the Ch 77 path-INVARIANT reveal + gloss-coda case) |
| Architect Appearance Scenes | Step 2 (materializing-argument-construct participant resolution) + Step 4 |
| Boss Encounter Cinematics | Step 3 (site/boss-marker anchoring) + Step 5 (the Ch 76 Two Courts two-phase dual-dispatch case) |
| Convergence Node Scenes | Step 5, definitionally — path-conditional selection is the category |
| Per-Chapter Cutscenes | Step 4 (scene-driven track) |
| Ambient Cinematics | Step 1 (region-page-authored rows) + Step 3 (site anchoring) |
| Special Asset Class | Step 6 (the realtime-vs-offline delivery question binds hardest at the Prologue/Epilogue bookends) |
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"].
T0_Scene_Spec_Registryschema (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.
T0_Scene_Spec_Registry shape, with theaudio-trio and boss-phase-array expansions flagged pending until Step 4.
scene_anchor_id sharing a group must carry a coherent path_bucket set (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"]
participant_refs (spine) / participant_entity_refs (Contract) — foreign keys into 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].
participant_refs resolved to concrete possessable/spawnablebindings, 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]
beat_ref, resolved through the referenced beat's site field (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.
MapName argument the MRQ/trigger legs consume — this step supplies the JOINthat 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.
site field being 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]
resolved; the two-track routing (§2.4) determining assembly discipline.
scene_type template, carryingcamera, animation, audio, and visual-effects tracks per Contract §1.14's named Cinematic Sequencer
operations.
scene_type, 11total) 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.
generation_prompt_hash (Contract §5.5) drives reassembly detection identicallyto 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]
scene_anchor_id grouping more than one path_bucket row, plus the committed 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).
convergence_node_scene_dispatch object —"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_bucket → scene_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.)
scene_anchor_id, realtime-queryable.scene_anchor_id with path-specific rows must also carry (or explicitly 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]
LevelSequenceActor/LevelSequencePlayer triggered at runtime fromgameplay/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]
---
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.
| # | Spike | Trigger | Owner | Not yet settled because |
|---|---|---|---|---|
| 1 | MetaHuman batch cloud-throughput (shared — UE5_Build §4 item 4) | Before committing to a MetaHuman-per-NPC pipeline at cinematic-participant scale | Production/engineering | Throughput/latency/rate-limits at "hundreds of characters" scale undocumented by Epic [UE_BUILD_AUTOMATION §5.6]. |
| 2 | Bespoke hero-beat performance capture (facial/body) | Before any Canonical Set Piece scene needing a specific nuanced take (Grand Sage reveal, Cassius resolution) is scheduled | Production/animation | Audio-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]. |
| 3 | ws.* WorldStateSubsystem validation spike (shared — UE5_Build §4 item 3) | Before Step 5's path-conditional dispatch can read a real committed path_bucket key | Engineering | Step 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]. |
| 4 | Boss 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 event | Gameplay engineering | Step 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]. |
| 5 | Sequencer VFX-track native class | Before Step 4's visual-effects track is scripted, not just specified | Whoever wires Step 4 | Contract §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. |
| 6 | Ambient-cinematic (no beat_ref) anchor mechanism | Before a region-page-authored ambient scene row (no spine beat) can resolve its map anchor | Whoever wires Step 1/3 for the first region | No 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. |
| 7 | convergence_node_scene_dispatch schema ratification | Before Step 5's DT_SceneDispatch realization is treated as canon-aligned rather than this doc's proposal | Contract 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. |
| 8 | Streamed sub-level anchor mechanism (Ch 66-69 realms, Personal Dimension) | Before any mythological-realm or astral-sub-space cinematic is scheduled | UE5-build engineering | Contract §1.2 names the streaming scope; no source read for this doc details the sub-level selection mechanism beyond the base-map case. |
| 9 | 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 — the same deferral UE5_Build §3's table already carries. |
| 10 | UI overlay authoring strategy | Before any cinematic scene needs a journal-entry/integrity-meter/mastery-tier UI overlay | Whoever resolves the Buildability Audit UI item | Contract §5.11 names this as an open item at Buildability Audit resolution work, unresolved by any source read for this doc. |
| 11 | String Table / localization mechanism (shared — UE5_Build §4 item 10) | Before the first cinematic ships subtitle text | Whoever finalizes the FText convention | No String Table Python/gather-commandlet API confirmed in any source read for this doc [T1_Region_Page_Template §17]. |
| 12 | Pre-rendered vs. realtime for Special Asset Class bookends | Before Prologue/Epilogue cinematic delivery is locked | Whoever schedules the Special Asset Class build | No 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. |
---
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. Record — scene_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.