test(integration): 360s timeout for passes=10 routing tests#72
Merged
Conversation
test_audio_s3_to_routed_pcb timed out (>120s) on main post-merge: the passes=6→10 bump (to clear the 7>6 unrouted flake) pushed best-of-10 FreeRouter on the dense ESP32-S3 board past the global --timeout=120, and main's tag push ran Release + Tests + Integration concurrently on the self-hosted runners, so each pass was slower. (PR #71 squeaked under 120s on a quieter runner.) Add @pytest.mark.timeout(360) to the two passes=10 routing tests (audio_s3 + track_geometry); the marker overrides the global 120s for just those, which still guards the fast tests against genuine hangs. passes stays 10 / bound stays 6 (SPEC §9-A3) — this is a wall-clock budget, not a correctness loosening. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
blwfish
added a commit
that referenced
this pull request
Jun 3, 2026
…atrix v0.11.0 published over a RED integration run: release.yml's `release` job only `needs: test` (the ubuntu unit matrix), and the KiCad integration suite runs as a separate workflow with no dependency on the release. So unit-green cut the release regardless of integration. Add an `integration` job to release.yml mirroring integration.yml (self-hosted KiCad 9 + 10 matrix; 10.0 hard-gates, 9.0 advisory/continue-on-error) and make `release: needs: [test, integration]`. Now a tag can't cut a release unless the board pipeline is green on KiCad 10 for that commit. Tradeoff (accepted): a transient self-hosted/FreeRouter flake can block a release until re-run — correct for boards we fab. release.yml only triggers on tags, so this is inert until the next v* tag (validated by inspection against the proven integration.yml). Merge the passes=10 timeout fix (#72) first so the gated integration uses the 360s budget. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Post-merge,
test_audio_s3_to_routed_pcbtimed out (>120s) onmain(both KiCad 9 + 10), so the Integration workflow went red — while PR #71's identical content had passed.Cause: the
passes=6→10bump from #71 (to clear a 7-vs-6 unrouted flake) pushed best-of-10 FreeRouter on the dense ESP32-S3 board past the integration workflow's global--timeout=120. Onmainthe tag push fired Release + Tests + Integration concurrently on the self-hosted runners, so each routing pass ran slower and tipped over; PR #71 squeaked under on a quieter runner.Fix:
@pytest.mark.timeout(360)on the twopasses=10routing tests (audio_s3 + track_geometry). The marker overrides the global 120s for just those; the fast tests keep the 120s hang-guard.passesstays 10 and the unrouted bound stays 6 (SPEC §9-A3) — this is a wall-clock budget, not a correctness change.27 passed, 1 timed outlast run, so the pipeline itself is sound.🤖 Generated with Claude Code