Repository navigation
lane-worktrees: follow-ups deferred from the Opus review of #174 (rows 4-12, 14) #183
Copy link
Copy link
Open
Description
Deferred under Brett Heap's close-out direction of 2026-10-06 from the Opus adversarial review of PR #174 (head 499d2ab). The three must-fix rows (trailer adoption, unmarked sandboxes, cross-estate claims) are fixed in #174 itself; these are not.
| # | class | file:line @499d2ab | scenario | one-line fix |
|---|---|---|---|---|
| 4 | data loss, niche | _loss_plan 2973 |
a commit named only by a per-worktree ref (refs/worktree/*, refs/bisect/*, refs/rewritten/*) is not in the loss plan: tree removed, ref gone, not on origin, not in a bundle |
add those refs to the worktree's candidates |
| 5 | data loss, niche | _wip_rescue 3319 |
a partially staged version (index differs from HEAD and the working file) is lost: the WIP snapshot overwrites it | also bundle write-tree of the real index when it differs from the snapshot |
| 6 | A11 partial | _deps_partial 2735 |
dependents outside the estate root are not searched; a --shared dependent outside the root is left with a broken alternates pointer after --include-foreign removal |
walk each registered lane's estate root and $HOME (bounded), or count any out-of-root dependent as a partial search |
| 7 | A1 sibling | Helper.call 455, fetch_register 587 |
an inherited LANES_NO_GIT=1 (or a LANES_REPO elsewhere) makes the helper read a register the sweep's fetch never moves, so a lane re-bound on another host reads as here and the tree is removed |
under --yes drop LANES_NO_GIT, LANES_REPO, LANES_DIR, LANES_FILE from the helper's environment, or refuse |
| 8 | A8 sibling | :3227, branch_items 4181 |
the remote branch is deleted while an OPEN PR uses it as its BASE (GitHub retargets only for a MERGED PR; the dependent is closed instead) | never delete a remote branch while any OPEN PR's baseRefName equals it |
| 9 | B6 partial | act 2875, _register_items |
B6 holds for trees only: scratch, branch, cache and sandbox items all act before any of their register lines is attempted | note each item as acted on; stop at the first NOT WRITTEN |
| 10 | :4394 |
pytest-of-$USER/* and run.sh roots have no minimum-age check although the docstring says they do |
apply sandbox_min_age_minutes to every kind |
|
| 11 | expiry_rows ~4516 |
*-ignored.tar.gz and scratch-*.tar.gz archives are only copies yet expire after 90 days; a bundle of untracked files never expires |
ledger rows for those tars, or document the asymmetry | |
| 12 | A7 residual | :2589 |
a remote branch with no PR and no Lane: trailer at its tip (a person's branch) still gets the lane's commits pushed onto it |
with no trailer and no PR, use a rescue branch |
| 14 | nits | register_text rewrites , inside the verbatim --word; any directory named venv is treated as a virtual env without checking for pyvenv.cfg |
Also from the merge preview: the gate's --include-scratch turns on the whole-estate walk, about 17 s per lane-end on Eagle (defer with #176).
Probe scripts: this lane's session scratchpad probes/probe174*.py (may not survive the session).
Lane: openRepoTools-3
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
brettheap commentedon Oct 6, 2026
Added from the re-verification of #174 at 4ea84c8 (R1, R2, R3 all PASS; verdict LAND): R3 still blocks in a SHARED checkout. With no trees of the lane's own, one FOREIGN worktree registered in the checkout (another lane's) and one pathless inventory record in the same estate, the sweep exits 2 (
refused lane …'s inventory record … (it names no path) could not be read, summary0 1 0 1), because the note path applies only whenself.treesis empty and FOREIGN trees fill it. That is openRepoTools' real layout (lanes 1 and 3 share the checkout); latent today because all 17 records under/workspace/projects/.lane-statecarry apath:line. Fix: decide note-versus-refusal on whether any tree is NOT plain FOREIGN (an inventory tree or an adoptable one), not on whether there are any trees at all.Lane: openRepoTools-3
brettheap commentedon Oct 7, 2026
Seen again at #175's head 49bfa40 through lane-end: a lane with nothing of its own gets rc 2 once another lane's tree is registered in the shared checkout and any pathless sidecar exists in the estate (rc 0 with the sidecar removed). Still latent on Eagle (every real record carries a path); the fix stays as described above. Lane: openRepoTools-3