|
| 1 | +# BUILD_PR_LEVEL_10_26_LEVEL_10_CLOSEOUT_SAMPLE_TOOL_NORMALIZATION_AND_SHARED_STRATEGY |
| 2 | + |
| 3 | +## Purpose |
| 4 | +Close Level 10 in one combined PR by bundling the remaining open work into a single final handoff. |
| 5 | + |
| 6 | +## Why this is combined |
| 7 | +The goal is to finish Level 10 with fewer PRs, not more. |
| 8 | +This PR combines: |
| 9 | +1. Level 10 closeout and handoff |
| 10 | +2. sample asset ownership normalization |
| 11 | +3. tool demo asset ownership normalization |
| 12 | +4. final shared-asset strategy decision and enforcement |
| 13 | +5. final status-only roadmap update after validation |
| 14 | + |
| 15 | +## Targeted roadmap closure for section 10 |
| 16 | +This PR is intended to close the remaining open items under: |
| 17 | + |
| 18 | +## 10. Assets & Data Policy |
| 19 | +- [.] shared asset policy defined at planning level |
| 20 | +- [.] game asset ownership normalized |
| 21 | +- [ ] sample asset ownership normalized |
| 22 | +- [ ] tool demo asset ownership normalized |
| 23 | +- [ ] promotion criteria for shared assets enforced |
| 24 | +- [ ] asset duplication reduced |
| 25 | +- [ ] top-level shared asset strategy finalized if needed |
| 26 | + |
| 27 | +## Scope |
| 28 | + |
| 29 | +### A. Level 10 closeout and handoff |
| 30 | +Confirm the Level 10 lane is complete and stable across: |
| 31 | +- Asteroids |
| 32 | +- `games/_template` |
| 33 | +- samples |
| 34 | +- tool demos |
| 35 | + |
| 36 | +Closeout must summarize: |
| 37 | +- conventions adopted |
| 38 | +- validations run |
| 39 | +- defects fixed |
| 40 | +- remaining risk, if any |
| 41 | + |
| 42 | +### B. Sample asset ownership normalization |
| 43 | +Normalize sample asset ownership to the same policy used by games: |
| 44 | +- assets should live with the owning sample unless explicitly promoted |
| 45 | +- remove ambiguous ownership |
| 46 | +- reduce duplicated sample asset patterns where appropriate |
| 47 | +- align sample conventions with game/template conventions where it makes sense |
| 48 | +- do not perform broad destructive moves; keep changes surgical |
| 49 | + |
| 50 | +### C. Tool demo asset ownership normalization |
| 51 | +Normalize tool demo assets using the same ownership rules: |
| 52 | +- demo assets stay with the tool/demo unless explicitly promoted |
| 53 | +- remove ambiguous shared/demo ownership |
| 54 | +- reduce duplication where appropriate |
| 55 | +- keep active tools under `tools/` |
| 56 | +- preserve repo conventions already established |
| 57 | + |
| 58 | +### D. Promotion criteria for shared assets |
| 59 | +Finalize and enforce the rule for when an asset may become shared. |
| 60 | + |
| 61 | +Required outcome: |
| 62 | +- explicit promotion criteria documented |
| 63 | +- promotion is intentional, not accidental |
| 64 | +- no silent sharing by convenience |
| 65 | +- ownership must be clear |
| 66 | + |
| 67 | +### E. Top-level shared asset strategy finalization |
| 68 | +Make the final Level 10 decision on the top-level shared asset strategy. |
| 69 | + |
| 70 | +Required outcome: |
| 71 | +- explicitly decide whether a top-level shared asset strategy is needed |
| 72 | +- if yes, define the boundary and promotion rule |
| 73 | +- if no, explicitly state local ownership first and promotion-by-rule only |
| 74 | +- document the decision clearly enough to support status closure |
| 75 | + |
| 76 | +### F. Asset duplication reduction |
| 77 | +Use this PR to close the remaining duplication question in a controlled way: |
| 78 | +- remove or reduce duplication where it is clearly unnecessary |
| 79 | +- do not create risky wide-scope churn |
| 80 | +- prefer policy enforcement plus surgical fixes over mass movement |
| 81 | + |
| 82 | +### G. Roadmap rule |
| 83 | +After validation: |
| 84 | +- restore the correct full `MASTER_ROADMAP_HIGH_LEVEL.md` if needed |
| 85 | +- update roadmap status markers only |
| 86 | +- no other roadmap text changes |
| 87 | + |
| 88 | +## Expected Level 10 completion result |
| 89 | +This PR should allow section 10 to move to done, provided validation supports it. |
| 90 | + |
| 91 | +## Validation requirements |
| 92 | +Codex must validate and summarize: |
| 93 | +- Asteroids remains correct |
| 94 | +- `_template` remains the convention source for new games |
| 95 | +- at least one sample is normalized/validated |
| 96 | +- at least one tool demo path is normalized/validated |
| 97 | +- shared promotion criteria are documented and enforced |
| 98 | +- duplication reductions are real and safe |
| 99 | +- roadmap updates are status-only |
| 100 | + |
| 101 | +## Packaging requirement |
| 102 | +Codex must package all changed files into: |
| 103 | +`<project folder>/tmp/BUILD_PR_LEVEL_10_26_LEVEL_10_CLOSEOUT_SAMPLE_TOOL_NORMALIZATION_AND_SHARED_STRATEGY.zip` |
| 104 | + |
| 105 | +## Scope guard |
| 106 | +- combine only what is needed to finish Level 10 |
| 107 | +- no unrelated repo changes |
| 108 | +- prefer the smallest valid set of edits that closes the lane cleanly |
| 109 | + |
| 110 | +## Implementation Delta |
| 111 | +- Added final local-first strategy + promotion-by-rule specification: |
| 112 | + - `docs/specs/asset_ownership_strategy.md` |
| 113 | + - `docs/specs/shared_asset_promotion_registry.json` (explicit registry, currently empty) |
| 114 | +- Added focused enforcement validator: |
| 115 | + - `scripts/validate-asset-ownership-strategy.mjs` |
| 116 | + - `tests/tools/AssetOwnershipStrategyCloseout.test.mjs` |
| 117 | + - wired into `tests/run-tests.mjs` |
| 118 | +- Normalized sample ownership path (`samples/phase-15/1505`): |
| 119 | + - updated `AssetBrowserScene.js` asset entries to explicit sample-local ownership paths |
| 120 | + - added owned sample assets: |
| 121 | + - `samples/phase-15/1505/assets/images/hero.png` |
| 122 | + - `samples/phase-15/1505/assets/audio/menu.mp3` |
| 123 | +- Normalized tool demo ownership path (`tools/shared/samples/project-asset-registry-demo`): |
| 124 | + - moved demo authored files under local demo `assets/` tree |
| 125 | + - updated project/demo references to explicit tool-demo-local ownership paths |
| 126 | + - added owned demo assets: |
| 127 | + - `tools/shared/samples/project-asset-registry-demo/assets/images/clouds-layer.svg` |
| 128 | + - `tools/shared/samples/project-asset-registry-demo/assets/tiles/overworld-main.png` |
| 129 | +- Reduced unnecessary duplication in touched scope: |
| 130 | + - `parallaxSources[].path` now points to local parallax source JSON instead of duplicating the image file path |
| 131 | + - removed ambiguous root-level placement for demo authored asset JSON files |
| 132 | + |
| 133 | +## Level 10 Validation Coverage |
| 134 | +- Games: |
| 135 | + - Asteroids manifest ownership validated (`games/Asteroids/assets/tools.manifest.json`) |
| 136 | + - `_template` manifest ownership validated (`games/_template/assets/tools.manifest.json`) |
| 137 | +- Sample: |
| 138 | + - `samples/phase-15/1505` validated for local ownership pathing and existence |
| 139 | +- Tool demo: |
| 140 | + - `tools/shared/samples/project-asset-registry-demo/project.assets.json` validated for local ownership, existence, and dedupe guard |
| 141 | +- Shared runtime regressions (from prior Level 10 lane): |
| 142 | + - Asteroids bezel/background behavior still validated |
| 143 | + - `_template` contract checks still validated |
| 144 | + - additional sample regression (`SpaceInvaders`) still validated |
| 145 | + |
| 146 | +## Roadmap Handling |
| 147 | +- Full roadmap version check: already full version (`639` lines), so no restore action was required. |
| 148 | +- Updated status markers only for section-10 items in `docs/dev/roadmaps/MASTER_ROADMAP_HIGH_LEVEL.md`. |
| 149 | +- No roadmap prose rewrites were performed. |
| 150 | + |
| 151 | +## Final Section-10 Status |
| 152 | +- Section-10 items are now marked complete based on validator-backed evidence. |
| 153 | +- Remaining open section-10 items after this PR: none. |
| 154 | + |
| 155 | +## Validation Evidence (2026-04-14) |
| 156 | +- `node --check scripts/validate-asset-ownership-strategy.mjs` PASS |
| 157 | +- `node --check tests/tools/AssetOwnershipStrategyCloseout.test.mjs` PASS |
| 158 | +- `node --check samples/phase-15/1505/AssetBrowserScene.js` PASS |
| 159 | +- `node --check tests/run-tests.mjs` PASS |
| 160 | +- `node --check tools/shared/projectAssetRegistry.js` PASS |
| 161 | +- `validateAssetOwnershipStrategy` focused run PASS |
| 162 | +- `AssetOwnershipStrategyCloseout` test PASS |
| 163 | +- `BackgroundImageAndFullscreenBezel` focused run PASS |
| 164 | +- `AsteroidsPresentation` focused run PASS |
| 165 | +- `SpaceInvadersScene` focused run PASS |
| 166 | +- `GamesTemplateContractEnforcement` focused run PASS |
0 commit comments