Skip to content

Commit c1b5147

Browse files
author
DavidQ
committed
PR 9.8: rollout direct-data manifest model to all games & MODEL: GPT-5.3-codex
REASONING: medium TASK: Apply BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH. STEPS: 1. Read docs/pr/PLAN_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH.md. 2. Read docs/pr/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH.md. 3. Inspect: - package.json - tests/runtime/LaunchSmokeAllEntries.test.mjs - scripts that invoke launch smoke tests 4. Add or update a dedicated games-only command: - preferred: npm run test:launch-smoke:games - must pass: --games 5. Ensure games-only command invokes LaunchSmokeAllEntries exactly once. 6. Do not remove full all-entry launch smoke behavior. 7. Ensure games-only excludes samples and tools. 8. Write docs/dev/reports/level_9_9_launch_smoke_games_only_fast_path_report.md with final command and validation. 9. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only if needed: - [ ] -> [.] - [.] -> [x] - no prose rewrite/delete 10. Do not modify start_of_day. 11. Create Codex delta ZIP: tmp/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH_delta.zip ACCEPTANCE: - games-only launch smoke command exists - samples/tools excluded - duplicate game execution false - delta ZIP exists
1 parent 2d432d4 commit c1b5147

12 files changed

Lines changed: 319 additions & 385 deletions
Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
# Expected Codex Return / Delta Template
22

33
## Expected Changed Files
4-
- `games/Asteroids/game.manifest.json`
5-
- Asteroids loader/runtime files only if required to remove internal pointer resolution
6-
- `docs/dev/reports/level_9_7_remove_internal_references_report.md`
4+
- `package.json` if npm script is added/updated
5+
- `tests/runtime/LaunchSmokeAllEntries.test.mjs` only if needed for clearer mode naming/reporting
6+
- `docs/dev/reports/level_9_9_launch_smoke_games_only_fast_path_report.md`
77
- `docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md` if status update needed
88

99
## Expected Validation Summary
10-
- `asteroids_json_count=1`
11-
- `runtimeSource_remaining=0`
12-
- `internal_fragment_refs_remaining=0`
13-
- `root_assetCatalog_json_refs_remaining=0`
14-
- `inlinedSourceFiles_remaining=0`
15-
- `toolDomains_remaining=0`
16-
- `old_deleted_json_filename_refs_remaining=0`
17-
- `external_media_paths_allowed=true`
18-
- `asteroids_direct_launch=true`
19-
- `validators_added=0`
10+
- `games_only_script_exists=true`
11+
- `games_only_passes_games_flag=true`
12+
- `samples_in_games_only_run=false`
13+
- `tools_in_games_only_run=false`
14+
- `duplicate_game_execution=false`
15+
- `full_launch_smoke_preserved=true`
2016
- `start_of_day_changes=0`
2117

2218
## Expected Delta ZIP
2319
Codex must create:
2420

25-
`tmp/BUILD_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA_delta.zip`
21+
`tmp/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH_delta.zip`

docs/dev/reports/launch_smoke_report.md

Lines changed: 3 additions & 266 deletions
Large diffs are not rendered by default.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# LEVEL 9.8 - Direct Data Manifest Rollout (All Games)
2+
3+
## Build
4+
- `BUILD_PR_LEVEL_9_8_DIRECT_DATA_MANIFEST_ROLLOUT_ALL_GAMES`
5+
6+
## Scope Applied
7+
- Audited every `games/*/game.manifest.json` for:
8+
- `runtimeSource`
9+
- root `assetCatalog`
10+
- `game.manifest.json#` fragment refs
11+
- `#tools/` and `#tools.` fragment refs
12+
- Applied runtime-safe cutover change where residue remained.
13+
14+
## Files Changed
15+
- `games/Asteroids/game.manifest.json`
16+
- `games/shared/workspaceGameAssetCatalog.js`
17+
18+
## Manifest Rollout Result
19+
All game manifests now satisfy the requested constraints:
20+
- `runtimeSource` count: `0` across all game manifests
21+
- root `assetCatalog` count: `0` across all game manifests
22+
- `game.manifest.json#` count: `0` across all game manifests
23+
- `#tools/` count: `0` across all game manifests
24+
- `#tools.` count: `0` across all game manifests
25+
26+
## Asteroids Change Detail
27+
- Removed root `assetCatalog` from `games/Asteroids/game.manifest.json`.
28+
- Preserved direct-data model by moving external media asset entries under:
29+
- `tools.asset-browser.assets.media`
30+
- Kept inline tool-owned data intact.
31+
32+
## Runtime Wiring Change
33+
- Updated `games/shared/workspaceGameAssetCatalog.js` manifest parsing to also resolve catalog entries from:
34+
- `tools["asset-browser"].assets.media`
35+
- This preserves asset path resolution for games that use manifest-hosted media entries after `assetCatalog` removal.
36+
37+
## Direct Launch Validation
38+
- Executed `npm run test:launch-smoke`
39+
- Result summary from run:
40+
- `PASS=275`
41+
- `FAIL=0`
42+
- `TOTAL=275`
43+
- Game direct launch entries explicitly passed, including:
44+
- `_template`
45+
- `AITargetDummy`
46+
- `Asteroids`
47+
- `Bouncing-ball`
48+
- `Breakout`
49+
- `GravityWell`
50+
- `Pacman`
51+
- `Pong`
52+
- `SolarSystem`
53+
- `SpaceDuel`
54+
- `SpaceInvaders`
55+
- `vector-arcade-sample`
56+
57+
## Constraints Check
58+
- No `start_of_day` paths modified.
59+
- No validator modules added.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Level 9.9 Launch Smoke Games-Only Fast Path Report
2+
3+
## Scope
4+
- BUILD: `BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH`
5+
- Purpose: add a dedicated games-only launch smoke fast path without changing all-entry behavior.
6+
7+
## Package Script Change
8+
- Updated `package.json` scripts:
9+
- Existing (kept): `"test:launch-smoke": "node ./tests/runtime/LaunchSmokeAllEntries.test.mjs"`
10+
- Added: `"test:launch-smoke:games": "node ./tests/runtime/LaunchSmokeAllEntries.test.mjs --games"`
11+
12+
## Final Command
13+
- `npm run test:launch-smoke:games`
14+
15+
## Validation
16+
17+
### Runner and Filter Behavior
18+
- Runner file inspected: `tests/runtime/LaunchSmokeAllEntries.test.mjs`
19+
- `--games` is an explicit filter flag parsed by `parseCliArgs`.
20+
- With any explicit filter present, default include-all behavior is disabled.
21+
- Effective include set for this command:
22+
- `games=true`
23+
- `samples=false`
24+
- `tools=false`
25+
26+
### Execution Proof
27+
- Executed command: `npm run test:launch-smoke:games`
28+
- Observed runtime log line:
29+
- `filters: games=true samples=false tools=false sampleRange=all`
30+
- Observed discovery count:
31+
- `discovered 12 entries`
32+
- Observed summary:
33+
- `PASS=12 FAIL=0 TOTAL=12`
34+
- Observed launched entries were game paths only under `games/*/index.html`.
35+
36+
### Duplicate Execution Check
37+
- `test:launch-smoke:games` invokes `LaunchSmokeAllEntries.test.mjs` directly exactly once.
38+
- No wrapper script indirection exists for `test:launch-smoke:games` in `package.json`.
39+
- Launch logs show one entry sequence `[1/12] ... [12/12]` and one final summary, indicating a single runner pass.
40+
41+
## All-Entry Behavior Preservation
42+
- Existing full launch smoke command remains unchanged:
43+
- `npm run test:launch-smoke`
44+
45+
## Start_of_day
46+
- No `start_of_day` files were modified.
Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,33 @@
11
MODEL: GPT-5.3-codex
2-
REASONING: high
2+
REASONING: medium
33

44
TASK:
5-
Apply BUILD_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA.
5+
Apply BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH.
66

77
STEPS:
8-
1. Read docs/pr/PLAN_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA.md.
9-
2. Read docs/pr/BUILD_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA.md.
10-
3. Open `games/Asteroids/game.manifest.json`.
11-
4. Remove internal pointer patterns:
12-
- runtimeSource
13-
- game.manifest.json#
14-
- #tools/
15-
- #tools.
16-
- source.path pointing back to this manifest
17-
- lineage.inlinedSourceFiles
18-
- lineage.toolDomains
19-
5. Remove or restrict root assetCatalog:
20-
- no JSON-data entries
21-
- external binary/media paths only if retained
22-
6. Preserve actual data under owning tool sections:
23-
- primitive-skin-editor
24-
- sprite-editor
25-
- tile-map-editor
26-
- parallax-editor
27-
- vector-asset-studio
28-
- asset-browser for external media only
29-
7. Search for old deleted JSON filenames and remove stale references.
30-
8. Verify:
31-
- only one JSON remains under games/Asteroids
32-
- no internal manifest fragment refs remain
33-
- no runtimeSource remains
34-
- Asteroids direct launch works
35-
9. Update docs/dev/reports/level_9_7_remove_internal_references_report.md.
36-
10. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only if needed:
37-
- [ ] -> [.]
38-
- [.] -> [x]
39-
- no prose rewrite/delete
40-
11. Do not add validators.
41-
12. Do not modify start_of_day.
42-
13. Create Codex delta ZIP:
43-
tmp/BUILD_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA_delta.zip
8+
1. Read docs/pr/PLAN_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH.md.
9+
2. Read docs/pr/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH.md.
10+
3. Inspect:
11+
- package.json
12+
- tests/runtime/LaunchSmokeAllEntries.test.mjs
13+
- scripts that invoke launch smoke tests
14+
4. Add or update a dedicated games-only command:
15+
- preferred: npm run test:launch-smoke:games
16+
- must pass: --games
17+
5. Ensure games-only command invokes LaunchSmokeAllEntries exactly once.
18+
6. Do not remove full all-entry launch smoke behavior.
19+
7. Ensure games-only excludes samples and tools.
20+
8. Write docs/dev/reports/level_9_9_launch_smoke_games_only_fast_path_report.md with final command and validation.
21+
9. Update docs/dev/roadmaps/MASTER_ROADMAP_ENGINE.md status only if needed:
22+
- [ ] -> [.]
23+
- [.] -> [x]
24+
- no prose rewrite/delete
25+
10. Do not modify start_of_day.
26+
11. Create Codex delta ZIP:
27+
tmp/BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH_delta.zip
4428

4529
ACCEPTANCE:
46-
- manifest is data, not pointer map
47-
- Asteroids launches
30+
- games-only launch smoke command exists
31+
- samples/tools excluded
32+
- duplicate game execution false
4833
- delta ZIP exists
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
BUILD_PR_LEVEL_9_7_REMOVE_INTERNAL_REFERENCES_AND_INLINE_DATA
1+
BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH
22

3-
- Removed internal manifest pointer references from Asteroids game.manifest.json
4-
- Kept actual data directly under owning tool sections
5-
- Preserved external media paths only where appropriate
3+
- Added games-only launch smoke fast path
4+
- Ensured browser smoke validation can run games only once
5+
- Preserved full all-entry launch smoke coverage
66

77
PR Details:
8-
- Completes Asteroids direct-data manifest model
9-
- No validators
8+
- Fixes accidental games + samples + tools browser smoke runs
109
- No start_of_day changes
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Roll out direct-data manifest model to all games:
2+
- no internal references
3+
- no assetCatalog JSON pointers
4+
- data lives directly in manifest
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# BUILD_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH
2+
3+
## Objective
4+
Make the browser smoke test requested for game validation run:
5+
6+
```text
7+
games only
8+
once
9+
```
10+
11+
## Root Cause
12+
In `tests/runtime/LaunchSmokeAllEntries.test.mjs`, CLI parsing defaults to all entry types when no explicit filter is passed:
13+
14+
```js
15+
includeGames: anyExplicitFilter ? includeGames : true,
16+
includeSamples: anyExplicitFilter ? includeSamples : true,
17+
includeTools: anyExplicitFilter ? includeTools : true,
18+
```
19+
20+
So a command that does not pass `--games` runs games + samples + tools.
21+
22+
## Required Fix
23+
24+
### 1. Add a dedicated games-only command/script
25+
Add or normalize a command that runs:
26+
27+
```text
28+
tests/runtime/LaunchSmokeAllEntries.test.mjs --games
29+
```
30+
31+
Preferred npm script name:
32+
33+
```json
34+
"test:launch-smoke:games": "node tests/runtime/LaunchSmokeAllEntries.test.mjs --games"
35+
```
36+
37+
If existing wrapper scripts are used, wire that script to them.
38+
39+
### 2. Do NOT change all-entry behavior unless already intended
40+
Keep existing all-entry smoke behavior available for full coverage.
41+
42+
### 3. Ensure no duplicate game execution
43+
Audit for wrappers that call both:
44+
- all-entry smoke
45+
- games-only smoke
46+
47+
The games-only script must invoke the runner only once.
48+
49+
### 4. Add report
50+
Create:
51+
52+
```text
53+
docs/dev/reports/level_9_9_launch_smoke_games_only_fast_path_report.md
54+
```
55+
56+
Report:
57+
- package script added/updated
58+
- exact command to run
59+
- entry counts discovered
60+
- confirmation samples/tools are excluded
61+
- confirmation games are not duplicated
62+
63+
## Acceptance
64+
- `npm run test:launch-smoke:games` exists or equivalent documented command exists.
65+
- The command passes `--games`.
66+
- Games-only run does not include samples.
67+
- Games-only run does not include tools.
68+
- Games-only run does not execute games twice.
69+
- Existing full launch smoke still exists.
70+
- No start_of_day changes.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# PLAN_PR_LEVEL_9_9_LAUNCH_SMOKE_GAMES_ONLY_FAST_PATH
2+
3+
## Purpose
4+
Fix the browser launch smoke workflow so a requested games-only test runs games only, once.
5+
6+
## Finding
7+
The runner file is:
8+
9+
`tests/runtime/LaunchSmokeAllEntries.test.mjs`
10+
11+
Its default CLI behavior currently includes:
12+
- games
13+
- samples
14+
- tools
15+
16+
Unless explicit filters are provided.
17+
18+
This explains the long run when the desired test was games only.
19+
20+
## Scope
21+
- Add/normalize a games-only fast path.
22+
- Ensure games-only does not run samples/tools.
23+
- Ensure games are not run twice.
24+
- Add report and expected delta output.
25+
- No start_of_day changes.
26+
27+
## Non-Goals
28+
- No broad test framework rewrite.
29+
- No sample smoke changes.
30+
- No game runtime changes.

0 commit comments

Comments
 (0)