- complete
- [.] in progress
- planned
- repo structure work is now constrained to exact move-map BUILDs only
- remaining structure normalization should avoid broad folder churn until active shared extraction and promotion-gate work stabilize
- shared math is now a real active layer and should continue by exact-cluster extraction only
- avoid broad repo-wide cleanup passes until the active lanes above are materially further along
- status updates in this revision are conservative and execution-backed
- recent tool-host, asset-pipeline, debug-inspector, and launch-smoke lanes are reflected without broad scope expansion
templates/cleanup was completed by relocating active template surfaces totools/templates/and removing the empty roottemplates/directory
- phases form a complete learning path
- each phase introduces one new concept cleanly
- each sample has a clear teaching purpose
- samples build progressively from prior phases
- no overlapping concept samples without clear justification
- advanced phases depend on mastered earlier phases
- samples remain understandable as standalone learning units
- sample naming stays aligned to phase numbering
- engine contains reusable runtime logic only
- shared contains reusable cross-domain helpers only
- games contain game-specific implementation only
- samples contain learning/demo logic only
- tools contain editor/pipeline/debug-authoring logic only
- no sample logic promoted directly into engine without stabilization
- no tool logic promoted directly into engine without stabilization
- games do not become the default location for engine experiments
- dependency direction stays enforced across all refactors
- sample proves concept
- shared extracts reusable logic
- engine receives stable abstraction
- promotion requires multi-use reuse evidence
- promotion requires stable public contract
- promotion requires removal of sample-specific assumptions
- promotion requires validation after extraction
- promotion does not happen as a blind dedupe exercise
- do not create standalone showcase tracks in future roadmaps
- fold showcase importance into the main feature or sample title when needed
- tools are created when they unblock engine/content progress
- tools do not define engine behavior
- tools share common IO/state/util layers where appropriate
- tools remain organized under
tools/ - active tools list remains explicit
- legacy tools remain isolated and visibly non-current
- 3D tools arrive when 3D capability needs them, not before
- content pipeline tools arrive when asset complexity justifies them
- no standalone showcase-only tool tracks
- tools header accordion added to reduce vertical real-estate usage
- tool-shell UI compaction is useful but does not replace tool-boundary normalization work
- any follow-up tool UI cleanup should remain subordinate to shared-boundary and data-contract work
- clean engine core
- clean shared layer
- games follow a standard structure
- samples form a complete curriculum
- tools support authoring/debug/content workflows
- debug platform supports games, tools, and samples
- network concepts are deterministic and explainable
- 2D capabilities are complete and reusable
- 3D capabilities are complete and reusable
- productization/distribution is documented and repeatable
- PLAN => BUILD => APPLY workflow defined
- docs-first operating model established
- repo-structured ZIP delivery established
- validation-gate model established
- protected start_of_day operating boundary established
- protected BUILD template direction established
- ChatGPT owns planning/docs/bundles
- Codex owns code/runtime edits
- docs/dev reports + commit metadata pattern established
- no-Codex APPLY rule established
- single-validation-gate concept established
- target structure defined at high level
-
src/enginetarget established -
src/sharedtarget established -
games/target established -
games/_template/target established -
tools/sharedtarget established - phase-based
samples/grouping target established - dependency direction rules defined
- shared asset promotion rules defined
- network samples classified as sample-phase content
- current folder inventory mapped to target homes
- move-map defined for root
engine/->src/engine/ - duplicate-helper migration map defined
- ambiguous-name rename map defined
- legacy migration map defined
- implementation PRs executed
- imports normalized after moves
- post-move validation complete
-
src/engine/core -
src/engine/state -
src/engine/rendering -
src/engine/input -
src/engine/physics -
src/engine/audio -
src/engine/scene -
src/shared/utils -
src/shared/math -
src/shared/state -
games/_template/flow -
samples/phase-01 -
samples/phase-13 -
tools/shared
- broad import-path correction from
engine/tosrc/engine/applied across remaining games/samples - partial retro smoke pass completed after path correction
- additional post-move validation complete
- core bootstrapping normalized
- scene management normalized
- rendering layer normalized
- input layer normalized
- physics layer normalized
- audio layer normalized
- systems layer normalized
- engine-level contracts documented
- engine public boundaries clarified
- timing/frame services stabilized
- event routing stabilized
- camera integration stabilized
- 2D scene boot
- 2D render loop
- 2D camera
- 2D tilemap integration
- 2D collision patterns
- 2D gameplay hooks
- core shared extraction pipeline executed
- enforcement guard in place
- numbers utilities consolidated
- objects utilities consolidated
- arrays utilities consolidated
- strings utilities consolidated
- ids utilities consolidated
- shared math layer consolidated
- shared state guards consolidated
- shared state normalization consolidated
- shared selectors consolidated
- shared contracts consolidated
- shared io/data/types stabilized
-
asFiniteNumberunified -
asPositiveIntegerunified -
isPlainObjectunified -
getStatevariants bucketed by domain -
getSimulationStatenaming established where needed -
getReplayStatenaming established where needed -
getEditorStatenaming established where needed - sample/tool/runtime duplicates classified before move
- vector-domain
toFiniteNumberpromoted intosrc/shared/math/numberNormalization.js - vector-domain
roundNumberpromoted intosrc/shared/math/numberNormalization.js - state/sample
toFiniteNumberconsumers migrated to shared math - duplicated
asNumberconsumers migrated to shared math - Asteroids numeric sanitizers promoted into shared math
- duplicated
asObject/asArrayconsumers moved to shared utils - remaining number/string/id helpers still need exact-cluster normalization
- authoritative state direction established
- authoritative score/objective slices exist
- promotion-gate lane active
- final promotion gate implemented and applied
- authoritative/passive handoff finalized
- replay/timeline boundaries normalized
- state contracts extracted/confirmed
- public selectors stabilized
- observability for promotion/handoff completed
- long-run validation completed
- rollback safety / abort logic completed
- state contracts
- authoritative state slices
- replay model
- timeline orchestration
- selectors/public readers
- promotion gating
- rollback safety / abort logic
- Dev Console (input + command execution)
- Debug Overlay (visual panels)
- Console ↔ Overlay Boundary
- Panel Registry
- Data Providers (read-only model)
- Operator Commands (control surface)
- Panel Persistence
- PLAN_PR_DEBUG_SURFACES_PROMOTION
- BUILD_PR_DEBUG_SURFACES_PROMOTION
- APPLY_PR_DEBUG_SURFACES_PROMOTION
- PLAN_PR_DEBUG_SURFACES_STANDARD_LIBRARY
- BUILD_PR_DEBUG_SURFACES_STANDARD_LIBRARY
- APPLY_PR_DEBUG_SURFACES_STANDARD_LIBRARY
- PLAN_PR_DEBUG_SURFACES_PRESETS
- BUILD_PR_DEBUG_SURFACES_PRESETS
- APPLY_PR_DEBUG_SURFACES_PRESETS
- PLAN_PR_DEBUG_SURFACES_ADVANCED_UX
- BUILD_PR_DEBUG_SURFACES_ADVANCED_UX
- APPLY_PR_DEBUG_SURFACES_ADVANCED_UX
- PLAN_PR_DEBUG_SURFACES_GAME_INTEGRATION
- BUILD_PR_DEBUG_SURFACES_GAME_INTEGRATION
- APPLY_PR_DEBUG_SURFACES_GAME_INTEGRATION
- Sample game uses full debug platform
- Toggle debug in production-safe mode
- Performance-safe overlays
- Build-time debug flags
- Connection status panel
- Latency / RTT panel
- Replication state viewer
- Client/server divergence inspector
- Event tracing
- PLAN_PR_DEBUG_SURFACES_NETWORK_SUPPORT
- BUILD_PR_DEBUG_SURFACES_NETWORK_SUPPORT
- APPLY_PR_DEBUG_SURFACES_NETWORK_SUPPORT
- Entity inspector
- Component inspector
- State diff viewer
- Timeline debugger
- Event stream viewer
- Stable debug API
- Plugin system
- External documentation
- Versioned contracts
- Performance benchmarks
- sample numbering normalization completed
- sample formatting alignment completed
- phase grouping normalized
-
samples/sharedboundaries defined and used - sample index normalized to phase structure
- sample-to-engine dependency cleanup completed
- sample duplicate helper usage reduced
- sample curriculum progression validated
- foundational phases normalized
- tilemap / camera / rendering phases normalized
- tool-linked sample phases normalized
- network concepts / latency / simulation phase normalized
- 2D camera sample
- tilemap scrolling sample
- collision sample
- enemy behavior sample
- full 2D reference game sample
- Sample A - Local Loopback / Fake Network
- Synthetic connection lifecycle
- Synthetic RTT feed
- Synthetic replication feed
- Trace event feed
- Sample B - Host / Client Diagnostics
- Host status panel data
- Client status panel data
- Authority / ownership visibility
- Replication snapshot visibility
- Divergence warning surface
- Sample C - Divergence / Trace Validation
- Deterministic mismatch scenario
- Event sequencing timeline
- Divergence explanation notes
- Reproduction guide
- Validation checklist
- Connection status panel
- Latency / RTT panel
- Replication state viewer
- Client/server divergence inspector
- Event tracing panel
- network.help
- network.status
- network.latency
- network.replication
- network.divergence
- network.trace
- network.sample.*
- Sample-backed provider validation
- Sample-backed panel validation
- Operator command validation
- Debug-only gating validation
- Promotion recommendation
- Server dashboard shell
- Player statistics view
- Latency view
- RX bytes view
- TX bytes view
- Connection/session counts
- Per-player status rows
- Refresh/update strategy
- Debug-only access rules
- Dockerfile for server
- .dockerignore
- Environment variable contract
- Local run command
- Compose-ready service definition
- Port mapping rules
- Health/readiness check
- Logging/output expectations
- Container debug notes
- Sample A
- Connection + RTT + tracing basics
- Sample B
- Replication + authority + divergence
- Sample C
- Server dashboard
- Server containerization
- Promotion review
-
games/_template/created - game flow pattern standardized (
flow/attract.js,flow/intro.js,flow/highscore.js) - per-game structure normalized
- gameplay/entities/levels/rules/assets boundaries normalized
- current games migrated to target structure
- game-specific asset ownership enforced
- shared-vs-game utility boundaries enforced
- space_invaders normalized
- pacman normalized
- future games follow template-first path
- TileMapEditor normalized
- ParallaxEditor normalized
- VectorMapEditor normalized
- VectorAssetStudio normalized
- Tool sample packs + dropdown loading (3 samples per active tool)
- 3DMapEditor
- 3DAssetViewer
- 3DCameraPathEditor
- PhysicsSandboxTool
- StateInspectorTool
- ReplayVisualizerTool
- PerformanceProfilerTool
- AssetPipelineTool
- Tile/Model Converter Tool
- 2D tool stabilization before 3D tool expansion
- content pipeline tools after asset complexity justifies them
- debug tools align with engine/debug maturity
- shared asset policy defined at planning level
- game asset ownership normalized
- sample asset ownership normalized
- tool demo asset ownership normalized
- promotion criteria for shared assets enforced
- asset duplication reduced
- top-level shared asset strategy finalized if needed
- Asteroids Debug Showcase
- Breakout Debug Showcase
- Debug toggle indicator
- Default preset auto-load
- Open Debug Panel button
- Inline mini help
- Showcase landing page
- Build packaging strategy
- Asset bundling rules
- Debug tour
- Getting started guide
- Example-driven docs
- camera systems stabilized
- tilemap/runtime integration stabilized
- collision patterns stabilized
- enemy/hero/gameplay conventions stabilized
- replay/state integration for 2D games stabilized
- polished 2D reference game path established
- 2D reference game built
- phase-16 description updated in repo docs/index
- phase-16 description kept separate from networking language
-
tests/structure normalized - unit coverage aligned to engine/shared/games
- integration coverage aligned to state/replay/rendering/tools
- smoke validation aligned to samples/tools/games
- fixtures/helpers organization normalized
- move/refactor validation strategy documented
- post-PR acceptance criteria consistently enforced
- legacy inventory completed
- keep vs migrate vs future-delete decisions recorded
-
legacy class-retention policy markerpolicy defined -
SpriteEditor_old_keeppolicy defined - archived notes policy defined
- imports pointing to legacy paths reduced
- roadmap for eventual legacy retirement defined
-
templates/folder evaluated, relocated totools/templates/, and roottemplates/removed after validation
- PR docs structure established
- reports structure established
- templates structure established
- roadmaps folder recognized as tracker space
- master roadmap committed and maintained
- per-component roadmap slices added only when truly needed
- structure normalization roadmap linked to future BUILD lanes
- phase descriptions normalized repo-wide
- naming policy documented
- Finish current promotion-gate lane (BUILD => APPLY)
- Apply repo structure normalization implementation plan
- Extract / normalize shared utilities
- Normalize phase-13 network concepts samples
- Apply master roadmap baseline
- Normalize samples phase structure
- Establish games/_template and normalize games layer
- Normalize tools/shared and tool boundaries
- Normalize assets/data ownership
- Expand testing/validation structure
- Existing games asset folders updated so existing images / vectors / related runtime assets can be transformed into tool-editable
data/objects, with corresponding project JSON updates - Add the ability for a PowerShell script to create a new game from template, including a project scaffold for the tools
- Add scripts to prep / update / delete the repo so it can be placed on a website
- Add scripts to switch between Pay-as-you-go and Codex plan modes, and scripts to input API key material and validate it
- real transport/session layer
- authoritative live server runtime
- replication/client application
- playable real multiplayer validation
- server hosting + Docker containerization
- promotion/readiness gate
- include samples for phase 13
- begin active phase-16 / 3D execution only after the full real-network capability lane is complete
- FEATURE: Fullscreen Bezel Overlay System - Render game in full screen with optional bezel artwork layer (static or animated) surrounding the active playfield, preserving aspect ratio and supporting per-game/theme bezel assets without modifying core engine rendering.
- Execute 2D capability polish lanes
- Reduce legacy footprint after replacements are proven
- Execute
templates/relocation and root removal cleanup PR
- current active execution lanes are 3 / 6 / 8
- next planning lanes are 2 / 5 / 7 / 9 / 10
- later capability lanes are 11 / 12
- final cleanup lane is 13
-
continue exact-cluster shared extraction until the current lane reaches a stable stop point
-
finish active promotion-gate lane enough to remove it from half-active status
-
convert repo structure normalization into exact move-map BUILDs with explicit validation
-
re-baseline this roadmap after active execution lanes stabilize
-
split future implementation into small dependency-ordered PRs
-
relocate active template surfaces to
tools/templates/and remove the empty roottemplates/directory
- asset naming normalization (trigger condition: start only when a new non-3D asset lane requires cross-game naming standardization beyond current stable ownership/pipeline conventions)
- manifest discovery (trigger condition: start only when a new non-3D runtime/tool lane requires automatic manifest discovery beyond current explicit manifest wiring)
[x] fullscreen bezel overlay system (low priority, before next game)
- Validate no render loop regressions
- Validate no timing model regressions
- Validate no input system regressions
- Confirm networking/runtime remains stable during 3D activation
- Confirm 2D samples still run correctly after 3D activation work
- 3D scene boot
- 3D render foundation
- 3D transforms
- 3D camera controls
- 3D movement base
- 3D collision base
- 3D physics base
- 3D content loading path
- Transform inspector
- BUILD_PR_DEBUG_SURFACES_3D_SUPPORT
- APPLY_PR_DEBUG_SURFACES_3D_SUPPORT
- Camera debug panel
- Render pipeline stages
- Collision overlays
- Scene graph inspector
- Level 17 debug overlay baseline promoted after validation (1708-1713: bottom-right placement, KeyG cycle key, correct stack ordering)
- Level 18 overlay system baseline promoted after validation (input, mission, telemetry integration; no Level 17/18 overlay regressions)
- Level 17 completion reconfirmed for Level 18 rebase (Phase17 runtime validation suite: 12/12 passed)
- Level 18 runtime hardening resumed (rebase lane active; status-only progression update)
- Level 21 overlay system baseline promoted after validation (context-aware behavior, synchronized state, event-driven updates, and performance optimization; no Level 17/19 overlay regressions)
- Level 21 advanced overlay interactions implemented (click/drag/resize) with gameplay-safe explicit interaction mode
- Level 22 gesture abstraction added for overlays (tap/hold/swipe mapped to runtime actions with explicit gameplay-safe gating)
- Level 22 contextual input mapping added (active overlay/layer stack-aware resolution across keybind and gesture actions)
- Level 22 adaptive overlay UI rules added (visibility/size/emphasis responsive to gameplay state, overlay context, and telemetry)
- Level 22 overlay preferences persistence added (visibility, layout overrides, and keybind profile restored on runtime load)
- Level 22 overlay profile export/import added (validated JSON portability with persistence-system compatibility)
- Level 22 overlay preset library added (schema, defaults, and preset-to-profile apply with export/import+persistence compatibility)
- Level 22 overlay user sharing system added (shareable profile packages with validated import compatibility across preset and persistence systems)
- Level 22 full validation sweep executed (Level 22 overlay integration test passed; full runtime suite blocked by shared extraction guard baseline mismatch and SamplesProgramCombinedPass phase-group expectation drift)
- 3D phase normalized
- 3D scene boot sample
- 3D camera orbit sample
- 3D movement sample
- 3D collision sample
- 3D prerequisite samples before advanced 3D tools
- 3D Scene Boot Sample
- Camera Orbit Sample
- 3D Movement Sample
- Basic Collision Sample
- 1601 - 3D Cube Explorer
- 1602 - 3D Maze Runner
- 1603 - First Person Walkthrough
- 1604 - 3D Platformer
- 1605 - 3D Driving Sandbox
- 1606 - 3D Physics Playground
- 1607 - 3D Space Shooter
- 1608 - 3D Dungeon Crawler
- 1609 - Lighting Demo
- 1610 - Hybrid 2D/3D World Sample
- 1611 - Multiplayer Sync Demo
- 1612 - Stress Test (1,000 Objects)
- 1613 - Input Lab
- 1614 - Camera Modes Lab
- 1615 - Entity Composition Demo
- 1616 - World Streaming / Chunk Loader
- 1617 - Large World Streaming Demo
- 1618 - Lighting & Materials Lab
- 1619 - Debug HUD Sample
- 1620 - Mini Game (3D Reference Sample)
- 1621 - AI Navigation Demo
- 3D rendering
- 3D camera
- 3D movement
- 3D physics
- 3D tool support
- 3D debug support
-
Execute phase-16 / 3D capability lanes (after full real-network capability lane completion)
-
Stabilize networking/runtime before 3D
Purpose: convert the built system into a clean, stable, production-grade engine after all major capability tracks are complete.
This is NOT a scaffolding phase � it is a consolidation + enforcement phase.
- additive only (no blind refactors)
- no structural churn without move-map PRs
- all changes must be validation-backed
- no template-driven work
[x] Some games are actually samples/demos; identify and recommend a phase-xx move target.
[x] Lock APIs [x] Clean boundaries [x] Document contracts
- verify all
samples/use engine systems (no local reimplementation) - verify all
games/use engine systems - migrate any local logic into engine/shared where appropriate
- remove sample-specific logic from engine paths
- enforce engine vs shared vs game vs tool boundaries
- eliminate cross-layer leakage
- validate dependency direction rules across repo
- remove accidental coupling
- finalize engine public APIs
- finalize shared contracts
- ensure selectors/providers are stable
- remove unstable or experimental surfaces
- single class per file enforcement
- eliminate import/export anti-patterns repo wide
- remove duplicate helpers
- normalize naming consistency
- flatten CSS layers
- enforce shared UI classes
- remove redundant styles
[x] Docs organization: classify all ./docs/ into buckets.
[x] Arrange docs into classification buckets.
[x] Any doc that is only move/rename/etc. should be deleted (verify content is in the correct doc before deleting).
- classify all docs into buckets
- consolidate duplicate docs - consolidate PRs for easier one-stop review, so one capability does not require reading many docs (for example, bezel/background); focus on what the capability does.
- remove move-only historical docs (after validation)
- align docs to feature-based structure
[x] Remove imports to export (should not be import x, export x) [x] Other than templates (games/samples/tools), remove the .keep file, if the folder is empty, delete
- remove unnecessary
.keepfiles - remove empty folders
- validate folder ownership rules
- enforce clean repo structure
- bundle related PRs into capability-level units
- reduce multi-PR fragmentation
- ensure each PR represents a complete capability
Purpose: ensure the system is scalable, explainable, and extensible long-term.
This phase turns the engine into a platform, not just a project.
- no feature creation
- no experimental work
- only stabilization, validation, and extensibility
- validate all major systems working together:
- rendering
- input
- physics
- state/replay
- networking
- debug platform
- verify no hidden coupling
- verify predictable system interaction
- validate boot ? run ? shutdown lifecycle
- validate hot reload / reset flows
- validate error handling paths
- validate long-running stability
- validate large scene performance
- validate stress scenarios (1k+ entities)
- validate memory stability
- identify bottlenecks
- ensure all systems expose debug data
- ensure providers are complete and consistent
- validate debug panels across systems
- confirm production-safe debug toggling
- verify tools integrate cleanly with engine
- validate asset pipelines end-to-end
- validate editor ? runtime consistency
- confirm no tool-specific logic leaks into engine
- Organize/rebuild
samples/andgames/as if newly constructed, with proper classes/data in proper folders. - Simulated code (for example, some network samples) should be converted to real networks, with tests as needed.
- verify all samples still function correctly
- verify curriculum progression remains intact
- validate games follow template strictly
- confirm no regression across phases
- validate plugin/extension patterns
- validate adding new systems is clean
- validate external integration points
- ensure future phases can build cleanly
- full-repo validation sweep
- zero regression requirement
- contract freeze readiness
- readiness for long-term maintenance mode
- define release criteria
- finalize build pipeline
- validate deployment flow
- runtime error tracking
- performance monitoring hooks
- logging standardization
- finalize developer docs
- finalize tool documentation
- validate onboarding flow
- validation sweep executed across samples, runtime, and engine boundaries (BUILD_PR_LEVEL_23_1)
- integration fixes applied and validated for 23.1-reported runtime/guard gaps (BUILD_PR_LEVEL_23_2)
- sample system validation and repair executed with post-fix clean sample launch/runtime checks (BUILD_PR_LEVEL_23_4)
- sample index and routing normalization validated (BUILD_PR_LEVEL_23_5)
- Canonical 17 first-class tool inventory documented.
- Tool folder paths verified for all 17 first-class tools.
- Explicit schema paths recorded for all 17 first-class tools.
- Close first-class schema gap by adding
tools/schemas/tools/skin-editor.schema.json. - Define launcher pairing contract: pass tool payload object plus shared data objects.
- Verify all 17 tools have exactly one schema.
- Verify sample tool payload files match workspace/game
tools[]item shape. - Verify palette/shared data never embeds inside tool payload files.
- [.] Verify workspace schema has no sample-only concepts.
- Manifest SSoT audit across game workspace catalogs/tool manifests is complete.
- Asteroids-first
game.manifest.jsonSSoT example implemented (palette + HUD typing + bezel override wiring). - Asteroids JSON cleanup and manifest wiring audit is complete (manifest coverage + deferred legacy rationale documented).
- Asteroids legacy catalog parity verification is complete.
- All-games
game.manifest.jsonSSoT rollout completed with legacy catalogs retained. - Asteroids preview direct launch separation from Workspace Manager remains valid.
- Direct game launch hook removal prevents normal preview redirects to Workspace Manager.
- Explicit Workspace Manager game-launch paths use
gameIdquery naming. - [.] Unused JSON cleanup audit (tools + explicit deletion candidates) is in progress.
- [.] Palette opaque alpha normalization (
#RRGGBBFF->#RRGGBB) is in progress. - Code-defined asset extraction audit across games/samples is complete.
- [.] Tool-owned JSON asset input wiring for extracted code-defined assets is in progress.
- [.] Hardcoded color/shape removal plan is in progress.
- Game palette completeness is normalized with manifest-owned palette data under
game.manifest.jsontool sections. - Tool input alignment contract is documented as
toolInput = gameManifest.tools[toolId](no game-owned file-path JSON input). - Palette standalone singleton correction is complete (
game.manifest.jsonrootpalette, no tool-ownedpalettes). - Palette tool singleton + tool section metadata correction is complete (
tools["palette-browser"].palette+ metadata on all tool sections). - Games index Workspace Manager open-action browser test is complete (
gameId+mount=game, legacy?game=rejected, diagnostic check included). -
tools/shared/asteroidsPlatformDemo.jsshared-boundary audit is complete with move recommendation captured for follow-up. - Manifest payload expectation test + cleanup completed (no root legacy manifest blocks, no
sourcePath, palette singleton enforced, Asteroids tool payloads pruned to active data domains). - Workspace Manager shared palette binding now hydrates from
game.manifest.jsontools["palette-browser"].palette(with rootpalettecompatibility fallback only).