test(runtime): dynamic lifecycle fixtures keep their controller lease through slow CI setup - #1214
Merged
Merged
Conversation
… through slow CI setup The fake runner never heartbeats. Once one controller lease (30 s by default) passes after launch with no active work, synchronization parks every open node as a lost controller (wait reason controller-loss). Fixture setup alone took about 43 s on slow CI runners, so 'model-fanout dynamic nodes stay pending until every generated attempt has evidence' failed on main (142ba80) and on #1205 with controller-loss instead of dependency. Give the dynamic fixtures a one-hour lease, so the tests check dependency waits whatever the runner's speed. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
model-fanout dynamic nodes stay pending until every generated attempt has evidence(packages/runtime/test/dynamic-lifecycle.test.ts) fails intermittently in theruntime-supportinglane. It failed onmainat 142ba80 and on #1205:Root cause
runningwith no active work, synchronization looks at the time since the last transition. After one controller lease (controller_lease_seconds, 30 s by default), it treats the controller as lost and parks every open node withcontroller-loss(workflow-control.ts,noTransitionStall).Change
writeDynamicProjectgives every dynamic-lifecycle fixture a one-hour controller lease. The test first asserts that the scaffolded config has the defaultcontroller_lease_seconds = 30line, so a scaffold change cannot silently skip the replacement. No test in the file checks lease expiry. Test-only.Verification
origin/mainit fails with exactly the CI error (actual: 'controller-loss',expected: 'dependency'). With this change it passes.dynamic-lifecycle.test.ts: 19/19.🤖 Generated with Claude Code
The PR appears safe to merge.
Summary
The PR gives dynamic-lifecycle test fixtures a one-hour controller lease so slow CI setup does not cause a non-heartbeating fake runner’s open nodes to be parked as controller losses. It also checks the scaffold default before replacing it.
Reviews (1) · Last reviewed commit: "test(runtime): dynamic lifecycle fixture..."