|
| 1 | +# Space Invaders Manifest Collision Contract Report |
| 2 | + |
| 3 | +## Summary |
| 4 | +- Cleaned `games/SpaceInvaders/game.manifest.json` so Space Invaders no longer declares `tools.object-vector-studio-v2`. |
| 5 | +- Added root `screen.width` and `screen.height` to Space Invaders, Space Duel, and Vector Arcade Sample. Space Duel and Vector Arcade Sample still expose object-vector geometry and now satisfy the Collision Inspector screen contract. |
| 6 | +- Migrated Space Invaders audio asset records into `tools.asset-manager-v2.assets` before deleting the obsolete asset catalog. |
| 7 | +- Deleted the duplicated Space Invaders palette/catalog files: |
| 8 | + - `games/SpaceInvaders/assets/palettes/space-invaders-classic.palette.json` |
| 9 | + - `games/SpaceInvaders/assets/workspace.asset-catalog.json` |
| 10 | +- Updated Space Invaders audio asset IDs and metadata so runtime audio still resolves through manifest-owned Asset Manager V2 data. |
| 11 | +- Updated Workspace Manager V2 coverage so Space Invaders keeps Object Vector Studio V2 and Collision Inspector V2 disabled, while Space Duel remains enabled from real object-vector geometry. |
| 12 | + |
| 13 | +## Collision Contract |
| 14 | +- Space Invaders has `screen: { width: 960, height: 720 }`, but no object-vector payload. Object Vector Studio V2 and Collision Inspector V2 remain disabled for Space Invaders because no valid object-vector geometry exists. |
| 15 | +- Space Duel has 6 object-vector objects and now has `screen: { width: 960, height: 720 }`. |
| 16 | +- Vector Arcade Sample has 5 object-vector objects and now has `screen: { width: 960, height: 720 }`. |
| 17 | +- Asteroids already had valid root screen dimensions and object-vector geometry. |
| 18 | +- No hidden fallback/default object geometry was added. |
| 19 | + |
| 20 | +## SpaceInvadersSpriteData.js Review |
| 21 | +`games/SpaceInvaders/game/SpaceInvadersSpriteData.js` remains runtime sprite constants in this PR. It is actively consumed by `SpaceInvadersScene.js` and `SpaceInvadersWorld.js` for bitmap sprite frames and shield overlay data, not object-vector collision geometry. |
| 22 | + |
| 23 | +Recommended future path: make it first-class Sprite Data Tool or Sprite Editor input, then reference the exported sprite data through Asset Manager V2/manifest-owned data assets. It should not be converted into Object Vector Studio V2 data unless a future PR explicitly creates real vector geometry for authoring or collision. |
| 24 | + |
| 25 | +## Validation |
| 26 | +- `node --check games/SpaceInvaders/game/SpaceInvadersAudio.js`: passed. |
| 27 | +- `node --check tests/playwright/tools/WorkspaceManagerV2.spec.mjs`: passed. |
| 28 | +- `node scripts/validate-json-contracts.mjs`: game manifest schema validation passed with `total=12 invalid=0`. The script also reports pre-existing tool/sample JSON invalid counts outside this PR scope. |
| 29 | +- Affected manifest cleanup check: passed. |
| 30 | +- Active reference check for removed Space Invaders palette/catalog paths: no matches. |
| 31 | +- Workspace Manager V2 service validation for Space Invaders game manifest and generated toolState context: passed. |
| 32 | +- Focused Playwright coverage for object-vector/collision enablement: `1 passed`. |
| 33 | +- `npm run test:workspace-v2`: `72 passed`. |
| 34 | +- `git diff --check`: passed. |
| 35 | + |
| 36 | +Full samples smoke test was not run, per request. |
0 commit comments