-
Notifications
You must be signed in to change notification settings - Fork 1
a second wall-clock flaky gate: the coverage-barrier tests miss their deadline under full-suite load #707
Copy link
Copy link
Open
Labels
area:ciRemote or local CI gate/workflow mismatchRemote or local CI gate/workflow mismatcharea:test-coverageTests, verification, coverage, or lint coverage gapTests, verification, coverage, or lint coverage gapimpact:developer-experienceAffects authors, maintainers, or local workflowsAffects authors, maintainers, or local workflowsimpact:maintainerPrimarily affects CI, release, or repository operatorsPrimarily affects CI, release, or repository operatorspriority:p2Important but not immediately release-blockingImportant but not immediately release-blockingscope:specsync-6Applies to current SpecSync 6 behavior or release contractApplies to current SpecSync 6 behavior or release contract
Description
Activity
Metadata
Metadata
Assignees
Labels
area:ciRemote or local CI gate/workflow mismatchRemote or local CI gate/workflow mismatcharea:test-coverageTests, verification, coverage, or lint coverage gapTests, verification, coverage, or lint coverage gapimpact:developer-experienceAffects authors, maintainers, or local workflowsAffects authors, maintainers, or local workflowsimpact:maintainerPrimarily affects CI, release, or repository operatorsPrimarily affects CI, release, or repository operatorspriority:p2Important but not immediately release-blockingImportant but not immediately release-blockingscope:specsync-6Applies to current SpecSync 6 behavior or release contractApplies to current SpecSync 6 behavior or release contract
Found incidentally while running
change checkfor an unrelated documentation-only change — nothing in that change can reach this code.Re-run alone: passes in 1.72s. Failed only inside the full 405-test suite on a loaded machine.
Mechanism
The test spawns ten subprocesses and waits a bounded number of wall-clock seconds each for a barrier file to appear. Under the full suite — which runs tests in parallel, and today also alongside cargo builds and several agent worktrees — a spawn can miss its deadline. Nothing about the assertion is wrong; the deadline assumes the machine is otherwise idle.
Same class as #702, and that matters
#702 fixed three
staleness_unmeasurabletests that lost a race on.gitremoval. This is the same failure family: a gate whose outcome depends on host load rather than on the behaviour it asserts.The cost is not the red run, it is what a red run then means. A suite that fails for reasons unrelated to the change teaches everyone to re-run without reading — and this repository has spent the release chasing signals that stopped carrying information while still looking like signals.
What it needs
Not a longer timeout — that moves the threshold without removing the dependence on load. Options worth weighing:
notify) rather than polling to a deadline.Option 3 is worth doing regardless of which of the others lands: a message that cannot distinguish a violated invariant from a slow machine is the same defect shape in the diagnostic itself.
Related: #702.