Development record
The implement loop lists a checkout's runs oldest first by sorting their ids, but a run id is the second it was minted in plus four random digits, so two runs started within one second come back in random order. superseded() then reads a handed-back run as the newer of the pair, both count as in progress, and a bare record read or step refuses with '2 runs are in progress'. TestARecordReadWithNoRunNamedAddressesTheNewerRunOfAReadmittedIssue failed this way in CI on 2026-10-26 on a records-only pull request (#1136).
issueresolvedminoriss-2610261622501094
The implement loop lists a checkout's runs oldest first by sorting their ids, but a run id is the second it was minted in plus four random digits, so two runs started within one second come back in random order. superseded() then reads a handed-back run as the newer of the pair, both count as in progress, and a bare record read or step refuses with '2 runs are in progress'. TestARecordReadWithNoRunNamedAddressesTheNewerRunOfAReadmittedIssue failed this way in CI on 2026-10-26 on a records-only pull request (#1136).
Frontmatter
| id | iss-2610261622501094 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610261622501094-the-implement-loop-lists-a-checkout-s.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610261846399326TestARecordReadWithNoRunNamedAddressesTheNewerRunOfAReadmittedIssue (and its two siblings in drain_repace_test.go) fail about half the time: superseded() in drain_readmit.go treats a later entry of Runs as the newer run, and Runs is ordered by run id, but the readmittedRuns fixture opens both runs within one wall-clock second (its clock advances o.Now by minutes, which the run id does not read), so the two ids share their timestamp and order by the random suffix. CI failed PR 1137 on it on 2026-10-26 with run-2610261539014434 (newer) sorting before run-2610261539014869 (handed back): '2 runs are in progress'. In production two runs of one issue in one second are rare, so the defect is the ordering assumption more than the fixture.