test(qa): use full-turn budget for native stop recovery#99656
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 3, 2026, 6:49 PM ET / 22:49 UTC. Summary PR surface: Other +1. Total +1 across 1 file. Reproducibility: yes. source-level. Current main still waits only 15000ms for the recovery marker after Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this scenario-only timeout change after maintainer review, keeping the Do we have a high-confidence way to reproduce the issue? Yes, source-level. Current main still waits only 15000ms for the recovery marker after Is this the best way to solve the issue? Yes. The patch is the narrowest maintainable fix because it applies the existing QA full-turn timeout policy at the recovery wait without changing production native-command routing, adding sleeps, or relying on the non-canonical active-run projection. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against fbdfd1962258. Label changesLabel justifications:
Evidence reviewedPR surface: Other +1. Total +1 across 1 file. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
* test(qa): warm native command session scenario * test(qa): wait for native abort cleanup * test(qa): use full-turn budget for native stop recovery
What Problem This Solves
Fixes #99655.
The native command session-target scenario sends recovery immediately after
/stopacknowledges. That acknowledgement proves command handling, but the aborted turn can still own the session lane while it unwinds. Exact QA artifacts recorded 16586ms and 18578ms session-lane waits, so the recovery marker arrived after the scenario's fixed 15000ms outbound timeout.Why This Change Was Made
The scenario now applies the repository's existing full-turn timeout policy to recovery:
/stopand the abort acknowledgement assertion unchanged;liveTurnTimeoutMs(env, 30000).This is not a sleep. Mock providers preserve the 30000ms fallback, while live providers raise it to their model-specific full-turn floor. The discarded
sessions.list.hasActiveRunidle poll was not valid because that projection clears before the command lane is released.PR #99368 separately owns suppression of optional QA child startup warmups. This PR does not change gateway startup behavior or JSONL parsing.
User Impact
QA Smoke CI retains the same native command targeting, abort acknowledgement, and recovery assertions without failing when normal abort cleanup consumes part of the next turn's queue budget.
Evidence
/stopacknowledgement.hasActiveRuncleared before recovery was injected, but recovery still waited 16586ms for the lane and arrived after the 15000ms assertion expired.extensions/qa-lab/src/live-timeout.test.tsproves mock lanes preserve the caller fallback and live lanes use provider/model floors.node scripts/run-vitest.mjs extensions/qa-lab/src/scenario-catalog.test.ts— 32/32 tests passed.blacksmith-testbox, IDtbx_01kwn0fe5vm4gevwq0c3vks9r9, exit 0.git diff --check— passed.