|
| 1 | +# BUILD_PR_LEVEL_10_21_VERIFY_CENTERED_CANVAS_BEZEL_AND_GAMEPLAY_BACKGROUND |
| 2 | + |
| 3 | +## Purpose |
| 4 | +Verify the completed Asteroids fullscreen bezel and gameplay-background work as an integrated runtime result. |
| 5 | + |
| 6 | +## Verification scope |
| 7 | + |
| 8 | +### A. Centered canvas behavior |
| 9 | +Verify: |
| 10 | +- canvas internal game resolution remains unchanged |
| 11 | +- canvas remains centered |
| 12 | +- no viewport-stretch behavior was introduced |
| 13 | +- fullscreen does not distort gameplay resolution |
| 14 | + |
| 15 | +### B. Bezel behavior |
| 16 | +Verify: |
| 17 | +- bezel asset path resolves correctly with no duplicated game path |
| 18 | +- bezel renders at the HTML layer |
| 19 | +- bezel appears only in fullscreen |
| 20 | +- bezel is visibly on screen |
| 21 | +- bezel-fit logic uses the established transparency-window rule |
| 22 | +- shared stretch override is honored |
| 23 | + |
| 24 | +### C. Bezel override file behavior |
| 25 | +Verify: |
| 26 | +- when bezel is present and |
| 27 | + `games/<game>/assets/images/bezel.stretch.override.json` |
| 28 | + is missing, |
| 29 | + it is auto-created during startup/init before gameplay |
| 30 | +- existing override file is not overwritten |
| 31 | + |
| 32 | +### D. Background behavior |
| 33 | +Verify: |
| 34 | +- `backgroundImage` is separate from `fullscreenBezel` |
| 35 | +- background renders only during gameplay |
| 36 | +- background renders after clear and before starfield/world content |
| 37 | +- background is visible and not hidden by later scene layers |
| 38 | +- non-gameplay states do not render background |
| 39 | + |
| 40 | +## Required validation evidence |
| 41 | +Codex should validate with focused checks and summarize exact results for: |
| 42 | +- startup/init |
| 43 | +- fullscreen entry |
| 44 | +- fullscreen exit |
| 45 | +- gameplay state |
| 46 | +- non-gameplay state |
| 47 | +- missing override file case |
| 48 | +- existing override file case |
| 49 | + |
| 50 | +## Packaging requirement |
| 51 | +Codex must package all changed files and validation outputs into: |
| 52 | +`<project folder>/tmp/BUILD_PR_LEVEL_10_21_VERIFY_CENTERED_CANVAS_BEZEL_AND_GAMEPLAY_BACKGROUND.zip` |
| 53 | + |
| 54 | +## Scope guard |
| 55 | +- Verification PR |
| 56 | +- small surgical fixes only if validation finds real defects |
| 57 | +- no unrelated repo changes |
| 58 | + |
| 59 | +## Validation Evidence (2026-04-14) |
| 60 | + |
| 61 | +### Files and checks |
| 62 | +- `node --check src/engine/runtime/fullscreenBezel.js` -> PASS |
| 63 | +- `node --check src/engine/runtime/backgroundImage.js` -> PASS |
| 64 | +- `node --check tests/core/BackgroundImageAndFullscreenBezel.test.mjs` -> PASS |
| 65 | +- `node --check games/Asteroids/game/AsteroidsGameScene.js` -> PASS |
| 66 | + |
| 67 | +### Focused runtime tests |
| 68 | +- `BackgroundImageAndFullscreenBezel` -> PASS |
| 69 | + - covers no duplicated bezel path |
| 70 | + - covers HTML-layer bezel attach/visibility and fullscreen gating |
| 71 | + - covers transparency-window fit rule |
| 72 | + - covers shared stretch override behavior |
| 73 | + - covers override auto-create when missing |
| 74 | + - covers non-overwrite behavior for existing override file |
| 75 | + - covers gameplay-only background gating and render order |
| 76 | +- `EngineFullscreen` -> PASS |
| 77 | +- `AsteroidsPresentation` -> PASS (run with repo alias hook used by `scripts/run-node-tests.mjs`) |
| 78 | +- `FullscreenBezelOverlay` -> PASS (run with repo alias hook used by `scripts/run-node-tests.mjs`) |
| 79 | + |
| 80 | +### Result |
| 81 | +- No real defects found in this verification slice. |
| 82 | +- No additional runtime code changes required for this PR. |
0 commit comments