Skip to content

A table-scope widening resumes floor-only and skips the new table's entries below the floor #1212

Open

Description

@kriszyp

Problem

A level-2 route resumes floor-only (cursorBelowFloor(closedFloor)) whenever its own [seq, P] row is checkpoint-grade. Checkpoint-grade is decided from the row's coverage qualifiers, not from the table scope of the scan that produced the floor. When a table that was outside the subscription becomes part of it (its replicate flag turns on, or the request's table list widens) and the route-coverage signal (exclusionOrigins) does not change, the next request starts below the stored floor F. That table's entries in [certifiedFrom, F) are never requested. The row keeps its older, lower certifiedFrom (lowest wins), so admission and the relay gate treat the prefix as complete.

Silent: nothing logs, and the route stays checkpoint-grade.

Possible direction

Treat a table-scope change on the route the way a coverage widening is treated: mark the route's origins partialHistory and request a full copy before floor-only resume and certification apply again. Alternatively, record the table scope with the floor and compare it at request build.

Raised by the cross-model review on harper-pro#1092 and deferred there: #1092's floor-only resume makes the gap reachable, but the widening detection it relies on predates that PR's fixes.

Review-Deferral: 22d817d3dcb3

Review-Deferral: 0a854d7e5d7a3fb6 severity=minor category=data-integrity

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    P2

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions