Skip to content

Commit be2eda2

Browse files
author
DavidQ
committed
BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT
- Added missing manifest-owned game palettes - Normalized palette swatches for tool alignment - Documented tools consuming manifest slices as inputs PR Details: - Starts Phase 10 tool alignment - No palette JSON files created - No validators - No start_of_day changes
1 parent 5d479ed commit be2eda2

19 files changed

Lines changed: 989 additions & 601 deletions
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
# Expected Codex Return / Delta Template
22

33
## Expected Changed Files
4-
- `package.json` if npm script is added/updated
5-
- `tests/runtime/LaunchSmokeAllEntries.test.mjs` only if needed for clearer mode naming/reporting
6-
- `docs/dev/reports/level_9_9_launch_smoke_games_only_fast_path_report.md`
4+
- `games/*/game.manifest.json`
5+
- `docs/dev/reports/level_10_1_game_palette_completeness_report.md`
76
- `docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md` if status update needed
87

98
## Expected Validation Summary
10-
- `games_only_script_exists=true`
11-
- `games_only_passes_games_flag=true`
12-
- `samples_in_games_only_run=false`
13-
- `tools_in_games_only_run=false`
14-
- `duplicate_game_execution=false`
15-
- `full_launch_smoke_preserved=true`
9+
- `games_scanned=<count>`
10+
- `games_with_palette_before=<count>`
11+
- `games_with_palette_after=<count>`
12+
- `palettes_created=<count>`
13+
- `palettes_normalized=<count>`
14+
- `new_palette_json_files=0`
15+
- `swatch_symbol_issues=0`
16+
- `opaque_alpha_ff_remaining=0`
1617
- `start_of_day_changes=0`
1718

1819
## Expected Delta ZIP
1920
Codex must create:
2021

21-
`tmp/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH_delta.zip`
22+
`tmp/BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT_delta.zip`

docs/dev/reports/launch_smoke_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Launch Smoke Report
22

3-
Generated: 2026-04-27T00:22:36.375Z
3+
Generated: 2026-04-27T00:34:13.165Z
44

55
Filters: games=true, samples=false, tools=false, sampleRange=all
66

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Level 10.1 Game Palette Completeness And Tool Input Alignment Report
2+
3+
## Build
4+
- `BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT`
5+
6+
## Scope Executed
7+
- Audited all `games/*/game.manifest.json` files.
8+
- Normalized existing manifest-owned palette swatches.
9+
- Created missing game palettes inside `game.manifest.json` under `tools["primitive-skin-editor"].palettes`.
10+
- Aligned game manifest tool sections to keyed object access (`gameManifest.tools[toolId]`).
11+
- Did not create any new `games/<game>/assets/palettes/*.json` files.
12+
13+
## Per-Game Results
14+
| Game | Palette Existed Before | Created/Normalized | Color Source | Swatch Count | Missing/Assumed Colors | Tool Section | Remaining Issues |
15+
| --- | --- | --- | --- | --- | --- | --- | --- |
16+
| `_template` | No | Created | Game-local template colors (`#F8FAFC`, `#0F172A`) | 2 | None | `tools["primitive-skin-editor"].palettes` | None |
17+
| `AITargetDummy` | No | Created | Game-local JS/SVG color constants | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
18+
| `Asteroids` | Yes | Normalized (kept existing manifest-owned palettes) | Existing in-manifest palette data | 17 (across 3 palettes) | None | `tools["primitive-skin-editor"].palettes` | None |
19+
| `Bouncing-ball` | No | Created | Existing manifest/game-local colors | 3 | None | `tools["primitive-skin-editor"].palettes` | None |
20+
| `Breakout` | No | Created | Existing manifest/game-local colors | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
21+
| `GravityWell` | No | Created | Game-local JS/SVG color constants | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
22+
| `Pacman` | No | Created | Game-local JS/SVG color constants | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
23+
| `Pong` | No | Created | Existing manifest/game-local colors | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
24+
| `SolarSystem` | No | Created | Existing manifest/game-local colors | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
25+
| `SpaceDuel` | No | Created | Existing manifest/game-local colors | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
26+
| `SpaceInvaders` | No | Created | Existing manifest/game-local colors | 10 | None | `tools["primitive-skin-editor"].palettes` | None |
27+
| `vector-arcade-sample` | No | Created | Existing manifest/game-local colors | 9 | None | `tools["primitive-skin-editor"].palettes` | None |
28+
29+
## Palette Normalization Proof
30+
- Swatch symbols are single-character and unique per palette.
31+
- Swatch hex values are uppercase `#RRGGBB`.
32+
- Opaque alpha suffixes were removed during normalization (no `#RRGGBBFF` remains in swatches).
33+
- Validation check result: `issues=0` for symbol/hex format checks across all manifest-owned game palettes.
34+
35+
## Tool Input Alignment
36+
- Game manifest tool input contract documented and aligned as:
37+
- `toolInput = gameManifest.tools[toolId]`
38+
- Game manifests normalized to keyed tool sections (object form), so tool-owned data is directly consumed without file-path JSON indirection for game-owned payloads.
39+
40+
## Runtime Validation
41+
- Executed: `npm run test:launch-smoke:games`
42+
- Result:
43+
- `filters: games=true samples=false tools=false`
44+
- `PASS=12 FAIL=0 TOTAL=12`
45+
46+
## File/Asset Guardrails
47+
- No new palette JSON files were created under `games/**/assets/palettes/`.
48+
- No `start_of_day` files were modified.

docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,3 +892,8 @@
892892
- [x] Code-defined asset extraction audit across games/samples is complete.
893893
- [.] Tool-owned JSON asset input wiring for extracted code-defined assets is in progress.
894894
- [.] Hardcoded color/shape removal plan is in progress.
895+
896+
## Level 10 — Game Palette Completeness And Tool Input Alignment
897+
898+
- [x] Game palette completeness is normalized with manifest-owned palette data under `game.manifest.json` tool sections.
899+
- [x] Tool input alignment contract is documented as `toolInput = gameManifest.tools[toolId]` (no game-owned file-path JSON input).
Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,43 @@
11
MODEL: GPT-5.3-codex
2+
REASONING: high
23

34
TASK:
4-
- run games-only smoke test
5-
- fix runtime issues caused by manifest flattening
6-
- ensure all games load from manifest data
7-
- no sample execution
8-
- no start_of_day changes
5+
Apply BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT.
96

10-
OUTPUT:
11-
tmp/BUILD_PR_LEVEL_9_10_SINGLE_MANIFEST_RUNTIME_STABILIZATION_delta.zip
7+
STEPS:
8+
1. Read docs/pr/PLAN_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT.md.
9+
2. Read docs/pr/BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT.md.
10+
3. Scan all `games/*/game.manifest.json`.
11+
4. For each game:
12+
- determine whether manifest-owned palette data exists
13+
- normalize existing palettes
14+
- create missing palette data inside game.manifest.json when needed
15+
5. Extract palette colors from source when possible:
16+
- code constants
17+
- canvas styles
18+
- CSS
19+
- existing manifest colors
20+
- HUD/skin sections
21+
6. Do not create separate palette JSON files.
22+
7. Place palette data under the owning tool section, preferably `primitive-skin-editor.palettes`.
23+
8. Normalize swatches:
24+
- single-character `symbol`
25+
- uppercase `#RRGGBB`
26+
- remove opaque `FF` suffix
27+
9. Document tool input alignment:
28+
- tools consume `gameManifest.tools[toolId]`
29+
- no file-path JSON input for game-owned data
30+
10. Write docs/dev/reports/level_10_1_game_palette_completeness_report.md.
31+
11. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only if needed:
32+
- [ ] -> [.]
33+
- [.] -> [x]
34+
- no prose rewrite/delete
35+
12. Do not add validators.
36+
13. Do not modify start_of_day.
37+
14. Create Codex delta ZIP:
38+
tmp/BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT_delta.zip
39+
40+
ACCEPTANCE:
41+
- all games with colors have manifest-owned palette data
42+
- no new palette JSON files
43+
- delta ZIP exists
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1-
PR 9.10: runtime stabilization for single-manifest games
1+
BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT
2+
3+
- Added missing manifest-owned game palettes
4+
- Normalized palette swatches for tool alignment
5+
- Documented tools consuming manifest slices as inputs
6+
7+
PR Details:
8+
- Starts Phase 10 tool alignment
9+
- No palette JSON files created
10+
- No validators
11+
- No start_of_day changes
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# BUILD_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT
2+
3+
## Objective
4+
Ensure every game has the palette data needed for tool alignment.
5+
6+
## Rule
7+
Palettes for games must be manifest-owned data.
8+
9+
Do NOT create:
10+
11+
```text
12+
games/<game>/assets/palettes/*.json
13+
```
14+
15+
Instead, add actual palette data to:
16+
17+
```text
18+
games/<game>/game.manifest.json
19+
```
20+
21+
under the correct tool section.
22+
23+
## Owning Tool
24+
Game palettes should be owned by the appropriate tool section.
25+
26+
Preferred:
27+
28+
```json
29+
"tools": {
30+
"primitive-skin-editor": {
31+
"palettes": {
32+
"palette.<game>.classic": {
33+
"schema": "html-js-gaming.palette",
34+
"version": 1,
35+
"name": "<Game> Classic Palette",
36+
"swatches": []
37+
}
38+
}
39+
}
40+
}
41+
```
42+
43+
If a game uses palette browsing/editing explicitly, also ensure the palette is compatible with Palette Browser input, but do not duplicate data under Palette Browser.
44+
45+
## Palette Creation Rules
46+
47+
For each game:
48+
1. Inspect `game.manifest.json`.
49+
2. If palette data exists, normalize it.
50+
3. If missing, extract from:
51+
- hardcoded game colors
52+
- canvas drawing styles
53+
- CSS variables/classes
54+
- old palette files already inlined or removed
55+
- skin/HUD color constants
56+
4. Generate stable swatches:
57+
- `symbol` single character
58+
- `hex` uppercase `#RRGGBB`
59+
- no opaque `#RRGGBBFF`
60+
5. Do not invent arbitrary colors unless no source exists.
61+
6. If no color source exists, create a minimal explicit fallback palette and document it.
62+
63+
## Tool Input Alignment Rule
64+
Tools should receive manifest slices:
65+
66+
```text
67+
toolInput = gameManifest.tools[toolId]
68+
```
69+
70+
Not:
71+
- file paths to JSON
72+
- sample dropdown data
73+
- separate asset catalog JSON
74+
- workspace asset catalog JSON
75+
76+
## Required Audit Report
77+
Create:
78+
79+
```text
80+
docs/dev/reports/level_10_1_game_palette_completeness_report.md
81+
```
82+
83+
Per game include:
84+
- game id
85+
- palette existed before
86+
- palette created/normalized
87+
- source of colors
88+
- swatch count
89+
- missing/assumed colors
90+
- tool section used
91+
- remaining palette issues
92+
93+
## Roadmap Movement
94+
Update `docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md` status only:
95+
- add/advance Phase 10 palette completeness item
96+
- add/advance tool input alignment item
97+
- use only `[ ] -> [.]` and `[.] -> [x]`
98+
99+
## Acceptance
100+
- Every game that uses colors has manifest-owned palette data.
101+
- No new palette JSON files are created.
102+
- Palette data lives under owning tool sections.
103+
- Swatches use single-character symbols.
104+
- Opaque alpha `FF` suffixes are removed.
105+
- Tools have a documented manifest-slice input contract.
106+
- No validators added.
107+
- No `start_of_day` changes.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# PLAN_PR_LEVEL_10_1_GAME_PALETTE_COMPLETENESS_AND_TOOL_INPUT_ALIGNMENT
2+
3+
## Purpose
4+
Start Phase 10 tool alignment by ensuring every game has manifest-owned palette data where needed, and tools receive consistent manifest slices instead of file/sample dropdown inputs.
5+
6+
## Scope
7+
- Audit all game manifests for palette completeness.
8+
- Create manifest-owned palettes for games missing palette data.
9+
- Extract missing palette colors from code, existing assets, CSS/canvas constants, or tool/game defaults where present.
10+
- Place actual palette JSON data inside `game.manifest.json` under the owning tool section.
11+
- Do not create separate palette JSON files.
12+
- Begin enforcing tool input alignment around manifest slices.
13+
14+
## Non-Goals
15+
- No broad UI removal yet.
16+
- No sample dropdown removal in this PR.
17+
- No validators.
18+
- No `start_of_day` changes.

games/AITargetDummy/game.manifest.json

Lines changed: 73 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,79 @@
6868
],
6969
"toolsManifestAssets": []
7070
},
71-
"tools": [
72-
{
73-
"toolId": "asset-browser",
74-
"assets": [
75-
{
76-
"id": "image.ai-target-dummy.preview",
77-
"path": "games/AITargetDummy/assets/images/preview.svg",
78-
"kind": "image",
79-
"source": "workspace-manager"
71+
"tools": {
72+
"asset-browser": {
73+
"assets": {
74+
"media": {
75+
"image.ai-target-dummy.preview": {
76+
"path": "games/AITargetDummy/assets/images/preview.svg",
77+
"kind": "image",
78+
"source": "workspace-manager"
79+
}
80+
}
81+
}
82+
},
83+
"primitive-skin-editor": {
84+
"palettes": {
85+
"palette.aitargetdummy.classic": {
86+
"schema": "html-js-gaming.palette",
87+
"version": 1,
88+
"name": "AI Target Dummy Classic Palette",
89+
"source": "manifest-and-runtime-color-scan",
90+
"swatches": [
91+
{
92+
"symbol": "0",
93+
"hex": "#FACC15",
94+
"name": "Color 1"
95+
},
96+
{
97+
"symbol": "1",
98+
"hex": "#93C5FD",
99+
"name": "Color 2"
100+
},
101+
{
102+
"symbol": "2",
103+
"hex": "#334155",
104+
"name": "Color 3"
105+
},
106+
{
107+
"symbol": "3",
108+
"hex": "#E2E8F0",
109+
"name": "Color 4"
110+
},
111+
{
112+
"symbol": "4",
113+
"hex": "#94A3B8",
114+
"name": "Color 5"
115+
},
116+
{
117+
"symbol": "5",
118+
"hex": "#070B14",
119+
"name": "Color 6"
120+
},
121+
{
122+
"symbol": "6",
123+
"hex": "#0F172A",
124+
"name": "Color 7"
125+
},
126+
{
127+
"symbol": "7",
128+
"hex": "#38BDF8",
129+
"name": "Color 8"
130+
},
131+
{
132+
"symbol": "8",
133+
"hex": "#22C55E",
134+
"name": "Color 9"
135+
},
136+
{
137+
"symbol": "9",
138+
"hex": "#EF4444",
139+
"name": "Color 10"
140+
}
141+
]
80142
}
81-
]
143+
}
82144
}
83-
]
145+
}
84146
}

0 commit comments

Comments
 (0)