Repository navigation
test(e2e): cover approval outcomes across an agent reload - #1561
TheGreatAxios merged 4 commits into
Conversation
6019a15 to
f631f7b
Compare
B's ceiling fires at ~240ms and the remaining ~120ms budget expires at ~360ms; the old 370ms check left 10ms of slack and flaked on CI.
1e8eb64 to
4dd4fb4
Compare
TheGreatAxios
left a comment
There was a problem hiding this comment.
Fleet review verdict: APPROVE-WITH-NITS
PR: #1561 — test(tui): cover approved mcp calls across a deferred reload (CL-10763 family)
Convergence: swarm → defect / quality / solve convergence → converged approve-with-nits / approve-with-nits / approve.
Outcome
Solve lens: SOLVES — regression coverage added for approved MCP call across deferred reload.
Nits / credibility gaps (non-blocking)
- Auditor F1–F4 dispositioned; QA flagged verification gaps (full-suite tally, e2e deferred-reload path).
Required changes
None blocking. Flagged for operator disposition.
TheGreatAxios
left a comment
There was a problem hiding this comment.
Fleet review verdict: REQUEST CHANGES
PR: #1561 — test(tui): cover approved mcp calls across a deferred reload (CL-10763 family)
Operator disposition update: the prior "approve-with-nits" posture is withdrawn; this PR is converted to REQUEST CHANGES with the items carried.
Requested changes
- N1 (qa): coverage gaps (e2e deferred-reload path; rejected/deadline-decision coverage).
- N2 (auditor): F1–F4 dispositions (sleep-based flake addressed; deterministic; e2e race addressed; convention accepted).
- N3 (qa): verification credibility gaps (full-suite tally; e2e path).
Required changes to merge
Address the requested changes above (or explicitly close each) before merge.
Why it matters
Non-blocking items remain; operator opted for a stricter review posture.
|
Coverage gaps (deferred reload, rejected and deadline decisions): fixed.
The integration harness has no TUI runner, so the e2e does not call One gap is left out on purpose. If the agent reloads after a reject or timeout but before the cycle commits, the decision's result is lost. The store keeps the pending approval, the rebuilt history holds the tool call with no result, and the next model request sends that tool call unanswered. No late "approval timed out" showed up within two hours of simulated time. This is product behavior outside this change, so it has no test here; it is tracked in CL-11433, along with the live case where an approval dropped by an interrupt gets a false "approval timed out" at its old deadline. The approved case at that same reload point is already covered and passes. Auditor findings F1 to F4: closed, no change. These were dispositioned in the earlier round: the sleep-based flake was addressed, the tests are deterministic, the e2e race was addressed, and the convention point was accepted. This round changes nothing for them. Verification credibility: fixed. Proposed Verification section for the description:
|
|
Resolved findings at
|
TheGreatAxios
left a comment
There was a problem hiding this comment.
Re-reviewed at 9ca3fa3. Rejected, timed-out, and rebuilt approvals are asserted, and the new tests do not reintroduce a sleep. Approving.
|
Triage: Pass No changes needed from you. A maintainer will review this pull request. |
Summary
A reload after a rejection or timeout but before the cycle commits loses the decision's result. That is product behavior outside this change and is tracked in CL-11433.
Verification
bun test e2e/reactor-approval-reload.test.ts src/tui/runner/exit.test.ts: 44 pass, 0 fail across 2 filesbun test e2e/reactor-approval-reload.test.ts --randomize --seed 7and--seed 8: 6 pass, 0 fail eachbun run check(lint, typecheck, dead exports, build, and the guarded suite at--randomize --seed 424242): exit 0; 9455 pass, 0 fail, 36802expect()calls across 618 filessrc/tui/runner/exit.test.tsRelated to CL-10763