ROADMAP_TO_5090.md

programs/ROADMAP_TO_5090.md

Roadmap — the window until scanning is done and the 5090 lands

Status: ACTIVE PLAN, 2026-07-22. The driving reference for this stretch. Josh confirmed the shape and

the region order (bali → sumatra → angkor default). Supersedes the ad-hoc "next up" pointers; the

START_HERE ▶ NOW block points here.

The two external clocks

Everything is gated by exactly two things, and almost all the high-value work sits outside both.

reactive, cheap, and idempotent. Drop scans in _source/02_Tier_2_Region_Pages/_ready_for_processing/;

messy filenames are fine (content-classified).

It gates every heavy GENERATION workload, not just book-reading: the book deep-read / triage floor

(text inference) AND photorealistic 3D generation, photorealistic asset generation, music

generation, and cinematic generation — plus VLM-OCR for stubborn scans. What it does NOT gate is the

DETERMINISTIC game-side systems build — combat systems, abilities, mechanics, physics, DataTables,

greybox/blockout locations, and seed wiring — which is pure file-edit + compile work in the UE

project and is proceeding NOW (Track 5). The runway (book-read tooling) is prepped (Track 4); arrival

day is wire-and-go. Rule of thumb: if it needs a generative model to run, it waits for the 5090; if

it's engine code / data / wiring, build it now.

Deliberately deferred to the 5090 (not forgotten — runway-prepped in Track 4)

local model, score seed-richness, let Opus follow the score). No local generative model exists

here today; fastembed covers embeddings only. This is the whole reason the floor waits.

non-Latin scripts that tesseract cannot rasterize. They stay queued in _needs_ocr/, never lost.

The five parallel tracks for the window

Track 1 — Region-by-region rollout (the main event)

The flores lane is proven END TO END (extract → conform → merge → audit → region-page pass-2). It is

now MECHANICAL, not exploratory. Each region runs the same five steps:

1. Deep-read its seed-rich books — Opus fan-out (the driver is a workflow; the standalone

deep_read.py driver half is a Track-4 build). Prioritizer = the story_seed_tags already on

1,638 sources, so seed-rich books are pickable WITHOUT the local floor.

2. Conform (exr_conform.py) → 3. Merge (deep_read.py merge) → 4. Audit (five-gate lens filter +

§8.8 care, Opus critics; exr_audit_apply.py is the deterministic apply) → 5. Region-page pass-2

(Opus section authors + fresh critics; apply_region_page_sections.py assembles; the director

never touches prose).

MEASURED STATE (2026-07-22) — the slice is nearly EXHAUSTED, which reshapes this track. There is

NO deep-read expansion to do: the overnight pilot already read essentially every book on these

shelves.

shelfbooksnot readextractedaudited
flores_indonesia160016 (DONE end-to-end)
sumatra_batak7060
bali4040
angkor_khmer1010
malay_world1010
vietnam1010

So the remaining Track-1 work is 11 records to audit + 3 region pages to pass-2 (bali,

sumatra_java, angkor_khmer — the live pages besides flores). That is DAYS, not weeks.

malay_world and vietnam have one book each and NO region page, so their rows have nowhere to land

yet — they wait for a page.

Order (Josh-confirmed): bali → sumatra → angkor. Each is now audit + pass-2 only.

The substrate wall — the real shape of this window

The corpus mass is NOT in the Ch 2-5 slice. It sits in shelves for LATER chapters:

shelfbooksdeep-read
esoteric3212
(unassigned)2280
cross_cutting1992
levant_israel1620
india_vedic1280
native_north_america1130
celtic_fairy800
british_isles740
greece_aegean620
egypt582

Deep-reading those now would be READING AHEAD OF THE BUILD — precisely what §4's region-batched,

never-gate-on-the-whole-library rule exists to prevent, and precisely the job the local triage floor

is meant to prioritize properly rather than by guess.

Therefore the window's centre of gravity is NOT Track 1. Track 1 finishes in days; after that the

highest-value work is Track 4 (runway prep), because it is what converts the 1,873-book backlog

from "unaffordable" into "swept for free on arrival" — plus Tracks 3 and 5, which are substantial in

their own right. The 228 unassigned books are a Track-3 target: shelving them costs almost nothing

and improves what the floor will later rank.

Track 2 — Scanning intake

Batch drains on Josh's ping or when the inbox fills (drain_inbox.py). One build: a legacy binary

.doc converter (LibreOffice-headless) so .doc files stop queuing indefinitely (the Ayurveda file

is the current instance). Runs in the seams.

Track 3 — Zero-token cleanup (deterministic scripts / light passes; never competes for model budget)

The standing residue queue, filling the gaps between fan-outs:

code (drop T0_Folklore_Entity_Registry, correct T0_Boss_EncounterT0_Boss_Encounter_Registry,

note the species_class discriminator). Highest priority in this track — a stale contract

re-teaches the phantom to the next reader.

Track 4 — 5090 runway prep (the highest-leverage prep item)

Scaffold + fully test against a stub so arrival day is wire-the-model-and-go:

deterministic stub standing in for the 7B/14B model.

EXR record) — currently a workflow; making it a resumable script is what lets the local floor and

the rollout share one code path.

Track 5 — Game side (NOT gated on Josh — the director drives it)

Correction (2026-07-22): Track 5 is not gated on Josh's availability. The director has desktop

control (computer-use) and can open, drive, save, and close the Unreal editor as needed.

closed). This unblocked the DataTable import seam.

editor).** Landed in the game repo: the greybox foundation (GAS AttributeSet with Composure + the 8

sub-nodes, the density subsystem, telemetry); then Step 3 — UHumanityDialMMC, the vril-density dial

resultant d_local = clamp(tier_baseline × WS_024/2, 0,1) as a GameplayEffect MMC (the "one float,

zero enemy-stat-change" thesis made mechanical) + native combat gameplay tags; then Step 4 —

UHumanityComposureLibrary, the Pillar-8 "N nodes broken" enforcer for the phase gate. Next headless

C++: the ws.* WorldStateSubsystem (Step 7), the StateTree combat-clock tasks (Step 2), the player

ability/effect scaffolding. Compile-verified per increment (UE 5.8, `HumanityEditor Win64

Development`).

desktop control / the NeoStack + Python-bridge seams. Scheduled deliberately (UE automation is

finicky and slow), after the headless C++ half.

Deferred audit — the 79-chapter spine + canon sweep against the care-scope class rules (Josh, 2026-07-22)

The three RULED care-scope class rules (DEEP_BOOK_PROCESSING_CONTRACT §2.6b + CVD §17.1, 2026-07-22)

were authored AFTER the spine and most canon were built. At a scheduled point in the roadmap, run a

full Prologue→Epilogue audit of the story spine (docs/spine/CH_NN.md, 79 nodes) AND the region

pages / registries against all three rules, to catch anything authored under the OLD (more

conservative) calibration:

authorial-gated that should surface player-facing at its ratified tier; any living tradition

uniquely excluded (care-tier inflation); the House-of-Velheim adjacency hold verified intact.

that should carry at full specificity; withholding narrowed to the personal-identifier minimum.

MANDATORY explanation (the scrub the rule forbids); community authorship of its own repair present.

This is a fan-out audit (one agent per node-band, adversarially verified), scoped like the RR passes.

NOT this window's work — it rides after the region rollout, since the region passes are already

re-touching each chapter's ground and will surface the worst cases first. Recorded so it is not lost.

Sequencing (corrected after measuring the shelves)

1. Track 1 — DONE (2026-07-22b). All four region pages are audited + pass-2'd: flores (16 recs),

bali (4 → page 512→4,524), sumatra_java (6 → 612→5,283), angkor_khmer (1 → 666→1,369). Every

region shelf reads deep_read_audited. The lane proved mechanical and the anti-padding discipline

held: angkor's 13-row harvest grew the page ~2x, not the ~8x bali/sumatra's 85/97 rows earned.

The seven briefed director rulings (familiar registry, entity-taxonomy gate, mining pointer,

Supreme-Being enforcement, Holocaust retag, living-practitioner S07) are the residual Track-1

apply pile and come next.

2. Then the centre shifts to Track 4 — the triage-floor + VLM-OCR + standalone-driver scaffolding,

stub-tested, so the 5090 is productive on arrival rather than waiting on a build.

3. Track 3 in the seams — contract §2.4 enum correction FIRST (a stale contract re-teaches the

phantom registry), then the unassigned-228 shelving, then the ws normalization and triage residues.

4. Track 5 scheduled by the director — C++ DataTable structs first (file-edit + compile, no

editor), the in-editor StateTree pass via desktop control after.

5. Track 2 continuously — drains whenever Josh's scans land.

Explicitly NOT in this window: deep-reading the big shelves ahead of the build. That is the floor's

job, and doing it by guess now would spend premium tokens on exactly the ranking problem the floor

solves for free.

Land-and-push every increment; the repo is the memory.

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