fix(release): paint demo captions and touch rings on camera and verify the pixels #81

Closed
rockachopa wants to merge 0 commits from fix/demo-caption-pixels into main
pull from: fix/demo-caption-pixels
Member

Release-quality fix for tonight's demo gate (no product code change).

Defect found during visual QC of the 2026-10-19 build: the demo injected caption CSS with page.addStyleTag(). That writes into the current document only, and the recording reloads the page several times, so after the first reload every caption rendered as unstyled body text clipped at the bottom edge of the frame and every touch indicator was invisible — while the caption receipt still listed each string and release_delta_visible_on_camera passed. The photo-lifecycle captions (this release's new feature) were among the unreadable ones.

Fix

  • caption and touch nodes carry inline styles, which no reload can remove.
  • caption() now proves each caption painted: fixed position, z-index, top of viewport, fully inside the frame, on top at its own centre point, and the caption band's pixels changed. A caption that never reached the screen fails the recording instead of passing on a string.
  • the receipt records per-caption evidence and build_release.py requires every required caption plus the release delta to be pixel-verified.
  • the demo photo is now a legible synthetic test card (checkerboard + "SYNTHETIC DEMO PHOTO") instead of a 1x1 white pixel that rendered as an empty box.
  • release-demo tests assert the inline styling and the pixel gate.

Verified: 193/193 unit tests pass; a full standalone demo run produced 61/61 pixel-verified captions and the rig now fails closed when captions lose their styling (confirmed by reverting to the old injection in a probe).

Release-quality fix for tonight's demo gate (no product code change). **Defect found during visual QC of the 2026-10-19 build:** the demo injected caption CSS with `page.addStyleTag()`. That writes into the current document only, and the recording reloads the page several times, so after the first reload every caption rendered as unstyled body text clipped at the bottom edge of the frame and every touch indicator was invisible — while the caption receipt still listed each string and `release_delta_visible_on_camera` passed. The photo-lifecycle captions (this release's new feature) were among the unreadable ones. **Fix** - caption and touch nodes carry inline styles, which no reload can remove. - `caption()` now proves each caption painted: fixed position, z-index, top of viewport, fully inside the frame, on top at its own centre point, and the caption band's pixels changed. A caption that never reached the screen fails the recording instead of passing on a string. - the receipt records per-caption evidence and `build_release.py` requires every required caption plus the release delta to be pixel-verified. - the demo photo is now a legible synthetic test card (checkerboard + "SYNTHETIC DEMO PHOTO") instead of a 1x1 white pixel that rendered as an empty box. - release-demo tests assert the inline styling and the pixel gate. **Verified:** 193/193 unit tests pass; a full standalone demo run produced 61/61 pixel-verified captions and the rig now fails closed when captions lose their styling (confirmed by reverting to the old injection in a probe).
rockachopa added 3 commits 2026-10-19 12:35:21 +00:00
The demo injected its caption CSS with page.addStyleTag(), which writes into the current document
only. The first page.reload() in the recording stripped that stylesheet, so every later caption
rendered as unstyled body text clipped at the bottom of the frame and every touch indicator was
invisible, while the caption receipt still listed each string and the release gate accepted it.

- caption and touch nodes now carry inline styles, which no reload can remove
- caption() proves each caption is a fixed bar at the top of the viewport, on top of what is
  beneath it, fully inside the frame, and that the caption band pixels change; the recording fails
  rather than shipping a caption nobody can read
- the receipt records per-caption evidence and build_release.py requires every required caption,
  including the release delta, to be pixel-verified
- the demo photo is a legible synthetic test card instead of a 1x1 white pixel that rendered on
  camera as an empty box
- tests assert the inline styling and the pixel gate
chore: update tests/release-demo.test.js for the caption pixel gate
Quality gates / quality (pull_request) Successful in 3m14s
c2e9553be5
rockachopa closed this pull request 2026-10-19 12:35:42 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.