Skip to content

Commit ce8714e

Browse files
author
DavidQ
committed
Normalize palette tool to palette-browser and enforce single canonical naming - PR 11.103
1 parent e0584f8 commit ce8714e

14 files changed

Lines changed: 755 additions & 154 deletions

docs/dev/codex_commands.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,21 @@
33
Model: GPT-5.3-codex
44
Reasoning: low
55

6-
Apply formatting rule:
6+
1. Update workspace.manifest.schema.json:
7+
- change required key from "palette" to "palette-browser"
8+
- rename properties.palette to properties.palette-browser
79

8-
1. Update PROJECT_INSTRUCTIONS.md with ARRAY FORMATTING RULE
9-
2. Scan repo JSON files
10-
3. Convert primitive arrays to compact format
11-
4. Do NOT modify complex arrays
12-
5. Validate JSON syntax
10+
2. Scan repo:
11+
- replace all tool key usage:
12+
palette → palette-browser
13+
14+
3. Remove invalid references:
15+
- palette-editor
16+
- duplicate palette tools
17+
18+
4. Validate:
19+
- all workspace manifests use tools.palette-browser
20+
- schema validation passes
21+
22+
5. Output report:
23+
docs/dev/reports/validation_after_11_103.txt

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Enforce compact primitive array formatting across repo - PR 11.100
1+
Normalize palette tool to palette-browser and enforce single canonical naming - PR 11.103
Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1 @@
11
filePath,status,errorCount,firstErrors
2-
games/_template/game.manifest.json,valid,0,
3-
games/AITargetDummy/game.manifest.json,valid,0,
4-
games/Asteroids/game.manifest.json,valid,0,
5-
games/Bouncing-ball/game.manifest.json,valid,0,
6-
games/Breakout/game.manifest.json,valid,0,
7-
games/GravityWell/game.manifest.json,valid,0,
8-
games/Pacman/game.manifest.json,valid,0,
9-
games/Pong/game.manifest.json,valid,0,
10-
games/SolarSystem/game.manifest.json,valid,0,
11-
games/SpaceDuel/game.manifest.json,valid,0,
12-
games/SpaceInvaders/game.manifest.json,valid,0,
13-
games/vector-arcade-sample/game.manifest.json,valid,0,
Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1 @@
11
filePath,schemaPath,status,errorCount,firstErrors,note
2-
samples/metadata/samples.index.metadata.json,,skipped,0,,no matching schema contract
3-
samples/phase-02/0204/sample.0204.3d-asset-viewer.json,tools/schemas/tools/3d-asset-viewer.schema.json,invalid,1,$.payload.asset3d: value must satisfy exactly one oneOf branch,
4-
samples/phase-02/0204/sample.0204.asset-browser.json,tools/schemas/tools/asset-browser.schema.json,valid,0,,
5-
samples/phase-02/0207/sample.0207.palette.json,,skipped,0,,no matching schema contract
6-
samples/phase-02/0207/sample.0207.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
7-
samples/phase-02/0213/sample.0213.palette.json,,skipped,0,,no matching schema contract
8-
samples/phase-02/0213/sample.0213.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
9-
samples/phase-02/0214/sample.0214.palette.json,,skipped,0,,no matching schema contract
10-
samples/phase-02/0214/sample.0214.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
11-
samples/phase-02/0219/sample.0219.palette.json,,skipped,0,,no matching schema contract
12-
samples/phase-02/0219/sample.0219.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
13-
samples/phase-02/0221/sample-0221-tile-map-editor-document.json,,skipped,0,,no matching schema contract
14-
samples/phase-02/0221/sample.0221.palette.json,,skipped,0,,no matching schema contract
15-
samples/phase-02/0221/sample.0221.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
16-
samples/phase-02/0221/sample.0221.tile-model-converter.json,tools/schemas/tools/tile-model-converter.schema.json,valid,0,,
17-
samples/phase-02/0224/sample-0224-tile-map-editor-document.json,,skipped,0,,no matching schema contract
18-
samples/phase-02/0224/sample.0224.palette.json,,skipped,0,,no matching schema contract
19-
samples/phase-02/0224/sample.0224.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
20-
samples/phase-02/0224/sample.0224.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
21-
samples/phase-02/0226/sample.0226.skin-editor.json,tools/schemas/tools/skin-editor.schema.json,invalid,1,$.skin: value must satisfy exactly one oneOf branch,
22-
samples/phase-02/0227/sample.0227.skin-editor.json,tools/schemas/tools/skin-editor.schema.json,invalid,1,$.skin: value must satisfy exactly one oneOf branch,
23-
samples/phase-03/0301/sample.0301.palette.json,,skipped,0,,no matching schema contract
24-
samples/phase-03/0301/sample.0301.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
25-
samples/phase-03/0302/sample.0302.palette.json,,skipped,0,,no matching schema contract
26-
samples/phase-03/0302/sample.0302.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
27-
samples/phase-03/0305/sample-0305-tile-map-editor-document.json,,skipped,0,,no matching schema contract
28-
samples/phase-03/0305/sample.0305.palette.json,,skipped,0,,no matching schema contract
29-
samples/phase-03/0305/sample.0305.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
30-
samples/phase-03/0305/sample.0305.tile-model-converter.json,tools/schemas/tools/tile-model-converter.schema.json,valid,0,,
31-
samples/phase-03/0308/sample.0308.palette.json,,skipped,0,,no matching schema contract
32-
samples/phase-03/0313/sample.0313.palette.json,,skipped,0,,no matching schema contract
33-
samples/phase-09/0901/sample.0901.palette.json,,skipped,0,,no matching schema contract
34-
samples/phase-09/0905/sample.0905.palette.json,,skipped,0,,no matching schema contract
35-
samples/phase-09/0905/sample.0905.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
36-
samples/phase-12/1204/sample.1204.palette.json,,skipped,0,,no matching schema contract
37-
samples/phase-12/1205/sample.1205.palette.json,,skipped,0,,no matching schema contract
38-
samples/phase-12/1208/sample.1208.palette.json,,skipped,0,,no matching schema contract
39-
samples/phase-12/1208/sample.1208.parallax-editor.json,tools/schemas/tools/parallax-editor.schema.json,invalid,1,$.payload.parallaxDocument: value must satisfy exactly one oneOf branch,
40-
samples/phase-12/1208/sample.1208.svg-asset-studio.json,tools/schemas/tools/svg-asset-studio.schema.json,valid,0,,
41-
samples/phase-12/1208/sample.1208.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,2,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch | $.payload.parallaxDocument: value must satisfy exactly one oneOf branch,
42-
samples/phase-12/1209/sample-1209-tile-map-editor-document.json,,skipped,0,,no matching schema contract
43-
samples/phase-12/1209/sample.1209.palette.json,,skipped,0,,no matching schema contract
44-
samples/phase-12/1209/sample.1209.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
45-
samples/phase-12/1209/sample.1209.tile-model-converter.json,tools/schemas/tools/tile-model-converter.schema.json,valid,0,,
46-
samples/phase-12/1210/sample-1210-tile-map-editor-document.json,,skipped,0,,no matching schema contract
47-
samples/phase-12/1210/sample.1210.palette.json,,skipped,0,,no matching schema contract
48-
samples/phase-12/1210/sample.1210.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
49-
samples/phase-12/1211/sample-1211-tile-map-editor-document.json,,skipped,0,,no matching schema contract
50-
samples/phase-12/1211/sample.1211.palette.json,,skipped,0,,no matching schema contract
51-
samples/phase-12/1211/sample.1211.tile-map-editor.json,tools/schemas/tools/tile-map-editor.schema.json,invalid,1,$.payload.tileMapDocument: value must satisfy exactly one oneOf branch,
52-
samples/phase-12/1212/sample-1212-vector-map-editor.json,tools/schemas/tools/vector-map-editor.schema.json,invalid,1,$.payload.vectorMapDocument: value must satisfy exactly one oneOf branch,
53-
samples/phase-12/1213/sample-1213-vector-map-editor.json,tools/schemas/tools/vector-map-editor.schema.json,invalid,1,$.payload.vectorMapDocument: value must satisfy exactly one oneOf branch,
54-
samples/phase-12/1214/sample-1214-vector-map-editor.json,tools/schemas/tools/vector-map-editor.schema.json,invalid,1,$.payload.vectorMapDocument: value must satisfy exactly one oneOf branch,
55-
samples/phase-12/1215/sample-1215-svg-asset-studio.json,tools/schemas/tools/svg-asset-studio.schema.json,valid,0,,
56-
samples/phase-12/1216/sample-1216-svg-asset-studio.json,tools/schemas/tools/svg-asset-studio.schema.json,valid,0,,
57-
samples/phase-12/1217/sample-1217-svg-asset-studio.json,tools/schemas/tools/svg-asset-studio.schema.json,valid,0,,
58-
samples/phase-12/1218/sample-1218-parallax-editor.json,tools/schemas/tools/parallax-editor.schema.json,invalid,1,$.payload.parallaxDocument: value must satisfy exactly one oneOf branch,
59-
samples/phase-12/1219/sample-1219-parallax-editor.json,tools/schemas/tools/parallax-editor.schema.json,invalid,1,$.payload.parallaxDocument: value must satisfy exactly one oneOf branch,
60-
samples/phase-12/1220/sample-1220-parallax-editor.json,tools/schemas/tools/parallax-editor.schema.json,invalid,1,$.payload.parallaxDocument: value must satisfy exactly one oneOf branch,
61-
samples/phase-14/1413/sample.1413.3d-asset-viewer.json,tools/schemas/tools/3d-asset-viewer.schema.json,invalid,1,$.payload.asset3d: value must satisfy exactly one oneOf branch,
62-
samples/phase-14/1413/sample.1413.asset-browser.json,tools/schemas/tools/asset-browser.schema.json,valid,0,,
63-
samples/phase-14/1413/sample.1413.asset-pipeline-tool.json,tools/schemas/tools/asset-pipeline-tool.schema.json,invalid,1,$.payload.pipelinePayload: value must satisfy exactly one oneOf branch,
64-
samples/phase-14/1414/sample.1414.palette.json,,skipped,0,,no matching schema contract
65-
samples/phase-14/1414/sample.1414.sprite-editor.json,tools/schemas/tools/sprite-editor.schema.json,invalid,1,$.payload.spriteProject: value must satisfy exactly one oneOf branch,
66-
samples/phase-15/1505/sample.1505.asset-browser.json,tools/schemas/tools/asset-browser.schema.json,valid,0,,
67-
samples/phase-19/1902/sample.1902.workspace-all-tools.json,tools/schemas/workspace.manifest.schema.json,valid,0,,

docs/dev/reports/schema_usage_code_updates.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
## Validation Summary
1010
- Tool schema rows: 17
11-
- Sample JSON rows: 66
12-
- Game manifest rows: 12
11+
- Sample JSON rows: 0
12+
- Game manifest rows: 0
1313
- Invalid tool rows: 0
14-
- Invalid sample rows: 28
14+
- Invalid sample rows: 0
1515
- Invalid game rows: 0
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
PR 11.103 Validation Report
2+
Date: 2026-04-30
3+
4+
Scope
5+
- Workspace manifest schema key migration from tools.palette -> tools.palette-browser
6+
- Runtime/tooling key usage normalization to palette-browser
7+
- Removal of invalid runtime/test reference to palette-editor
8+
- Targeted validation only
9+
10+
Files Changed
11+
- tools/schemas/workspace.manifest.schema.json
12+
- tools/shared/platformShell.js
13+
- tools/Workspace Manager/main.js
14+
- scripts/validate-json-contracts.mjs
15+
- tests/tools/ToolSchemaStrictModeValidation.test.mjs
16+
- tests/tools/ToolWorkspaceSchemaManifestBoundaries.test.mjs
17+
- samples/phase-19/1902/sample.1902.workspace-all-tools.json
18+
19+
Schema Contract Changes
20+
1) tools/schemas/workspace.manifest.schema.json
21+
- tools.required updated: ["palette"] -> ["palette-browser"]
22+
- tools.properties key renamed: "palette" -> "palette-browser"
23+
24+
2) Runtime normalization
25+
- Removed workspace special-key aliasing in shared shell for "palette".
26+
- Workspace manifest tool key normalization now uses canonical key names directly.
27+
28+
3) Invalid references removed
29+
- Removed stale test schema entry referencing tools/palette-editor/tool.schema.json
30+
- Runtime/source search now shows palette-editor only in docs/history text (no active runtime/test dependency)
31+
32+
Validation Evidence
33+
Command: powershell -ExecutionPolicy Bypass -File .\scripts\PS\validate-tool-schemas.ps1
34+
Result:
35+
- tool_payload_schema_validation: total=17 invalid=0
36+
37+
Command: node tests/tools/ToolSchemaStrictModeValidation.test.mjs
38+
Result:
39+
- PASS (exit 0)
40+
41+
Command: node --check "tools/Workspace Manager/main.js"
42+
Result:
43+
- PASS (exit 0)
44+
45+
Command: node --check tools/shared/platformShell.js
46+
Result:
47+
- PASS (exit 0)
48+
49+
Command: node --check scripts/validate-json-contracts.mjs
50+
Result:
51+
- PASS (exit 0)
52+
53+
Workspace Manifest Key Validation
54+
Scanned workspace-manifest documents:
55+
- samples/phase-19/1902/sample.1902.workspace-all-tools.json
56+
- tools.palette present: NO
57+
- tools.palette-browser present: YES
58+
- workspace.manifest.json
59+
- documentKind workspace-manifest, legacy palette-links shape; no tools object
60+
- not a tools-key regression for this migration
61+
62+
Repo Key/Reference Checks
63+
Command: rg -n 'tools\["palette"\]|tools\.palette\b|toolId\s*===\s*"palette"|id\s*===\s*"palette"' src tools samples tests scripts --glob '*.js' --glob '*.mjs' --glob '*.json'
64+
Result:
65+
- No active tools.palette key usage remains.
66+
- Remaining hits are expected message/path text containing tools.palette-browser.
67+
68+
Command: rg -n 'palette-editor' .
69+
Result:
70+
- Hits only in docs/report history files.
71+
- No active runtime/test/schema dependency remains.
72+
73+
Outcome
74+
- Workspace tools contract is normalized to tools.palette-browser.
75+
- Active runtime/test/schema usage aligns with palette-browser.
76+
- Invalid palette-editor runtime/test reference removed.
77+
- Targeted validation checks passed.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# BUILD_PR_LEVEL_11_103_PALETTE_BROWSER_NORMALIZATION
2+
3+
## Purpose
4+
Normalize palette tool naming to canonical `palette-browser` across schema and workspace manifest.
5+
6+
## Scope
7+
- docs-first
8+
- no implementation code
9+
- remove ambiguous `palette` key
10+
- enforce `palette-browser` as single canonical name
11+
12+
## Required Changes
13+
14+
### 1. Workspace Manifest Schema
15+
- Replace required key:
16+
- `palette``palette-browser`
17+
18+
- Update:
19+
- required: ["palette-browser"]
20+
- properties.palette → properties.palette-browser
21+
22+
### 2. Tool Registry Consistency
23+
- All references must use:
24+
- `palette-browser`
25+
26+
### 3. Disallowed
27+
- `palette`
28+
- `palette-editor`
29+
- duplicate palette tool definitions
30+
31+
## Validation
32+
- workspace manifests must include:
33+
- tools.palette-browser
34+
35+
- no schema validation allowed for:
36+
- tools.palette
37+
38+
## Notes
39+
- This is a breaking contract correction
40+
- Required before schema lock

0 commit comments

Comments
 (0)