PIPELINE_READINESS_ROADMAP.md

pipelines/PIPELINE_READINESS_ROADMAP.md

Pipeline Readiness Roadmap

Status: ACTIVE v1.0 · 2026-07-19 · owner Josh · synthesized from the seven lane-audit reports in docs/pipeline_review/ (the full reports remain the workflow record; this doc is the consolidated map). CVD §17.14-conformant.

This doc answers Josh's question verbatim: "we have a lot of pipelines that we can test before the RTX 5090 computer comes in right, like music? what else isn't blocked? how are you building our combat and physics and other UE systems? I have NeoStack and Unreal already. when do you actually need the new computer and what's gated by book processing?"

The short answer

1. NOW / 5090-GATED / BOOK-GATED dependency matrix

Every lane against its true gate. Evidence cited inline as (lane: name).

LaneUnblocked NOW (current machine)5090-gatedBook-gatedFirst-artifact true gate
TerrainDEM download to manual UE Landscape import; needs a free OpenTopography key (Josh registers) + one rasterio install into Python 3.12 (lane: terrain)Gaea erosion benchmark; 69-region throughput; World Partition + PCG perf-budget (lane: terrain)None — geometry comes from Copernicus GLO-30 + WorldCover; machine layer is build-ready now (lane: terrain)The missing machine-readable WGS84 region_bbox + single meters_per_vertex value (lane: terrain)
UE5 BuildCreate the .uproject on UE 5.8.0; compile one USTRUCT; scripted DataTable ingest; PCG graph; World Partition scaffold; RemoteControl; NeoStack on 5.8 (source-built, verified 2026-07-19) (lane: ue5)14B model for NeoStack; perf-budget across spec classes; 69-region headless bake; bulk terrain preprocess; MetaHuman batch staging (lane: ue5)Per-region MetaHuman appearance authenticity + Section 16 provenance for un-scanned regions only (lane: ue5)The per-registry USTRUCT column-to-UE-type spec + the spine-row extractor tool (lane: ue5)
Asset generationBlender-headless finishing chain; FBX-to-UE import + registry writeback; NeoStack previz passthrough; single MetaHuman; Fab acquisition (lane: assetgen)All local geometry generation (TRELLIS.2/Hi3DGen/Hunyuan3D, 24GB+ floor); the benchmark protocol; the PBR renderer-swap spike; bulk volume (lane: assetgen)Low — reads region pages not raw books; soft ties are capture-rights photos + creature-roster completeness trailing the drain (lane: assetgen)The mesh_tags object + per-asset routing tag + capture-rights field, none present as schema (lane: assetgen)
Audio (music/voice/SFX)ElevenLabs SFX to UE import (automated); Kokoro local voice; MetaSound Builder spike (lane: audio)ACE-Step/YuE bulk music; instrumental benchmark; MOSS-SoundEffect/Stable Audio batch; Demucs; Kokoro bulk throughput; adaptive-graph perf (lane: audio)Verification-grade only, at high-care cultures (Sámi joik Ch 29, Vodou Ch 42, songline Ch 57); NOT generation-grade (lane: audio)Dialogue line text unauthored (from Quest §6) (lane: audio) — the AIVA API wall is moot: closed as skip 2026-07-27
CinematicTemplate Level Sequence + headless driver; MRQ 720p render; single MetaHuman; DataTable ingest; dispatch stub (lane: cinematic)Render fidelity (Lumen/Nanite/groom LOD0); many-MetaHuman perf; batch dailies; roster-scale MetaHuman (lane: cinematic)Not meaningfully — only the batch cultural audit, covered by the drained corpus (lane: cinematic)scene_type-to-shot-grammar mapping absent; the real cross-lane wall is audio (lane: cinematic)
Quest writingAuthor Ch 2 quest rows; Ch 3-5 SPIKE; a sample dialogue_dataset; critic pass; baseline refresh (lane: quest)Nothing for authoring; production volume helps via draft-tier pre-draft + bulk FK + embedding dedupe (lane: quest)Ch 2-5 SPIKE is NOT book-gated; pass-2 per-region production authoring is region-page-gated, so book-gated at high-care regions (lane: quest)Three unpinned decisions: dialogue-dataset format, landing path, condition_expression grammar (lane: quest)
Combat / physics / runtimeGAS greybox boss; StateTree clocks + habit-vector; vril_density dial; deterministic strategy-token spine; cosmetic barks on the current GPU (lane: combat)14B reference model; runtime-inference perf-budget; heavy asset-gen for vertical slice; nightly eval at scale (lane: combat)Fauna behavior_flavor partial-now; §17.1 runtime denylist accretes; per-region encounter population is region-page-gated (lane: combat)No combat/systems Translation Doc and no combat section in the contract (lane: combat)

2. The unblocked-now execution queue

Ordered by leverage then cost. The already-ruled items are slotted in place: the Ch 2-5 region-page slice (pass-1 plus deep-research fill, ruled 2026-07-19 as Option A plus the slice exception), the quest-writing SPIKE (validation artifact only — production quest content per region is book-gated pass-2), the RCM substrate order, RR-62, and the D-1 consistency audit.

#StepMachinePrerequisites to install / configure / keyDoc it validatesExit criterion
1Quest-writing Ch 2 SPIKE — one main-story quest row appended to T0_Quest_Definition_Registry plus one sample dialogue_dataset (six-option node), critic-gated. Validation artifact only (lane: quest)Current — Opus authoring pass, no hardwareNothing beyond the repo and this sessionT1_Build_Pipeline_Contracts §6Row conforms, run_gates.py green (unpiped) after baseline refresh, normalize-doc GO, and the three quest WALLs forced to a decision
2RR-62 range review — reveal-discipline plus cultural-care fan-out across the range, fixes applied (parallel canon verification)Current — Opus fan-out, no hardwarenormalize-doc skill; read-only critics on the shared treeSpine reveal-discipline + Care Doctrine (CVD §17.1)RR-62 GO with all found leaks fixed and re-verified
3D-1 consistency audit — resolve or queue the D-1 seating/consistency items across the affected nodes (parallel)Current — Opus, no hardwareThe D-NTALA-ENC / D-1 ruling recordThe D-1 ruling and adjacent spine/registry consistencyAudit complete; inconsistencies resolved in-place or queued to DECISIONS_PENDING_JOSH
4RCM substrate order — issue the deep-research substrate pulls for the Ch 2-5 slice (default synthesis path; MUST-ACQUIRE physical buys reserved to the curated set)Current — deep-research agentsConfirm the two Flores MUST-ACQUIRE titles (Erb; Allerton) against BOOK_ACQUISITION.mdT1_Research_Corpus_Master + docs/BOOK_ACQUISITION.md postureSubstrate packs available for the four region pages; MUST-ACQUIRE confirmed, everything else synthesized
5Ch 2-5 region-page slice — pass-1 build plus deep-research fill (ruled Option A + slice exception, 2026-07-19)Current — Opus + deep-researchThe slice substrate from #4; region pages bali and sumatra_java already presentT1_Region_Page_Template v2.0angkor_khmer built (page 4) + all four slice pages deep-research-filled to review depth (flores/bali/sumatra_java pass-1 already landed); Section 5/6 high-care depth pending the MUST-ACQUIRE books
6Combat continuo-bet runtime smoke — llama.cpp 3-4B GGUF under a GBNF grammar, through the deterministic V1-V5 validator plus authored fallback plus pass-rate log (lane: combat)Current GPU (3-4B class)llama.cpp build + one GGUF download (Qwen3-3B / Phi-4-mini class); hand-author one boss context packRUNTIME_GUARDRAIL_ARCHITECTURE.md + RUNTIME_GENERATIVE_LAYER.mdThe loop never emits an invalid or off-whitelist line (fallback always catches) and prints a first-try pass rate
7UE5 registry-to-DataTable-to-PCG-to-rendered-zone smoke — compile FCreatureRow, scripted CSV import, PCG scatter, MRQ frame (lane: ue5)Current — UE 5.8.0Confirm VS 2026 "Game development with C++" workload once before first compileUE_BUILD_AUTOMATION.md + T99_Translation_UE5_BuildCubes scatter per creature row in a World Partition level; screenshot or MRQ frame captured
8Audio ElevenLabs SFX-to-UE import round-trip — Flores Section-10-grounded 48kHz WAV imported via SoundFactory (lane: audio)Current — UE 5.8.0ElevenLabs API key + credits (short clip fits the free tier; full 30s needs a paid tier)T99_Translation_Audio + Contracts §10Canon-substrate-grounded WAV living at /Game/Audio/SFX/environmental_ambient/
9Terrain download-preprocess-manual-import — Liang Bua COP30 to a UE Landscape (lane: terrain)Current — Python + UE 5.8.0Josh registers a free OpenTopography key (account creation is his to do); pip install rasterio into Python 3.12GEODATA_TERRAIN_CHAIN.md + T99_Translation_TerrainLiang Bua relief visible in a UE Landscape; surfaces the true bbox and meters-per-vertex numbers the page lacks
10Asset-gen finishing plus FBX-to-UE import plus registry writeback — one previz fantastical prop (lane: assetgen)Current — UE + BlenderBlender installed; NeoStack cloud allowance; a throwaway input meshT99_Translation_AssetGen §4.3mesh_id_ref written back on the owning row; the missing §2.6 schema fields enumerated
11Cinematic template Level Sequence plus headless driver plus MRQ render — one scene row to a 720p video with placeholders (lane: cinematic)Current — UEOne hand-authored scene_type template sequenceT99_Translation_CinematicA rendered video with placeholders on the templated camera
12Combat GAS greybox difficulty-as-density proof — one Composure AttributeSet and a single vril_density float that widens/narrows the tell window with no enemy-stat change (lane: combat)Current — UE 5.8.0 (GAS engine-native; the 5.8 AttributeSet-init deprecation now applies — verify the path)Author against GAS AttributeSets/GameplayEffects; avoid the 5.8-deprecated attribute-set-init functionsCOMBAT_ENCOUNTER_SYSTEM.md §5/§9 + the RULED difficulty systemThe same authored boss plays at two world-tensions with zero change to any enemy stat block

Notes on the ruled items: the quest SPIKE (#1) is deliberately a validation artifact — it proves the lane end-to-end and forces the three format/path/grammar decisions; per-region production quest content is pass-2 and book-gated where its region page is book-gated (lane: quest). The region-page slice (#5) builds the machine layer now and defers Section 5/6 cultural depth to the two MUST-ACQUIRE Flores books (lane: terrain, lane: quest). Items 1-5, 11 and 12 need no purchases; items 6-10 need one small install or one free/low-cost key each.

3. The wall list

Every parameter gap rated WALL across the lanes, its owning doc, and the fix route. The missing combat-systems Translation Doc is confirmed by the combat lane report and called out first because it blocks the entire combat/physics/runtime engine-mapping decision.

WALLLaneOwning docFix route
✅ RESOLVED (2026-07-19): T99_Translation_Combat.md [DRAFT v0.1] LANDED — authored to the five-doc bar, 3-critic adversarially gated (14 fixes applied incl. the BYPASS win-verb restoration, the boss_kind-not-boss_scale reconcile, the WS_024 [0,2]→GAS normalization, seam tags, the §8.1 PARAMETERS BLOCK). The GAS/StateTree/Chaos forks are resolved IN the doc; its 14 [JOSH] canon flags ride the queue as D-COMBAT-TD; the contract combat-§ pointer + the Boss_Encounter column extension apply after those rulecombatdocs/translation/T99_Translation_Combat.mdThe former wall; remaining follow-ons are D-COMBAT-TD rulings + the greybox prototype (queue #12)
T0_Boss_Encounter_Registry lacks the machine combat-spec columns — no primary/secondary verb, Patterns/Puzzles/Preparation axes, win-condition enum, per-signature counters, Composure nodes, or win-and-death reward fields (the spine §9 thin-index carries verbs/axis as prose rows, not machine columns). NOTE: the registry IS populated — 281 rows — the lane report's 0-rows claim was refuted at director adjudication; the wall is schema fitness, not emptinesscombatT0_Boss_Encounter_Registry + COMBAT_ENCOUNTER_SYSTEM.md Gap 3.2New spec doc + a registry schema EXTENSION (declared via docs/registry_extensions.json, fidelity re-baselined) aligning the 281 rows + the boss_roster_rows.json proposal to machine combat columns
Every combat number is deferred to a Phase-5M balance audit that never ran — damage constants, integrity-band absolute units, sigma values, tell/window ms, dial coefficientscombatCOMBAT_ENCOUNTER_SYSTEM.mdRun the balance audit as its own workflow; greybox proceeds on illustrative shapes, a tuned build cannot
No canon win-condition taxonomy, no mechanical definition of the mandatory character-engagement field, no source authority for the three-axis splitcombatCOMBAT_ENCOUNTER_SYSTEM.md (Pillar-8)Josh canon ruling + spec doc defining the axes and win-condition enum
The recall-PACKS offline exporter (the frozen per-boss context-pack builder the guardrail architecture depends on) does not exist. NOTE: harness/recall.py itself EXISTS and works — the lane report's claim it is absent was refuted at director adjudication; the missing piece is the pack-export layer on top of itcombatRUNTIME_GENERATIVE_LAYER.md §C + RUNTIME_GUARDRAIL_ARCHITECTURE.md §9Build the packs exporter in harness/ atop recall.py; a prototype hand-authors one pack, production population cannot start until it exists
No per-registry USTRUCT spec maps each CSV column to a UE C++ type (FText/FString/int32/float, enums, FDataTableRowHandle FKs, TArray/JSON for nested cols)ue5T1_Build_Pipeline_Contracts §1.5-1.6Contract § or new spec doc — add the column-to-UE-type contract the codegen needs
The spine-row extractor (markdown-table to CSV pulling site/beat/fork/scene/SQ rows from docs/spine/CH_NN.md) does not exist; enrich.py and extract_claims.py do not produce itue5harness/ (absent tool)Build the extractor in harness/ — it is the §3 pre-step no UE step can run without
PCG population numbers (ambient_threat-to-density, vril_density-to-tier filter, climactic_affordances-to-markers) are numeric inference assigned to the Translation Doc layer, which is unpopulated; no terrain_type-to-PCG-template binding table existsue5T1_Build_Pipeline_Contracts §0 (Translation Doc layer)Populate the inference layer as Flores surfaces cases; author the terrain_type-to-PCG-template binding table
The 11 scene_type shot-template Level Sequences do not exist; camera blocking/timing/cut rhythm is not in the seven-column schema; no dialogue/audio (SoundWave FK) rides the scene rowue5, cinematicT99_Translation_UE5_Build §3 Step 9 + T99_Translation_Cinematic + SPINE_SCHEMA_v3Author the 11 shot templates (hand or NeoStack) + add camera-block and SoundWave-FK fields to the scene-row schema
The mesh_tags object (morphology/region/style/material/era) exists in no consumable form — not a structured block on the region page, not populated on live registriesassetgenT1_Build_Pipeline_Contracts §2.5 + T1_Region_Page_TemplateTemplate field add + registry columns — instantiate mesh_tags per asset (it is the primary prompt-composition input)
No machine-readable per-asset asset-class / mesh_category routing tag — the cloud/local/reference-built split lives only in Section proseassetgenT1_Region_Page_Template + Contracts §2Per-row field — add mesh_category so backend routing is deterministic
No reference_image_ref / capture-rights / use_class field for the §17.1 reference-built architecture path; the agent cannot distinguish a rights-cleared photo from a prohibited one, or from AI-generated inputassetgenT1_Build_Pipeline_Contracts §2.11/§6 + region pageTemplate field + contract § — add the capture-rights-cleared source FK before any real cultural architecture is reference-built
~~No self-serve AIVA API exists~~ — CLOSED AS SKIP 2026-07-27, no longer a gap: the vendor lane is deadaudioT99_Translation_Audio Music Step 2 + Contracts §3Ruled, not fixed — the canonical and hero theme track is composer-in-loop with a human composer; bulk music is local ACE-Step/YuE, benchmark-gated
No T0_Theme_Registry field carries tempo, bar-length, or stem-role metadata — MetaSounds+Quartz cannot consume a cue as a true adaptive layeraudioT99_Translation_Audio Music Step 4 + T0_Theme_RegistryRegistry field add — ratify the PROPOSED tempo/bar/stem-role fields
Dialogue line text does not exist anywhere — dialogue_dataset_ref is populated by the unauthored Quest Writing pipeline, so no canonical voice line can be generated todayaudioQuest Writing §6 + dialogue_datasetCross-lane — author quest content (queue #1 starts this); Voice Step 1 derives who speaks, never what
The dialogue_dataset file format and extension are unpinned by the contractquestT1_Build_Pipeline_Contracts §6.4 + PIPELINE_ADAPTER.md §6Josh pin — decide format (JSON natural) and extension together at the first quest authored
The dialogue_dataset landing path is a dead Google-Drive path; the repo replacement canon/dialogue_datasets/ is an un-ratified proposal and the dir does not existquestPIPELINE_ADAPTER.md line 120Ratify the landing path + create the directory
The condition_expression grammar (runtime branch conditions) is undocumented — operands are named but no expression syntax existsquestT1_Build_Pipeline_Contracts §6.11New grammar spec or contract § defining the condition_expression syntax
No machine-readable WGS84 region_bbox — the golden page carries free-text local-ENU design sizings, and the real bbox is explicitly deferred to the Section 1 terrain passterrainflores_island.md + T99_Translation_Terrain Step 1 / PARAMETERS BLOCKTemplate field add — put a WGS84 south/north/west/east (or center+radius) per zone into Section 1 / the Zone Catalog
No instantiated alteration_list — the §3 carve/composite schema is specified but no fillable recipe exists on any golden page (operation enum, feather_radius_m, WGS84 footprint all absent)terrainT99_Translation_Terrain §3Instantiate the §3 schema on the region page (depends on the bbox fix above)
No single resolved meters_per_vertex value — the rule is one number per region but the page gives multi-valued proseterrainT99_Translation_Terrain §5 item 1 (JOSH-RULES)Josh ruling + template field for the one machine value
participant CHAR_id has no MetaHuman asset-path lookup — depends on the UE5 build having run Step 7 and emitted stable IDs; no UE build has runcinematicUE5_Build Step 7 dependencyCross-lane — the UE build must generate MetaHumans and emit stable asset IDs first
convergence_node_scene_dispatch schema is unratified and the ws.* WorldStateSubsystem does not exist — every LOCKED/path-conditional scene cannot clearcinematicT99_Translation_Cinematic spikes 3/7 + the (absent) WorldStateSubsystemRatify the dispatch schema + build the ws.* subsystem (shared with combat save state)
Boss cinematics fire off a boss combat-state event that no boss-AI framework yet emitscinematicT99_Translation_Cinematic spike 4Cross-lane — depends on the combat lane's boss-AI framework (StateTree) emitting the state event
Ambient scene rows carry no beat_ref, so the beat-to-site-to-region join has nothing to join fromcinematicT99_Translation_Cinematic spike 6Schema field add — put a beat_ref (or a specified substitute) on ambient rows
Body-performance needs a mocap/retarget library that does not exist, and bespoke non-audio hero-beat animation has no pipelinecinematicT99_Translation_Cinematic spikes 9/2Build or acquire a mocap/retarget library; define the hero-beat animation pipeline

4. What the 5090 is actually for

Consolidated and deduped across all seven lanes. If a task is not on this list, it does not wait for the workstation.

Console packaging (Xbox int4/DirectML, PS5 compute-shader) is separately devkit-gated — neither the current machine nor the 5090 (lane: combat).

Keys & external services — the ruled shortlist (2026-07-19)

The complete set of external keys/subscriptions worth acquiring now, and the explicit skips. Nothing outside this list blocks the §2 NOW queue.

5. What book processing actually gates

Book processing gates content fidelity, never pipeline machinery. Nothing deterministic in any lane waits on the drain. What it does gate:

Not book-gated at all: terrain (geometry is DEM-derived) (lane: terrain); the cinematic deterministic spine (lane: cinematic); anything in the Indonesia arc (flores, bali, sumatra_java pages exist and the corpus is drained) (lane: ue5, lane: quest); the Ch 2-5 slice (lane: quest).

6. Stale-doc corrections

Every stale-or-wrong claim surfaced by the lanes, with its file, for living-source fix-up. The single biggest one — the UE 5.8-vs-5.7 split — recurs across four lanes and is listed once.

Engine-version split (recurs across lanes)

Terrain lane

UE5 Build lane

Asset generation lane

Audio lane

Cinematic lane

Quest writing lane

Wiring

This doc is the consolidated readiness map; the seven full lane reports are landed verbatim at docs/pipeline_review/READINESS_AUDIT_2026-07-19_LANE_REPORTS.json (the uncorrected workflow record — two combat-lane claims, Boss_Encounter-0-rows and recall.py-absent, were refuted at director adjudication against the live tree and corrected in Sections 1-3 above). Add this file to docs/DOC_MAP.md (a doc is not done until it is listed there). The stale-doc corrections in Section 6 are living-source fix-ups — apply them in place per the living-source doctrine; any that touch chapter/numerical/naming/hard-line/§17 canon go to Josh, but every item above is a factual/currency correction, not a canon call. The WALL fixes in Section 3 that add template fields, contract sections, or new spec docs are the ordered unblock work behind the execution queue.

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