Skip to content

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

Closed

Description

@brettheap

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.

Activity

  1. brettheap commented on Sep 15, 2026

    @brettheap
    ContributorAuthor

    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
    
  2. added a commit that references this issue on Sep 15, 2026
  3. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    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

  4. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    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
    
  5. brettheap commented on Oct 13, 2026

    @brettheap
    ContributorAuthor

    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.

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

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions