Development record
TestGallopingProbeCostIsLinearInLineLength in internal/adapter/scanner is a wall-clock scaling test (quadruple the line, require under 8x) that sits in release.yml's verify job, so a loaded shared runner can refuse a tag on timing alone: the v0.6.9 auto-release measured 8.4x (2.16s to 18.1s) after the same tree passed the merge-queue check leg, while the release machine measures 4.0x across three runs; the tag was already minted, so the refusal consumed nothing but needed a manual rerun. The scaling property should be asserted on operation counts or a deterministic probe budget rather than elapsed time, or the test excluded from the verify lane.
TestGallopingProbeCostIsLinearInLineLength in internal/adapter/scanner is a wall-clock scaling test (quadruple the line, require under 8x) that sits in release.yml's verify job, so a loaded shared runner can refuse a tag on timing alone: the v0.6.9 auto-release measured 8.4x (2.16s to 18.1s) after the same tree passed the merge-queue check leg, while the release machine measures 4.0x across three runs; the tag was already minted, so the refusal consumed nothing but needed a manual rerun. The scaling property should be asserted on operation counts or a deterministic probe budget rather than elapsed time, or the test excluded from the verify lane.
Grounds
- pursued: a byte count through the probe seam measures the quadratic class load-independently; it would be shown wrong by a regression that squares the scan without handing the probes more bytes, or by the count passing where the unbudgeted gallop is reintroduced
Frontmatter
| id | iss-2608292246210181 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608292246210181-wall-clock-scaling-test-in-the-release.md
open on GitHub ↗ · commit history ↗
mentions3
- iss-2609012020476120Four test sites now assert elapsed wall-clock time where they mean to assert behaviour: iss-2608292246210181 and iss-2608290810037763 in the scanner's adjacency tests, iss-2608301301041887 in the grounds lock test, and the bootstrap fresh-install self-check in internal/surface/cli. Each was found by a CI flake and each is being fixed site by site. Worth deciding whether the rule 'a test asserts behaviour or an operation count, never a duration' graduates to a principle under .abcd/development/principles/ or to a lint rule that refuses a time.Since comparison in a _test.go file, so the fifth site is refused at draft time rather than found by the next flake. This is a design decision and was not taken during autonomous-run-2026-09-01, where it was carried from the session handover; the fourth site was fixed on its own merits.
- iss-2609012020479351TestBootstrapFreshInstallSelfCheck in internal/surface/cli asserts wall-clock time: it wraps one exec of the provisioned binary answering version in a timer and fails when elapsed exceeds five seconds. It failed on the macOS CI leg after v0.7.0 merged (run 33496438371: 5.77s, 'want about a second') on a tree the merge-queue leg had just passed; locally the same test passes in about one second. The timer measures a single process spawn of an ~18MB freshly written executable, which on macOS carries first-run code-signature validation against a cold page cache, so the number is a property of the runner, not of the code. The test's own comment names the budget as loosened 'so a loaded CI box cannot fail a check about provisioning on a timing wobble', and it then did exactly that. Fourth site of the class recorded by iss-2608292246210181, iss-2608301301041887 and iss-2608290810037763; carried from the session handover into autonomous-run-2026-09-01. The fix must assert the behaviour the gate is about -- the provisioned binary answers version correctly, as the version report, with no Go on PATH -- and carry no duration at all.
- iss-2609020215079051The ci.yml check job carries timeout-minutes: 15 while its macOS leg takes fourteen minutes on a quiet pull-request run (run for PR 589: started 01:28:58Z, completed 01:43:12Z). In the merge-group run for the same PR the macOS leg was cancelled at fifteen minutes inside the race lane, the merge queue removed the entry, and auto-merge was disarmed, with no code at fault. A job budget one minute above the observed quiet-run duration is a wall-clock assertion on a shared runner, the same class as iss-2608292246210181 and the bootstrap self-check site: every queue entry inherits a coin flip. The fix is headroom proportionate to the measured duration, and the durable remedy is the class remedy those records already name.