test(vloer): give the relay test's timed exec a load-scaled budget #214

Merged
ryangr0 merged 1 commit from ryangr0/fix/vloer-relay-timeout-headroom into development 2026-10-04 08:38:23 +00:00 AGit
Owner

The relay test "an exec subprocess group is stopped when its relay request is cancelled or its timeout passes" fails intermittently on the loaded Forgejo runners. It failed checks on #207 and #212, with 1 !== 2 at test/relay.test.ts:183.

Cause

The timed part runs the child-plus-grandchild program with a fixed timeoutMs: 500. It then asserts that both had written before the timeout stopped them, which shows that the timeout path stops a real process group. On a starved runner the grandchild, a second Node process, can take longer than 500 ms to start, so only the child had written. Every other bound in the file scales with VLOER_TEST_TIMEOUT_SCALE (test/timeframes.ts); this one did not.

Change

timeoutMs: scaledTimeout(2_000): 2 s locally, 4 s in CI. The assertion is unchanged.

Evidence

  • Reproduced locally by pinning the test to one core at nice 10 next to a busy loop, with VLOER_TEST_TIMEOUT_SCALE=2 as in CI. The old test failed 4 of 4 runs at the same assertion (0 !== 2); with this change it passed 6 of 6.
  • Idle run: 3.6 s.
  • mise run verify with result reuse: all gates passed.

The test came from #184 (yesterday) and is unrelated to the Ploeg separation. It can fail any checks run, including development's.

🤖 Generated with Claude Code

The relay test "an exec subprocess group is stopped when its relay request is cancelled or its timeout passes" fails intermittently on the loaded Forgejo runners. It failed `checks` on #207 and #212, with `1 !== 2` at `test/relay.test.ts:183`. ## Cause The timed part runs the child-plus-grandchild program with a fixed `timeoutMs: 500`. It then asserts that **both** had written before the timeout stopped them, which shows that the timeout path stops a real process group. On a starved runner the grandchild, a second Node process, can take longer than 500 ms to start, so only the child had written. Every other bound in the file scales with `VLOER_TEST_TIMEOUT_SCALE` (`test/timeframes.ts`); this one did not. ## Change `timeoutMs: scaledTimeout(2_000)`: 2 s locally, 4 s in CI. The assertion is unchanged. ## Evidence - Reproduced locally by pinning the test to one core at `nice 10` next to a busy loop, with `VLOER_TEST_TIMEOUT_SCALE=2` as in CI. The old test failed 4 of 4 runs at the same assertion (`0 !== 2`); with this change it passed 6 of 6. - Idle run: 3.6 s. - `mise run verify` with result reuse: all gates passed. The test came from #184 (yesterday) and is unrelated to the Ploeg separation. It can fail any `checks` run, including `development`'s. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
test(vloer): give the relay test's timed exec a load-scaled budget
All checks were successful
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 42s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 46s
[Workflow] On Pull Request / checks (pull_request) Successful in 4m22s
[Workflow] On Pull Request / warnings (pull_request) Successful in 0s
ec25bc6aad
"an exec subprocess group is stopped when its relay request is cancelled
or its timeout passes" ran the timed exec with a fixed 500 ms budget, then
required both the child and the grandchild to have written before the
timeout stopped them. On a loaded runner a second Node process can take
longer than that to start, so the check saw 1 writer instead of 2 and
failed Unfold #207 and #212. Every other bound in this file scales with
VLOER_TEST_TIMEOUT_SCALE; this one now does too, from a 2 s base.

The assertion is unchanged. Pinned to one core at nice 10 next to a busy
loop with CI's scale of 2, the old test failed 4 of 4 runs (0 !== 2) and
the new one passed 6 of 6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ryangr0 force-pushed ryangr0/fix/vloer-relay-timeout-headroom from ec25bc6aad
All checks were successful
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 42s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 46s
[Workflow] On Pull Request / checks (pull_request) Successful in 4m22s
[Workflow] On Pull Request / warnings (pull_request) Successful in 0s
to a05d94726f
All checks were successful
[Workflow] On Pull Request / checks (pull_request) Successful in 6m33s
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 34s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 21s
[Workflow] On Pull Request / warnings (pull_request) Successful in 0s
2026-10-04 07:11:58 +00:00
Compare
ryangr0 merged commit fc6fc9f41b into development 2026-10-04 08:38:23 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
webgrip/unfold!214
No description provided.