Skip to content

Commit 92617d8

Browse files
author
DavidQ
committed
Add CI-safe sample JSON lockdown audit with palette-only visibility - PR 11.71
1 parent c4818e9 commit 92617d8

13 files changed

Lines changed: 446 additions & 4 deletions

docs/dev/codex_commands.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
1-
# Codex Command — PR 11.68
1+
# Codex Command — PR 11.71
22

33
Model: GPT-5.4
44
Reasoning: high
55

6-
```powershell
7-
codex exec --model gpt-5.4 --reasoning high "Apply docs/pr/PR_11_68_SAMPLE_JSON_AUDIT_LOCKDOWN.md exactly. Update only the audit script and required report files. Make default output counts-only, keep -Details for full listing, add -Ci failure mode for missing references, preserve CSV generation, run the listed validation commands, and write docs/dev/reports/PR_11_68_sample_json_audit_lockdown_report.md. Do not run the full samples suite."
6+
```text
7+
Implement PR 11.71 exactly as documented.
8+
9+
Add scripts/PS/audit-sample-json-lockdown.ps1.
10+
11+
Requirements:
12+
- Executable PowerShell only; no markdown/prose in the .ps1 file.
13+
- Must run from repo root.
14+
- Recursively scan samples/** sample leaf folders.
15+
- Count all JSON files under samples/**.
16+
- Determine referenced JSON files by scanning sample JS files for JSON filenames.
17+
- Report:
18+
- JSON files scanned
19+
- Referenced
20+
- Missing reference
21+
- Palette-only sample folders
22+
- Default mode: summary counts only.
23+
- -Details mode: dump missing reference paths and palette-only paths.
24+
- -Ci mode: exit 1 when Missing reference > 0, otherwise exit 0.
25+
- Keep generated CSV at docs/dev/reports/sample_json_lockdown_audit.csv.
26+
- Do not modify sample runtime code.
27+
- Do not modify roadmap text except status marker only if execution-backed.
28+
- Use targeted validation only; do not run full sample suite.
29+
30+
After implementation, run:
31+
./scripts/PS/audit-sample-json-lockdown.ps1
32+
./scripts/PS/audit-sample-json-lockdown.ps1 -Details
33+
./scripts/PS/audit-sample-json-lockdown.ps1 -Ci
34+
35+
If -Ci fails because current repo still has missing references, document that expected blocker in docs/dev/reports/PR_11_71_validation.md and do not hide it.
36+
37+
Return repo-structured ZIP at tmp/PR_11_71_SAMPLE_JSON_LOCKDOWN.zip.
838
```

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Lock sample JSON audit output and CI regression guard - PR 11.68
1+
Add CI-safe sample JSON lockdown audit with palette-only visibility - PR 11.71
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# PR 11.71 Validation
2+
3+
## Scope
4+
- Implemented `scripts/PS/audit-sample-json-lockdown.ps1`.
5+
- No sample runtime/tool/roadmap code changes.
6+
7+
## Commands Run
8+
1. `./scripts/PS/audit-sample-json-lockdown.ps1`
9+
2. `./scripts/PS/audit-sample-json-lockdown.ps1 -Details`
10+
3. `./scripts/PS/audit-sample-json-lockdown.ps1 -Ci`
11+
12+
## Results
13+
- Default mode:
14+
- JSON files scanned: `66`
15+
- Referenced: `66`
16+
- Missing reference: `0`
17+
- Palette-only sample folders: `5`
18+
- Exit code: `0`
19+
- Details mode:
20+
- Printed missing-reference path section (`none`)
21+
- Printed palette-only folder paths
22+
- Exit code: `0`
23+
- CI mode:
24+
- Exit code: `0`
25+
- No blocker triggered because missing references are `0`
26+
27+
## CSV Output
28+
- Generated and preserved:
29+
- `docs/dev/reports/sample_json_lockdown_audit.csv`
30+
31+
## Blockers
32+
- None.
33+
- Note: if future runs produce `Missing reference > 0`, `-Ci` will exit `1` by design.
34+
35+
## Full Suite
36+
- Full samples suite not run (targeted script validation only, per PR scope).
384 Bytes
Binary file not shown.
384 Bytes
Binary file not shown.
760 Bytes
Binary file not shown.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
default_exit=0
2+
details_exit=0
3+
ci_exit=0
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
"SampleLeaf","JsonPath","Referenced","ReferencedBy","IsPaletteJson","IsPaletteOnlySampleFolder"
2+
"samples\metadata","samples\metadata\samples.index.metadata.json","True","samples\index.render.js","False","False"
3+
"samples\phase-02\0204","samples\phase-02\0204\sample.0204.3d-asset-viewer.json","True","samples\metadata\samples.index.metadata.json","False","False"
4+
"samples\phase-02\0204","samples\phase-02\0204\sample.0204.asset-browser.json","True","samples\metadata\samples.index.metadata.json","False","False"
5+
"samples\phase-02\0207","samples\phase-02\0207\sample.0207.palette.json","True","samples\phase-02\0207\main.js","True","False"
6+
"samples\phase-02\0207","samples\phase-02\0207\sample.0207.sprite-editor.json","True","samples\phase-02\0207\AnimationSystemScene.js","False","False"
7+
"samples\phase-02\0213","samples\phase-02\0213\sample.0213.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
8+
"samples\phase-02\0213","samples\phase-02\0213\sample.0213.sprite-editor.json","True","samples\phase-02\0213\SpriteRenderLayerScene.js","False","False"
9+
"samples\phase-02\0214","samples\phase-02\0214\sample.0214.palette.json","True","samples\phase-02\0214\main.js","True","False"
10+
"samples\phase-02\0214","samples\phase-02\0214\sample.0214.sprite-editor.json","True","samples\phase-02\0214\AnimationSpriteBindingScene.js","False","False"
11+
"samples\phase-02\0219","samples\phase-02\0219\sample.0219.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
12+
"samples\phase-02\0219","samples\phase-02\0219\sample.0219.sprite-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
13+
"samples\phase-02\0221","samples\phase-02\0221\sample.0221.palette.json","True","samples\phase-02\0221\main.js","True","False"
14+
"samples\phase-02\0221","samples\phase-02\0221\sample.0221.tile-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
15+
"samples\phase-02\0221","samples\phase-02\0221\sample.0221.tile-model-converter.json","True","samples\metadata\samples.index.metadata.json","False","False"
16+
"samples\phase-02\0221","samples\phase-02\0221\sample-0221-tile-map-editor-document.json","True","samples\phase-02\0221\sample.0221.tile-model-converter.json","False","False"
17+
"samples\phase-02\0224","samples\phase-02\0224\sample.0224.palette.json","True","samples\phase-02\0224\main.js","True","False"
18+
"samples\phase-02\0224","samples\phase-02\0224\sample.0224.sprite-editor.json","True","samples\phase-02\0224\TileCameraSpriteSliceScene.js","False","False"
19+
"samples\phase-02\0224","samples\phase-02\0224\sample.0224.tile-map-editor.json","True","samples\phase-02\0224\TileCameraSpriteSliceScene.js","False","False"
20+
"samples\phase-02\0224","samples\phase-02\0224\sample-0224-tile-map-editor-document.json","True","samples\phase-02\0224\main.js","False","False"
21+
"samples\phase-02\0226","samples\phase-02\0226\sample.0226.skin-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
22+
"samples\phase-02\0227","samples\phase-02\0227\sample.0227.skin-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
23+
"samples\phase-03\0301","samples\phase-03\0301\sample.0301.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
24+
"samples\phase-03\0301","samples\phase-03\0301\sample.0301.sprite-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
25+
"samples\phase-03\0302","samples\phase-03\0302\sample.0302.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
26+
"samples\phase-03\0302","samples\phase-03\0302\sample.0302.sprite-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
27+
"samples\phase-03\0305","samples\phase-03\0305\sample.0305.palette.json","True","samples\phase-03\0305\main.js","True","False"
28+
"samples\phase-03\0305","samples\phase-03\0305\sample.0305.tile-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
29+
"samples\phase-03\0305","samples\phase-03\0305\sample.0305.tile-model-converter.json","True","samples\metadata\samples.index.metadata.json","False","False"
30+
"samples\phase-03\0305","samples\phase-03\0305\sample-0305-tile-map-editor-document.json","True","samples\phase-03\0305\sample.0305.tile-model-converter.json","False","False"
31+
"samples\phase-03\0308","samples\phase-03\0308\sample.0308.palette.json","True","samples\metadata\samples.index.metadata.json","True","True"
32+
"samples\phase-03\0313","samples\phase-03\0313\sample.0313.palette.json","True","samples\metadata\samples.index.metadata.json","True","True"
33+
"samples\phase-09\0901","samples\phase-09\0901\sample.0901.palette.json","True","samples\metadata\samples.index.metadata.json","True","True"
34+
"samples\phase-09\0905","samples\phase-09\0905\sample.0905.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
35+
"samples\phase-09\0905","samples\phase-09\0905\sample.0905.sprite-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
36+
"samples\phase-12\1204","samples\phase-12\1204\sample.1204.palette.json","True","samples\metadata\samples.index.metadata.json","True","True"
37+
"samples\phase-12\1205","samples\phase-12\1205\sample.1205.palette.json","True","samples\phase-12\1205\main.js","True","True"
38+
"samples\phase-12\1208","samples\phase-12\1208\sample.1208.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
39+
"samples\phase-12\1208","samples\phase-12\1208\sample.1208.parallax-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
40+
"samples\phase-12\1208","samples\phase-12\1208\sample.1208.svg-asset-studio.json","True","samples\metadata\samples.index.metadata.json","False","False"
41+
"samples\phase-12\1208","samples\phase-12\1208\sample.1208.tile-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
42+
"samples\phase-12\1209","samples\phase-12\1209\sample.1209.palette.json","True","samples\phase-12\1209\presetReferences.js","True","False"
43+
"samples\phase-12\1209","samples\phase-12\1209\sample.1209.tile-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
44+
"samples\phase-12\1209","samples\phase-12\1209\sample.1209.tile-model-converter.json","True","samples\metadata\samples.index.metadata.json","False","False"
45+
"samples\phase-12\1209","samples\phase-12\1209\sample-1209-tile-map-editor-document.json","True","samples\phase-12\1209\sample.1209.tile-model-converter.json","False","False"
46+
"samples\phase-12\1210","samples\phase-12\1210\sample.1210.palette.json","True","samples\phase-12\1210\presetReferences.js","True","False"
47+
"samples\phase-12\1210","samples\phase-12\1210\sample.1210.tile-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
48+
"samples\phase-12\1210","samples\phase-12\1210\sample-1210-tile-map-editor-document.json","True","samples\phase-12\1210\presetReferences.js","False","False"
49+
"samples\phase-12\1211","samples\phase-12\1211\sample.1211.palette.json","True","samples\phase-12\1211\presetReferences.js","True","False"
50+
"samples\phase-12\1211","samples\phase-12\1211\sample.1211.tile-map-editor.json","True","samples\phase-12\1211\index.html","False","False"
51+
"samples\phase-12\1211","samples\phase-12\1211\sample-1211-tile-map-editor-document.json","True","samples\phase-12\1211\presetReferences.js","False","False"
52+
"samples\phase-12\1212","samples\phase-12\1212\sample-1212-vector-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
53+
"samples\phase-12\1213","samples\phase-12\1213\sample-1213-vector-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
54+
"samples\phase-12\1214","samples\phase-12\1214\sample-1214-vector-map-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
55+
"samples\phase-12\1215","samples\phase-12\1215\sample-1215-svg-asset-studio.json","True","samples\metadata\samples.index.metadata.json","False","False"
56+
"samples\phase-12\1216","samples\phase-12\1216\sample-1216-svg-asset-studio.json","True","samples\metadata\samples.index.metadata.json","False","False"
57+
"samples\phase-12\1217","samples\phase-12\1217\sample-1217-svg-asset-studio.json","True","samples\metadata\samples.index.metadata.json","False","False"
58+
"samples\phase-12\1218","samples\phase-12\1218\sample-1218-parallax-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
59+
"samples\phase-12\1219","samples\phase-12\1219\sample-1219-parallax-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
60+
"samples\phase-12\1220","samples\phase-12\1220\sample-1220-parallax-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
61+
"samples\phase-14\1413","samples\phase-14\1413\sample.1413.3d-asset-viewer.json","True","samples\metadata\samples.index.metadata.json","False","False"
62+
"samples\phase-14\1413","samples\phase-14\1413\sample.1413.asset-browser.json","True","samples\metadata\samples.index.metadata.json","False","False"
63+
"samples\phase-14\1413","samples\phase-14\1413\sample.1413.asset-pipeline-tool.json","True","samples\metadata\samples.index.metadata.json","False","False"
64+
"samples\phase-14\1414","samples\phase-14\1414\sample.1414.palette.json","True","samples\metadata\samples.index.metadata.json","True","False"
65+
"samples\phase-14\1414","samples\phase-14\1414\sample.1414.sprite-editor.json","True","samples\metadata\samples.index.metadata.json","False","False"
66+
"samples\phase-15\1505","samples\phase-15\1505\sample.1505.asset-browser.json","True","samples\metadata\samples.index.metadata.json","False","False"
67+
"samples\phase-19\1902","samples\phase-19\1902\sample.1902.workspace-all-tools.json","True","samples\index.render.js","False","False"

docs/dev/reports/samples_only_palette_json_audit.csv

Whitespace-only changes.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# PR 11.70 - Fix palette-only sample audit script
2+
3+
Purpose: replace broken prose-contaminated PowerShell with a clean executable script.
4+
5+
Scope:
6+
- Recursively scan samples/** leaf sample folders.
7+
- Print paths where the only JSON files are *.palette.json.
8+
- Print the total count at the end.
9+
- Export CSV to docs/dev/reports/samples_only_palette_json_audit.csv.
10+
11+
Validation:
12+
```powershell
13+
.\scripts\PS\audit-samples-only-palette-json.ps1
14+
```
15+
16+
Do not run the full samples smoke test.

0 commit comments

Comments
 (0)