Skip to content

fix(core): PRD-616 - warm the output pass before startup and streamed draws - #509

Open
jonit-dev wants to merge 34 commits into
developfrom
perf/prd616-warmup
Open

jonit-dev wants to merge 34 commits into
developfrom
perf/prd616-warmup

Conversation

@jonit-dev

@jonit-dev jonit-dev commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Startup compiled the raw scene outside the authored output pass, so the first world render rebuilt three warmed graphs and pipelines. Warm-up now exercises the actual output pass before startup and streamed draws, preserving renderer/pass state and the complete offscreen world.

Independent Opus 5.5/high review found two edge cases, now repaired and re-reviewed as FIXED, with no concrete repair regression: forced refresh runs the world pass once per outer render despite nested bloom quads; repeated scope labels retain each metric’s maximum and fail closed if any admission lacks its first draw. Authored update method/property ownership and mode restore in finally. No new API, dependency or Three patch.

Validation:

  • Four installed PassNode/NodeFrame regression variants and three repeated-scope regressions reproduced red before repair and pass after. Focused renderer/warmup/constraints/timing: 131/131; evaluator/cache/timing: 64/64; world fixture: 12/12.
  • Bloom scoped browser on headed NVIDIA (two runs) and desktop pass complete 0/0 rebuild ceilings and diagnostics with three cells/nine tiles resident. Independent visual verdict: both pairs and overall NEUTRAL (PASS). Immutable repair proof.
  • Root typecheck/lint/docs/budgets and package-test phase passed. Root units passed 775 files with 3 skipped, but one assets worker exited unexpectedly; the complete interrupted file passed separately, 73/73. Every configured file is covered; the final full-wrapper exit was not clean. Documentation/CI contract suites and sequential pre-push drift checks pass. Existing lint/LOC warnings remain nonfatal.
  • Earlier canonical startup CPU: BEFORE21.3/22.3ms vs AFTER3.0/3.2/3.8ms, median3.2ms, recorded on acc3aff before these scoped-only repairs. Startup and actual Abyss desktop positive warm12/12 and zero rebuild proof, plus all24startup/scoped frames, remain published.

PRD-616: 100%, 6/6 phases, 5/5 original acceptance criteria, archived under docs/PRDs/done. User authorized pushing repairs and guarded merge queue. Required remote CI must pass; no bypass. Physical Android/iOS launch-time gains remain unverified and external PRD-360 follow-up work. Warm rendering adds bounded work behind the loading cover/offscreen.

Browser CI repair (70ee3674a): the replay proof now waits for initial startup before stopping/restarting, and its Playwright project uses headed Chromium under the existing CI Xvfb wrapper. Headless SwiftShader lost its device when the newly enabled output warm render attempted to create its swap surface. The unchanged golden replay and 30-second scenario both pass locally (2/2, 1.9 minutes); all 1,800 ticks and every movement assertion are preserved. Root typecheck/lint/docs pass; documentation/CI contracts pass 238/238. Existing lint warnings remain nonfatal. Remote browser CI subsequently passed 4/4.

Fresh independent Opus/high screenshot review: all ten real Abyss startup pairs (20 canonical frames, two runs) and both repair terrain pairs are NEUTRAL (PASS) for appearance preservation. The intense green/white terrain glow comes from normal-material terrain plus the deliberately bloom-enabled streamed-world probe; it is the same in both arms. That fixture alone cannot prove real Abyss parity. Real Abyss's lamp, pearls, additive plankton and bloom are intentional; Opus found no changed glow, UI, particles, lighting or framing in its actual startup images. These startup frames cover the attract screen, not later combat. The immutable image links above remain the reviewed evidence.

Remote CI repair (cec31f309): unit shard 3/4 reached the build-exit test's 60-second ceiling; its log alone cannot distinguish resource contention from a leak. The fixture now retains only pickup.wav, avoiding unrelated model/texture encoding while exercising the real audio worker pool. The 60-second ceiling and clean-exit assertion are unchanged; a new assertion requires the audio pass to report one processed input. Focused local runtime fell from 28.56 seconds to 880 ms (1.88 seconds including Vitest startup). A real negative control disabling worker-pool disposal still timed out; the ignored compiled file was restored byte for byte. pnpm ci:fast passes agents/docs/lint/drift on the final repair. Fresh remote qualification remains pending; current-attempt receipt rules require a complete candidate run, so a failed-job-only retry is inappropriate.

@jonit-dev jonit-dev added the prd:0% PRD implementation has no verified phase yet label Oct 15, 2026
@jonit-dev
jonit-dev marked this pull request as ready for review October 15, 2026 10:56
@jonit-dev
jonit-dev enabled auto-merge October 15, 2026 10:56
@jonit-dev
jonit-dev disabled auto-merge October 15, 2026 10:59
@jonit-dev
jonit-dev marked this pull request as draft October 15, 2026 10:59
@jonit-dev

Copy link
Copy Markdown
Contributor Author

Independent visual judge: NEUTRAL for all ten startup BEFORE/AFTER pairs and both scoped-world pairs. The amended review confirms complete static UI, terrain, lighting, camera and framing; its earlier animation explanation was withdrawn.

Headed NVIDIA Turing / WebGPU. BEFORE: frozen 1d056cec3 plus diagnostic patch. AFTER core: acc3affd3. Scoped snapshots use three resident cells, nine terrain tiles and no pending load/prewarm/admission work.

Both complete startup and scoped zero-work assertions pass in browser and the owned desktop host. First-world CPU: 3.0, 3.2, 3.8 ms; median 3.2 ms, against same-harness BEFORE 21.3/22.3 ms. This is render CPU, separately recorded from the first post-READY visible draw.

Startup run 1 — frames 1–5

Frame BEFORE AFTER
1 BEFORE run 1 frame 1 AFTER run 1 frame 1
2 BEFORE run 1 frame 2 AFTER run 1 frame 2
3 BEFORE run 1 frame 3 AFTER run 1 frame 3
4 BEFORE run 1 frame 4 AFTER run 1 frame 4
5 BEFORE run 1 frame 5 AFTER run 1 frame 5

Startup run 2 — frames 1–5

Frame BEFORE AFTER
1 BEFORE run 2 frame 1 AFTER run 2 frame 1
2 BEFORE run 2 frame 2 AFTER run 2 frame 2
3 BEFORE run 2 frame 3 AFTER run 2 frame 3
4 BEFORE run 2 frame 4 AFTER run 2 frame 4
5 BEFORE run 2 frame 5 AFTER run 2 frame 5

Scoped world — complete resident terrain

Run BEFORE AFTER
1 BEFORE scoped world 1 AFTER scoped world 1
2 BEFORE scoped world 2 AFTER scoped world 2

Original captures, exact comparison pairs, UI zooms, source patches and runtime receipts. UI zooms are nearest-neighbor enlargements of unchanged source pixels; full original frames remain available.

PR stays draft and unmerged. Physical Android/iOS and remote CI are unverified.

@jonit-dev jonit-dev changed the title fix(core): warm the render context used by the first frame (PRD-616) fix(core): warm the output pass before startup and streamed draws Oct 15, 2026
@jonit-dev jonit-dev added prd:100% — ready PRD complete, ready to merge and removed prd:0% PRD implementation has no verified phase yet labels Oct 15, 2026
@jonit-dev
jonit-dev marked this pull request as ready for review October 15, 2026 16:13
@jonit-dev
jonit-dev enabled auto-merge October 15, 2026 16:13
@jonit-dev
jonit-dev disabled auto-merge October 15, 2026 16:29
@jonit-dev

Copy link
Copy Markdown
Contributor Author

Independent review repairs verified: scoped refresh now invokes the world pass once per outer render despite nested bloom quads; repeated scope labels preserve worst first-draw counts and fail closed when any admission has no first draw. Four renderer cases and three scope cases reproduced red before the fixes and pass after them. Opus 5.5/high re-reviewed both and returned FIXED, with no concrete repair regression.

The authored world warm-up probe now includes Abyss bloom. Two headed NVIDIA browser runs and desktop pass complete scoped 0/0 ceilings and diagnostics, with all three cells/nine terrain tiles resident. A fresh read-only visual judge returned NEUTRAL (PASS) for each pair and overall against appearance preservation criteria.

Run 1: BEFORE left, AFTER right

Run 2: BEFORE left, AFTER right

Immutable repair source patch and runtime receipts. No physical-mobile or remote-CI success is claimed.

@jonit-dev
jonit-dev enabled auto-merge October 15, 2026 17:17
@jonit-dev jonit-dev changed the title fix(core): warm the output pass before startup and streamed draws fix(core): PRD-616 - warm the output pass before startup and streamed draws Oct 15, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prd:100% — ready PRD complete, ready to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant