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
ServiceContenderSpawnerTests: measure whether the keyless [NotInParallel] is still needed #330
ServiceContenderSpawnerTests (tests/OpenCode.Sdk.Tests/Hosting/BackgroundService/Contender/) carries the keyless [NotInParallel], so the class runs alone after every other test. The comment that justified it was false and has been corrected in #327. Nobody has measured whether the class still needs the key.
Why the old rationale no longer held
The comment said the release-drain proof "paces 1024 timer waits that lag under module overlap" on the three-vCPU macOS leg. Since f6821b0 ("the release-drain proof holds its writer on a file the test creates, instead of pacing it on the clock"), the probe writes 4 KiB chunks and waits on a hold file only after the first chunk. Its only timer loop is the hold-file poll, and the poll's interval decides only how soon the writer notices, never whether a proof passes. The comment also said "every test starts a real process", which the missing-executable test does not.
This was found by the cross-family review of #327 (Sol 1M high, dispatch run 2026-10-15-layout-f0-residue-review, finding 1). #327 now states only what holds, and leaves the key in place.
Acceptance
A measured answer, not an argument:
Run the class with the keyless [NotInParallel] and without it (with the server-process key, or none) under the gate's load, on Windows and on the three-vCPU macOS leg, enough runs to see a timing failure if one exists.
Keep the key only if the measurement shows the class needs it, and write the measured reason into the class comment.
If it goes, the class runs in parallel with the rest of the suite, and the main pass's wall time records the gain.
Per the repository's rule, a flaky outcome is fixed at its root cause, never by a retry or a wider bound.
Activity