Skip to content

Promote staging to main - #1130

Open
stateofkate wants to merge 5 commits into
mainfrom
staging
Open

Promote staging to main#1130
stateofkate wants to merge 5 commits into
mainfrom
staging

Conversation

@stateofkate

@stateofkate stateofkate commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Caution

DO NOT USE THE MERGE BUTTON ON THIS PULL REQUEST.
THE BUTTON CREATES A NEW COMMIT AND BREAKS THE RELEASE MODEL.
COMMENT /promote TO COMPLETE THE PROMOTION.

Summary

Ships the quota lock removal, the QA accept/reject verdict rework, the network-shape e2e de-race, and /promote <sha> support in the promotion workflow.

Commits in this promotion

e43f64f8 ci(promote): support /promote <sha> and share the promotion checks (#1133)
8b7b2367 test(e2e): de-race the network-shape request counting (#1128)
fa608980 QA verdict: accept/reject labels, plain prompt, keep verdict until replaced, scoped rerun (#1120)
9f26989e fix(quotas): remove the org-wide advisory lock from trial submission (#1118)

Validation

Staging Deploy is green on the staging tip e43f64f8a1228767055eb76930fc9b0362cbe93a (run completed 2026-08-08T23:39:32Z). main is an ancestor of the tip, so the promotion fast-forwards cleanly.


Note

High Risk
Quota admission without locks changes overshoot behavior under concurrency; verdict prompt and persistence logic affect production QA outcomes; promotion script changes gate what ships to main.

Overview
This promotion bundles release tooling, quota admission, a QA verdict overhaul, and Playwright network-shape hardening.

Promotion workflow centralizes preflight in verify_promotion_target.sh. Bare /promote and Promotion Preflight default to the promotion-target SHA in the PR body (unfilled placeholder fails; no marker → staging tip). /promote <sha> and the target_sha input override the pin. Success comments note when staging still has unpromoted commits after a partial promote.

Quotas: trial submission and sweeps no longer take blocking org/user advisory locks; admission can briefly overshoot caps and the enforcement sweep cancels overage using non-blocking try_acquire_quota_locks only.

QA / verdict: the model outputs accept / reject (stored payloads still include is_good). The verdict prompt is rewritten around immediate rejection rules (leaks, weak tests, baseline failures). Successful verdicts persist through new trials, retries, and QA cancel until a new pass replaces them; Rerun verdict calls qa/backfill with force: false. The task overview lists all version trials (foreign trials marked “elsewhere”). cc_chat is removed end-to-end per the changelog.

E2E: shared network-log.ts attributes requests by issue time and holds responses so StrictMode abort races do not flake counts. Trial retry locks the task row before reserving the next trial index.

Reviewed by Cursor Bugbot for commit 33a8e4e. Bugbot is set up for automated code reviews on this repo. Configure here.

…1118)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: kyle-compute <kylehvdbnl@gmail.com>
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
oddish-app Ready Ready Preview Aug 9, 2026 12:38am
oddish-app (staging) Ready Ready Preview Aug 9, 2026 12:38am

…placed, scoped rerun (#1120)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: kyle-compute <kylehvdbnl@gmail.com>
# /tasks/sweep — and instead of returning None, which means under-quota.
# another transaction already holds the org/user quota lock (an in-flight
# cancellation), raise instead of pile-waiting and instead of returning
# None, which means under-quota.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quota cancel ignores kept verdict

High Severity

_reconcile_cancelled_tasks still marks exhausted tasks FAILED and hard-sets an in-flight verdict to FAILED, without cancel_verdict or the SUCCESS→COMPLETED promotion used by user cancel. After append keeps a successful verdict, a quota overage cancel can leave FAILED with an accept payload (or wipe a restorable verdict while the payload remains). Lock-free admission makes this cancel path more common.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit fa60898. Configure here.

@cursor
cursor Bot requested review from RishiDesai and charlesyhuang August 7, 2026 22:17

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Risk: high. Left a non-blocking comment: Cursor Bugbot finished as skipped and left an unresolved high-severity finding on quota-cancel verdict handling, so this is not approved. Assigned reviewers for human review of this billing/quota promotion.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 33a8e4e. Configure here.


console.print(
f"[green]Verdict computed:[/green] {'GOOD' if verdict.is_good else 'NEEDS REVIEW'} "
f"[green]Verdict computed:[/green] {verdict.verdict.upper()} "

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty QA path clears kept verdict

Medium Severity

When a QA job finds no eligible trials, this path sets verdict to None and records SUCCESS. With verdicts now kept across append until a replacement write, that race no longer completes a blank slate — it deletes the kept accept/reject payload the append path preserved.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 33a8e4e. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants