Summary
Live-coverage eviction (#160) drops fine (and near-fine overview) tiles farthest from
the viewport to bound memory, persisting them to disk first. But there is no
view-change → disk-reload hook: when the operator later pans/zooms back into an
evicted area within the same session, the fine tile is not re-loaded from its
<cache_dir>/… GeoTIFF — the coarse overview covers it until the layer is re-enabled
or the boat re-sends a newer version.
Proposed
On a view change (or lazily in items()/paint() for the visible extent), re-load
evicted-but-on-disk tiles whose index is now near the viewport, subject to the same
evictIfOverBudget() budget. The disk cache already holds them (persist-then-drop,
ADR-0006/0010); this just adds the read-back path the eviction design deferred.
Part of #160 (deferred follow-up recorded in ADR-0010 D2 / Consequences). Part of #154.
Authored-By: Claude Code Agent
Model: Claude Opus 4.8 (1M context)
Summary
Live-coverage eviction (#160) drops fine (and near-fine overview) tiles farthest from
the viewport to bound memory, persisting them to disk first. But there is no
view-change → disk-reload hook: when the operator later pans/zooms back into an
evicted area within the same session, the fine tile is not re-loaded from its
<cache_dir>/…GeoTIFF — the coarse overview covers it until the layer is re-enabledor the boat re-sends a newer version.
Proposed
On a view change (or lazily in
items()/paint()for the visible extent), re-loadevicted-but-on-disk tiles whose index is now near the viewport, subject to the same
evictIfOverBudget()budget. The disk cache already holds them (persist-then-drop,ADR-0006/0010); this just adds the read-back path the eviction design deferred.
Part of #160 (deferred follow-up recorded in ADR-0010 D2 / Consequences). Part of #154.
Authored-By:
Claude Code AgentModel:
Claude Opus 4.8 (1M context)