Skip to content

Five readers of a lane's session ids still turn an unreadable register into "no ids", and two refusals name the wrong read #323

Open

Description

@brettheap

What happens

#67 (closed) gave the register's id read a checked form, session_ids_checked (lanes-edit.sh:5711), and #221 put claim --force's dead-lane check and duplicate-holder on it (:4506, :7538); #113 did lane_reconcile (:14311). Other readers still call session_ids_of_lane with its status thrown away, so a register that could not be read is an empty id set, which for them is an answer:

  • live_holder's default ids, lanes-edit.sh:4904: an empty set returns 8, "nothing recorded can be live".
  • idle_holders, :5070.
  • lane_forks, :7428-7429.
  • rename-lane's live gate, :15765-15766, whose comment says liveness "fails CLOSED here".
  • the live-holder subcommand, :16930-16931, which is the answer lane-start, lane-handoff and lane-end take.

#67 counted "roughly eight other places". The dormant-row check and the HOLDER line named by the #221 review were not re-checked at 33ce26d; find them by grep before starting.

Two refusals that are right but say the wrong thing:

  • The rescan hook's note (lanes-edit.sh:11523-11525) reads HOLDER_TERMINAL_UNKNOWN alone and blames the session records ("could not read whether a live session backs it up") when the register was the read that failed. HOLDER_REGISTER_UNREADABLE (set at :4509) is read only at :16565.
  • The claim --force message (:16566) and the duplicate-holder error (:7542-7543) name the published git show and the local cat together (origin/<branch>:<path>, or <file>), so "Fix the read" gives no lead.

No test asserts the rescan note's wording for the register case (tests/test_lane_helpers.sh:2215-2218 cover the log-unread note only), nor the local-copy-unreadable half, nor the cat path with nothing published.

Why it matters

The same fail-open class #67, #113 and the open #303, #310 and #315 already name, on one more read. #310 and #315 are about rows and #303 about logs, so none of them covers the ids.

Suggested fix

Give each of the five the checked read and, where it fails, the refusal in that caller's own words, as duplicate-holder does. Make session_ids_checked say which read failed (published or local). Reword the rescan note to follow HOLDER_REGISTER_UNREADABLE. Add the three cases above.

Found by: the independent review of #221 (lane 5, head fbd2bb1), items 1 to 4. Filed on Brett Heap's word of 2026-10-23T18:52:34Z, by multiple choice.

Lane: openRepoTools-5

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions