The grey-strips/janky/skipping scroll family, fixed end to end and verified on
device (user: "scrolling feels good now"). The full record is
context/impl/impl-scroll-overscan-2026-08-02.md; the load-bearing pieces:
- libxul export jihad_offscreen_render_region (patch 0005): renders an absolute
document region straight into the shared buffer (not bounded by the widget
DrawTarget), alpha forced opaque. The daemon paints viewport + direction-biased
overscan (<=2048 rows, the SGX540 texture cap) with the REAL painted geometry
stamped in the header; the adapter needed no changes.
- Strips render doc-relative; the visible band overlays viewport-relative so
position:fixed/sticky/caret stay correct; the band rows are never rendered twice.
- Input drain maps the adapter's DOCUMENT coords to viewport coords once, for
click/mouse/contextmenu/touch; measured wrong on device (contextmenu at doc
y=1488 with scrollY=909). asyncCmdHitTest is now implemented (the adapter GATES
every long-press on that round-trip; as a stub it silently killed them all).
- msgScrolledTo echoes that merely confirm adapter scrolls are suppressed (the
adapter overwrites its own pan from them); content width is floored at the
window width so near-1 fit-zooms become exact identity blits; repaints are
coverage-aware with a pan-cadence bound for fixed content; the scroll-settle
gate is gone (inverted logic once geometry became honest).
- Round-trip tests: real 4x segment, tall banded page, scrolled-offset phase,
alpha gate (OVERSCAN + SCROLL-OVERSCAN PASS, Xvfb and no-X).
- EngineHost: the T-067 widget probe skips on the GTK build without a usable
display (its drag-service GetService segfaulted the no-X daemon).
- JihadBrowserServer also carries the (off-by-default) $JIHAD_INJECT self-drive
channel that made the autonomous device testing above possible.
Adversarially reviewed by Opus (replacing Codex per project direction): 16
findings, 3 blockers, all fixed pre-deploy and re-verified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TzkQtdXpngYfZ2yG1XDfkB