Skip to content

Atlas image-to-video must select the image-to-video model - #26

Merged
leochenpm merged 1 commit into
mainfrom
fix/atlas-i2v-default-model
Aug 12, 2026
Merged

Atlas image-to-video must select the image-to-video model#26
leochenpm merged 1 commit into
mainfrom
fix/atlas-i2v-default-model

Conversation

@leochenpm

Copy link
Copy Markdown
Collaborator

Follow-up to #13, as flagged in the review comment. Independent of the #14#25 sync stack (branched off current main).

The defect

Atlas exposes image-to-video as its own model id (bytedance/seedance-2.0/image-to-video), and the text-to-video model's schema has no image field. #13 defaulted to the t2v id unconditionally and attached image anyway — so the default-config i2v path either gets rejected or silently ships a video that ignores the first frame. GENERATE's character-consistency flow (locked portrait → i2v) rides exactly that path.

The fix

  • Default the model by task type: image_url present → bytedance/seedance-2.0/image-to-video; absent → bytedance/seedance-2.0/text-to-video. An explicit model (param or config) always wins.
  • Fail closed on explicit mismatches, naming the fix: a t2v model + first frame throws (silent wrong delivery otherwise); an i2v model without a frame throws (cannot run).

Verification

Build green; 218 tests pass. The prior test that pinned the broken combination (image + t2v default) now pins the i2v default; new cases cover the no-image default and both mismatch refusals. Model ids and the schema difference verified against the Atlas model pages linked above.

Known remaining nits from the #13 review (out of scope here): data.error detail dropped on a failed poll; the no-provider error message still says provider=doubao; ratio: "adaptive" / duration: -1 / -SR resolutions not expressible through the current param enums.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV

Follow-up to #13. Atlas Cloud exposes image-to-video as its own model id
(bytedance/seedance-2.0/image-to-video), and the text-to-video model's
published schema has no `image` field — so the previous default (always
text-to-video, image attached anyway) made the default-config
image-to-video path ship a video that ignores the first frame, or get
rejected, without any error naming the cause. GENERATE's
character-consistency flow (locked portrait -> i2v) rides exactly that
path.

- Default the model by task type: image_url present -> the i2v model id,
  absent -> text-to-video, explicit model/config always wins.
- Fail closed on an explicit mismatch, naming the fix in the error: a
  text-to-video model given a first frame would silently produce a
  wrong delivery, and an image-to-video model without a frame cannot
  run at all.

Verified: build green; 218 tests pass — the prior test that pinned the
broken combination (image + t2v default) now pins the i2v default, plus
new cases for the no-image default and both mismatch refusals. Model
ids and the schema difference confirmed against the Atlas model pages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV
@leochenpm
leochenpm merged commit 7387d99 into main Aug 12, 2026
1 check passed
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.

1 participant