Skip to content

fix: skip process handoff when deploy transcript is ready - #1880

Merged
groupthinking merged 5 commits into
mainfrom
cursor/studio-deploy-reuse-after-524-d09a
Sep 12, 2026
Merged

fix: skip process handoff when deploy transcript is ready#1880
groupthinking merged 5 commits into
mainfrom
cursor/studio-deploy-reuse-after-524-d09a

Conversation

@groupthinking

@groupthinking groupthinking commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Canonical issue

Continues the studio.deploy finish line after #1875 (HTTP 524 cleared, YouTube bot wall returned).

Outcome

Restore #1859 ready-transcript reuse so Attempt deploy does not re-hit YouTube via /videos/process when the pack/transcript is already ready, while keeping #1875 async past HTTP 524 via origin 202 + job_id. Claim guard stays: no live success without a verified https:// hostname URL + EventRelay receipt.

AXIOM: dpl_BK1hFnDuN366N5WBAUpAsLka9iwP / XYMcBrFSJ4c, receipt er:gate:v1:wrun_01M2AF8WD3G4VCB63KEBX311HV. HTTP 524 cleared. Regression: Sign in to confirm you’re not a bot. No live URL.

Scope

Risk

  • Risk level: medium
  • Failure mode: ready-transcript 524 HOLDs with reuse copy instead of starting a process job that re-hits YouTube. URL-only deploys still async via process.
  • Rollback: revert this PR. fix: async-handoff studio.deploy kickoff past HTTP 524 #1875 524 handoff for URL-only remains on main.

Verification

Tied to head 78373b66e.

  • Focused Vitest reuse + claim guard + previously failing suites — 54 passed locally
  • Required core CI (validate / guards / lint-* / build / test / test-frontend) on this head
  • Review threads resolved

Prior head 48cc6639c: test-frontend failed two suites this cut did not author (pipeline-route.test.ts duplicate import; dashboard-store.persistence.test.ts node:test collected by Vitest). Other core checks passed. Not merged.

Production evidence

Pending merge-when-core-green → prod READY dpl_. Cannot signed-in dogfood AXIOM in this environment. Honest HOLD ≠ bot and ≠ 524 is allowed; no invented live URL.

Agent handoff

  • Continues the named studio.deploy residual
  • This branch carries the origin 202 budget from fix: return 202 from video-to-software before CF 524 #1878
  • Acceptance tests lock: no bot HOLD and no HTTP 524 HOLD on ready-transcript path; URL-only still process; claim guard unchanged
  • Required checks pass on the current head
  • Human decision only if product/security/prod approval is required
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 12, 2026 09:37
Origin answers within a 12s sync budget. Slow deploys persist a
pollable job_id so Studio never waits for Cloudflare HTTP 524.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
Restore #1859 reuse so HTTP 524 no longer starts URL-only
/videos/process. Origin 202 remains the async path past 524.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
@vercel

vercel Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated
v0-uvai Ready Ready Preview, v0 Sep 12, 2026 10:33am UTC

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: ca531a17-4ae0-4e19-be79-5a3c3c116d70


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@groupthinking
groupthinking marked this pull request as ready for review September 12, 2026 09:38
Co-authored-by: Hayden <groupthinking@users.noreply.github.com>

@vercel vercel Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Additional Suggestion:

fetchAsyncVideoJob never surfaces github_repo on the async 202 handoff path because it doesn't read it from metadata, where the backend persists it.

Fix on Vercel

@github-actions github-actions Bot added documentation Improvements or additions to documentation javascript Pull requests that update javascript code python tests labels Sep 12, 2026
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA 7bc7c2c.
Ensure 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 Files

None

Drop the duplicate PIPELINE_RESPONSE_BUFFER_MS import and run
dashboard store persistence under Vitest so the required check
can go green for the reuse-after-524 cut.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>
@groupthinking
groupthinking merged commit c2a91e3 into main Sep 12, 2026
6 of 7 checks passed
@groupthinking
groupthinking deleted the cursor/studio-deploy-reuse-after-524-d09a branch September 12, 2026 10:32
@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

GRV-534

@github-actions

Copy link
Copy Markdown
Contributor

🔍 PR Validation

⚠️ Large PR detected (527 lines changed)

@github-actions

Copy link
Copy Markdown
Contributor

🔴 E2E Test Results: FAILURE DETECTED

Metric Value
Status 🔴 RED
Total Tests 6
Passed 11
Failed 6
Deployment https://v0-uvai-cl9ketjo4-garv1.vercel.app
Test Output
2m''�[39m�[33m;�[39m
    �[90m190|�[39m       �[34mexpect�[39m(ct)�[33m.�[39m�[34mtoContain�[39m(�[32m'text/event-stream'�[39m)�[33m;�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/6]⎯�[22m�[39m

�[41m�[1m FAIL �[22m�[49m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mSSE Pipeline Stream�[2m > �[22mSSE stream emits at least a pipeline_status:running event
�[31m�[1mAssertionError�[22m: expected 0 to be greater than or equal to 1�[39m
�[36m �[2m❯�[22m tests/e2e/pipeline.test.ts:�[2m208:29�[22m�[39m
    �[90m206|�[39m
    �[90m207|�[39m       �[90m// Must have at least 1 event�[39m
    �[90m208|�[39m       �[34mexpect�[39m(events�[33m.�[39mlength)�[33m.�[39m�[34mtoBeGreaterThanOrEqual�[39m(�[34m1�[39m)�[33m;�[39m
    �[90m   |�[39m                             �[31m^�[39m
    �[90m209|�[39m
    �[90m210|�[39m       �[90m// Must start with pipeline_status:running�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/6]⎯�[22m�[39m

�[41m�[1m FAIL �[22m�[49m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22mmissing URL returns 400, not a hang
�[31m�[1mAssertionError�[22m: expected 401 to be 400 // Object.is equality�[39m

�[32m- Expected�[39m
�[31m+ Received�[39m

�[32m- 400�[39m
�[31m+ 401�[39m

�[36m �[2m❯�[22m tests/e2e/pipeline.test.ts:�[2m358:26�[22m�[39m
    �[90m356|�[39m
    �[90m357|�[39m       �[35mconst�[39m elapsed �[33m=�[39m �[33mDate�[39m�[33m.�[39m�[34mnow�[39m() �[33m-�[39m start�[33m;�[39m
    �[90m358|�[39m       �[34mexpect�[39m(res�[33m.�[39mstatus)�[33m.�[39m�[34mtoBe�[39m(�[34m400�[39m)�[33m;�[39m
    �[90m   |�[39m                          �[31m^�[39m
    �[90m359|�[39m       �[34mexpect�[39m(elapsed)�[33m.�[39m�[34mtoBeLessThan�[39m(�[34m5_000�[39m)�[33m;�[39m �[90m// Should respond instantly�[39m
    �[90m360|�[39m     })�[33m;�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/6]⎯�[22m�[39m

�[41m�[1m FAIL �[22m�[49m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mAPI Health�[2m > �[22mPOST /api/pipeline/stream with no body returns 400
�[31m�[1mAssertionError�[22m: expected [ 400, 500 ] to include 200�[39m
�[36m �[2m❯�[22m tests/e2e/pipeline.test.ts:�[2m441:26�[22m�[39m
    �[90m439|�[39m       )�[33m;�[39m
    �[90m440|�[39m       �[90m// Should handle gracefully — 400 or 500, but respond quickly�[39m
    �[90m441|�[39m       �[34mexpect�[39m([�[34m400�[39m�[33m,�[39m �[34m500�[39m])�[33m.�[39m�[34mtoContain�[39m(res�[33m.�[39mstatus)�[33m;�[39m
    �[90m   |�[39m                          �[31m^�[39m
    �[90m442|�[39m     })�[33m;�[39m
    �[90m443|�[39m   })�[33m;�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/6]⎯�[22m�[39m


�[2m Test Files �[22m �[1m�[31m1 failed�[39m�[22m�[90m (1)�[39m
�[2m      Tests �[22m �[1m�[31m6 failed�[39m�[22m�[2m | �[22m�[1m�[32m11 passed�[39m�[22m�[90m (17)�[39m
�[2m   Start at �[22m 11:40:42
�[2m   Duration �[22m 3.16s�[2m (transform 49ms, setup 0ms, import 63ms, tests 2.98s, environment 0ms)�[22m


kk-agent pushed a commit that referenced this pull request Sep 12, 2026
* fix: retry studio.deploy on timeout abort instead of HOLD

AbortSignal.timeout was failing the WDK kickoff/poll and client
status reads with the raw DOM message, so G.A.T.E. HOLDs after #1880
cleared bot/524. Retry origin 202, keep polling, never re-hit process.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>

* docs: record timeout-abort PR verification evidence

Local Vitest 703 and lint 0 errors; GitHub core CI still queued.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>

* fix: poll studio.deploy with durable sleep, not step abort

Split the WDK job wait onto sleep('10s') between short status reads so
Vercel cannot abort-timeout a 180s in-step setTimeout after kickoff.

Co-authored-by: Hayden <groupthinking@users.noreply.github.com>

* fix: lazy-load GeminiVideoMasterAgent on agents import

Importing agents.action_implementer no longer eager-loads the video
master agent, which failed the core pytest job under full CI deps.

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation javascript Pull requests that update javascript code python tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants