Gap audit 2026-07-29 - lane quest-dialogue-runtime (12 findings)
Verbatim from workflow wf_d0ca605f-891. Each finding carries either its own register entry id or
the cross-lane merge that absorbed it. This file is the evidence of record the compact register
entries cite.
quest-dialogue-runtime#1 [CRITICAL] merged into GAP-133 - The dialogue TREE has no serializable shape — the pinned DD schema physically cannot carry a node, a six-option slot, or a branch edge
Vision rules. T0_Hard_Lines HL_0039/HL_0040/HL_0041 (authority CVD §17.8, applies_to_chapter_range=universal, status=canonical, pipeline_consumer includes Quest+UE5): "Every dialogue moment surfaces six options"; "All six... fully written and fully voiced. No procedural generation. No template-fill. No placeholder text." CVD §10.7 makes this "the Quest Writing contract for the 30-million-word base game." T1_Build_Pipeline_Contracts [ACTIVE v1.0] §6.5 declares the logical model: dialogue_node_array carrying node_id, trigger_anchor_id, dialogue_type (6 members), six_option_array, branch_target_array. Josh RULED D-SIX-OPT 2026-07-17 (docs/spine/DECISIONS_PENDING_JOSH.md L2328): per-slot slot→outcome routing "RIDES to the dialogue build" — the dialogue build is the ruled home.
What exists (verified). Contracts §6.5 'Physical file' clause pins the DD CSV at SIX columns — line_id, speaker_ref, trigger_beat, line_text, condition_expression, loc_namespace_key — then asserts "The dialogue_node_array and line_variant_array model below is the logical structure this CSV serializes." None of node_id, dialogue_type, six_option_array (which of the six slots a line is) or branch_target_array (the tree edges) is a column. On disk: docs/quest_dialogue/ DOES NOT EXIST (Test-Path False, while sibling docs/spine, docs/translation, docs/proposals all list); zero DD_*.csv anywhere (git ls-files quest|dialogue = 42 hits, none a DD file). Engine: no DialogueRow.h among 47 Source/Humanity/Public/Data/*Row.h headers (ClueRow.h, VoiceRegistryRow.h present — positive control), no DT_Dialogue* among 46 Content/Data/Registries/DT_*.uasset (DT_Voice, DT_SideQuestBeat present). Contracts' own deferral list still names "Dialogue dataset structure including six-option dialogue node format, biography-state-conditional line variants" as an open item (L1045).
Delta. The ruled home for the six-option tree is a flat 6-column line list. A branch_decision node's edges and a six_option node's slot identity are UNREPRESENTABLE in the ratified physical schema, so Josh's D-SIX-OPT deferral lands nowhere. Plan item Q3.1 queues "create docs/quest_dialogue/ + pinned 6-col DD header" — which BAKES the defect as data. Needs: a node/edge-bearing schema (node_id, dialogue_type, six_option_slot, branch_target) before any DD file is authored, plus its engine row struct + DataTable.
Blocking. Q3.2 (the six-option SELECTION engine) has no data shape to read; Q3.1 lands the wrong header the moment it runs; every slice-chapter conversation and the Ch 75 maximum-weight deployment (HL_0069) author against it. Hits first at Q3.1, which is BUILD-NOW today.
Proposed home. Amend T1_Build_Pipeline_Contracts §6.5 'Physical file' to a two-file DD shape (DD_<quest_id>_nodes.csv + DD_<quest_id>_lines.csv) or add node_id/dialogue_type/six_option_slot/branch_target columns; mint the matching DialogueNodeRow.h + DT_DialogueNode; run BEFORE Q3.1 creates the directory.
quest-dialogue-runtime#2 [CRITICAL] merged into GAP-135 - Zero quest rows exist for the slice, and Ch 6-13 has no quest-authoring owner anywhere in the queue
Vision rules. The slice is PROLOGUE→CH 13 — 14 nodes / 15 region-legs / 13 region rows, and "THE EA BOUNDARY — the full slice ships as the Early Access base; no early cut" (docs/PRE_5090_BUILD_PLAN.md L146-163). CVD §11.1: 22 buckets, Main Story + 10 trades + 12 SQ, each trade/SQ bucket 1M+ words. Contracts §6.2 'Main Story Per-Chapter Quests' requires per-chapter opening/pivot/closing/character-introduction/regional-integration quests.
What exists (verified). registries/T0_Quest_Definition_Registry [ACTIVE v1.0]/T0_Quest_Definition_Registry.csv = exactly 16 rows (Import-Csv count), every one canonical_hard_line/prologue_baseline/epilogue_resolution at Ch 55, 58, 76, 77, PROLOGUE, EPILOGUE. ZERO rows for Prologue→Ch 13 and zero for Ch 2-54/56-57/59-75. registries/T0_Quest_Seed_Registry [DRAFT v0.1]/Sheet1.csv = 1 line, header only, ZERO rows (positive control: sibling T0_Source_Material_Registry reads 1915 lines by the same method). The Ch 2-5 spike's 25 main quests + 17 SQ stages exist only as proposal prose in docs/proposals/quest_spike/CH_02..CH_05_quests.md (SPIKE_REPORT §3 table). Queue coverage: Q3.1 lands the Ch 2-5 spike; rank 10 types "264 seeds on the 4 built regions" (flores/bali/sumatra_java/angkor_khmer).
Delta. Ch 6-13 is 8 of the 14 slice nodes and 9 of the 15 region legs, and no ranked item, no WS-3 item and no R-3x item authors a single quest row for them. The whole EA base ships with a quest registry that names no quest inside it. Needs: a Ch 6-13 quest-decomposition rank (the spike method, 8 nodes) plus the Ch 2-5 spike landing.
Blocking. Gate 1 (Ch 2-13 P3-exit, where Josh's verdict directs the fairy realm) and Gate 2 (full-slice exit, opens P4). Blocks the moment the Ch 6-13 region legs start building — the rank-10 rescope rider already records those eight region pages as ON DISK.
Proposed home. A new window-plan rank beside rank 10/15: 'Ch 6-13 main-story quest decomposition + SQ stage rows', reading build/spine_rows/CH_06..CH_13 beats.csv (the beat graph already exists) into T0_Quest_Definition_Registry.
quest-dialogue-runtime#3 [CRITICAL] merged into GAP-135 - 87 region-page Section-13 quest seeds on the Ch 6-13 pages are structurally invisible to the housing ledger and its gate
Vision rules. docs/proposals/QUEST_SEED_HOUSING_LEDGER.md header states the governing instruction (Josh 2026-07-22b): "the seeds and weaves are headed for quest writing and must not be lost. Every proposal-tier seed... appears here exactly once. UNROUTED is the default, so a seed nobody has placed shows up as an open row rather than as silence." Gated by harness/check_seed_housing.py in the run_gates.py roster. Contracts §6.5 CG-22 routes region-page seeds to the DEEP_BOOK §7.5 typing step.
What exists (verified). harness/rag/seed_housing_index.py sources ONLY QUEUE = docs/proposals/quest_seed_queue (L28, L61) and EXR_DIR = docs/book_extractions/EXR_SRC_*.json (L29, L86). The ledger's own count block: "rows: 400 — 264 queue seeds + 136 weave_links". The 12 slice region pages carry 187 top-level Section-13 seed bullets (measured per page: bali 31, sumatra_java 39, flores_island 22, west_africa 16, central_africa_congo 17, swahili_coast 12, sri_lanka 10, rift_valley 10, south_india 8, angkor_khmer 8, ethiopia 7, south_africa 7). The eight Ch 6-13 pages carry 87 of those, and quest_seed_queue/ has no shelf for any of the eight slugs (11 shelf files: angkor-khmer, bali, cross-cutting, esoteric, fairy-literary, flores-indonesia, malay-world, rome-italy, sumatra-batak, sumatra_java, vietnam). Positive control: grep -iE 'sri_lanka|south_india|swahili|ethiopia|rift_valley|congo|west_africa|south_africa' over the ledger returns exactly ONE line — a weave_link whose region_ref is 'esoteric' — while 'bali' returns 56.
Delta. The one gate that guarantees no seed is lost cannot see the eight Ch 6-13 pages at all, so 87 authored seeds sit outside the ledger's exactly-once contract and outside rank 10's 264-seed scope. The gate will stay green while they rot. Needs: extend seed_housing_index.py's source set to _source/02_Tier_2_Region_Pages/*.md Section 13, re-emit the ledger, and re-scope rank 10.
Blocking. Rank 10's typing pass (the pass that mints Quest_Seed rows) and every Ch 6-13 side-content build; a silent-loss class the repo has already been burned by (memory: silent-data-loss-chunk-id-collapse).
Proposed home. harness/rag/seed_housing_index.py source-set extension + a check_seed_housing coverage assertion that every region page with a Section 13 contributes ≥1 ledger row.
quest-dialogue-runtime#4 [CRITICAL] merged into GAP-135 - The journal (Pillar 6) has a complete state machine and zero content structure — the journal_entry_id space is minted by nothing and the CVD-named [...]
Vision rules. CVD §5 Pillar 6 — Journal Player-Facing (Gate 6): "Journal is both plot object (canonical beats: Ch 13 activation, Ch 38 handoff, Ch 57 public release) AND player-readable living artifact"; executable test — "Journal voice not the healer's child = pillar violation. Path-variable texture absent = pillar violation. Canonical beats Ch 13/38/57 missing = pillar violation"; cross-ref: "T0_Journal_Entry_Template_Registry; T1_Integrity_Paths §8.4 Journal Status Anchors." T1_Integrity_Paths §8.4/§8.5 own the anchors and the path-variable texture.
What exists (verified). The STATE half is fully structured: T0_Worldstate_Variables WS_009 journal_status (9-member enum, consumers journal_renderer/region_page_section_19/Ch59_65 dispatcher), WS_010 journal_entries_unlocked ("array of journal_entry_id strings", consumers journal_renderer + save_state_system), WS_011 journal_voice_texture (RICH_WARM/MIDDLE_REGISTER/SPARSE_COLD/DIMINISHING). build/spine_rows/CH_13/beats.csv writes journal_status=ACTIVE_HEALERS_CHILD;local.journal_open=true. The CONTENT half is empty: T0_Journal_Entry_Template_Registry does not exist (0 of the 30 files in _source/00_Tier_0_Master_Indices, 0 of the 62 dirs in registries/ — positive control, the same greps return the three T0_Quest* files/dirs); 'journal_entry_id' occurs exactly ONCE in registries/, inside WS_010's own description cell; docs/factory_contract.json — 70 riders — contains the word 'journal' ZERO times (positive control: 'objective' hits FR-036, 'fail' hits FR-050/FR-063). Adjacent registered work: DESIGN_GAP_REGISTER entry 126 registers the deduction workspace (entry-state enum, evidence back-link, more-here flag) and explicitly prices the assembly-and-voice half as already-registered Q3.6 work.
Delta. Entry 126 covers the deduction workspace; nothing covers the entry inventory. There is no table of journal entries, no per-band template rows for Q3.6's "path-band template selection" to select, no count model (entries per chapter × 3 path bands × voice texture), and no per-chapter obligation. Ch 13 — the slice's closing beat — activates a Pillar with an empty entry set. Needs: T0_Journal_Entry_Template_Registry (or an equivalent home) + a per-chapter entry bill of materials + a factory rider.
Blocking. Q3.6 Journal system (BUILD-NOW) has nothing to assemble from; VOL2 U11.16's book screens; the Gate-1/Gate-2 slice exit, where Pillar 6's three-clause executable test is applied to a Ch-13-closing slice.
Proposed home. Mint T0_Journal_Entry_Template_Registry per the CVD Pillar-6 cross-ref, with a factory-contract rider (data_home + tooth + consumption) and Ch 13/38/57 as its hard anchors.
quest-dialogue-runtime#5 [MAJOR] merged into GAP-134 - FR-029, the factory contract's only NPC-dialogue obligation, has no data home and no consumption point — and is mis-pointed at a rank that delivers [...]
Vision rules. docs/FACTORY_CONTRACT.md is the ratified per-chapter obligation register (window-plan rank 2.5, landed with gate 30 in the same commit) — it answers "for Ch NN, what must be true?" and every rank after it is meant to be self-wiring against it. Rider FR-029, lane canon-author, scope=all (all 79 nodes): "Author the quest-giver conversations this chapter's quest log then remembers — the NPC dialogue lane is per chapter, not a one-time pass."
What exists (verified). docs/factory_contract.json FR-029: status SEED, data_home = "NONE_YET(rank 11)", consumption_point = "NONE_YET(rank 11)", tooth = "critic:does a person say this" (a critic only, no gate). Window-plan rank 11 is "Mint T0_Persona_Index + complete personas on every slice entity" — a persona registry, not a dialogue home. The ratified dialogue home (docs/quest_dialogue/DD_<quest_id>.csv, Contracts §6.5) is not cited by FR-029 at all. Of 70 riders, 11 carry NONE_YET homes (FR-014/016/021/023/029/035/042/061/063/064/067); FR-024 and FR-036 point at the real path:docs/spine/player_strings/*.csv, so the register CAN carry a working home — positive control.
Delta. The per-chapter dialogue obligation is unfalsifiable by construction: rank 11 will complete and FR-029's data_home will still not exist, while gate 30's vacuity guard reads the rider as legitimately-pending rather than mis-routed. Needs: re-point FR-029 at the dialogue home once it is schema-fixed (gap 1), and add the missing per-chapter riders — quest rows in T0_Quest_Definition_Registry, journal entries, a fail/no-dead-end path (0 of 70 riders mention 'questline', 'side quest', 'abandon' or 'reward').
Blocking. Every chapter the factory builds from rank 2.5 onward runs with no checkable dialogue obligation; the mis-pointer surfaces as a false-closed rider the moment rank 11 lands.
Proposed home. docs/FACTORY_CONTRACT.md + docs/factory_contract.json — re-point FR-029, mint FR-quest-rows / FR-journal-entries / FR-quest-fail-path riders in the same pass.
quest-dialogue-runtime#6 [MAJOR] GAP-193 - No runtime quest state model, no abandon path, and the no-dead-end tooth cannot see a quest
Vision rules. Contracts §6.5 CG-14 CLOSED added typed fail_state + progression_guarantee "so the no-dead-end rule and the reward-on-win-and-death rule" become "machine-checkable at quest grain." CLAUDE.md content bar: killing "never hard-gates progression (multi-path / no-dead-end)". ENTITY_PERSONA_SYSTEM §3.4/§3.5: the non-gating invariant is only trustworthy if CHECKED, not asserted.
What exists (verified). Contracts §6.7's quest_status is an AUTHORING-pipeline state machine (pending → substrate_check → blocked_on_substrate → canonical_question_review → authoring → authored → reviewed → accepted → rejected → regeneration_required) — there is no runtime enum anywhere (offered/active/complete/failed/abandoned). Engine: grep -rniE 'QuestDefinition|fail_state|Abandon|QuestState|JournalEntry|Dialogue' over both Source trees returns no runtime state type — only FQuestDefinitionRegistryRow's FString columns, a QA-watchdog comment and the scene AnchorType string 'dialogue_initiation'. UQuestSubsystem.h's full public API is a BEAT DAG (IsBeatEligible/AdvanceBeat/ChooseFork/CompletedBeats) with no quest object. fail_state and progression_guarantee are 0/16 populated. harness/no_dead_end_scorecard.md: "Gate: SCAFFOLD-PASS", "spine nodes (forward backbone): 79", "opportunity/persona layer populated: False" — it walks T0_Chapter_Index, never a quest row. gates_config.json: 34 gates, none subject to T0_Quest_Definition_Registry.
Delta. Rank 15 populates the fail_state/progression_guarantee COLUMNS on the 16 endgame rows; nothing mints the runtime state machine, the abandon/re-acquire affordance, or a quest-grain no-dead-end tooth. A quest that soft-locks is undetectable by any gate today, and check_no_dead_end will keep returning SCAFFOLD-PASS after quests populate because quests are outside its walk. Needs: a runtime quest-state enum + abandon path (engine) and a quest-grain arm on check_no_dead_end.
Blocking. Q3.5 (the 22-bucket QuestRuntime + multi-path/no-dead-end validator, BUILD-NOW) and QT-7 fork completability; bites as soon as gap 2's Ch 6-13 quest rows land with reachability nobody can check.
Proposed home. Source/Humanity/Public/Quest/ (a runtime FQuestState + abandon API) + a quest-grain arm inside harness/check_no_dead_end.py, both cited to Contracts §6.5 CG-14.
quest-dialogue-runtime#7 [MAJOR] GAP-194 - The density model is blind to quests and dialogue — the content-budget vector has no quest axis and no dialogue axis
Vision rules. VOL2 §C: "The density model is a curve (directive 6)... This scorecard makes the progression/quest budget measurable per chapter." QT-19 gates "content ≥ the chapter-band floor... the SHAPE is monotone-rising early→mid, so a mid-game chapter under the early-game floor fails" and names "the thinnest chapter each run." VOL2 §C states the target: "full game ≈100-200 h main / 1-2 k h side+weave."
What exists (verified). VOL2 L1424 QT-17's declared budget vector, read literally: sites (DT_Site 376), beats-by-type (DT_Beat 891), encounters + sub-bosses, forks + options (DT_Fork 90 / DT_ForkOption 305), minigames, weave-links (184), significance-lenses (33), personas (163), threads-woven (664), reputation surfaces, §16 citations (1356). No quest count, no dialogue-node count, no side-quest count. VOL2 §C's per-chapter table columns: quest beats | forks (opts) | scored-interaction beats | ability grants | scene-anchors needed | durable ws.* writes | QT-7 fork paths — main-path beats only. QT-17/18/19 are unimplemented (no content_budget/QT-17 hit anywhere in harness/, Tools/ or QA/; check_slice_scorecard.py also absent per the plan's own positive control).
Delta. The instrument that decides whether a chapter is thin cannot measure the two things the quest lane produces. Arming QT-19 as specified would certify a chapter as density-compliant with zero quests and zero dialogue nodes, and the "1-2 k h side+weave" target has no countable bill of materials at any grain. Needs: quest-rows-per-chapter, side-quest-rows-per-chapter and dialogue-nodes-per-chapter added to the QT-17 vector BEFORE QT-19 is armed.
Blocking. WS-10's QT-17/18/19 build (BUILD-NOW) would ship a scorecard that reports nothing about this lane; the band-sentinel dependency for Ch 6-13 is already a named precondition in the plan.
quest-dialogue-runtime#8 [MAJOR] GAP-195 - Not one of the 34 gates reads the quest or dialogue lane, and four universal six-option hard lines have no tooth at all
Vision rules. CLAUDE.md verification discipline: "Trust content, not labels" and every claim independently audited; the repo's own standing lesson is that a rule not armed is not a rule (memory: noisy-gate-conceals-and-anchor-scoping-defects). T0_Hard_Lines HL_0039/HL_0040/HL_0041/HL_0068 are all status=canonical, applies_to_chapter_range=universal, with pipeline_consumer including Quest. Plan Q3.1 names check_quest_rows.py as a deliverable.
What exists (verified). harness/gates_config.json carries 34 gates; none takes T0_Quest_Definition_Registry or any dialogue surface as its subject (Quest_Definition is read only incidentally, by check_build_space.py for twelve_tier_gate — recorded in DESIGN_GAP_REGISTER L1143 as 'ARMED-all-blank'). No check_quest_rows.py exists in harness/ (positive control: the harness readily mints per-domain teeth — check_boss_axes, check_counter_class_coverage, check_rarity_firewall, check_ally_build, check_realm_ruleset, check_promise_ledger, check_emotional_curve, check_seed_housing all present). grep HL_0039/HL_0040/HL_0041 across harness/*.py, harness/rag/*.py and docs/factory_contract.json returns zero. T0_Quest_Definition_Registry is not enrolled as a registry in docs/fk_spec.json (it appears only as an FK target).
Delta. fk_spec enrollment is queued at rank 15; a CONTENT tooth is not. The strongest hard lines in the lane (six options always, all six authored, no placeholder text) are unenforced, and Q3.1's named check_quest_rows.py sits outside the ranked 30. Needs: check_quest_rows.py in the gates roster, arming the six-option and objectives/fail-state invariants, with must-fire/must-not-fire fixtures per the QA-8 discipline.
Blocking. Every quest row and dialogue file authored between now and the gate's arrival is unverified; the cost rises with volume, so this precedes gap 2's Ch 6-13 authoring.
Proposed home. harness/check_quest_rows.py + a gates_config.json entry, cited to Contracts §6.5/§6.7 and HL_0039-HL_0041.
quest-dialogue-runtime#9 [MAJOR] GAP-196 - The 22-bucket architecture's trade and familiar-bond arcs are wholly unanchored, and only the side-questline half got a ruling and a rank
Vision rules. CVD §11.1: 22 buckets — Main Story + 10 Trade Questlines + 12 Side Questlines — and "Each Trade and SQ bucket carries 1M+ words at full canonical depth" summing to the 30M base. CVD §11.3: each trade has exactly one ancient and one modern home-base chapter and "the Trade Questline opens at the ancient home base, develops cross-chapter, and revisits/transforms at the modern home base." Josh RULED FORK J-1 as TWELVE COMPLETE ARCS for side questlines (window plan R-32).
What exists (verified). registries/T0_Arc_Index [DRAFT v0.1] = 128 rows over 7 classes (22 thread, 60 chain, 21 familiar_bond, 12 side_questline, 10 trade_questline, 2 object_spine, 1 antagonist). Measured: the 10 trade_questline rows carry first_anchor_node, last_anchor_node, resolution_node, promised_beats and depth_grade ALL EMPTY — 0/10 on every one; the 21 familiar_bond rows are 0/21 resolution_node and 0/21 promised_beats. Positive control: side_questline carries 7/12 resolution_node, so the columns do hold values. docs/fk_spec.json records the same finding in its own note: "5 of 12 side questlines and every trade questline reach no resolution anywhere." Queue coverage: R-32 builds the floor for the five never-COMPLETE SIDE questlines only; rank 23 mints the 120 trade tier-gate ROWS; rank 18 bundles the 5 trade chapter pins as a Josh brief.
Delta. The identical machine-derived finding — no resolution anywhere — produced a ruling and a rank for side questlines and nothing for the 10 trade questlines or the 21 familiar-bond arcs. Rank 23's 120 gate rows are the tier ladder (quest_type trade_questline_tier_progression); the questline ARC spine and the trade_questline_home_base half have no owner. Needs: a J-1-equivalent disposition for trade + familiar-bond arcs and an arc-spine build rank beside R-32.
Blocking. Rank 23 (120 trade-gate rows) would author gates hanging off arcs with no anchors; gate 32 / check_arc_continuity and check_promise_ledger read these rows today and cannot assert anything about 31 of 128 arcs.
Proposed home. Extend R-32 to 'the questline floor build' across all three bucket families, or mint R-33 for trade + familiar-bond arcs; write through T0_Arc_Index/T0_Arc_Grid as R-32 does.
quest-dialogue-runtime#10 [MAJOR] GAP-197 - Five side-bucket quest_types are declared with no reference point on the entity side — 72 weapons, 13 schools and 184 link edges have nowhere to name [...]
Vision rules. Contracts §6.5 quest_type is a ratified 21-member enum including weapon_bond, familiar_bond, familiar_father_reunion, school_curriculum, folklore_combat, grimoire_link and seed_defense. §6.2 'Regional Quest Set' requires "School curriculum quests per T0_School_Registry... Grimoire link quests cross-referencing vril sites... Seed defense quests per T0_Quest_Seed_Registry." Locked numerical canon: 72 weapons, 22 familiar slots, 33 legendary species, 12-tier mastery / 120 quest gates (CLAUDE.md).
What exists (verified). T0_Weapon_Registry [DRAFT v0.1] = 72 rows, 22 columns, and NO bond/quest/gate column of any kind (columns are weapon_id…presentation_tier_ref; positive control — the same read shows T0_Familiar_Registry DOES carry bonding_quest_id and bond_formation_beat_ref). T0_School_Registry = 13 rows, 15 columns, no curriculum-quest column (gate_administration is an administration field). T0_Cross_Cultural_Link_Graph = 184 rows, zero columns containing 'quest'. T0_Familiar_Registry bonding_quest_id populated 0/22. T0_Questline_Index = 23 rows (12 SQ + 10 trade + 1 legendary) and the single legendary row is LEG_WPN_036 with name 'UNRESOLVED'. T0_Quest_Seed_Registry = 0 rows, so seed_defense has no target either.
Delta. The enum supplies vocabulary the entity registries cannot point back at, so a weapon-bond or school-curriculum quest can never be joined to its weapon or school even after the quest row exists. Rank 26 fills 'weapon damage_type/vril_couple 0/72, familiar↔creature bonds' — creature_ref, not bonding_quest_id — and rank 14 mints the §§7-12 data homes, none of them a quest hook. Needs: bond/curriculum/link quest-ref columns on Weapon, School and Link_Graph, and bonding_quest_id population on the 22 familiars.
Blocking. Rank 23 and any weapon/familiar/school questline authoring; and the FK edges cannot be registered in fk_spec at rank 15 because the columns do not exist to register.
Proposed home. Contracts §6.6 'Per-Registry Quest Column Adds' — add the columns via harness/apply_t03_extensions.py, then enroll them in docs/fk_spec.json in the same commit as rank 15.
quest-dialogue-runtime#11 [MAJOR] merged into GAP-133 - The 164-character and 64-operative speaking cast carries no dialogue_dataset_ref and no voice_signature_ref FK — the two columns two ratified [...]
Vision rules. Contracts L152: "T0_Character_Index Session 5K target. UE5 minimum-viable adds at populate — ue5_npc_actor_class_ref, behavior_tree_class_ref, dialogue_dataset_ref, mesh_id_ref, voice_signature_ref" (L150 says the same for T0_Antagonist_Network_Registry). §4: "ElevenLabs voice generation halts on missing dialogue dataset for any entity flagged as speaking in the build manifest"; "UE5 build pipeline halts on missing voice_signature_ref for any entity flagged as required-voice." §4 L922 pins voice_signature_ref as an FK to T0_Voice_Registry.voice_id.
What exists (verified). T0_Character_Index [ACTIVE v1.1] = 164 rows, 33 columns: character_id…decay_stage. It carries voice_signature_notes (free text, populated 164/164) but NO voice_signature_ref, NO dialogue_dataset_ref, NO behavior_tree_class_ref, NO ue5_npc_actor_class_ref. Positive control: mesh_id_ref, mesh_pipeline_type, generation_status and presentation-lane columns DID land on the same registry, so the column-add mechanism works — the AssetGen half of that same declared set landed and the dialogue/voice half did not. T0_Antagonist_Network_Registry = 64 rows, 19 columns, no voice or dialogue column at all. T0_Voice_Registry = 23 rows (10 row_class=tts_casting + 13 row_class=cultural_register), so the FK target exists and is populated. Demand measured from the spine: 86 distinct actor tokens across the 14 slice nodes, 206 across all 79; 66 of 450 scene rows carry a dialogue anchor_type.
Delta. 228 speaking-candidate entities, a populated voice registry, and no edge between them — so the declared halt conditions can never fire and 66 dialogue-anchored scene rows have no bindable speaker asset. Rank 15 covers Quest_Definition's execution columns only; no rank covers the Character_Index/Antagonist_Network dialogue-and-voice column adds that Contracts declares 'at populate'. Needs: the four declared columns, plus voice_signature_ref FK enrollment.
Blocking. CN5.4 participant resolution and the ElevenLabs per-line lane (DR-AU2); Q3.9's persona-voice dataset collector has no per-entity voice key to accrete against.
Proposed home. Contracts §6.6 / §4.6 column adds applied through harness/apply_t03_extensions.py, with the voice_signature_ref edge landed in docs/fk_spec.json.
quest-dialogue-runtime#12 [MINOR] GAP-198 - Both DOC-authority homes for the quest lane are empty: the ten T5 questline docs are 2-line title stubs, and the quest pipeline is the only one of [...]
Vision rules. CVD §11.5: "Per-bucket detail (specific SQ canonical structures, Trade-by-Trade canonical structures, Main Story chapter-by-chapter beats) → T5 detailed questline docs" — CVD names T5 as the authority for all 22 buckets' actual structure, each sized at 1M+ words by §11.1. The Translation Docs are "the §0 runtime layer the contracts always deferred — the concrete schema→engine realization chains" (DOC_MAP L103); plan Q3.1 names T99_Translation_Quest as a deliverable.
What exists (verified). All ten files in _source/05_Tier_5_Questlines/ are 2 lines each (title + blank): Main_Story_Spine_Detailed, Side_Questlines_Detailed, Trade_Questlines_Detailed, School_Curriculum, Folklore_Combat, Grimoire_Link, Legendary_Weapons, Familiar_Bond, Seed_Defense, Questlines_Master_Summary — 20 lines for the entire tier. docs/CORPUS_SWEEP.md row 5 records it: "All ten are 48-53-byte title-only stubs. The entire T5 questline tier is unauthored." No live window-plan rank names T5. Separately, docs/translation/ holds exactly six docs — T99_Translation_AssetGen, _Audio, _Cinematic, _Combat, _Terrain, _UE5_Build — and NO T99_Translation_Quest (positive control: the six siblings all list); DOC_MAP L103 calls that roster "COMPLETE."
Delta. The lane's design authority (T5) and its schema→engine runbook (T99_Translation_Quest) are both absent, while every other pipeline has its Translation Doc and the 2026-07-19 readiness audit treated a missing Translation Doc as a WALL when it was Combat's. Rank 23 and R-32 fill fragments of T5's job; nothing owns the tier or the runbook. Needs: T99_Translation_Quest authored (the seventh doc, the same shape as _Combat), and a T5 population owner or an explicit supersession note routing T5's job to the arc registries.
Blocking. Q3.1-Q3.9 have no runbook to build against, so each engine item re-derives the schema→runtime chain; hits at the first WS-3 engine increment after gap 1's schema fix.
Proposed home. docs/translation/T99_Translation_Quest.md (mirroring _Combat's shape) + either a T5 population rank or a DOC_MAP-rowed supersession declaring T0_Arc_Index/T0_Quest_Definition_Registry the live authority in T5's place.
Generated by harness/site/structure_site.py — the URL path is the repo path. review root