Skip to content

Commit 6e66e14

Browse files
author
DavidQ
committed
Normalize strict sample contracts without weakening schemas - PR 11.99
1 parent 0b18960 commit 6e66e14

46 files changed

Lines changed: 474 additions & 405 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/dev/codex_commands.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
# Codex Command - PR 11.98
1+
# Codex Commands - PR 11.99
22

33
Model: GPT-5.4
44
Reasoning: high
55

6-
Run this from the repo root:
7-
86
```powershell
9-
codex --model gpt-5.4 --reasoning high "Execute BUILD_PR_LEVEL_11_98_STRICT_SCHEMA_VALIDATION_AND_USAGE_REVIEW exactly. Tighten schemas so unknown fields are rejected, validate tools/workspaces/samples/games, update code that expects loose or legacy schema shapes, and write reports under docs/dev/reports. Do not add fallback/default payloads. Do not run the full samples suite unless required by shared loader changes."
7+
codex exec --model gpt-5.4 --reasoning high "Apply docs/pr/PR_11_99_SCHEMA_FAILURE_CLEANUP_AND_SAMPLE_CONTRACT_ALIGNMENT/BUILD.md exactly. Keep scope to strict schema failure cleanup. Do not loosen schemas. Do not create fallback assets or media buckets. Produce required reports and final repo-structured ZIP at tmp/PR_11_99_SCHEMA_FAILURE_CLEANUP_AND_SAMPLE_CONTRACT_ALIGNMENT.zip."
108
```

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Tighten schemas and validate samples/games against strict tool contracts - PR 11.98
1+
Normalize strict sample contracts without weakening schemas - PR 11.99
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# PR 11.99 - Schema Failure Cleanup And Sample Contract Alignment
2+
3+
## Scope
4+
- Strict schema failure cleanup only.
5+
- No schema loosening, no fallback/media bucket restoration, no default payload invention.
6+
7+
## Execution Summary
8+
- Read baseline invalid sample rows from PR 11.98 validation output.
9+
- Applied mechanical cleanup on 38 invalid sample JSON files:
10+
- Removed top-level `$schema` keys rejected by strict tool schemas.
11+
- Migrated legacy `config` values into schema-accepted `payload` fields where unambiguous.
12+
- Removed config/payload fields with no accepted contract.
13+
- Converted legacy asset-browser samples to strict shell contract with explicit `assets` object and schema-accepted `payload.assetBrowserPreset`; removed rejected `payload.assetCatalog` pattern.
14+
- Kept sample 1902 untouched and strict-valid.
15+
16+
## Validation Commands Run
17+
- `powershell -ExecutionPolicy Bypass -File .\scripts\PS\validate-tool-schemas.ps1`
18+
- `powershell -ExecutionPolicy Bypass -File .\scripts\PS\validate-sample-json.ps1`
19+
- `powershell -ExecutionPolicy Bypass -File .\scripts\PS\validate-game-manifests.ps1`
20+
- `powershell -ExecutionPolicy Bypass -File .\scripts\PS\validate-all-json-contracts.ps1 -Details`
21+
- `node tests/tools/ToolSchemaStrictModeValidation.test.mjs`
22+
- `node tests/runtime/LaunchSmokeAllEntries.test.mjs --samples --sample-range=1902-1902 --tools`
23+
24+
## Validation Results
25+
- Tool schemas: `total=17 invalid=0`
26+
- Game manifests: `total=12 invalid=0`
27+
- Sample JSON: `total=66 invalid=28` (down from 38)
28+
- Sample 1902 targeted smoke with tools: PASS (19/19)
29+
30+
## Error Pattern Reduction
31+
- Removed all `unknown key "$schema"` failures from invalid rows.
32+
- Removed all `unknown key "config"` failures from invalid rows.
33+
- Removed all `missing required key "assets"` failures from invalid rows.
34+
- Removed all `payload unknown key` failures for:
35+
- `assetCatalog`
36+
- `sampleImportInput`
37+
- `gameId`
38+
- `vectorAssetSvgPath`
39+
40+
## Remaining Blockers (Documented, Not Hidden)
41+
Remaining invalid rows are strict oneOf failures at nested document nodes:
42+
- 9x $.payload.spriteProject: value must satisfy exactly one oneOf branch
43+
- 6x $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
44+
- 4x $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
45+
- 3x $.payload.vectorMapDocument: value must satisfy exactly one oneOf branch
46+
- 2x $.payload.asset3d: value must satisfy exactly one oneOf branch
47+
- 2x $.skin: value must satisfy exactly one oneOf branch
48+
- 1x $.payload.tileMapDocument: value must satisfy exactly one oneOf branch | $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
49+
- 1x $.payload.pipelinePayload: value must satisfy exactly one oneOf branch
50+
51+
Remaining invalid files:
52+
- samples/phase-02/0204/sample.0204.3d-asset-viewer.json: $.payload.asset3d: value must satisfy exactly one oneOf branch
53+
- samples/phase-02/0207/sample.0207.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
54+
- samples/phase-02/0213/sample.0213.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
55+
- samples/phase-02/0214/sample.0214.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
56+
- samples/phase-02/0219/sample.0219.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
57+
- samples/phase-02/0221/sample.0221.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
58+
- samples/phase-02/0224/sample.0224.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
59+
- samples/phase-02/0224/sample.0224.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
60+
- samples/phase-02/0226/sample.0226.skin-editor.json: $.skin: value must satisfy exactly one oneOf branch
61+
- samples/phase-02/0227/sample.0227.skin-editor.json: $.skin: value must satisfy exactly one oneOf branch
62+
- samples/phase-03/0301/sample.0301.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
63+
- samples/phase-03/0302/sample.0302.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
64+
- samples/phase-03/0305/sample.0305.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
65+
- samples/phase-09/0905/sample.0905.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
66+
- samples/phase-12/1208/sample.1208.parallax-editor.json: $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
67+
- samples/phase-12/1208/sample.1208.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch | $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
68+
- samples/phase-12/1209/sample.1209.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
69+
- samples/phase-12/1210/sample.1210.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
70+
- samples/phase-12/1211/sample.1211.tile-map-editor.json: $.payload.tileMapDocument: value must satisfy exactly one oneOf branch
71+
- samples/phase-12/1212/sample-1212-vector-map-editor.json: $.payload.vectorMapDocument: value must satisfy exactly one oneOf branch
72+
- samples/phase-12/1213/sample-1213-vector-map-editor.json: $.payload.vectorMapDocument: value must satisfy exactly one oneOf branch
73+
- samples/phase-12/1214/sample-1214-vector-map-editor.json: $.payload.vectorMapDocument: value must satisfy exactly one oneOf branch
74+
- samples/phase-12/1218/sample-1218-parallax-editor.json: $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
75+
- samples/phase-12/1219/sample-1219-parallax-editor.json: $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
76+
- samples/phase-12/1220/sample-1220-parallax-editor.json: $.payload.parallaxDocument: value must satisfy exactly one oneOf branch
77+
- samples/phase-14/1413/sample.1413.3d-asset-viewer.json: $.payload.asset3d: value must satisfy exactly one oneOf branch
78+
- samples/phase-14/1413/sample.1413.asset-pipeline-tool.json: $.payload.pipelinePayload: value must satisfy exactly one oneOf branch
79+
- samples/phase-14/1414/sample.1414.sprite-editor.json: $.payload.spriteProject: value must satisfy exactly one oneOf branch
80+
81+
## Files Changed (Sample Cleanup)
82+
- samples/phase-02/0204/sample.0204.3d-asset-viewer.json
83+
- samples/phase-02/0204/sample.0204.asset-browser.json
84+
- samples/phase-02/0207/sample.0207.sprite-editor.json
85+
- samples/phase-02/0213/sample.0213.sprite-editor.json
86+
- samples/phase-02/0214/sample.0214.sprite-editor.json
87+
- samples/phase-02/0219/sample.0219.sprite-editor.json
88+
- samples/phase-02/0221/sample.0221.tile-map-editor.json
89+
- samples/phase-02/0221/sample.0221.tile-model-converter.json
90+
- samples/phase-02/0224/sample.0224.sprite-editor.json
91+
- samples/phase-02/0224/sample.0224.tile-map-editor.json
92+
- samples/phase-02/0226/sample.0226.skin-editor.json
93+
- samples/phase-02/0227/sample.0227.skin-editor.json
94+
- samples/phase-03/0301/sample.0301.sprite-editor.json
95+
- samples/phase-03/0302/sample.0302.sprite-editor.json
96+
- samples/phase-03/0305/sample.0305.tile-map-editor.json
97+
- samples/phase-03/0305/sample.0305.tile-model-converter.json
98+
- samples/phase-09/0905/sample.0905.sprite-editor.json
99+
- samples/phase-12/1208/sample.1208.parallax-editor.json
100+
- samples/phase-12/1208/sample.1208.svg-asset-studio.json
101+
- samples/phase-12/1208/sample.1208.tile-map-editor.json
102+
- samples/phase-12/1209/sample.1209.tile-map-editor.json
103+
- samples/phase-12/1209/sample.1209.tile-model-converter.json
104+
- samples/phase-12/1210/sample.1210.tile-map-editor.json
105+
- samples/phase-12/1211/sample.1211.tile-map-editor.json
106+
- samples/phase-12/1212/sample-1212-vector-map-editor.json
107+
- samples/phase-12/1213/sample-1213-vector-map-editor.json
108+
- samples/phase-12/1214/sample-1214-vector-map-editor.json
109+
- samples/phase-12/1215/sample-1215-svg-asset-studio.json
110+
- samples/phase-12/1216/sample-1216-svg-asset-studio.json
111+
- samples/phase-12/1217/sample-1217-svg-asset-studio.json
112+
- samples/phase-12/1218/sample-1218-parallax-editor.json
113+
- samples/phase-12/1219/sample-1219-parallax-editor.json
114+
- samples/phase-12/1220/sample-1220-parallax-editor.json
115+
- samples/phase-14/1413/sample.1413.3d-asset-viewer.json
116+
- samples/phase-14/1413/sample.1413.asset-browser.json
117+
- samples/phase-14/1413/sample.1413.asset-pipeline-tool.json
118+
- samples/phase-14/1414/sample.1414.sprite-editor.json
119+
- samples/phase-15/1505/sample.1505.asset-browser.json
120+
121+
## Full Samples Smoke Decision
122+
- Full samples smoke was skipped.
123+
- Reason: this PR is schema/data-contract cleanup and did not change shared sample loader/framework paths; targeted schema validation plus sample 1902 smoke was executed per BUILD policy.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# PR 11.99 Bundle Report
2+
3+
This bundle converts the PR 11.98 validation output into a focused Codex BUILD for strict sample contract cleanup.
4+
5+
Baseline from PR 11.98: tool schemas valid, game manifests valid, sample JSON has 38 invalid rows.
6+
7+
Target: reduce or eliminate invalid sample JSON rows without weakening schemas, while preserving Sample 1902 and the asset-browser flat asset contract.

0 commit comments

Comments
 (0)