The offload lookup rounds its starting limit down to the Mamba align
block size, but a sliding-window group with smaller blocks (e.g. a
DFlash drafter whose blocks are half a Mamba page) can end its hit
inside a Mamba page. The recurrent lookup then accepts the state
at the end of that page and the hit is served at the unaligned length,
so the restored state does not belong to the hit point. This happens
when the rightmost complete draft window ends half-way into a page, e.g.
after part of the draft blocks were evicted.
Round the limit down to the page grid after every group lookup. When a
sliding-window group's own hit is cut back this way, look the
sliding-window groups up again so the window ends at the new hit.
Tests: hybrid full attention + Mamba align + drafter sliding window with
random host-tier contents; every reported hit is page aligned and has
all full-attention blocks, the state at the hit and the whole draft
window. Two deterministic cases fail without the fix.
Signed-off-by: Leonccaa <166551845+Leonccaa@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>