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 suite case compares two lanes reads byte for byte, and one of the twelve fields is an AGE in minutes — it fails whenever the run is slow enough to cross one #75
tests/test_lane_helpers.sh compares a one-lane read against the estate listing for the same row, byte for byte:
run "$E" lanes --lane repoA11-1
ONE_ROW="$out"
run "$E" lanes --all
ALL_ROW="$(printf '%s\n'"$out"| awk -F'\t''$1 == "repoA11-1" { print; exit }')"
is "one lane read alone is the same row the estate listing gives it""$ONE_ROW""$ALL_ROW"
Those are TWO reads, and one of the twelve fields is an AGE in whole minutes. On a loaded workstation the second read lands in the next minute and the case fails on a column that is doing exactly what it should:
FAIL one lane read alone is the same row the estate listing gives it
expected [repoA11-1 PAUSED Eagle team-05a a11sess:0 @71 … none open 64h 49m lane repoA11-1 opensoft/repoA11 0]
got [repoA11-1 PAUSED Eagle team-05a a11sess:0 @71 … none open 64h 48m lane repoA11-1 opensoft/repoA11 0]
Measured 2026-09-15T03:1xZ on Eagle, in a tests/run.sh run that took 35:29 — several lanes were building in sibling worktrees of one checkout. The same case has passed in every faster run of the same tree (a dozen of them that evening at 15–20 minutes), which is what a clock race looks like.
The assertion is worth keeping — one parser over one grammar is what it holds — so the fix is to compare the row WITHOUT the field that is a function of the wall clock. Either:
drop the AGE column from both sides before comparing (cut -f1-8,10-12, naming the column in the case's own words so the exclusion is visible), or
pin the clock for the two reads the way other cases in this file pin stamps, if the helper can be told what "now" is.
The first is a two-line change and keeps every other field byte-exact, including the two this case was written for.
Found by the lane running #45, whose tests/run.sh run on the merged tree hit it; nothing in that branch touches this read.
CLAIMED — lane openRepoTools-3, session 4135b2c9-34a6-47e3-a156-5adebb632fae@Eagle, 2026-09-15T03:17:32Z, for #75
Logged in lanes/log/openRepoTools-3.md at ed003e4696f3ce74d6bf1e74b2224dabbc99afdc.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoTools#75:
none
2. `gh pr list --repo opensoft/openRepoTools --state all --search "#75"`, kept where the row or its body names `#75`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `75` as a whole token:
none
RELEASED — lane openRepoTools-3, session 83619980-06bb-4469-ae73-2a8c5e61981a@Eagle, 2026-10-13T18:23:56Z, for #75 — Brett Heap 2026-10-11 gave #28-#89 to lane openRepoTools-5 (its RULED line of 16:19:19Z); lane 3 holds no live work on this number
CLAIMED — lane openRepoTools-5, session 0d83dca2-c18c-4bb0-99ce-896e6cafea02@Eagle, 2026-10-13T18:25:14Z, for #75
Logged in lanes/log/openRepoTools-5.md at 7c2fc1b4331c1b8857dd2f70653c6d8981cfbb75.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoTools#75:
6:CLAIMED — lane openRepoTools-3, session 4135b2c9-34a6-47e3-a156-5adebb632fae@Eagle, 2026-09-15T03:17:32Z, for opensoft/openRepoTools#75
13:1. existing `CLAIMED —` comments on opensoft/openRepoTools#75:
26:RELEASED — lane openRepoTools-3, session 83619980-06bb-4469-ae73-2a8c5e61981a@Eagle, 2026-10-13T18:23:56Z, for opensoft/openRepoTools#75 — Brett Heap 2026-10-11 gave #28-#89 to lane openRepoTools-5 (its RULED line of 16:19:19Z); lane 3 holds no live work on this number
2. `gh pr list --repo opensoft/openRepoTools --state all --search "#75"`, kept where the row or its body names `#75`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoTools` branches naming `75` as a whole token:
none
Lane openRepoTools-5: closing #75 as fixed, checked at main f87fd5a. Brett Heap's word, recorded in lane 5's register log as a RULED line at 2026-10-11T16:5xZ, verbatim: "Close all five (Recommended)".
Fixed by 69bf48d, "avoid clock rollover in lane row comparison" (#133, merged 2026-09-23). tests/test_lane_helpers.sh:5037-5039 now compares the one-lane read and the estate listing through stable_lane_row, which masks column 9 (the AGE), so a minute ticking between the two reads no longer fails the case. That is the first of the two fixes this issue offers (drop the AGE column from both sides, named in the case's own words). #71 is the same case and closes with it.
Activity
brettheap commentedon Sep 15, 2026
CLAIMED — lane openRepoTools-3, session 4135b2c9-34a6-47e3-a156-5adebb632fae@Eagle, 2026-09-15T03:17:32Z, for #75
Logged in
lanes/log/openRepoTools-3.mdated003e4696f3ce74d6bf1e74b2224dabbc99afdc.The three reads (lane-collision-protocol Rule 1):
Merge origin/main (fcccbe0, #47 — Amendment 17's `lane-handoff`, the …
brettheap commentedon Oct 13, 2026
RELEASED — lane openRepoTools-3, session 83619980-06bb-4469-ae73-2a8c5e61981a@Eagle, 2026-10-13T18:23:56Z, for #75 — Brett Heap 2026-10-11 gave #28-#89 to lane openRepoTools-5 (its RULED line of 16:19:19Z); lane 3 holds no live work on this number
brettheap commentedon Oct 13, 2026
CLAIMED — lane openRepoTools-5, session 0d83dca2-c18c-4bb0-99ce-896e6cafea02@Eagle, 2026-10-13T18:25:14Z, for #75
Logged in
lanes/log/openRepoTools-5.mdat7c2fc1b4331c1b8857dd2f70653c6d8981cfbb75.The three reads (lane-collision-protocol Rule 1):
brettheap commentedon Oct 13, 2026
Lane openRepoTools-5: closing #75 as fixed, checked at main f87fd5a. Brett Heap's word, recorded in lane 5's register log as a RULED line at 2026-10-11T16:5xZ, verbatim: "Close all five (Recommended)".
Fixed by 69bf48d, "avoid clock rollover in lane row comparison" (#133, merged 2026-09-23).
tests/test_lane_helpers.sh:5037-5039now compares the one-lane read and the estate listing throughstable_lane_row, which masks column 9 (the AGE), so a minute ticking between the two reads no longer fails the case. That is the first of the two fixes this issue offers (drop the AGE column from both sides, named in the case's own words). #71 is the same case and closes with it.