You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A named worktree read answers "none" for a lane whose log or register could not be read (from #289's review) #290
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.
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.
One more item for this issue, from #289's delta review r3 (its NIT-A). It is on main a42946e too.
lanes-index's lane_generation (lanes-index:1893) asks lanes-edit.sh lane-state <lane> about any lane whose rows would all leave the index.
That read works the lane's control root out again from its log, and throws away a git show that fails there. The answer is then exit 8, which reads as generation 0.
In sync, the lane is held, which fails closed, but with the wrong reason: "generation reads 0 and its rows were written at 1".
In reconcile, it says the generation "went back from 1 to 0", while the rows that the whole listing reports gone are still removed. That outcome is the right one.
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
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
Activity
brettheap commentedon Oct 21, 2026
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_rowsfinds each lane's control root from the listing's owndir.lane_trees_listandlane_state_readthen worked the root out again throughlane_control_root, with nodir. That read the lane's log once more, throughlane_payload_fieldandlane_log_events, and the published branch oflane_log_eventsthrows a failedgit showaway.$PROJECTS_ROOT/.lane-state. The lane read as one with no trees, with noPARTIAL, noUNREADand no warning, andlanes-index sync --source inventoryremoved 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'sdir. The--allread now reads each lane's log once, in the events. A failed read there is already reported and makes the readPARTIAL. The test istest_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
brettheap commentedon Oct 21, 2026
One more item for this issue, from #289's delta review r3 (its NIT-A). It is on main
a42946etoo.lanes-index'slane_generation(lanes-index:1893) askslanes-edit.sh lane-state <lane>about any lane whose rows would all leave the index.git showthat fails there. The answer is then exit 8, which reads as generation 0.sync, the lane is held, which fails closed, but with the wrong reason: "generation reads 0 and its rows were written at 1".reconcile, it says the generation "went back from 1 to 0", while the rows that the whole listing reports gone are still removed. That outcome is the right one.Lane: openRepoTools-4
brettheap commentedon Oct 21, 2026
CLAIMED — lane openRepoTools-4, session e545e636-93fd-4b80-81b1-48177346b887@Eagle, 2026-10-21T10:34:33Z, for #290
Logged in
lanes/log/openRepoTools-4.mdatc0b6277625b10ed9a720e097687c2525364e8494.The three reads (lane-collision-protocol Rule 1):
The guard for a lane with no published log asks with no control-root …
A named read whose lane's log tree cannot be listed is pinned as an U…
The lanes contract, both exit-code tables and the manual's list of re…
The comment over the inventory read's own two log-list reads no longe…
The hold lanes-index makes over lane-state's 10 gives lane-state's ow…
Add the test that lane-state finds a lane's snapshot by the whole dir…
lane-state hands the dir it read on quoted only where it holds a spac…
The lane-state dir test now pins a bare dir holding a TAB and a quote…
A lane's object log that is there and could not be read is never answ…
canon_lane reads the register first and refuses every name over one i…
Add the test that worktrees of a name no row answers prints one UNREA…
Merge pull request #7 from opensoft/fix/named-read-none-290
Merge pull request #10 from opensoft/fix/named-read-none-290
brettheap commentedon Nov 8, 2026
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.
577110e4on the code leg'smainat 13:49:52Z, on Brett Heap's typed word "yes, land T017 once code#3 is green" (13:16:08Z, lane openRepoTools-4's session).e527b5d4(the oldmain) and2c15aa66(the PR's head).aed18524on the spec leg'smainat 13:50:40Z.a833adb0and430ea207.git merge-tree's of the oldmainand the head: the PR's change, beside spec#6's three files, which the head predates.Lane: openRepoTools-4
brettheap commentedon Nov 8, 2026
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
Bump the code leg from 2a057a6 to e393958, which carries the openRepo…