Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phase 9 — Authoring, Platforms, Examples & Polish

Authoritative spec. See also the phase index, perf-dod, and testing-strategy. Live issue numbers: pinned master #810.

Expansion: Phase 9 adds ENG2-P9-10 (self-hosted M-series nightly perf runner + trend dashboard) — see phase-specs-expansion.md §D. Total P9 issues = 10.


Phase 9 — Authoring, Platforms, Examples & Polish (W8 + W6-platform)

Goal: Every kept platform is CI-real; developers can see and author scenes; examples prove the v2 API. 9 issues.

Batch 9.1 — Platforms & tooling (4 groups, parallel)

IDTitleGrpEffortBlocked by
ENG2-P9-01Scene inspector MVP (egui or web client over the MCP relay): entity tree + live component editingALP7-06
ENG2-P9-02Inspector: scene/prefab authoring round-trip to the JSON scene formatAMP9-01
ENG2-P9-03Mobile CI real: Android NDK cross-build + on-device smoke, iOS build job (#134)BLPhase 1 gate
ENG2-P9-04Console targets: explicit experimental feature-gate, dedupe 3×323-line init copies, strategy record (#135)CM
ENG2-P9-05Networking truth: rename fake WebRTC to udp_datachannel or adopt a real crate; networking-tier decision recordDM
  • P9-01/02: The MCP debugger is real (20 tools incl. inspect_entity/capture_frame, tools/goudengine-mcp/src/server/tools.rs) but there is no authoring tool at all — scenes are code/JSON only (ffi/scene_loading.rs:47; prefabs at context_registry/scene/prefab.rs). Build inspector on the relay; then save-back to scene JSON.
  • P9-03: CI has no aarch64-linux-android build; jniLibs contain only .gitkeep; JNI is validated only on desktop JVM (Cargo.toml:172 jni_smoke). Keep-all-targets decision ⇒ make it gated.
  • P9-04: switch_vulkan_platform.rs:52-57/xbox_gdk_platform.rs:55-56 are honest PoC stubs; the three wgpu init files are byte-near-identical. Extract shared init, gate behind experimental-console, CI-typecheck lane.
  • P9-05: providers/impls/webrtc_network/mod.rs:1-17 is custom UDP+STUN labeled WebRTC, net-webrtc=[] pulls no crate; ~7-8k LOC networking has zero production consumers — decision record on tiering (default-feature status) + honest naming.

Batch 9.2 — Examples, docs, agent configs (4 groups, parallel)

IDTitleGrpEffortBlocked by
ENG2-P9-06Compiled Rust examples in the engine crate (currently zero .rs examples)AM
ENG2-P9-07Example games refresh: 2–3 games validating the v2 API (consolidates #333/#336/#340/#342/#345/#348/#139)BLP9-06
ENG2-P9-08Agents/skills v2 update: perf-capture skill, render-v2 patterns, perf-work rules in .agents/CM
ENG2-P9-09mdBook v2 architecture rewrite + breaking-changes migration guideDM

Phase 9 Gate

  • Inspector connects to a running S1, edits a transform live, saves scene JSON that reloads identically.
  • Android + iOS CI jobs required; console typecheck lane explicit experimental; networking naming/tiering resolved.
  • ≥ 2 example games + Rust examples build in required CI against the v2 API.
  • Migration guide published; .agents/ + skills reference v2 patterns and the perf-capture procedure.

12. Existing open-issue disposition map (requirement 7)

IssueDisposition
#704 security deps→ ENG2-P1-10
#679 CreatePlane bypasses instancing→ ENG2-P2-08 (closed at Phase 2 gate)
#678 frame cost scales with total→ ENG2-P2-02 + ENG2-P2-12 (closed at Phase 2 gate)
#677 shadow Metal stall→ ENG2-P2-10 (closed at Phase 2 gate)
#670 NuGet targets→ verify+path-fix+close in ENG2-P0-12; consumer removal in THR-S0-01
#657 jni 0.21→0.22→ ENG2-P1-02
#596 V2-P08 Throne bumpclose, superseded by THR-A-01
#593/#592/#591/#590 target:thronemigrate to throne_ge (THR-A-01..04), close GE-side in ENG2-P0-12
#554 coordinate origin→ ENG2-P6-05
#553 UiManager absolute positioning→ ENG2-P7-05
#550 isometric utils→ ENG2-P8-06
#548 noise→ ENG2-P8-04
#547 event bus→ ENG2-P8-05
#546 A*→ ENG2-P8-01
#475 ALPHA-002 master / #114 ALPHA-001close, superseded by the new v2 master tracking issue (ENG2-P0-12)
#425 wasm-pack deprecation→ ENG2-P1-05
#424 flipX/flipY→ ENG2-P6-02
#423 drawText webclose as invalid after verify (exists at wasm/rendering.rs:239) — ENG2-P0-12
#348/#345/#342/#340/#336/#333/#139 example games→ ENG2-P9-07
#273 leak detection→ ENG2-P3-08
#270 unsafe audit / #267 FFI fuzz→ ENG2-P3-09
#256 perf regression detection→ ENG2-P0-05
#137 F22 testing→ ENG2-P1-06
#136 F21 debuggerclose (shipped); authoring successor ENG2-P9-01
#135 console strategy→ ENG2-P9-04
#134 mobile→ ENG2-P9-03
Milestones 1–9close as superseded after migration (ENG2-P0-12)

13. Issue count summary

PhaseEngine issuesThrone issues
P0 Instrumentation & Truth121 (Sync 0)
P1 SDK Source of Truth10
P2 Render Core v212
P3 Data Core v29
P4 FFI v2 Convergence84 (Sync A)
P5 Parallelism & Determinism61 (Sync B)
P6 2D Render v28
P7 Runtime Services6
P8 Capability Gaps111 (Sync C)
P9 Authoring/Platforms/Polish9
Total91798 overall

Effort mix: 9 S / 47 M / 35 L / 0 XL engine-side — every issue is sized for a single /gh-issue <n> --worktree agent run producing one focused PR. Each phase doc in docs/runbook/v2/phases/ will list the run commands per batch (issue numbers filled at creation), e.g. Batch 2.3 Group A: /gh-issue <P2-08#> --worktree.

Critical Files for Implementation

  • /Users/aramhammoudeh/dev/game/GoudEngine/goud_engine/src/libs/graphics/renderer3d/core/mod.rs (scene storage — heart of Phase 2)
  • /Users/aramhammoudeh/dev/game/GoudEngine/goud_engine/src/libs/graphics/backend/wgpu_backend/frame.rs (phase timing + frame path — Phase 0/2)
  • /Users/aramhammoudeh/dev/game/GoudEngine/goud_engine/src/component_ops/storage.rs (global component store to be deleted — Phase 3)
  • /Users/aramhammoudeh/dev/game/GoudEngine/codegen/validate_coverage.py (source-of-truth/parity gates — Phase 1)
  • /Users/aramhammoudeh/dev/game/throne_ge/docs/runbook/phase-index.md (runbook convention to mirror)