Repository navigation
lane-handoff says a paired tree that only a broken inventory record names is in no inventory, and explains a set-lane-tree refusal of exit 1 as its own fence of exit 7 #273
Copy link
Copy link
Open
Milestone
Description
Found by lane openRepoTools-3's independent review of #255's fix (finding 3, and NIT 8), and confirmed by its re-check of the fix's fold-in round. The fix is now PR #271, open when this was drafted (its head is a16e534; the review read 523b381). The review's short form is on #255, comment 6272494888, and the re-check's is on #271, comment 6277159862. Both are wording: lane-handoff tells the next session something false about a record it could not read.
What happens
- The top block contradicts itself for a paired tree that only a broken record names (finding 3).
- The
NOT POLLEDline names the record that could not be read, with the path it keeps:<id> (schema <malformed>, path <tree>). The same tree is also printed as aPAIRED ROOT, not this lane'stree, and thePAIRED ROOT at …block says "None is in this lane's inventory … NEVER relaunch a writer into one of them". - A record in this lane's inventory most likely means the tree is this lane's, so the second statement is false.
- Weight: both lines err toward not relaunching, so nothing is lost. The lane stays SWAPPING, and the sweep (and so
lane-end) refuses on a record that is not schema 1. - The re-check, on
00d52ae+a16e534, saw a truncated, a misfiled and an unreadable record each named in the NOT POLLED note, with the lane SWAPPING, the tree not polled and the record byte-identical.
- The
- The note for a refused inventory write explains every refusal as the handoff's own fence (NIT 8).
- The case: on main + Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252 + The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255, an own-root tree with a malformed record.
set-lane-treerefuses with exit 1, under Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252's rule, and says "its sidecar … is not a record this helper can read" (lanes-edit.sh:18313at00d52ae).lane-handoffdrops that message and prints "the helper refused it, and a refusal of 7 there is this handoff's own fence: the lane's generation or operation moved while this poll was being taken, so a superseded reading was not filed over the current one." - The refusal was exit 1, not 7, so the fence's explanation points at the wrong cause.
- Weight: it fails safe. The record stays byte-identical, the lane stays SWAPPING, and the NOT POLLED note names the record. Only the message is wrong.
- What was measured, and on what: the first review measured it with the real
lanes-edit.shon Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252's earlier head,3ffefce(its probereal-own-root-truncated). Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252 has since landed as00d52ae, and lane 3's re-check of The handoff names every inventory record that is not a whole schema-1 one, and a leg directory this account cannot search, or a dependency nested in one, is unreadable and never absent (fixes #255) #271 confirmed it on main00d52ae+a16e534, with the same probe on the real tools. - The review marked it "NIT, not from The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255", and the re-check calls it "old code": the message is not touched by The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255's diff (
5dd0df0to523b381).
- The case: on main + Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252 + The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255, an own-root tree with a malformed record.
Where
- Finding 3:
lane-handoff:2378-2380(thePAIRED ROOT, not this lane'slines, which say "neither lane … inventory nor its writers file names it") and:2523(thePAIRED ROOT at …block), at523b381. Ata16e534they are at:2442-2444and:2587. The rows come frompi_bad(:2238-2241at523b381,:2302-2305ata16e534). - NIT 8:
lane-handoff:2059at523b381(:2123ata16e534, and on main00d52ae). It is the note in the|| {arm of theset-lane-treecall (:2049-2060at523b381), so it is printed for any refusal, and the helper's own message goes to/dev/null. The refusal it hides is inlanes-edit.sh:18313at00d52ae.
How it was found
- Lane 3's independent review of The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255's fix. Finding 3 is a SHOULD (follow-up); NIT 8 is the review's NIT 8, "not from The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255". The review's ruling on the writer's doubt "the two lines that read against each other" is SHOULD (finding 3): "Both lines are cautious and nothing is lost, but the text is false."
- NIT 8 was measured: the review's probe
real-own-root-truncatedran the reallanes-edit.shand the reallane-handoffon a truncated record under the lane's own root, and the handoff printed the note above while the lane stayed SWAPPING. The re-check ran it again on00d52ae+a16e534: "NIT 8 is confirmed on00d52ae, and it is old code" (The handoff names every inventory record that is not a whole schema-1 one, and a leg directory this account cannot search, or a dependency nested in one, is unreadable and never absent (fixes #255) #271, comment 6277159862). - On The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255 (comment 6272494888) lane 3 put finding 3 to Brett Heap as a v1.2.0 proposal, and NIT 8 to lane openRepoTools-4 as a v1.2.0 wording item. The re-check lists NIT 8 among the NITs "all going to v1.2.0".
The fix the review proposed
- Finding 3: take the
pi_badrows' paths out of thePAIRED ROOTblock, and print them as "named only by a record this handoff could not read: read it by hand". - NIT 8: keep the exit code, give the fence wording only for exit 7, and otherwise quote the helper's first error line (the re-check's fix). That means the call stops sending the helper's stderr to
/dev/null. Lane 3's proposal on The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255 was the wording, unless Lifecycle reads that failed are no longer answers, set-lane-tree's fence closes with its operation, and a lane sidecar is valid only when whole #252 means to refuse with 7 there; the re-check found it refuses with 1.
Why it is not in v1.1.0
- The review's verdict on The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255 is LAND, with nothing that has to change before it lands. Both are wording, and nothing is lost by either: both lines err toward not relaunching, and the record and the lane's SWAPPING state are unchanged. Changing the text is a behaviour change after that review.
- NIT 8 is old code, not from The handoff's tree inventory names a record it could not read whatever its schema, and a leg directory it cannot search is never read as absent (#246 follow-up, before the cutover) #255's diff. The re-check's verdict on The handoff names every inventory record that is not a whole schema-1 one, and a leg directory this account cannot search, or a dependency nested in one, is unreadable and never absent (fixes #255) #271 is LAND, with no MUST and no SHOULD, and it leaves NIT 8 for v1.2.0.
Filed in milestone v1.2.0 on Brett Heap's word (2026-10-19T18:3xZ, "yes, file the v1.2.0 issues"). It is unclaimed.
Lane: openRepoTools-3
🤖 Generated with Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity