How the Seedance 2.0 Reference Transfer Contract Works: A Complete Technical Guide

The Seedance 2.0 Reference Transfer Contract is a core policy that forces every multimodal reference to declare exactly what it controls and what it ignores, preventing unintended attribute bleed-through across images, videos, audio, and final-frame tags.

The Seedance 2.0 Reference Transfer Contract governs how multimodal references flow through a generation pipeline. Written in strict markdown at references/reference-transfer-contract.md, it functions as compile-time policy rather than runtime logic—ensuring that prompts carrying references like @Image1 or @Video1 behave predictably before any diffusion inference begins.

Exact Tag Preservation: Immutable Identifiers

The contract's first enforcement layer prevents identifier drift. User-supplied tags are frozen in the exact form provided.

- @Image1 and @image1 are treated as different identifiers
- Whitespace around tags is preserved but cannot be added or removed
- Renumbering (@Image1 → @ImgA) is forbidden

This stability matters because downstream skills and the prompt compiler build lookup tables from these tags. Any mutation would break cross-clip references in multi-clip sequences. The seedance-sequence skill relies on this guarantee when assembling surface-prompt profiles across clip boundaries.

Role Separation by Media Type

Every reference must carry exactly one primary role, selected from a fixed taxonomy tied to the underlying media type.

Image Roles

  • identity – subject appearance, face, body structure
  • product – merchandise, objects, branded items
  • pose – body configuration, hand positions
  • costume – clothing, accessories, style layer
  • environment – background, lighting context, set design
  • first-frame – opening visual state (for video seeding)
  • last-frame – terminal visual state (for continuation matching)

Video Roles

  • source-clip – full semantic and aesthetic donor
  • motion – camera movement, action dynamics, rhythm
  • camera – framing, lens characteristics, angle progression
  • timing – beat alignment, tempo mapping
  • blocking – actor positioning and spatial choreography
  • continuity source – canonical identity anchor across sequence

Audio Roles

  • tempo – bpm, speed, pacing grid
  • ambience – environmental sound bed
  • music phase – harmonic or melodic structure position
  • rhythm – percussive pattern, groove
  • delivery tone – speaking voice characteristics
  • dialogue source – lip-sync or vocal timbre reference

Final Frame Roles

  • observed state – measured endpoint condition
  • target endpoint – desired conclusion state

By pinning one role per reference, the contract makes attribute conflicts explicit and resolvable at prompt-compile time rather than emerging as silent failures in generated outputs.

Transfer-and-Ignore Clauses: Explicit Permission Boundaries

The contract mandates a structured clause format that separates allowed from forbidden influence:


[ReferenceTag] controls [role] only; ignore [comma-separated dimensions].

This pattern appears directly in compiled prompts before the prompt-compiler processes them. Three canonical examples demonstrate the mechanics:

Example 1: Image Identity Lock

@Image1 controls identity only; ignore motion, camera, audio, environment.

The subject appearance from @Image1 transfers. Motion, camera behavior, sound, and background are generated fresh.

Example 2: Video Motion Isolation

@Video1 controls motion only; ignore identity, environment, logo, audio.

Camera movement and action dynamics flow from the video. Characters, setting, branding, and sound are suppressed.

Example 3: Multi-Subject Disambiguation

@Video1[subject-2] controls camera only; ignore identity, motion, audio.

The bracket selector [subject-2] chooses which subject within a multi-person clip supplies the camera reference—critical when one figure holds the frame composition you want, but another performs the primary action.

Skill Integration: Where the Contract Lives

Two skills automatically inject the contract into generation workflows:

seedance-sequence

Located at skills/seedance-sequence/SKILL.md, this skill loads [ref:reference-transfer-contract] during surface-prompt profile preparation. Every clip in a multi-clip project validates against the contract before surface-prompt compilation begins.

seedance-continuation

Located at skills/seedance-continuation/SKILL.md, this skill ensures continuation clips inherit reference roles without reassignment. Identity, environment, and other immutable dimensions established in prior clips remain protected.

The top-level SKILL.md references the contract in its "Reference authority" section, reminding all downstream components to enforce exact tag preservation and role-based transfer.

Special Case: Continuity Source vs. Motion Reference

The contract distinguishes between transient opening states and canonical identity anchors:

  • A motion reference (controls motion only) carries the visual dynamics of a specific moment
  • A continuity source (controls continuity source) establishes the persistent identity that must survive across multiple clips

This separation prevents the "opening shot problem"—where a character's appearance in frame 1 of a source video accidentally becomes locked as the canonical identity for an entire sequence.

Key Files and Their Responsibilities

File Path Contract Function
references/reference-transfer-contract.md Formal definition; source of truth for all three enforcement layers
skills/seedance-sequence/SKILL.md Multi-clip project integration; loads contract during profile prep
skills/seedance-continuation/SKILL.md Continuation clip integration; preserves established reference roles
SKILL.md Top-level overview; documents "Reference authority" requirements

Summary

  • Exact tag preservation ensures stable identifiers across the generation pipeline—no renaming, renumbering, or case changes permitted
  • Single primary roles per reference prevent attribute bleed-through between identity, motion, camera, and environment dimensions
  • Transfer-and-ignore clauses make permission boundaries explicit in prompt text before compilation
  • Skill integration via seedance-sequence and seedance-continuation automates contract enforcement for multi-clip and continuation workflows
  • Special handling for continuity source vs. motion reference protects canonical identity against transient state pollution

Frequently Asked Questions

What happens if a reference lacks a transfer-and-ignore clause?

The contract is enforced at prompt-compile time. Missing clauses typically trigger validation errors in the seedance-sequence or seedance-continuation skills, causing the generation request to fail before inference begins. The skills explicitly load [ref:reference-transfer-contract] to catch these omissions.

Can one reference control multiple roles simultaneously?

No. The contract designates a single primary role per reference. If you need identity from one image and environment from another, you must create two separate references (@Image1 and @Image2) with distinct role assignments. Multi-role ambiguity is explicitly forbidden to prevent unpredictable attribute mixing.

How does the multi-subject selector [subject-N] interact with role separation?

The selector narrows which entity within a source clip supplies the reference, but the role constraint still applies. In @Video1[subject-2] controls camera only, only subject-2's framing behavior transfers; their identity, motion, and other attributes are ignored per the clause. This solves collisions where multiple people or objects appear in the same source media.

Where is the contract version tracked?

The canonical version lives in references/reference-transfer-contract.md at the repository root. The seedance-sequence and seedance-continuation skills reference this file via [ref:reference-transfer-contract], ensuring all components use the same policy revision without manual synchronization.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →