Skip to content

Commit d17c0dd

Browse files
author
DavidQ
committed
BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST
- Added Asteroids-first game manifest SSoT plan - Wired Asteroids palette/HUD/bezel requirements into manifest acceptance - Kept legacy catalogs intact for parity review PR Details: - First concrete SSoT implementation pattern - No broad all-games rollout - No validators - No start_of_day changes
1 parent 4072d42 commit d17c0dd

14 files changed

Lines changed: 807 additions & 68 deletions
Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
# Expected Codex Return / Delta Template
22

3-
## Expected Reports
4-
- `docs/dev/reports/level_8_26_manifest_ssot_audit.md`
5-
- `docs/dev/reports/level_8_26_unused_json_audit.md`
6-
- `docs/dev/reports/level_8_26_palette_alpha_normalization_report.md`
7-
- `docs/dev/reports/level_8_26_user_blockers.md`
3+
## Expected Changed/Added Files
4+
- `games/Asteroids/game.manifest.json`
5+
- `games/Asteroids/assets/palettes/asteroids-hud.palette.json` if HUD is converted to separate palette
6+
- `docs/dev/reports/level_8_28_asteroids_manifest_ssot_report.md`
7+
- `docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md` if status update needed
88

99
## Expected Validation Summary
10-
- `workspace_manifest_has_samples=<true|false>`
11-
- `manifest_ssot_conflicts=<count>`
12-
- `unwired_game_json_files=<count>`
13-
- `palette_hex_alpha_ff_normalized=<count>`
14-
- `deletion_candidates=<count>`
15-
- `deleted_files=<count, only if proven safe>`
10+
- `asteroids_game_manifest_exists=true`
11+
- `asteroids_bezel_override_wired=true`
12+
- `asteroids_main_palette_wired=true`
13+
- `asteroids_hud_data_typed=true`
14+
- `asteroids_unreferenced_json_after=<count>`
15+
- `legacy_catalogs_deleted=0`
1616
- `runtime_changes=0`
1717
- `validators_added=0`
1818
- `start_of_day_changes=0`
19+
20+
## Expected Delta ZIP
21+
Codex must create:
22+
23+
`tmp/BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST_delta.zip`
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Level 8.27 Code Asset Extraction Audit
2+
3+
## Scope
4+
Scanned game/sample source for code-defined content/data candidates that should be tool-owned JSON inputs.
5+
6+
Scan targets:
7+
- `games/**/*.js`
8+
- `games/**/*.mjs`
9+
- `samples/**/*.js`
10+
- `samples/**/*.mjs`
11+
12+
Pattern families audited:
13+
- color literals: `#RGB`, `#RRGGBB`, `#RRGGBBAA`, `rgb(...)`, `rgba(...)`
14+
- HUD color groups / palette-style objects
15+
- inline shape arrays / vector primitives / point lists
16+
- sprite frame arrays / tile arrays
17+
- primitive skin-like objects
18+
- parallax/layout/bezel-style inline data
19+
20+
## Quantitative Findings
21+
- `files_scanned=850`
22+
- `files_with_hits=314`
23+
- `hex_hits=1614`
24+
- `rgb_hits=201`
25+
- `shape_array_defs=43`
26+
- `obj_data_defs=18`
27+
28+
Top high-signal files:
29+
1. `games/SpaceInvaders/game/SpaceInvadersScene.js` (score 69)
30+
2. `games/Asteroids/game/AsteroidsGameScene.js` (score 38)
31+
3. `games/SpaceDuel/game/SpaceDuelScene.js` (score 36)
32+
4. `games/Pacman/game/PacmanFullAIScene.js` (score 26)
33+
5. `games/SolarSystem/game/SolarSystemWorld.js` (score 20)
34+
6. `games/Pong/game/PongScene.js` (score 14)
35+
7. `games/GravityWell/game/GravityWellWorld.js` (score 16)
36+
8. `samples/phase-02/0221/TilemapSystemScene.js` (inline tile/palette fallback)
37+
9. `samples/phase-02/0224/TileCameraSpriteSliceScene.js` (fallback tile/sprite color data)
38+
10. `samples/phase-12/1205/MultiSystemDemoScene.js` (tile/parallax inline color/layout data)
39+
40+
## Required Category Coverage
41+
### Colors / HUD Colors
42+
Observed broadly in game/sample render loops and theme constants, especially:
43+
- `games/SpaceInvaders/game/SpaceInvadersScene.js`
44+
- `games/Asteroids/game/AsteroidsGameScene.js`
45+
- `games/SpaceDuel/game/SpaceDuelScene.js`
46+
- `games/Pong/game/PongScene.js`
47+
- `games/SolarSystem/game/SolarSystemScene.js`
48+
49+
### Shape Arrays / Vector Primitives
50+
Observed in:
51+
- `games/SpaceDuel/game/SpaceDuelScene.js` (`*_SEGMENTS` arrays)
52+
- `games/GravityWell/game/GravityWellWorld.js` (`SHIP_SHAPE`, `BEACON_SHAPE`)
53+
- `games/Asteroids/game/AsteroidsGameScene.js` (`LIFE_ICON_POINTS`)
54+
55+
### Sprite / Tile Arrays
56+
Observed in:
57+
- `games/SpaceInvaders/game/SpaceInvadersSpriteData.js` (bitmap frame arrays)
58+
- `samples/phase-02/0221/TilemapSystemScene.js` (inline tile rows fallback)
59+
- `samples/phase-02/0224/TileCameraSpriteSliceScene.js` (tile fallback rows)
60+
61+
### Primitive Skin Objects
62+
Observed as default skin/data objects in world/scene code:
63+
- `games/Breakout/game/BreakoutWorld.js`
64+
- `games/Pong/game/PongScene.js`
65+
- `games/SolarSystem/game/SolarSystemWorld.js`
66+
67+
### Parallax / Layout / Bezel Data
68+
Observed in:
69+
- `samples/phase-12/1205/MultiSystemDemoScene.js` (parallax layer layout/color)
70+
- `games/AITargetDummy/game/AITargetDummyController.js` (waypoint layout)
71+
- Asteroids asset-side overrides present but not fully wired as runtime SSoT:
72+
- `games/Asteroids/assets/images/bezel.stretch.override.json`
73+
- `games/Asteroids/assets/palettes/hud.json`
74+
75+
## Safe Extraction Decision (This PR)
76+
Extraction criteria required all of:
77+
1. owning schema exists
78+
2. target JSON path obvious
79+
3. wiring path already exists
80+
4. no runtime rewrite beyond tiny manifest/input reference
81+
82+
Result:
83+
- `candidates_meeting_all_criteria=0`
84+
- `extracted_candidates=0`
85+
- `unreferenced_extracted_json=0`
86+
87+
Primary blockers preventing safe extraction now:
88+
- many candidates require runtime loader changes (scene/world code directly consumes inline constants)
89+
- several targets lack an already-active manifest/input hook for the specific data type
90+
- some game skins/palettes exist but inline constants still act as required runtime defaults (removal would change behavior)
91+
92+
## Existing Partial Wiring Noted
93+
Games already using `loadGameSkin(...)` in main boot:
94+
- `games/Bouncing-ball/main.js`
95+
- `games/Pong/main.js`
96+
- `games/SolarSystem/main.js`
97+
- `games/Breakout/main.js`
98+
99+
This reduces future extraction risk for skin-color/sizing constants in those games.
100+
101+
## Palette Normalization Check
102+
No newly extracted palettes were created in this PR.
103+
(Existing palette normalization from prior PRs remains intact.)
104+
105+
## Constraints Check
106+
- no runtime rewrite performed
107+
- no validators added
108+
- no `start_of_day` changes
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Level 8.27 Extraction Candidate Matrix
2+
3+
| Source File | Hardcoded Data | Type | Proposed Tool Owner | Proposed JSON Path | Safe To Extract Now |
4+
|---|---|---|---|---|---|
5+
| `games/SpaceInvaders/game/SpaceInvadersScene.js` | dozens of HUD/render colors (`#66ff66`, `#ffffff`, overlay rgba) | HUD colors / palette groups | Palette Browser + `tools/schemas/palette.schema.json` | `games/SpaceInvaders/assets/palettes/space-invaders-hud.palette.json` | No |
6+
| `games/SpaceInvaders/game/SpaceInvadersSpriteData.js` | bitmap frame arrays (`SQUID_LIVING_FRAMES`, `PLAYER_DYING_FRAMES`, etc.) | sprite frame arrays | Sprite Editor + `tools/schemas/tools/sprite-editor.schema.json` | `games/SpaceInvaders/assets/sprites/space-invaders.sprite-sheet.json` | No |
7+
| `games/SpaceDuel/game/SpaceDuelScene.js` | `SHIP_SEGMENTS`, `ENEMY_*_SEGMENTS`, `HAZARD_SEGMENTS`, `SHOT_SEGMENTS` | vector primitives / shape arrays | Vector Asset Studio + `tools/schemas/tools/vector-asset-studio.schema.json` | `games/SpaceDuel/assets/vectors/space-duel-shapes.vector.json` | No |
8+
| `games/SpaceDuel/game/SpaceDuelScene.js` | `COLORS` object (`background`, `player1`, `enemy`, etc.) | HUD/skin colors | Palette Browser + `tools/schemas/palette.schema.json` | `games/SpaceDuel/assets/palettes/space-duel-hud.palette.json` | No |
9+
| `games/Asteroids/game/AsteroidsGameScene.js` | `LIFE_ICON_POINTS`, pause/initials overlay colors | HUD layout + HUD colors | overlay/bezel manifest ref + palette schema | `games/Asteroids/assets/images/bezel.stretch.override.json` and `games/Asteroids/assets/palettes/hud.json` | No |
10+
| `games/AITargetDummy/game/AITargetDummyController.js` | normalized waypoint list (`this.waypoints`) | layout/path points | Vector Map Editor + `tools/schemas/tools/vector-map-editor.schema.json` | `games/AITargetDummy/assets/layout/ai-waypoints.map.json` | No |
11+
| `games/GravityWell/game/GravityWellWorld.js` | `SHIP_SHAPE`, `BEACON_SHAPE` arrays | vector primitives | Vector Asset Studio + `tools/schemas/tools/vector-asset-studio.schema.json` | `games/GravityWell/assets/vectors/gravitywell-shapes.vector.json` | No |
12+
| `games/GravityWell/game/GravityWellWorld.js` | `DEFAULT_PLANETS`, `DEFAULT_BEACONS` with color/radius/strength | primitive skin + palette-like data | Primitive Skin Editor + palette schema | `games/GravityWell/assets/skins/skin.main.json` + `games/GravityWell/assets/palettes/gravitywell-classic.palette.json` | No |
13+
| `games/SolarSystem/game/SolarSystemWorld.js` | `BODY_DEFINITIONS`, `MOON_DEFINITIONS`, default sun/ring skin values | primitive skin object + layout constants | Primitive Skin Editor + `tools/schemas/tools/skin-editor.schema.json` | `games/SolarSystem/assets/skins/skin.main.json` (already present; partial parity) | No |
14+
| `games/SolarSystem/game/SolarSystemScene.js` | `DEFAULT_COLORS` object | HUD colors | Primitive Skin Editor / palette schema | `games/SolarSystem/assets/skins/skin.main.json` (already present; fallback still hardcoded) | No |
15+
| `games/Pong/game/PongScene.js` | `DEFAULT_COLORS`, `DEFAULT_SIZING` | primitive skin object | Primitive Skin Editor + `tools/schemas/tools/skin-editor.schema.json` | `games/pong/assets/skins/skin.main.json` (already present; fallback still hardcoded) | No |
16+
| `games/Pong/game/PongWorld.js` | `PONG_MODE_LIST` (`accent`, `arenaColor`, mode shape/sizing) | gameplay mode config + color data | skin/palette for color subset; no clear existing mode schema | `games/pong/assets/modes/pong.modes.json` (new) | No |
17+
| `games/Breakout/game/BreakoutWorld.js` | `DEFAULT_BRICK_COLORS`, `DEFAULT_BREAKOUT_SKIN` | primitive skin + brick palette | Primitive Skin Editor + palette schema | `games/breakout/assets/skins/skin.main.json` (already present; fallback still hardcoded) | No |
18+
| `samples/phase-02/0221/TilemapSystemScene.js` | inline fallback `tiles` rows + `palette` map | tile arrays + tile palette | Tilemap Studio + `tools/schemas/tools/tile-map-editor.schema.json` | `samples/phase-02/0221/sample-0221-tile-map-editor.json` / `sample.0221.tile-map-editor.json` (already consumed path exists) | No |
19+
| `samples/phase-02/0224/TileCameraSpriteSliceScene.js` | `FALLBACK_TILEMAP_ROWS`, fallback atlas frame colors | tile + sprite fallback data | Tilemap Studio + Sprite Editor schemas | `samples/phase-02/0224/sample-0224-tile-map-editor.json` and `sample-0224-sprite-editor.json` (already consumed path exists) | No |
20+
| `samples/phase-03/0301/demoSpriteFactory.js` | hardcoded frame palettes (`body`, `accent`, `visor`, `boots`) | sprite color presets | Sprite Editor + palette schema | `samples/phase-03/0301/sample.0301.palette.json` + sprite payload | No |
21+
| `samples/phase-12/1205/MultiSystemDemoScene.js` | tile palette object + parallax layer color/layout data | tile/parallax layout + colors | Tilemap Studio + Parallax Scene Studio schemas | `samples/phase-12/1205/sample.1205.tile-map-editor.json` and `sample.1205.parallax-editor.json` | No |
22+
23+
## Safe/Defer Rationale
24+
All listed candidates were deferred in this PR because at least one required extraction criterion failed (most commonly missing active wiring path or requiring scene/runtime code rewrite beyond tiny manifest/input ref).
25+
26+
Summary:
27+
- `safe_to_extract_now_yes=0`
28+
- `safe_to_extract_now_no=17`
29+
- `extracted_in_this_pr=0`
30+
- `unreferenced_extracted_json=0`
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Level 8.28 Asteroids Manifest SSoT Report
2+
3+
## Source Files Read
4+
- `docs/pr/PLAN_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST.md`
5+
- `docs/pr/BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST.md`
6+
- `games/Asteroids/assets/workspace.asset-catalog.json`
7+
- `games/Asteroids/assets/tools.manifest.json`
8+
- `games/Asteroids/assets/palettes/asteroids-classic.palette.json`
9+
- `games/Asteroids/assets/palettes/hud.json`
10+
- `games/Asteroids/assets/images/bezel.stretch.override.json`
11+
12+
## SSoT Output
13+
- Created `games/Asteroids/game.manifest.json` as Asteroids-first manifest SSoT.
14+
- Preserved legacy catalogs:
15+
- `games/Asteroids/assets/workspace.asset-catalog.json`
16+
- `games/Asteroids/assets/tools.manifest.json`
17+
18+
## Assets Wired In `games/Asteroids/game.manifest.json`
19+
- Palettes:
20+
- `games/Asteroids/assets/palettes/asteroids-classic.palette.json`
21+
- `games/Asteroids/assets/palettes/asteroids-hud.palette.json` (new typed HUD palette)
22+
- Legacy HUD compatibility path:
23+
- `games/Asteroids/assets/palettes/hud.json` (retained as typed legacy palette path)
24+
- Bezel override:
25+
- `games/Asteroids/assets/images/bezel.stretch.override.json`
26+
- Tool/runtime lineage from legacy `tools.manifest.json`:
27+
- Sprites: `games/Asteroids/assets/sprites/demo.json`, `games/Asteroids/assets/sprites/data/demo.data.json`
28+
- Tilemaps: `games/Asteroids/assets/tilemaps/stage.json`, `games/Asteroids/assets/tilemaps/data/stage.data.json`
29+
- Parallax: `games/Asteroids/assets/parallax/title.json`, `games/Asteroids/assets/parallax/overlay.json`, `games/Asteroids/assets/parallax/data/title.data.json`, `games/Asteroids/assets/parallax/data/overlay.data.json`
30+
- Vectors: `games/Asteroids/assets/vectors/ship.json`, `games/Asteroids/assets/vectors/asteroid-large.json`, `games/Asteroids/assets/vectors/asteroid-medium.json`, `games/Asteroids/assets/vectors/asteroid-small.json`, `games/Asteroids/assets/vectors/title.json`, `games/Asteroids/assets/vectors/data/library.data.json`
31+
- Tileset: `games/Asteroids/assets/tilesets/ui.json`
32+
- Workspace asset-catalog lineage:
33+
- Audio assets from `workspace.asset-catalog.json`
34+
- Bezel image `games/Asteroids/assets/images/bezel.png`
35+
36+
## HUD Conversion Decision
37+
- `hud.json` contained loose untyped color data.
38+
- Implemented typed conversion by creating:
39+
- `games/Asteroids/assets/palettes/asteroids-hud.palette.json` using `palette.schema.json`.
40+
- Retained `games/Asteroids/assets/palettes/hud.json` for compatibility, but converted it to typed palette-schema format and marked legacy via `source: "legacy-compatibility"` and `sourceId`.
41+
42+
## Palette Normalization
43+
- Normalized HUD colors from `#RRGGBBFF` to `#RRGGBB` in both:
44+
- `games/Asteroids/assets/palettes/asteroids-hud.palette.json`
45+
- `games/Asteroids/assets/palettes/hud.json`
46+
- Non-`FF` alpha cases were not present in HUD source data.
47+
48+
## Unreferenced Asteroids JSON After Migration
49+
- Verified all Asteroids asset JSON files are referenced by `games/Asteroids/game.manifest.json`.
50+
- `asteroids_asset_json_files=21`
51+
- `manifest_referenced_asset_json=21`
52+
- `asteroids_unreferenced_json_after=0`
53+
54+
## Legacy Catalog Deprecation Readiness
55+
- Old catalogs are still intact and readable.
56+
- With `game.manifest.json` now owning Asteroids SSoT references, old catalogs can be treated as legacy/derived inputs in follow-up migration PRs.
57+
58+
## Constraints Check
59+
- `runtime_changes=0`
60+
- `validators_added=0`
61+
- `start_of_day_changes=0`

docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,5 +880,9 @@
880880
- [ ] Verify palette/shared data never embeds inside tool payload files.
881881
- [.] Verify workspace schema has no sample-only concepts.
882882
- [.] Manifest SSoT audit across game workspace catalogs/tool manifests is in progress.
883+
- [x] Asteroids-first `game.manifest.json` SSoT example implemented (palette + HUD typing + bezel override wiring).
883884
- [.] Unused JSON cleanup audit (tools + explicit deletion candidates) is in progress.
884885
- [.] Palette opaque alpha normalization (`#RRGGBBFF` -> `#RRGGBB`) is in progress.
886+
- [x] Code-defined asset extraction audit across games/samples is complete.
887+
- [.] Tool-owned JSON asset input wiring for extracted code-defined assets is in progress.
888+
- [.] Hardcoded color/shape removal plan is in progress.

docs/operations/dev/codex_commands.md

Lines changed: 35 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,45 @@ MODEL: GPT-5.3-codex
22
REASONING: high
33

44
TASK:
5-
Apply BUILD_PR_LEVEL_8_26_MANIFEST_SSOT_AND_UNUSED_JSON_AUDIT.
6-
7-
IMPORTANT:
8-
This is an audit/cleanup PR. Do not do broad UI rewrites. Do not remove files unless proven unused by import/reference/script/doc/test search.
5+
Apply BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST.
96

107
STEPS:
11-
1. Read docs/pr/PLAN_PR_LEVEL_8_26_MANIFEST_SSOt_AND_UNUSED_JSON_AUDIT.md.
12-
2. Read docs/pr/BUILD_PR_LEVEL_8_26_MANIFEST_SSOt_AND_UNUSED_JSON_AUDIT.md.
13-
3. Create/update docs/dev/reports/level_8_26_user_blockers.md with all blocker questions and decisions.
14-
4. Audit root files:
15-
- workspace.manifest.json
16-
- package.json
17-
- package-lock.json
18-
5. Confirm package.json/package-lock.json root purpose in report; do not move them.
19-
6. Audit manifest SSoT conflicts:
20-
- games/**/assets/tools.manifest.json
21-
- games/**/assets/workspace.asset-catalog.json
22-
- game/workspace project JSON
23-
7. For each game, report:
24-
- referenced JSON assets
25-
- unreferenced JSON assets
26-
- duplicate/overlapping references
27-
- proposed SSoT target
28-
8. Specifically audit Asteroids:
29-
- games/Asteroids/assets/images/bezel.stretch.override.json
8+
1. Read docs/pr/PLAN_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST.md.
9+
2. Read docs/pr/BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST.md.
10+
3. Inspect:
11+
- games/Asteroids/assets/workspace.asset-catalog.json
12+
- games/Asteroids/assets/tools.manifest.json
3013
- games/Asteroids/assets/palettes/asteroids-classic.palette.json
3114
- games/Asteroids/assets/palettes/hud.json
32-
9. Normalize palette swatch hex:
15+
- games/Asteroids/assets/images/bezel.stretch.override.json
16+
4. Create or normalize:
17+
- games/Asteroids/game.manifest.json
18+
5. Preserve existing asset data. Do not delete old catalogs.
19+
6. Ensure game.manifest.json references:
20+
- asteroids-classic.palette.json
21+
- bezel.stretch.override.json
22+
- HUD palette/skin data after conversion
23+
- existing referenced vector/sprite/tilemap/parallax JSON assets
24+
7. If hud.json is color data:
25+
- convert to palette schema as games/Asteroids/assets/palettes/asteroids-hud.palette.json
26+
- do not leave hud.json as loose untyped color data
27+
- if retaining hud.json for compatibility, mark legacy in report
28+
8. Normalize palette colors:
3329
- #RRGGBBFF -> #RRGGBB
34-
- keep #RRGGBBAA when AA != FF
35-
10. Audit deletion candidates:
36-
- tools/codex/sample_maaping_example.json
37-
- tools/dev/checkPhase24*
38-
- tools/dev/checkSharedExt*.json
39-
- tools/samples/*
40-
- tools/shared/samples/*
41-
- other unused JSON under tools/
42-
11. Delete only if unused by imports, scripts, docs, tests, samples, games, and tool registry references.
43-
12. Add a follow-up plan for removing sample dropdown/selects from tools and migrating any tool-local samples to /samples/phase-*.
44-
13. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only:
45-
- [ ] -> [.] or [.] -> [x] only
46-
- no prose rewrite/delete
47-
14. Do not modify runtime code unless only manifest wiring of existing data is required and safe.
48-
15. Do not add validators.
49-
16. Do not modify start_of_day.
50-
17. Return a delta ZIP at:
51-
tmp/BUILD_PR_LEVEL_8_26_MANIFEST_SSOt_AND_UNUSED_JSON_AUDIT_delta.zip
30+
- preserve non-FF alpha
31+
9. Write docs/dev/reports/level_8_28_asteroids_manifest_ssot_report.md.
32+
10. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only:
33+
- [ ] -> [.] or [.] -> [x]
34+
- no prose rewrite/delete
35+
11. Do not add validators.
36+
12. Do not modify start_of_day.
37+
13. Avoid runtime code changes unless only a safe manifest input reference is required.
38+
14. Create Codex delta ZIP:
39+
tmp/BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST_delta.zip
5240

5341
ACCEPTANCE:
54-
- User blockers captured.
55-
- Manifest SSoT audit complete.
56-
- Unused JSON audit complete.
57-
- Palette alpha normalization complete or zero-change reported.
58-
- No runtime rewrite.
59-
- No start_of_day changes.
42+
- asteroids_game_manifest_exists=true
43+
- asteroids_bezel_override_wired=true
44+
- asteroids_hud_data_typed=true
45+
- old catalogs intact
46+
- no validators/start_of_day changes
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
BUILD_PR_LEVEL_8_26_MANIFEST_SSOT_AND_UNUSED_JSON_AUDIT
1+
BUILD_PR_LEVEL_8_28_MANIFEST_SSOT_IMPLEMENTATION_ASTEROIDS_FIRST
22

3-
- Added user blocker list for manifest SSoT, game asset wiring, palette normalization, and unused JSON cleanup
4-
- Added audit requirements for tools.manifest.json vs workspace.asset-catalog.json
5-
- Added deletion candidate audit scope
6-
- Added palette opaque alpha normalization rule
3+
- Added Asteroids-first game manifest SSoT plan
4+
- Wired Asteroids palette/HUD/bezel requirements into manifest acceptance
5+
- Kept legacy catalogs intact for parity review
76

87
PR Details:
9-
- Focused audit/cleanup PR
10-
- No runtime rewrite intended
8+
- First concrete SSoT implementation pattern
9+
- No broad all-games rollout
1110
- No validators
1211
- No start_of_day changes

0 commit comments

Comments
 (0)