Some checks failed
CI / Windows build (push) Has been cancelled
PageStackMetrics + PageWindow: the pure geometry that decides which pages are mounted for a scroll position (windowed lazy hosting → 60fps on a 300-page doc, R1). Pages stack vertically with cumulative tops (O(log n) binary-search visibleRange); a viewport [scroll, scroll+extent) grown by cacheExtent on each side selects the inclusive intersecting page band, half-open at page boundaries, clamped to valid indices, empty for empty/over-scrolled-past documents, and gap-aware (a scroll resting inside an inter-page gap shows no page). Widget-free + pdfrx-free by design: the page-mounting widget and zoom-settle DPI refresh are device-gated; only the windowing math is automatable, and it is here with exhaustive unit coverage (boundaries, cache band, clamping, gaps, empty). flutter analyze lib/editor clean; 115/115 tests (+13). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>