fix: terminalize studio.deploy so Attempting deploy cannot hang - #1893
Merged
Merged
Conversation
Bound kickoff retries and complete a no-job kickoff as a handoff HOLD. Clear stale G.A.T.E. receipts and bind the new runId before poll. Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
kk-agent
marked this pull request as ready for review
September 12, 2026 17:01
Contributor
🔴 E2E Test Results: FAILURE DETECTED
Test Output |
Contributor
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Snapshot WarningsEnsure that dependencies are being submitted on PR branches. Re-running this action after a short time may resolve the issue. See the documentation for more information and troubleshooting advice. Scanned FilesNone |
Contributor
8 tasks
kk-agent
pushed a commit
that referenced
this pull request
Sep 12, 2026
* fix: studio.deploy HOLD only after poll, not attempt-started #1893 bound a G.A.T.E. HOLD on kickoff with waiting copy. AXIOM treated that as terminal while Origin/job could still be pollable. Co-authored-by: Hayden <groupthinking@users.noreply.github.com> * docs: record studio.deploy precise-HOLD PR #1895 Co-authored-by: Hayden <groupthinking@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Canonical issue
Follow-on to #1891. AXIOM dogfood on READY prod
dpl_GfaxC4wivWYZqzGFrKvMcYn8fsdD(d7ac9058) /XYMcBrFSJ4c:wrun_01M2B768A7AVDRR5YQTNVJDZJ8then UI briefly showed stale fix: read studio.deploy workflow run instead of Request-parse HOLD #1853 receiptwrun_01M2ABB1NJ5TFZ153CTRNTPNW9→ UNVERIFIED (not FAIL).dpl_): NO TERMINAL — UI stayedAttempting deploy…~5 minutes. No new receipt. No live URL. Explicitly not the stale fix: read studio.deploy workflow run instead of Request-parse HOLD #1853 receipt.Outcome
Anon Studio Attempt Deploy / G.A.T.E.
studio.deploywith ready-transcript reuse reaches a terminal decision within a bounded kickoff budget: G.A.T.E. PASS + backend-supplied https live URL + receipt bound to the new run, or a precise HOLD (STUDIO_ORIGIN_KICKOFF_NO_JOB_HOLD). Attempting deploy cannot stick indefinitely without a gate decision/receipt.Root cause
Verified in tree on
d7ac9058(#1891):KICKOFF_RETRIES = 6×kickoffStep(AbortSignal.timeout(45s)plus an inner abort retry) ×sleep('10s')keeps the WDK runrunningfor ~5–11 minutes when origin never returns ajob_id./api/workflows/studio-deploy/:runIdonly attachesresultwhencompleted/failed. While kickoff is retrying there is no job id, no receipt, anddeployBusystays true (Attempting deploy…).gateReceiptwas not cleared on a new attempt, so the first click could flash the fix: read studio.deploy workflow run instead of Request-parse HOLD #1853 receipt.This is not a missing
VERCEL_TOKEN/ invented hostname. Prefer terminal signaling over inventing a live URL.What changed
KICKOFF_RETRIESto 1 (initial + one durable retry), not six silent 45s steps.handoffwith the kickoff-no-job message (terminal WDK status) instead of stayingrunninguntil FatalError.STUDIO_ORIGIN_KICKOFF_NO_JOB_HOLD(not “still running after N polls”).gateReceipton click and binds an in-flight receipt to the newrunIdbeforepollStudioDeploy.STUDIO_ORIGIN_KICKOFF_NO_JOB_HOLDon the client-safe pipeline-status module.What was NOT done
VERCEL_TOKEN/EVENTRELAY_API_KEY/ Hayden secrets.Hayden stop (not taken)
Hang/terminal gap was EventRelay-side: kickoff retries left the run non-terminal and the UI uncleared. Did not invent deploy credentials. If a later AXIOM job error proves a missing credential only Hayden has, that is the Loop→CoS ask — not guessed here.
Scope
How cleared residuals stay cleared
Reuse / origin-no-live / timeout-abort raw string / HTTP 524 / bot / UNKNOWN / workflow-run / return-value / BACKEND_URL / hostname-finished tests still assert those strings are absent. New HOLD for
wrun_01M2B768A7AVDRR5YQTNVJDZJ8is kickoff-no-job bound to that run, notwrun_01M2ABB1NJ5TFZ153CTRNTPNW9.Risk
Verification
Head:
5f0c66bf1e89b41f3eec954d72abf279b83a93b6pipeline-async-job,gate-transition,studio-pipeline-status,studio-workflow,studio-deploy)Production evidence
Cannot signed-in dogfood AXIOM here. Target residual:
dpl_GfaxC4wivWYZqzGFrKvMcYn8fsdD/ first-clickwrun_01M2B768A7AVDRR5YQTNVJDZJ8/ second-click no receipt. Proof used: tree ond7ac9058(KICKOFF_RETRIES = 6, result only on completed/failed,gateReceiptuncleared).Agent handoff