Skip to content

Commit 4072d42

Browse files
author
DavidQ
committed
BUILD_PR_LEVEL_8_26_MANIFEST_SSOT_AND_UNUSED_JSON_AUDIT
- Added user blocker list for manifest SSoT, game asset wiring, palette normalization, and unused JSON cleanup - Added audit requirements for tools.manifest.json vs workspace.asset-catalog.json - Added deletion candidate audit scope - Added palette opaque alpha normalization rule PR Details: - Focused audit/cleanup PR - No runtime rewrite intended - No validators - No start_of_day changes
1 parent 59846af commit 4072d42

11 files changed

Lines changed: 611 additions & 29 deletions
Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
1+
# Expected Codex Return / Delta Template
12

2-
Expected Output:
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`
38

4-
- total_json_files >= 1
5-
- includes all schema + sample + workspace json
6-
- directory structure preserved
7-
- no file changes
9+
## 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>`
16+
- `runtime_changes=0`
17+
- `validators_added=0`
18+
- `start_of_day_changes=0`
Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
# Level 8.26 Manifest SSoT Audit Report
2+
3+
## Scope
4+
Audited:
5+
- `games/**/assets/tools.manifest.json`
6+
- `games/**/assets/workspace.asset-catalog.json`
7+
- game/workspace project JSON files under each game folder
8+
9+
Objective:
10+
- per-game referenced JSON assets
11+
- per-game unreferenced JSON assets
12+
- duplicate/overlapping references
13+
- proposed SSoT target
14+
15+
## Workspace Schema Re-check
16+
File: `tools/schemas/workspace.schema.json`
17+
- `samples` key present: no
18+
- `sampleId` key present: no
19+
- sample-only `phase` requirement present: no
20+
21+
Result: `workspace_schema_sample_concepts=0`
22+
23+
## Root File Audit
24+
- `workspace.manifest.json`: contains both `games` and legacy `samples`.
25+
- `package.json`: root npm project/scripts entrypoint.
26+
- `package-lock.json`: root lockfile for deterministic installs.
27+
28+
## Manifest Wiring Adjustments Applied (Safe Data Wiring)
29+
- No manifest path rewrites were retained in this PR.
30+
- Audit note: game folder casing can appear mixed on Windows display, but tracked repo paths for these catalogs are lowercase (`games/bouncing-ball`, `games/pong`), and catalog paths were left as-is.
31+
- No runtime JS logic changes.
32+
33+
## Per-Game Findings
34+
35+
### AITargetDummy
36+
- Sources:
37+
- `games/AITargetDummy/assets/workspace.asset-catalog.json`
38+
- Referenced JSON assets:
39+
- none
40+
- Unreferenced JSON assets:
41+
- none
42+
- Duplicate/overlap:
43+
- none
44+
- Proposed SSoT target:
45+
- `workspace.asset-catalog.json`
46+
47+
### Asteroids
48+
- Sources:
49+
- `games/Asteroids/assets/tools.manifest.json`
50+
- `games/Asteroids/assets/workspace.asset-catalog.json`
51+
- Referenced JSON assets:
52+
- `games/Asteroids/assets/palettes/asteroids-classic.palette.json`
53+
- `games/Asteroids/assets/parallax/data/overlay.data.json`
54+
- `games/Asteroids/assets/parallax/data/title.data.json`
55+
- `games/Asteroids/assets/parallax/overlay.json`
56+
- `games/Asteroids/assets/parallax/title.json`
57+
- `games/Asteroids/assets/sprites/data/demo.data.json`
58+
- `games/Asteroids/assets/sprites/demo.json`
59+
- `games/Asteroids/assets/tilemaps/data/stage.data.json`
60+
- `games/Asteroids/assets/tilemaps/stage.json`
61+
- `games/Asteroids/assets/vectors/asteroid-large.json`
62+
- `games/Asteroids/assets/vectors/asteroid-medium.json`
63+
- `games/Asteroids/assets/vectors/asteroid-small.json`
64+
- `games/Asteroids/assets/vectors/data/library.data.json`
65+
- `games/Asteroids/assets/vectors/ship.json`
66+
- `games/Asteroids/assets/vectors/title.json`
67+
- Unreferenced JSON assets:
68+
- `games/Asteroids/assets/images/bezel.stretch.override.json`
69+
- `games/Asteroids/assets/palettes/hud.json`
70+
- `games/Asteroids/assets/tilesets/ui.json`
71+
- Duplicate/overlap:
72+
- none (current references split across two manifests)
73+
- Proposed SSoT target:
74+
- `workspace.asset-catalog.json` as canonical runtime/workspace catalog
75+
- `tools.manifest.json` treated as derivable tool-lineage metadata until merged
76+
77+
Asteroids explicit checks:
78+
- `games/Asteroids/assets/images/bezel.stretch.override.json`: unreferenced
79+
- `games/Asteroids/assets/palettes/asteroids-classic.palette.json`: referenced
80+
- `games/Asteroids/assets/palettes/hud.json`: unreferenced
81+
82+
### Bouncing-ball
83+
- Sources:
84+
- `games/bouncing-ball/assets/workspace.asset-catalog.json`
85+
- Referenced JSON assets:
86+
- `games/bouncing-ball/assets/palettes/bouncing-ball-classic.palette.json`
87+
- `games/bouncing-ball/assets/skins/skin.main.json`
88+
- Unreferenced JSON assets:
89+
- none
90+
- Duplicate/overlap:
91+
- none
92+
- Proposed SSoT target:
93+
- `workspace.asset-catalog.json`
94+
95+
### Breakout
96+
- Sources:
97+
- `games/breakout/assets/workspace.asset-catalog.json`
98+
- Referenced JSON assets:
99+
- `games/breakout/assets/palettes/breakout-classic.palette.json`
100+
- `games/breakout/assets/skins/skin.main.json`
101+
- Unreferenced JSON assets:
102+
- none
103+
- Duplicate/overlap:
104+
- none
105+
- Proposed SSoT target:
106+
- `workspace.asset-catalog.json`
107+
108+
### GravityWell
109+
- Sources:
110+
- `games/GravityWell/assets/workspace.asset-catalog.json`
111+
- Referenced JSON assets:
112+
- none
113+
- Unreferenced JSON assets:
114+
- none
115+
- Duplicate/overlap:
116+
- none
117+
- Proposed SSoT target:
118+
- `workspace.asset-catalog.json`
119+
120+
### Pacman
121+
- Sources:
122+
- `games/Pacman/assets/workspace.asset-catalog.json`
123+
- Referenced JSON assets:
124+
- none
125+
- Unreferenced JSON assets:
126+
- none
127+
- Duplicate/overlap:
128+
- none
129+
- Proposed SSoT target:
130+
- `workspace.asset-catalog.json`
131+
132+
### Pong
133+
- Sources:
134+
- `games/pong/assets/workspace.asset-catalog.json`
135+
- Referenced JSON assets:
136+
- `games/pong/assets/palettes/pong-classic.palette.json`
137+
- `games/pong/assets/skins/skin.main.json`
138+
- Unreferenced JSON assets:
139+
- none
140+
- Duplicate/overlap:
141+
- none
142+
- Proposed SSoT target:
143+
- `workspace.asset-catalog.json`
144+
145+
### SolarSystem
146+
- Sources:
147+
- `games/SolarSystem/assets/workspace.asset-catalog.json`
148+
- Referenced JSON assets:
149+
- `games/SolarSystem/assets/palettes/solar-system-classic.palette.json`
150+
- `games/SolarSystem/assets/skins/skin.main.json`
151+
- Unreferenced JSON assets:
152+
- none
153+
- Duplicate/overlap:
154+
- none
155+
- Proposed SSoT target:
156+
- `workspace.asset-catalog.json`
157+
158+
### SpaceDuel
159+
- Sources:
160+
- `games/SpaceDuel/assets/workspace.asset-catalog.json`
161+
- Referenced JSON assets:
162+
- `games/SpaceDuel/assets/palettes/space-duel-classic.palette.json`
163+
- Unreferenced JSON assets:
164+
- none
165+
- Duplicate/overlap:
166+
- none
167+
- Proposed SSoT target:
168+
- `workspace.asset-catalog.json`
169+
170+
### SpaceInvaders
171+
- Sources:
172+
- `games/SpaceInvaders/assets/workspace.asset-catalog.json`
173+
- Referenced JSON assets:
174+
- `games/SpaceInvaders/assets/palettes/space-invaders-classic.palette.json`
175+
- Unreferenced JSON assets:
176+
- none
177+
- Duplicate/overlap:
178+
- none
179+
- Proposed SSoT target:
180+
- `workspace.asset-catalog.json`
181+
182+
### vector-arcade-sample
183+
- Sources:
184+
- `games/vector-arcade-sample/assets/workspace.asset-catalog.json`
185+
- `games/vector-arcade-sample/config/sample.project.json`
186+
- `games/vector-arcade-sample/runtime/bootstrap.runtime.json`
187+
- Referenced JSON assets:
188+
- `games/vector-arcade-sample/assets/data/palettes/vector-native-primary.palette.json`
189+
- `games/vector-arcade-sample/assets/data/parallax/template-backdrop.parallax.json`
190+
- `games/vector-arcade-sample/assets/data/sprites/template-player.sprite.json`
191+
- `games/vector-arcade-sample/assets/data/tilemaps/template-arena.tilemap.json`
192+
- `games/vector-arcade-sample/assets/data/tilemaps/template-ui.tileset.json`
193+
- `games/vector-arcade-sample/assets/data/vectors/template-hud.vector.json`
194+
- `games/vector-arcade-sample/assets/data/vectors/template-obstacle-large.vector.json`
195+
- `games/vector-arcade-sample/assets/data/vectors/template-obstacle-small.vector.json`
196+
- `games/vector-arcade-sample/assets/data/vectors/template-player.vector.json`
197+
- `games/vector-arcade-sample/assets/data/vectors/template-title.vector.json`
198+
- Unreferenced JSON assets:
199+
- none
200+
- Duplicate/overlap:
201+
- none
202+
- Proposed SSoT target:
203+
- `workspace.asset-catalog.json`
204+
205+
## Folder Shape Audit (`assets/<tool>/data/*`)
206+
Observed examples:
207+
- `games/Asteroids/assets/parallax/data/*`
208+
- `games/Asteroids/assets/sprites/data/*`
209+
- `games/Asteroids/assets/tilemaps/data/*`
210+
- `games/Asteroids/assets/vectors/data/*`
211+
212+
Recommendation:
213+
- Prefer explicit asset ownership paths over generic `data/` where feasible.
214+
- No directory/file moves were performed in this PR.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Level 8.26 Unused JSON Audit Report
2+
3+
## Scope
4+
Audited deletion candidates and broader `tools/**/*.json` usage with repository text/reference checks (imports, scripts, docs, tests, samples, games, tool metadata references).
5+
6+
## Candidate Audit Results
7+
8+
### Explicit Candidate Paths
9+
- `tools/codex/sample_maaping_example.json`
10+
- Result: file not present in current repo (no deletion action).
11+
12+
- `tools/dev/checkPhase24*`
13+
- `tools/dev/checkPhase24CloseoutExecutionGuard.baseline.json`: referenced by guard script/report content.
14+
- `tools/dev/checkPhase24CloseoutExecutionGuard.mjs`: referenced by npm script and report content.
15+
- Decision: keep.
16+
17+
- `tools/dev/checkSharedExt*.json`
18+
- `tools/dev/checkSharedExtractionGuard.baseline.json`: referenced by guard script/docs.
19+
- Decision: keep.
20+
21+
- `tools/samples/*`
22+
- Result: no JSON files found.
23+
24+
- `tools/shared/samples/*`
25+
- JSON files under `tools/shared/samples/project-asset-registry-demo` are referenced by:
26+
- `scripts/validate-asset-ownership-strategy.mjs`
27+
- docs/reports history and validation docs.
28+
- Decision: keep.
29+
30+
### Other Unused JSON Under `tools/`
31+
- Audit result: no additional JSON file in `tools/` was proven unreferenced under required search scope.
32+
- Deletion action in this PR: none.
33+
34+
## Palette Opaque Alpha Normalization
35+
Rule applied:
36+
- `#RRGGBBFF` -> `#RRGGBB`
37+
- preserve `#RRGGBBAA` when `AA != FF`
38+
39+
Files updated:
40+
- `games/vector-arcade-sample/assets/data/palettes/vector-native-primary.palette.json` (4 values)
41+
- `tools/templates/vector-native-arcade/assets/data/palettes/vector-native-primary.palette.json` (4 values)
42+
43+
Total updated values: 8
44+
45+
## Follow-up Plan (No UI Rewrite in This PR)
46+
### Goal
47+
Remove tool-local sample dropdown/select patterns and standardize sample ownership under `/samples/phase-*`.
48+
49+
### Proposed follow-up execution
50+
1. Inventory tools that render sample dropdown/select UI controls.
51+
2. Map each dropdown option to canonical `/samples/phase-*` entries.
52+
3. Add/normalize sample launch links to `/samples` pages only.
53+
4. Remove tool-local sample selector UI once parity is verified.
54+
5. Migrate any remaining tool-local sample payload/data into `/samples/phase-*` with manifest linkage.
55+
6. Add regression checklist to confirm tool behavior unaffected by selector removal.
56+
57+
## Safety/Scope Compliance
58+
- No runtime JS logic rewritten.
59+
- No validator modules added.
60+
- No `start_of_day` files modified.
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Level 8.26 User Blockers
2+
3+
## Scope
4+
Captured blocker questions from `BUILD_PR_LEVEL_8_26_MANIFEST_SSOt_AND_UNUSED_JSON_AUDIT` and recorded current decisions from this execution.
5+
6+
## Root / Manifest Questions
7+
1. Why does root `workspace.manifest.json` still contain `samples`?
8+
- Decision: **Blocker remains open**. Current file still contains `samples`; this PR audited and documented, but did not perform broad manifest migration.
9+
10+
2. What is root `package-lock.json` for?
11+
- Decision: npm lockfile for reproducible dependency resolution. Keep at repo root.
12+
13+
3. Is root `package.json` only unit-test related; should it move under `tests/`?
14+
- Decision: No. It is the repo npm entrypoint (scripts/dependencies), not test-only. Keep at root.
15+
16+
4. Difference between `tools.manifest.json` and `workspace.asset-catalog.json`?
17+
- Decision: Current split is dual-source:
18+
- `workspace.asset-catalog.json` = workspace/runtime asset catalog.
19+
- `tools.manifest.json` = tool lineage/runtime/toolData mapping.
20+
This is an SSoT conflict risk.
21+
22+
5. Single manifest passed to Workspace Editor and opened with Workspace Manager?
23+
- Decision: Recommended target remains one game/workspace manifest SSoT with other views derived.
24+
25+
## Asteroids / Games Questions
26+
6. Should `bezel.stretch.override.json` be in manifest SSoT?
27+
- Decision: Yes if it participates in runtime/workspace asset graph.
28+
- Current audit: **not referenced** by Asteroids manifests.
29+
30+
7. Should `asteroids-classic.palette.json` and `hud.json` be in manifest SSoT including Primitive Skin Editor section?
31+
- Decision: Yes for shared game/workspace ownership visibility.
32+
- Current audit:
33+
- `asteroids-classic.palette.json` referenced.
34+
- `hud.json` not referenced.
35+
36+
8. Should game asset folders avoid `assets/<tool>/data/` when direct asset ownership works?
37+
- Decision: Prefer explicit direct ownership paths where possible; no file moves in this PR.
38+
39+
9. Apply same checks to all games?
40+
- Decision: Completed in per-game manifest SSoT audit report.
41+
42+
10. Palette swatches should not end with `FFFFFFFF` when `FFFFFF` is sufficient.
43+
- Decision: Implemented where found in tracked palette JSON files.
44+
45+
## Tool Launch / Palette Browser Questions
46+
11. Why does `sample.0213.palette-browser.json` exist?
47+
- Decision: It is a tool payload for a sample that explicitly launches palette browser.
48+
49+
12. Confirm payload/data split (`palette-browser` payload vs `sample.<id>.palette.json` shared data)?
50+
- Decision: Confirmed. Tool payload and palette data remain separate concerns.
51+
52+
## Deletion / Cleanup Questions
53+
13. Can delete `tools/codex/sample_maaping_example.json`?
54+
- Decision: Path not found in repo. No deletion performed.
55+
56+
14. Can delete `tools/dev/checkPhase24*` and `tools/dev/checkSharedExt*.json`?
57+
- Decision: No. Baseline JSON files are referenced by guard scripts/reports.
58+
59+
15. Can delete `tools/samples/*`?
60+
- Decision: No files found under `tools/samples` in current repo.
61+
62+
16. Can delete `tools/shared/samples/*`?
63+
- Decision: No. Referenced by validation script/docs; not proven unused.
64+
65+
17. Audit rest of `tools/` JSON and delete unused only.
66+
- Decision: Completed audit. No safe deletion candidate proven unused under required reference checks.
67+
68+
18. Remove all sample dropdown/select support in tools.
69+
- Decision: Follow-up required; intentionally not implemented in this audit PR.
70+
71+
19. Migrate tool-local samples to `/samples/phase-*` where needed.
72+
- Decision: Follow-up required; not executed in this audit PR.
73+
74+
20. If files are not wired, wire or mark deletion.
75+
- Decision: Marked unreferenced assets in manifest SSoT report; no destructive cleanup without dedicated wiring/migration PR.
76+
77+
## Root File Audit Notes
78+
- `workspace.manifest.json`: still contains `samples` and now also contains `games`; boundary conflict remains tracked.
79+
- `package.json`: root npm entrypoint with test/build/guard scripts.
80+
- `package-lock.json`: dependency lock state for deterministic installs.

docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -879,3 +879,6 @@
879879
- [x] Verify sample tool payload files match workspace/game `tools[]` item shape.
880880
- [ ] Verify palette/shared data never embeds inside tool payload files.
881881
- [.] Verify workspace schema has no sample-only concepts.
882+
- [.] Manifest SSoT audit across game workspace catalogs/tool manifests is in progress.
883+
- [.] Unused JSON cleanup audit (tools + explicit deletion candidates) is in progress.
884+
- [.] Palette opaque alpha normalization (`#RRGGBBFF` -> `#RRGGBB`) is in progress.

0 commit comments

Comments
 (0)