fix(routing): TEMP de-list seedance-i2v-fast — route fast animate to pixverse-i2v (i2v success ~33%→~100%)#685
Merged
seanhanca merged 1 commit intoJul 20, 2026
Conversation
…ixverse-i2v
seedance-i2v-fast is the prefer_fast/default target for fast animate, but it
has no warm ("live") orchestrator. Live + 7-day telemetry show it runs
176-181s against the ~180s SDK /inference abort ceiling and succeeds only
~33% of the time -- and aborted jobs are still billed ($0.378 on the two
failed renders in the perf run). This makes "fast" both slower AND less
reliable than the warm alternative.
Re-route the fast/default animate tier to the warm pixverse-i2v
(~100% success, ~48s p50). Expected impact: i2v fast-path success
~33% -> ~100%, latency ~180s -> ~48s.
Mechanism (reversible, non-destructive):
- New single source of truth lib/sdk/fast-animate.ts exports FAST_ANIMATE_CAP
gated by env SEEDANCE_I2V_FAST_WARM (default false -> pixverse-i2v).
- create_media prefer_fast + entity-anchored animate, episode-director
selectModel ("fast" style), and the product-marketing domain animate hint
all route through FAST_ANIMATE_CAP.
- seedance-i2v-fast is NOT deleted: still reachable via
model_override:"seedance-i2v-fast" and the "seedance" keyword.
TO RE-ENABLE once the seedance i2v family has a warm orchestrator: set
SEEDANCE_I2V_FAST_WARM=true (no code change) or revert this commit.
Tests: add tests/unit/fast-animate-reroute.test.ts; update episode-animate
mirror. Full unit suite green (3198 passed).
Evidence: STORYBOARD-MCP-PERF-INVESTIGATION (2026-07-20).
Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
2 tasks
Contributor
Author
|
Cross-links for the structural fixes this temporary mitigation depends on:
Re-enable when warm capacity exists: set |
Contributor
Author
Self-review ✅ — approving for mergeReviewed the full diff + changed files in-tree, ran the targeted tests, and verified CI. Correctness of the re-route
All fast/default animate routing sites covered
seedance still reachable
Tests assert the new behavior
CI: all required checks green (Root unit suite, Bench regression, zero-regression gate, Bun, Node 20, all three Vercel deploys). No regressions or typos found. Non-destructive + one-flag reversible. LGTM — merging. |
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.
TL;DR
prefer_fast:true(and the no-tier default) foranimatecurrently routes toseedance-i2v-fast— the single worst i2v capability on the network. This PR temporarily re-routes the fast/default animate tier to the warmpixverse-i2v.Expected impact: i2v fast-path success ~33% → ~100%, latency ~180s → ~48s.
Evidence (STORYBOARD-MCP-PERF-INVESTIGATION, 2026-07-20)
seedance-i2v-fasthas no warm ("live") orchestrator. Live tests + 7-day server telemetry agree:seedance-i2v-fast(current fast default)pixverse-i2v(this PR's fast default)/inferenceceiling (This operation was aborted).What changed
Single source of truth:
lib/sdk/fast-animate.tsexportsFAST_ANIMATE_CAP, gated by envSEEDANCE_I2V_FAST_WARM(defaultfalse→pixverse-i2v). Every fast/default animate routing site now imports it:lib/mcp-server/tools/create-media.ts—ACTION_TO_FAST_CAP.animate(prefer_fast) + entity-anchored animate path;prefer_fastschema description updated.lib/mcp-server/tools/director-re-render.ts—prefer_fastdescription updated (routing already inherited from create_media).lib/episodes/animate.ts+lib/episodes/production-manager.ts—selectModel("fast").lib/domains/registry.ts— product-marketinganimatecapability hint.This is a TEMPORARY mitigation — and it is reversible
seedance-i2v-fastis not deleted. It stays fully reachable viamodel_override:"seedance-i2v-fast"and the"seedance"keyword.SEEDANCE_I2V_FAST_WARM=true(no code change / redeploy) or revert this commit — flips every routing site back at once.seedance-i2v-fast/seedance-i2v/seedance-mini-i2v) has a warm orchestrator so it clears well under the ~180s ceiling.Why a flag over a hard change
The repo already routes via typed capability tables; a single env-gated constant keeps the change minimal + typed, gives ops a redeploy-free revert, and centralizes the re-enable to one line. The real fixes (warm orch + timeout tiering + stop billing aborts) are structural and tracked in separate issues.
Tests
tests/unit/fast-animate-reroute.test.ts: asserts fast animate no longer selectsseedance-i2v-fastand selectspixverse-i2v, and thatseedance-i2v-faststays reachable viamodel_override.tests/unit/episode-animate.test.tsmirror.eslintclean on changed files (0 errors).Related issues (structural fixes a routing change can't solve)
/inferenceabort ceiling + billing of aborted jobs.Made with Cursor