ci(behaviour): raise behaviour job timeout 30→60m - #5522
Conversation
PR Summary by QodoCI: increase behaviour job/test timeout from 30→60 minutes
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
|
🤖 Finished Review · ✅ Success · Started 10:10 AM UTC · Completed 10:20 AM UTC |
Site previewPreview: https://f077aa86-site.fullsend-ai.workers.dev Commit: |
Code Review by Qodo
1. No timeout headroom
|
| # Lazy create+install (#5439) pays per leased test-repo-NN; serial suites | ||
| # need more than the old shared-test-repo 30m budget. | ||
| timeout-minutes: 60 |
There was a problem hiding this comment.
1. No timeout headroom 🐞 Bug ☼ Reliability
The behaviour job sets timeout-minutes: 60 while it runs make behaviour-test whose go test also uses -timeout 60m, so any time spent in checkout/auth/setup reduces the effective test runtime below 60 minutes. When runs approach the limit, GitHub Actions can terminate the job first, yielding a generic cancellation instead of a Go test timeout with actionable diagnostics.
Agent Prompt
## Issue description
The workflow job timeout and the Go test timeout are set to the same duration (60m). Because the job timeout includes all setup steps, the runner can cancel the job before `go test` reaches its own timeout, producing less-informative failures.
## Issue Context
The behaviour job runs `make behaviour-test`, and that Makefile target sets `go test -timeout 60m`.
## Fix Focus Areas
- Increase the job-level timeout above the test timeout (e.g., job 70m, test 60m), **or** reduce the Go test timeout below the job timeout (e.g., test 55m, job 60m).
- Keep the two timeouts intentionally staggered to preserve clear timeout diagnostics.
### References
- .github/workflows/e2e.yml[185-195]
- .github/workflows/e2e.yml[257-260]
- Makefile[178-183]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ReviewFindingsMedium
Low
Labels: PR modifies CI workflow (.github/workflows/e2e.yml) and build config (Makefile) for the behaviour test job |
Pull request was closed
beef020 to
4ef60e7
Compare
|
🤖 Finished Review · ✅ Success · Started 10:23 AM UTC · Completed 10:27 AM UTC |
|
Review skipped — this PR is already closed. The Posted by fullsend pre-review check |
|
🤖 Finished Retro · ✅ Success · Started 10:24 AM UTC · Completed 10:36 AM UTC |
|
Review skipped — this PR is already closed. The Posted by fullsend post-review check |
Retro: PR #5522 —
|
| Time (UTC) | Event |
|---|---|
| 10:08:34 | PR opened, auto-merge enabled |
| 10:08:52 | Review agent run 29998185575 started |
| 10:10:45 | Human (@rh-hemartin) APPROVED: "Stop this madness." |
| 10:11:25 | Qodo bot posted: timeout headroom bug (job timeout = test timeout) |
| 10:19:57 | Review agent posted: 1 MEDIUM (protected-path), 1 LOW (timeout headroom) |
| 10:20:02 | Review agent applied requires-manual-review, component/ci, component/e2e |
| 10:21:38 | Author closed PR without merging |
The review agent took ~11 minutes and cost $1.75 (28 turns, claude-opus-4-6) for a change it correctly triaged as "trivial/mechanical." It dispatched 3 sub-agents (correctness, style-conventions, intent-coherence) plus a challenger. The human approved in 2 minutes. The author closed the PR, keeping the open #5483 (45m version) instead.
What worked well
- The review agent correctly identified the timeout headroom issue (workflow timeout = Go test timeout, no buffer for setup/cleanup) and appropriately rated it LOW, noting it's a pre-existing pattern.
- The agent correctly flagged the protected path and chose
commentaction (non-blocking), notrequest-changes. - The post-close guard worked: a second review triggered by branch force-push was correctly skipped ("Review skipped — this PR is already closed").
- The agent's technical analysis was more thorough than the human review, which approved without flagging the timeout headroom issue.
Evidence for existing issues
- #5157 (scale review detail to change complexity): This PR is a textbook case — 11 minutes, $1.75, 3 sub-agents + challenger for a 4-line value-only timeout bump. The full multi-agent pipeline ran despite the trivial triage. A fast path for trivial/mechanical changes could cut this to under 3 minutes.
- Fullsend review agent and Qodo bot produce overlapping code-level findings, creating noise on PRs with both reviewers active #4107 (overlapping qodo/fullsend findings): Both Qodo (10:11:25Z) and fullsend (10:19:57Z) flagged the identical timeout headroom issue. Qodo posted 8.5 minutes earlier.
- Review agent should recognize human-resolved protected-path findings and stop re-flagging #1583 (recognize existing human approvals): The human APPROVED at 10:10:45Z, but the review agent posted 9 minutes later and applied
requires-manual-reviewwithout accounting for the pre-existing approval. Review agent should recognize human-resolved protected-path findings and stop re-flagging #1583 proposes downgrading the review outcome when human approval exists, but does not address label application. - Add CI workflow conventions doc to close review knowledge gap #5521 (CI workflow conventions doc): The timeout headroom issue that both review bots flagged is exactly the kind of convention that
docs/contributing/ci-workflows.mdwould codify, making it available to all reviewers. - Review agent should cross-reference sibling PRs to avoid contradictory findings #4568 (sibling PR cross-referencing): This was the 4th PR in a timeout-increase series. The review agent reviewed it in isolation without referencing ci(e2e): raise behaviour job timeout to 45m #5432, ci(e2e): raise behaviour job timeout from 30m to 45m #5483, or ci(e2e): raise behaviour job timeout to 45m #5519.
Autonomy note
The review agent's technical analysis exceeded the human's on this PR (caught the timeout headroom issue the human missed). However, the primary value of the review on this CI change was the governance gate (protected-path), which is a policy decision requiring human judgment by design. For CI config changes, the review agent is adding real technical value but the governance requirement correctly keeps the human in the loop.
Proposals filed
- Post-script should skip requires-manual-review label when qualifying human approval exists (in
fullsend-ai/agents)
Summary
behaviourjobtimeout-minutes30→60 and matchingmake behaviour-testgo test timeout.pull_request_targetCI (workflow from main) can finish suites after lazy create+install (feat(behaviour): lazy create+install on Given the enrolled test repository #5439 / PR ci(behaviour): lazy create+install in Given the enrolled test repository #5489).Test plan
e2ejob timeoutMade with Cursor