Skip to content

A named worktree read answers "none" for a lane whose log or register could not be read (from #289's review) #290

Closed

Description

@brettheap

Found by the independent review of PR #289 (#173 item c1), as its SHOULD-3, together with four items #289's writer found and left alone. All of them already exist before #289, at main 21e0829; the line numbers below are at #289's head 03b6299. #289 makes the whole-listing read (worktrees --all, the one the inventory index syncs from) refuse a partial read with a PARTIAL line. The reads below are outside that.

A named read whose lane's log cannot be read answers "none" (review SHOULD-3)

  • lanes-edit.sh:7878 and the published branch of lane_log_events throw away a git show of the lane's log that failed. The lane's recorded dir is then lost, and its control root falls to rung 3.
  • Probe P4: with that read failing, lanes-edit.sh worktrees repoB-1 exits 8 with no warning, and lanes --worktrees repoB-1 says "no worktree is inventoried for lane repoB-1".
  • The index never makes a named read, so no indexed row is lost. A person who asks is still told something false.
  • Fix: where the log exists on origin and the show fails, print an UNREAD line for the lane rather than answering none.

Four more, from #289's writer

  1. Case mismatch. With the register unreadable, a named-lane read answers "no worktree is inventoried" when the name is given in a different case.
  2. Writer column. With the register unreadable, the source read can show a tree's writer as 0 instead of unknown. Since A lane listing that is not whole no longer removes indexed worktree rows: the inventory read says PARTIAL, lanes --worktrees prints it NOT WHOLE, and lanes-index writes nothing over it; an older helper's tree with no path stays a tree (#173 item c1, #252 delta review 2) #289 the index never stores that, because the sync refuses.
  3. Silent listing. The lanes listing itself, not --worktrees, says nothing when the object-log listing fails.
  4. No origin, one unreadable log file. With no origin, a single unreadable log file is not detected, as opposed to an unreadable log directory.

Lane: openRepoTools-4

Activity

  1. brettheap commented on Oct 21, 2026

    @brettheap
    ContributorAuthor

    A correction to this issue's SHOULD-3 note, from #289's fix round 2.

    The first section says: "The index never makes a named read, so no indexed row is lost." That was wrong. The inventory's own read, lanes-edit.sh worktrees --all, made the same second read of a lane's log:

    • worktree_rows finds each lane's control root from the listing's own dir.
    • For each lane with trees, lane_trees_list and lane_state_read then worked the root out again through lane_control_root, with no dir. That read the lane's log once more, through lane_payload_field and lane_log_events, and the published branch of lane_log_events throws a failed git show away.
    • A failure there sent the root to $PROJECTS_ROOT/.lane-state. The lane read as one with no trees, with no PARTIAL, no UNREAD and no warning, and lanes-index sync --source inventory removed its rows.

    The delta review r2 of #289 found this (its SHOULD-A, probe C1), and it is also present at 21e0829.

    #289's fix round 2 (f2723b1) hands both reads the listing's dir. The --all read now reads each lane's log once, in the events. A failed read there is already reported and makes the read PARTIAL. The test is test_a_lanes_log_that_fails_after_the_listing_removes_no_row.

    The rest of this issue stands. A named read (worktrees <lane>, lanes --worktrees <lane>) still answers "none" where its one read of the lane's log fails, and the four items from #289's writer are unchanged.

    Lane: openRepoTools-4

  2. brettheap commented on Oct 21, 2026

    @brettheap
    ContributorAuthor

    One more item for this issue, from #289's delta review r3 (its NIT-A). It is on main a42946e too.

    Lane: openRepoTools-4

  3. brettheap commented on Oct 21, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoTools-4, session e545e636-93fd-4b80-81b1-48177346b887@Eagle, 2026-10-21T10:34:33Z, for #290

    Logged in lanes/log/openRepoTools-4.md at c0b6277625b10ed9a720e097687c2525364e8494.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoTools#290:
       none
    2. `gh pr list --repo opensoft/openRepoTools --state all --search "#290"`, kept where the row or its body names `#290`:
    289	A lane listing that is not whole no longer removes indexed worktree rows: the inventory read says PARTIAL, lanes --worktrees prints it NOT WHOLE, and lanes-index writes nothing over it; an older helper's tree with no path stays a tree (#173 item c1, #252 delta review 2)	fix/lanes-index-partial-listing-173	OPEN
    3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `290` as a whole token:
       none
    
  4. added this to the v1.2.0 milestone on Oct 22, 2026
  5. modified the milestones: v1.2.0, v1.2.1 on Nov 8, 2026
  6. added 2 commits that reference this issue on Nov 8, 2026
  7. brettheap commented on Nov 8, 2026

    @brettheap
    ContributorAuthor

    Lane openRepoTools-4, 2026-11-08T13:52Z: closed by hand, as T017's C3 has it, now that both PRs of its pair have landed.

    Lane: openRepoTools-4

  8. brettheap commented on Nov 8, 2026

    @brettheap
    ContributorAuthor

    RELEASED — lane openRepoTools-4, session e545e636-93fd-4b80-81b1-48177346b887@Eagle, 2026-11-08T13:54:55Z, for #290 — landed in T017 on Brett's word: code#7 by merge commit 577110e4 and spec#10 by aed18524; the issue is closed by hand

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

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions