perf(e2e-api): cut MiniMax best-effort wait 240s->90s (80% of smoke wall-clock) #2565
Reference in New Issue
Block a user
Delete Branch "perf/e2e-api-minimax-wait-budget"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Cut the MiniMax best-effort arm's
wait_for_statusbudget intests/e2e/test_priority_runtimes_e2e.shfrom 240s to 90s (env-overridable viaE2E_MINIMAX_WAIT_SECS). One-line change + comment; no workflow touched, no assertions removed.Why (diagnosis, not a guess)
E2E API Smoke Testis a REQUIRED branch-protection context on every core PR. I broke down where the time goes from Giteaaction_task_stepover recent real-work runs (153 runs, 3d):Inside the priority-runtimes step, the entire cost is the best-effort MiniMax arm calling
wait_for_status "$wsid" "online failed" 240. Across 20/20 recent real runs the MiniMax workspace never leavesprovisioning(claude-code cannot converge a MiniMax workspace in this CI), so it burns the full 240s thenbestfails — which by design never reds the gate. Pure dead-wait, zero validation.Coverage preserved
bestfail, never gate-blocking). Shrinking its budget can never weaken the gate.mockarm) and every other arm are untouched.continue-on-error, no setup-gocache:true, no workflow YAML edits — Guard-1/Guard-3 lint surface is zero (the change is in a shell test script).shellcheck -S errorclean.Expected impact
Real-run p50 ~309s -> ~160s (-150s per real run). At ~189 real runs/7d that reclaims ~7.9 job-hours/7d off the critical merge path, shortening every core PR's time-to-merge.
Measured before/after on a triggered run in the PR thread.
🤖 Generated with Claude Code
Measured before/after (triggered on this PR's head
9e36d6b9)E2E API Smoke TestjobCoverage preserved — the run log shows the REQUIRE-LIVE backbone still validates:
The MiniMax arm still runs and would still validate if it ever converges; it just no longer burns 240s of dead-wait on the empirical CI case where it never leaves
provisioning(20/20 recent real runs).shellcheck -S errorclean. No workflow YAML touched, no assertions removed, nocontinue-on-error.CI note: the
Python Lint & TestandShellcheck (E2E scripts)jobs are RED purely from an operator-host ECR image-pull auth flake (runner-base ... no basic auth credentials) — the known operator dockerd/ECR-cred infra issue, unrelated to this diff.CI / all-requiredandHandlers Postgres Integrationneed the same re-trigger once ECR creds are refreshed. The REQUIREDE2E API Smoke Testcontext is GREEN.qa/security 5-axis review dispatched to the agents-team reviewers.
APPROVE — 5-axis (Correctness/Robustness/Security/Performance/Readability) on head
9e36d6b9.Single-file change to
tests/e2e/test_priority_runtimes_e2e.sh: MiniMax best-effort arm 'swait_for_statusbudget 240s→90s, env-overridable viaE2E_MINIMAX_WAIT_SECS.${E2E_MINIMAX_WAIT_SECS:-90}default-expansion is correct. The arm is BEST-EFFORT — on non-onlineit callsbestfail+return 0, so it never reds the gate; the require-live mock backbone arm is untouched. No assertion removed.|| true+ bestfail path all intact; no new failure mode.E2E API Smoke Testwall-clock across 153 real runs; cutting the dead-wait shortens every core PR time-to-merge with zero assertion loss.Nit (non-blocking): if MiniMax CI provisioning is later fixed to genuinely converge in the 90–240s window, the 90s default would silently
bestfailit until someone bumpsE2E_MINIMAX_WAIT_SECS. Acceptable since this is the non-gating best-effort arm with a documented override.Gate verified green: CI/all-required (path-skipped), E2E API Smoke ✓, Handlers PG ✓, sop-checklist (pull_request_target) ✓.
APPROVED: 5-axis QA review clean on head
9e36d6b9.Correctness: limits only the MiniMax best-effort wait, leaving the required mock/live backbone assertions intact.
Robustness: preserves the env override for future CI tuning and continues to bestfail rather than hard-fail this arm.
Security: no secrets/auth/input surface change.
Performance: reduces dead wait from 240s to 90s on a non-gating path.
Readability: comment documents the trade-off and override clearly.