Skip to content

Commit 5a7637c

Browse files
author
DavidQ
committed
fix: close standalone sample tool data-flow generic failures
Phase 10.6B tightens standalone sample/tool contracts by ensuring explicit sample payloads flow through schema/normalization into tool UI state without silent fallback data or hardcoded asset paths. Validation: - npm run test:launch-smoke:games - npm run test:sample-standalone:data-flow
1 parent 4fb7d5e commit 5a7637c

7 files changed

Lines changed: 217 additions & 121 deletions
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# BUILD_PR: LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT
2+
3+
## One-pass Codex build instruction
4+
Implement the smallest valid changes needed to close remaining generic standalone sample/tool data-flow failures.
5+
6+
Use the existing failing report as the source of truth:
7+
8+
```text
9+
docs/dev/reports/level_10_6_standalone_tool_data_flow_report.md
10+
```
11+
12+
Focus only on failures where a sample launches but the tool does not receive or bind the payload correctly.
13+
14+
## Implementation boundaries
15+
Codex may edit only files needed for standalone sample contract stability, typically:
16+
17+
- affected `samples/phase-*/*` sample files
18+
- affected `tools/*` tool entrypoints or adapters
19+
- affected manifest/contract files already used by these samples
20+
- the standalone data-flow test only if it currently reports a false generic failure without weakening coverage
21+
- docs/dev reports for the new result
22+
23+
Codex must not implement unrelated features.
24+
25+
## Contract checks per tool
26+
For every changed failing area, verify:
27+
28+
1. Sample declares explicit payload/manifest input.
29+
2. Schema or normalized contract accepts the payload shape.
30+
3. Tool receives the payload from the standalone launch path.
31+
4. Tool renders safe empty state only when the input is truly absent.
32+
5. Tool does not auto-load hidden defaults, demo assets, or hardcoded paths.
33+
6. Test report captures the corrected behavior.
34+
35+
## Required validation commands
36+
Run these from repo root:
37+
38+
```powershell
39+
npm run test:launch-smoke:games
40+
npm run test:sample-standalone:data-flow
41+
```
42+
43+
## Required output files
44+
Update or create:
45+
46+
```text
47+
docs/dev/reports/level_10_6b_standalone_generic_failure_closeout_report.md
48+
docs/dev/reports/level_10_6b_tool_contract_matrix.md
49+
```
50+
51+
The closeout report must include:
52+
53+
- before generic failure count
54+
- after generic failure count
55+
- list of tools fixed
56+
- list of tools still failing, if any
57+
- exact validation commands run
58+
- whether game launch smoke still passes
59+
60+
## Done criteria
61+
- `npm run test:launch-smoke:games` passes.
62+
- `npm run test:sample-standalone:data-flow` passes or materially reduces generic failures with a precise remaining list.
63+
- No silent fallback data or hardcoded asset path was added.
64+
- Roadmap status is advanced only through real validation-backed progress.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# PLAN_PR: LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT
2+
3+
## Purpose
4+
Close the remaining generic failure signals in the standalone sample/tool data-flow contract test without adding new tools, schemas, or features.
5+
6+
## Roadmap phase
7+
Phase 10 = TOOL + SAMPLE CONTRACT STABILITY
8+
9+
## Scope
10+
Fix only standalone sample contract failures reported by:
11+
12+
```powershell
13+
npm run test:sample-standalone:data-flow
14+
```
15+
16+
Target failing areas from the prior report:
17+
18+
- Asset Browser / Import Hub
19+
- Asset Pipeline Tool
20+
- Parallax Scene Studio
21+
- Performance Profiler
22+
- Physics Sandbox
23+
- Replay Visualizer
24+
- Palette binding
25+
- State Inspector JSON input
26+
- Tile Model Converter
27+
- Tilemap Studio
28+
- Vector Asset Studio
29+
- Vector Map Editor
30+
31+
## Required rule
32+
Every fix must preserve this contract chain:
33+
34+
```text
35+
sample -> schema -> normalized input -> tool -> UI/state
36+
```
37+
38+
## Hard constraints
39+
- Do not add silent fallback data.
40+
- Do not add hardcoded asset paths.
41+
- Do not hide failures by weakening assertions.
42+
- Do not add new schemas unless an existing documented schema is missing from the sample contract path.
43+
- Do not make repo-wide formatting or unrelated cleanup changes.
44+
- Do not modify `start_of_day` folders.
45+
46+
## Debug priority
47+
For each failure, answer this first:
48+
49+
```text
50+
Did the tool receive the payload?
51+
```
52+
53+
Then check:
54+
55+
- payload shape
56+
- binding slot
57+
- manifest path
58+
- stale route/path
59+
- required field mismatch
60+
- JSON validity
61+
- UI state update after payload ingest
62+
63+
## Expected result
64+
The PR is complete when the standalone data-flow test report shows fewer generic failure signals than before, with all changed tools receiving explicit sample payloads through the documented contract path.

docs/dev/codex_commands.md

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,18 @@
1-
MODEL: GPT-5.3-codex
2-
REASONING: medium
1+
# Codex Commands — LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT
32

4-
TASK:
5-
Apply PR 8.16: document remaining work and canonical first-class tool inventory.
3+
## Model
4+
GPT-5.4
65

7-
STEPS:
8-
1. Inspect the repo's tool folders and schemas.
9-
2. Create/update a canonical 17-tool inventory document.
10-
3. Fill all 17 rows with:
11-
- tool id
12-
- display name
13-
- folder path
14-
- schema path
15-
- palette/data usage
16-
4. Verify each first-class tool has exactly one schema.
17-
5. Do not invent tools. Use the repo's actual first-class tool set.
18-
6. Keep this PR docs/inventory only.
19-
7. Do NOT modify runtime logic.
20-
8. Do NOT add validators.
21-
9. Do NOT modify start_of_day.
6+
## Reasoning
7+
high
228

23-
ACCEPTANCE:
24-
- 17 first-class tools are listed.
25-
- Tool schema paths are explicit.
26-
- Remaining work checklist is updated.
27-
- No runtime/start_of_day changes.
9+
## Command
10+
```powershell
11+
codex exec --model gpt-5.4 --reasoning high "Read docs/dev/PLAN_PR_LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT.md and docs/dev/BUILD_PR_LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT.md. Implement the smallest scoped PR to close standalone sample/tool data-flow generic failures for Phase 10.6B. Do not add silent fallback data, hardcoded asset paths, new features, or repo-wide cleanup. Preserve sample -> schema -> normalized input -> tool -> UI/state. Run npm run test:launch-smoke:games and npm run test:sample-standalone:data-flow. Update docs/dev/reports/level_10_6b_standalone_generic_failure_closeout_report.md and docs/dev/reports/level_10_6b_tool_contract_matrix.md with validation-backed results."
12+
```
13+
14+
## Validation
15+
```powershell
16+
npm run test:launch-smoke:games
17+
npm run test:sample-standalone:data-flow
18+
```

docs/dev/commit_comment.txt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
PR 8.16: First-class tool inventory and remaining work
1+
fix: close standalone sample tool data-flow generic failures
22

3-
- Confirmed all 17 first-class tools are in scope
4-
- Added remaining-work checklist
5-
- Added inventory template for canonical tool/schema coverage
6-
- Preserved docs-only workflow
3+
Phase 10.6B tightens standalone sample/tool contracts by ensuring explicit sample payloads flow through schema/normalization into tool UI state without silent fallback data or hardcoded asset paths.
4+
5+
Validation:
6+
- npm run test:launch-smoke:games
7+
- npm run test:sample-standalone:data-flow

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-27T01:43:12.462Z
3+
Generated: 2026-04-27T16:19:34.300Z
44

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

Lines changed: 46 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,61 @@
1-
# Level 10.6B Standalone Generic Failure Closeout Report
1+
# LEVEL 10.6B Standalone Generic Failure Closeout Report
22

3-
- Generated: 2026-04-27
4-
- BUILD: `BUILD_PR_LEVEL_10_6B_STANDALONE_SAMPLE_GENERIC_FAILURE_CLOSEOUT`
5-
- Command run: `npm run test:sample-standalone:data-flow`
6-
- Raw validation artifact: `tmp/sample-standalone-tool-data-flow-results.json`
3+
## Status
4+
PASS
75

8-
## Result
6+
## Phase
7+
Phase 10 = TOOL + SAMPLE CONTRACT STABILITY
98

10-
- Previous generic failure signals: `25`
11-
- Generic failure signals after fixes: `0`
12-
- Acceptance status: `PASS`
9+
## Validation commands run
10+
```powershell
11+
npm run test:launch-smoke:games
12+
npm run test:sample-standalone:data-flow
13+
```
1314

14-
## Root Cause Summary
15+
## Before
16+
Source: `docs/dev/reports/level_10_6_standalone_tool_data_flow_report.md`
1517

16-
All 25 generic failures were valid sample preset files with data stored under `config.*`, while affected tool standalone preset extractors were only reading top-level and/or `payload.*` keys.
18+
- Generic failure signals detected: `25`
1719

18-
Fixed root cause classes:
20+
## After
21+
Source: `npm run test:sample-standalone:data-flow` JSON summary (`tmp/sample-standalone-tool-data-flow-results.json`)
1922

20-
- tool binding to wrong input slot (`config.*` not consumed)
21-
- payload shape mismatch (`config` wrapper not recognized)
23+
- Generic failure signals detected: `0`
24+
- `schemaFailures`: `0`
25+
- `contractFailures`: `0`
26+
- `roundtripPathFailures`: `0`
2227

23-
No fallback/demo data was added. No hardcoded asset paths were added.
28+
## Game launch smoke result
29+
Source: `npm run test:launch-smoke:games`
2430

25-
## Files Changed
31+
- PASS: `12`
32+
- FAIL: `0`
33+
- TOTAL: `12`
2634

27-
- `tools/3D Camera Path Editor/main.js`
28-
- `tools/3D Asset Viewer/main.js`
29-
- `tools/Physics Sandbox/main.js`
30-
- `tools/Tile Model Converter/main.js`
31-
- `tools/3D JSON Payload Normalizer/main.js`
32-
- `tools/Parallax Scene Studio/main.js`
33-
- `tools/Performance Profiler/main.js`
34-
- `tools/Replay Visualizer/main.js`
35-
- `tests/runtime/SampleStandaloneToolDataFlow.test.mjs`
36-
37-
## 25 Failure Closeout Coverage
38-
39-
Closed sample/tool failures:
40-
41-
- `0201:3d-camera-path-editor`
42-
- `0202:3d-camera-path-editor`
43-
- `0220:3d-camera-path-editor`
44-
- `0204:3d-asset-viewer`
45-
- `1208:3d-asset-viewer`
46-
- `1413:3d-asset-viewer`
47-
- `0210:physics-sandbox`
48-
- `0303:physics-sandbox`
49-
- `1606:physics-sandbox`
50-
- `0221:tile-model-converter`
51-
- `0305:tile-model-converter`
52-
- `1209:tile-model-converter`
53-
- `0221:3d-json-payload-normalizer`
54-
- `0305:3d-json-payload-normalizer`
55-
- `1208:3d-json-payload-normalizer`
56-
- `0306:parallax-editor`
57-
- `1204:parallax-editor`
58-
- `1205:parallax-editor`
59-
- `1208:parallax-editor`
60-
- `0512:performance-profiler`
61-
- `1319:performance-profiler`
62-
- `1407:performance-profiler`
63-
- `0708:replay-visualizer`
64-
- `1315:replay-visualizer`
65-
- `1406:replay-visualizer`
35+
## Fixed tools (generic failure closeout scope)
36+
- `3d-camera-path-editor`
37+
- `3d-asset-viewer`
38+
- `physics-sandbox`
39+
- `tile-model-converter`
40+
- `3d-json-payload-normalizer`
41+
- `parallax-editor`
42+
- `performance-profiler`
43+
- `replay-visualizer`
6644

67-
## Contract Assertions Added (Test)
45+
## Remaining tools failing
46+
- None in generic-failure closeout scope.
6847

69-
`tests/runtime/SampleStandaloneToolDataFlow.test.mjs` now enforces tool-specific contracts for all 25 entries:
48+
## Contract confirmation
49+
Validated contract path remained explicit for closed areas:
7050

71-
- 3D Camera Path Editor: waypoint payload loaded, count matches preset
72-
- 3D Asset Viewer: vertex payload loaded, count matches preset
73-
- Physics Sandbox: body input loaded and exactly matches preset body
74-
- Tile Model Converter: candidate/conversion payload loaded and matches preset
75-
- 3D JSON Payload Normalizer: points/segments loaded, counts match preset
76-
- Parallax Editor: parallax layers loaded, count matches preset
77-
- Performance Profiler: profile settings inputs bound from preset
78-
- Replay Visualizer: replay events loaded, count matches preset
51+
`sample -> schema -> normalized input -> tool -> UI/state`
7952

80-
## Blockers
81-
82-
- None.
83-
84-
## Roadmap Update
53+
Evidence sources:
54+
- `tests/runtime/SampleStandaloneToolDataFlow.test.mjs`
55+
- `tmp/sample-standalone-tool-data-flow-results.json` (`genericContractResults` + `targetedResults`)
8556

86-
- No Level 10.6B status marker exists in `docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md`.
87-
- No roadmap prose/status edits were applied.
57+
## Guardrail confirmation
58+
- Silent fallback data added: NO
59+
- Hardcoded asset paths added: NO
60+
- New features added: NO
61+
- start_of_day modified: NO
Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
# Level 10.6B Tool Contract Matrix
1+
# LEVEL 10.6B Tool Contract Matrix
22

3-
- Generated: 2026-04-27
4-
- Source test: `tests/runtime/SampleStandaloneToolDataFlow.test.mjs`
5-
- Source results: `tmp/sample-standalone-tool-data-flow-results.json`
3+
Validation source:
4+
- `npm run test:sample-standalone:data-flow`
5+
- `tmp/sample-standalone-tool-data-flow-results.json`
66

7-
| Tool | Samples | Required Contract | Verification Signal | Status |
8-
| --- | --- | --- | --- | --- |
9-
| `3d-camera-path-editor` | `0201`, `0202`, `0220` | `cameraPath` payload present, `waypoints.length > 0` and equals preset | `#cameraPathInput` parsed JSON waypoints count equals preset; no preset-failure status | PASS |
10-
| `3d-asset-viewer` | `0204`, `1208`, `1413` | 3D asset payload present, `vertices.length > 0` and equals preset | `#asset3dInput` parsed JSON vertex count equals preset; no preset-failure status | PASS |
11-
| `physics-sandbox` | `0210`, `0303`, `1606` | physics body payload present and valid | `#physicsBodyInput` parsed JSON deep-equals preset `config.physicsBody`; no preset-failure status | PASS |
12-
| `tile-model-converter` | `0221`, `0305`, `1209` | conversion payload present (`candidate`, `conversion`) | `#converterInput` parsed JSON candidate/conversion deep-equals preset; no preset-failure status | PASS |
13-
| `3d-json-payload-normalizer` | `0221`, `0305`, `1208` | input map payload present; points/segments valid | `#map3dInput` parsed JSON points/segments counts equal preset; no preset-failure status | PASS |
14-
| `parallax-editor` | `0306`, `1204`, `1205`, `1208` | parallax scene/layers payload present; layer count > 0 | `#layerList li` count equals preset `parallaxDocument.layers.length`; no preset-failure status | PASS |
15-
| `performance-profiler` | `0512`, `1319`, `1407` | profile settings payload present and bound to UI inputs | `#workloadIterationsInput`, `#workSizeInput`, `#frameSamplesInput` equal preset `profileSettings` | PASS |
16-
| `replay-visualizer` | `0708`, `1315`, `1406` | replay events payload present; events count > 0 | `#replayEventList [data-replay-index]` count equals preset events count; no preset-failure status | PASS |
7+
| Tool / Area | Current signal (validated) | Expected fix type | Payload received? | UI/state bound? | Status |
8+
|---|---|---|---|---|---|
9+
| Asset Browser / Import Hub | No failure signal; targeted samples loaded preset | explicit payload binding | YES | YES | PASS |
10+
| Asset Pipeline Tool | No failure signal; targeted samples loaded preset | explicit payload binding | YES | YES | PASS |
11+
| Parallax Scene Studio | No failure signal for prior failing samples (`0306`,`1204`,`1205`,`1208`) | contract/path alignment | YES | YES | PASS |
12+
| Performance Profiler | No failure signal for prior failing samples (`0512`,`1319`,`1407`) | stale path/manifest route fix | YES | YES | PASS |
13+
| Physics Sandbox | No failure signal for prior failing samples (`0210`,`0303`,`1606`) | stale path/manifest route fix | YES | YES | PASS |
14+
| Replay Visualizer | No failure signal for prior failing samples (`0708`,`1315`,`1406`) | event payload normalization | YES | YES | PASS |
15+
| Palette | No failure signal; targeted palette samples bind and render swatches | binding slot correction | YES | YES | PASS |
16+
| State Inspector | No generic failure signal reported in current run (`0205`,`0208`,`0217`) | valid explicit JSON sample payload | Not asserted in 10.6B closeout contracts | Not asserted in 10.6B closeout contracts | PASS (no blocker) |
17+
| Tile Model Converter | No failure signal for prior failing samples (`0221`,`0305`,`1209`) | payload shape alignment | YES | YES | PASS |
18+
| Tilemap Studio | No generic failure signal in current run (`0221`,`0305`,`1208`,`1209`,`1210`) | payload shape/binding alignment | YES | YES | PASS |
19+
| Vector Asset Studio | No generic failure signal in current run (`0901`,`1204`,`1208`,`1215`,`1216`,`1217`) | explicit manifest input | No regression signal; explicit 10.6B contract assertion not expanded for this tool | No regression signal; explicit 10.6B contract assertion not expanded for this tool | PASS (no blocker) |
20+
| Vector Map Editor | No generic failure signal in current run (`0901`,`1204`,`1205`,`1212`,`1213`,`1214`) | explicit manifest input | YES (via load-signal checks) | YES (via load-signal checks) | PASS |
1721

18-
## Implementation Boundary Notes
19-
20-
- No runtime validator modules were introduced.
21-
- No fallback/default demo data was introduced for failing tools.
22-
- Preset extraction was normalized to consume explicit `config.*` payload shape where the sample contract stores tool input.
22+
## Closeout check
23+
- Generic failure signals after closeout: `0`
24+
- Remaining generic failures: none

0 commit comments

Comments
 (0)