ENG2: GoudEngine v2 Rebuild — Master Tracking
This program rebuilds the performance-critical cores of GoudEngine so the engine can run tens of thousands of visible entities at 120+ FPS on Apple M-series and 100k+ simulation entities, with per-frame cost O(visible), not O(total). It replaces the stale ALPHA_ROADMAP and the zombie alpha-v2 milestone, and is grounded in a 12-subsystem, file:line-verified code audit.
Prime directive / definition of done for perf: an issue closes only when the named scripted scene (S1–S5, see docs/src/runbook/perf-dod.md) hits its numeric target AND a phase counter attributes the cost. A counter that reads zero means broken instrumentation, never "free".
Binding decisions: refactor cores with no legacy code kept (breaking the API is allowed; Throne adopts afterward); keep full 10-SDK parity (made cheap + CI-gated, not pruned); keep all platform targets (made CI-real).
Runbook: docs/src/runbook/phase-index.md (committed with the roadmap). 109 issues total: 102 engine across 10 phases + 7 Throne adoption issues.
Execution model
- Phases sequential (gate must pass first) — except Phase 1‖Phase 2 run concurrently, and Phases 5‖6‖7 run concurrently (file-disjoint).
- Batches within a phase sequential; groups within a batch parallel (one
/gh-issue <n> --worktree per group).
- Every
breaking-change issue names its Throne adoption follow-up before it closes.
- Issues are disposable: if one drifts from its phase doc, close it and regenerate from the runbook.
Concurrency map
P0 → (P1 ‖ P2) → P3 → P4 [SYNC A] → (P5 ‖ P6 ‖ P7) [SYNC B] → P8 [SYNC C] → P9
Phase 0: Instrumentation, Truth & Test Foundation
Milestone eng2-p0-truth · GPU timestamps + real phase counters, bench-gate in CI, scene harness S1-S5, story gallery, alloc budgets, E2E/spec/determinism/fuzz fixtures, Docker CI, RFC-0005, OpenGL-removal ADR, docs+issue hygiene.
| ENG2 ID |
Issue |
Status |
| ENG2-P0-01 |
(ENG2-P0-01?) |
☐ |
| ENG2-P0-02 |
(ENG2-P0-02?) |
☐ |
| ENG2-P0-03 |
(ENG2-P0-03?) |
☐ |
| ENG2-P0-04 |
(ENG2-P0-04?) |
☐ |
| ENG2-P0-05 |
(ENG2-P0-05?) |
☐ |
| ENG2-P0-06 |
(ENG2-P0-06?) |
☐ |
| ENG2-P0-07 |
(ENG2-P0-07?) |
☐ |
| ENG2-P0-08 |
(ENG2-P0-08?) |
☐ |
| ENG2-P0-09 |
(ENG2-P0-09?) |
☐ |
| ENG2-P0-10 |
(ENG2-P0-10?) |
☐ |
| ENG2-P0-11 |
(ENG2-P0-11?) |
☐ |
| ENG2-P0-12 |
(ENG2-P0-12?) |
☐ |
| ENG2-P0-13 |
(ENG2-P0-13?) |
☐ |
| ENG2-P0-14 |
(ENG2-P0-14?) |
☐ |
| ENG2-P0-15 |
(ENG2-P0-15?) |
☐ |
| ENG2-P0-16 |
(ENG2-P0-16?) |
☐ |
| ENG2-P0-17 |
(ENG2-P0-17?) |
☐ |
| ENG2-P0-18 |
(ENG2-P0-18?) |
☐ |
| ENG2-P0-19 |
(ENG2-P0-19?) |
☐ |
Phase 1: SDK Single Source of Truth
Milestone eng2-p1-sdk-truth · Fix JNI dual-file bug, manifest->mapping single source, per-SDK parity CI gates, wasm under codegen, integration tier, decouple publish, real Rust SDK, deps health. CONCURRENT with Phase 2.
| ENG2 ID |
Issue |
Status |
| ENG2-P1-01 |
(ENG2-P1-01?) |
☐ |
| ENG2-P1-02 |
(ENG2-P1-02?) |
☐ |
| ENG2-P1-03 |
(ENG2-P1-03?) |
☐ |
| ENG2-P1-04 |
(ENG2-P1-04?) |
☐ |
| ENG2-P1-05 |
(ENG2-P1-05?) |
☐ |
| ENG2-P1-06 |
(ENG2-P1-06?) |
☐ |
| ENG2-P1-07 |
(ENG2-P1-07?) |
☐ |
| ENG2-P1-08 |
(ENG2-P1-08?) |
☐ |
| ENG2-P1-09 |
(ENG2-P1-09?) |
☐ |
| ENG2-P1-10 |
(ENG2-P1-10?) |
☐ |
Phase 2: Render Core v2
Milestone eng2-p2-render-core · Dense scene storage + spatial index (O(visible)), SoA transform store, uniform v2, auto-instancing incl. primitives, persistent shadow target. Closes #677/#678/#679. Highest-impact phase. CONCURRENT with Phase 1.
| ENG2 ID |
Issue |
Status |
| ENG2-P2-01 |
(ENG2-P2-01?) |
☐ |
| ENG2-P2-02 |
(ENG2-P2-02?) |
☐ |
| ENG2-P2-03 |
(ENG2-P2-03?) |
☐ |
| ENG2-P2-04 |
(ENG2-P2-04?) |
☐ |
| ENG2-P2-05 |
(ENG2-P2-05?) |
☐ |
| ENG2-P2-06 |
(ENG2-P2-06?) |
☐ |
| ENG2-P2-07 |
(ENG2-P2-07?) |
☐ |
| ENG2-P2-08 |
(ENG2-P2-08?) |
☐ |
| ENG2-P2-09 |
(ENG2-P2-09?) |
☐ |
| ENG2-P2-10 |
(ENG2-P2-10?) |
☐ |
| ENG2-P2-11 |
(ENG2-P2-11?) |
☐ |
| ENG2-P2-12 |
(ENG2-P2-12?) |
☐ |
| ENG2-P2-13 |
(ENG2-P2-13?) |
☐ |
| ENG2-P2-14 |
(ENG2-P2-14?) |
☐ |
Phase 3: Data Core v2 (ECS + store unification)
Milestone eng2-p3-data-core · One World-owned contiguous component store, single-lock ops, fix pointer-escape soundness, dirty transforms, physics out of ecs/, fuzz+leak canary. Needs Phase 1 gate.
| ENG2 ID |
Issue |
Status |
| ENG2-P3-01 |
(ENG2-P3-01?) |
☐ |
| ENG2-P3-02 |
(ENG2-P3-02?) |
☐ |
| ENG2-P3-03 |
(ENG2-P3-03?) |
☐ |
| ENG2-P3-04 |
(ENG2-P3-04?) |
☐ |
| ENG2-P3-05 |
(ENG2-P3-05?) |
☐ |
| ENG2-P3-06 |
(ENG2-P3-06?) |
☐ |
| ENG2-P3-07 |
(ENG2-P3-07?) |
☐ |
| ENG2-P3-08 |
(ENG2-P3-08?) |
☐ |
| ENG2-P3-09 |
(ENG2-P3-09?) |
☐ |
Phase 4: FFI v2 Convergence
Milestone eng2-p4-ffi-v2 · Command-buffer FFI (O(1) crossings), versioned fn-table, bulk transform upload, batch-first surface, propagate to all 10 SDKs. Needs P2+P3 gates. >> SYNC A: Throne adoption.
| ENG2 ID |
Issue |
Status |
| ENG2-P4-01 |
(ENG2-P4-01?) |
☐ |
| ENG2-P4-02 |
(ENG2-P4-02?) |
☐ |
| ENG2-P4-03 |
(ENG2-P4-03?) |
☐ |
| ENG2-P4-04 |
(ENG2-P4-04?) |
☐ |
| ENG2-P4-05 |
(ENG2-P4-05?) |
☐ |
| ENG2-P4-06 |
(ENG2-P4-06?) |
☐ |
| ENG2-P4-07 |
(ENG2-P4-07?) |
☐ |
| ENG2-P4-08 |
(ENG2-P4-08?) |
☐ |
Phase 5: Parallelism & Determinism
Milestone eng2-p5-parallel · World Send, wire ParallelSystemStage, job system, determinism + world-hash hook, frame-arena allocator, frame pacing, 1M headless. CONCURRENT with 6,7. >> SYNC B.
| ENG2 ID |
Issue |
Status |
| ENG2-P5-01 |
(ENG2-P5-01?) |
☐ |
| ENG2-P5-02 |
(ENG2-P5-02?) |
☐ |
| ENG2-P5-03 |
(ENG2-P5-03?) |
☐ |
| ENG2-P5-04 |
(ENG2-P5-04?) |
☐ |
| ENG2-P5-05 |
(ENG2-P5-05?) |
☐ |
| ENG2-P5-06 |
(ENG2-P5-06?) |
☐ |
| ENG2-P5-07 |
(ENG2-P5-07?) |
☐ |
Phase 6: 2D Render v2
Milestone eng2-p6-render-2d · One instanced sprite core replacing four renderers, first-class 2D camera + engine culling, chunked tilemap, auto-atlas, text run cache. CONCURRENT with 5,7.
| ENG2 ID |
Issue |
Status |
| ENG2-P6-01 |
(ENG2-P6-01?) |
☐ |
| ENG2-P6-02 |
(ENG2-P6-02?) |
☐ |
| ENG2-P6-03 |
(ENG2-P6-03?) |
☐ |
| ENG2-P6-04 |
(ENG2-P6-04?) |
☐ |
| ENG2-P6-05 |
(ENG2-P6-05?) |
☐ |
| ENG2-P6-06 |
(ENG2-P6-06?) |
☐ |
| ENG2-P6-07 |
(ENG2-P6-07?) |
☐ |
| ENG2-P6-08 |
(ENG2-P6-08?) |
☐ |
Phase 7: Runtime Services
Milestone eng2-p7-services · Wire async assets, mipmaps, one audio stack, rapier2d-only, retained UI, multi-window. CONCURRENT with 5,6.
| ENG2 ID |
Issue |
Status |
| ENG2-P7-01 |
(ENG2-P7-01?) |
☐ |
| ENG2-P7-02 |
(ENG2-P7-02?) |
☐ |
| ENG2-P7-03 |
(ENG2-P7-03?) |
☐ |
| ENG2-P7-04 |
(ENG2-P7-04?) |
☐ |
| ENG2-P7-05 |
(ENG2-P7-05?) |
☐ |
| ENG2-P7-06 |
(ENG2-P7-06?) |
☐ |
Phase 8: Capability Gaps
Milestone eng2-p8-capabilities · Navigation (A*/flow/navmesh), particles FFI + 2D, save/load snapshot, RNG+noise, event bus, isometric, blend trees+IK, cgmath migration, terrain + streaming. Needs 5+6+7. >> SYNC C.
| ENG2 ID |
Issue |
Status |
| ENG2-P8-01 |
(ENG2-P8-01?) |
☐ |
| ENG2-P8-02 |
(ENG2-P8-02?) |
☐ |
| ENG2-P8-03 |
(ENG2-P8-03?) |
☐ |
| ENG2-P8-04 |
(ENG2-P8-04?) |
☐ |
| ENG2-P8-05 |
(ENG2-P8-05?) |
☐ |
| ENG2-P8-06 |
(ENG2-P8-06?) |
☐ |
| ENG2-P8-07 |
(ENG2-P8-07?) |
☐ |
| ENG2-P8-08 |
(ENG2-P8-08?) |
☐ |
| ENG2-P8-09 |
(ENG2-P8-09?) |
☐ |
| ENG2-P8-10 |
(ENG2-P8-10?) |
☐ |
| ENG2-P8-11 |
(ENG2-P8-11?) |
☐ |
Phase 9: Authoring, Platforms, Examples & Polish
Milestone eng2-p9-authoring · Scene inspector over MCP relay, Android/iOS CI real, console experimental-gated, networking honesty, compiled examples, self-hosted perf runner, agents/skills v2, migration guide.
| ENG2 ID |
Issue |
Status |
| ENG2-P9-01 |
(ENG2-P9-01?) |
☐ |
| ENG2-P9-02 |
(ENG2-P9-02?) |
☐ |
| ENG2-P9-03 |
(ENG2-P9-03?) |
☐ |
| ENG2-P9-04 |
(ENG2-P9-04?) |
☐ |
| ENG2-P9-05 |
(ENG2-P9-05?) |
☐ |
| ENG2-P9-06 |
(ENG2-P9-06?) |
☐ |
| ENG2-P9-07 |
(ENG2-P9-07?) |
☐ |
| ENG2-P9-08 |
(ENG2-P9-08?) |
☐ |
| ENG2-P9-09 |
(ENG2-P9-09?) |
☐ |
| ENG2-P9-10 |
(ENG2-P9-10?) |
☐ |
Throne adoption (aram-devdocs/throne_ge · milestone goudengine-v2-adoption)
| ID |
Issue |
Sync point |
| THR-S0-01 |
aram-devdocs/throne_ge#1062 |
after P0 |
| THR-A-01 |
aram-devdocs/throne_ge#1063 |
Sync A (P4) |
| THR-A-02 |
aram-devdocs/throne_ge#1064 |
Sync A |
| THR-A-03 |
aram-devdocs/throne_ge#1065 |
Sync A |
| THR-A-04 |
aram-devdocs/throne_ge#1066 |
Sync A |
| THR-B-01 |
aram-devdocs/throne_ge#1067 |
Sync B (P5) |
| THR-C-01 |
aram-devdocs/throne_ge#1068 |
Sync C (P8) |
Phase gates (summary — full checklists in each docs/src/runbook/phases/phase-N.md)
This roadmap supersedes #475 (ALPHA-002) and #114 (ALPHA-001). Generated from a full-engine audit; see docs/src/runbook/.
ENG2: GoudEngine v2 Rebuild — Master Tracking
This program rebuilds the performance-critical cores of GoudEngine so the engine can run tens of thousands of visible entities at 120+ FPS on Apple M-series and 100k+ simulation entities, with per-frame cost O(visible), not O(total). It replaces the stale ALPHA_ROADMAP and the zombie alpha-v2 milestone, and is grounded in a 12-subsystem, file:line-verified code audit.
Prime directive / definition of done for perf: an issue closes only when the named scripted scene (S1–S5, see
docs/src/runbook/perf-dod.md) hits its numeric target AND a phase counter attributes the cost. A counter that reads zero means broken instrumentation, never "free".Binding decisions: refactor cores with no legacy code kept (breaking the API is allowed; Throne adopts afterward); keep full 10-SDK parity (made cheap + CI-gated, not pruned); keep all platform targets (made CI-real).
Runbook:
docs/src/runbook/phase-index.md(committed with the roadmap). 109 issues total: 102 engine across 10 phases + 7 Throne adoption issues.Execution model
/gh-issue <n> --worktreeper group).breaking-changeissue names its Throne adoption follow-up before it closes.Concurrency map
Phase 0: Instrumentation, Truth & Test Foundation
Milestone
eng2-p0-truth· GPU timestamps + real phase counters, bench-gate in CI, scene harness S1-S5, story gallery, alloc budgets, E2E/spec/determinism/fuzz fixtures, Docker CI, RFC-0005, OpenGL-removal ADR, docs+issue hygiene.Phase 1: SDK Single Source of Truth
Milestone
eng2-p1-sdk-truth· Fix JNI dual-file bug, manifest->mapping single source, per-SDK parity CI gates, wasm under codegen, integration tier, decouple publish, real Rust SDK, deps health. CONCURRENT with Phase 2.Phase 2: Render Core v2
Milestone
eng2-p2-render-core· Dense scene storage + spatial index (O(visible)), SoA transform store, uniform v2, auto-instancing incl. primitives, persistent shadow target. Closes #677/#678/#679. Highest-impact phase. CONCURRENT with Phase 1.Phase 3: Data Core v2 (ECS + store unification)
Milestone
eng2-p3-data-core· One World-owned contiguous component store, single-lock ops, fix pointer-escape soundness, dirty transforms, physics out of ecs/, fuzz+leak canary. Needs Phase 1 gate.Phase 4: FFI v2 Convergence
Milestone
eng2-p4-ffi-v2· Command-buffer FFI (O(1) crossings), versioned fn-table, bulk transform upload, batch-first surface, propagate to all 10 SDKs. Needs P2+P3 gates. >> SYNC A: Throne adoption.Phase 5: Parallelism & Determinism
Milestone
eng2-p5-parallel· World Send, wire ParallelSystemStage, job system, determinism + world-hash hook, frame-arena allocator, frame pacing, 1M headless. CONCURRENT with 6,7. >> SYNC B.Phase 6: 2D Render v2
Milestone
eng2-p6-render-2d· One instanced sprite core replacing four renderers, first-class 2D camera + engine culling, chunked tilemap, auto-atlas, text run cache. CONCURRENT with 5,7.Phase 7: Runtime Services
Milestone
eng2-p7-services· Wire async assets, mipmaps, one audio stack, rapier2d-only, retained UI, multi-window. CONCURRENT with 5,6.Phase 8: Capability Gaps
Milestone
eng2-p8-capabilities· Navigation (A*/flow/navmesh), particles FFI + 2D, save/load snapshot, RNG+noise, event bus, isometric, blend trees+IK, cgmath migration, terrain + streaming. Needs 5+6+7. >> SYNC C.Phase 9: Authoring, Platforms, Examples & Polish
Milestone
eng2-p9-authoring· Scene inspector over MCP relay, Android/iOS CI real, console experimental-gated, networking honesty, compiled examples, self-hosted perf runner, agents/skills v2, migration guide.Throne adoption (aram-devdocs/throne_ge · milestone
goudengine-v2-adoption)Phase gates (summary — full checklists in each
docs/src/runbook/phases/phase-N.md)This roadmap supersedes #475 (ALPHA-002) and #114 (ALPHA-001). Generated from a full-engine audit; see
docs/src/runbook/.