- The render walk and screenshots now await document.fonts.ready plus a
bounded state-based poll until every declared face is terminal
(loaded/error); pending families surface as a font_wait_warning event
instead of skewing text metrics with fallback-font boxes
- position:sticky full-width wrappers share the static/relative
fluid-fill branch (a sticky box fills its containing block like any
in-flow box) instead of freezing at canonical px; fixed-width sticky
rails still freeze
447 tests pass (12 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- serveStatic answers single-range requests with proper 206/Content-Range
(416 for unsatisfiable), so Chromium streams large media in bounded
chunks instead of holding one throttled progressive request open past
the navigation budget
- goto policy: waitUntil "load" + up to 10s of sustained-quiet polling
replaces the hard networkidle timeout - long autoplaying media can no
longer make validation unreachable (applied to renderApp, probe widths,
and the interaction gate)
- validateRun catches render crashes and records them as runtime errors,
so a failed render writes a report with a failed gate 0 instead of
crashing reportless
292 tests pass (14 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>