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

> Understand the Seedance 2.0 reference transfer contract. Learn how this core policy prevents attribute bleed-through across multimodal references like images, videos, and audio.

- Repository: [Iamemily2050 /seedance-2.0](https://github.com/Emily2040/seedance-2.0)
- Tags: deep-dive
- Published: 2026-08-03

---

**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`](https://github.com/Emily2040/seedance-2.0/blob/main/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.

```markdown
- @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**

```text
@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**

```text
@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**

```text
@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`](https://github.com/Emily2040/seedance-2.0/blob/main/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`](https://github.com/Emily2040/seedance-2.0/blob/main/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`](https://github.com/Emily2040/seedance-2.0/blob/main/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`](https://github.com/Emily2040/seedance-2.0/blob/main/references/reference-transfer-contract.md) | Formal definition; source of truth for all three enforcement layers |
| [`skills/seedance-sequence/SKILL.md`](https://github.com/Emily2040/seedance-2.0/blob/main/skills/seedance-sequence/SKILL.md) | Multi-clip project integration; loads contract during profile prep |
| [`skills/seedance-continuation/SKILL.md`](https://github.com/Emily2040/seedance-2.0/blob/main/skills/seedance-continuation/SKILL.md) | Continuation clip integration; preserves established reference roles |
| [`SKILL.md`](https://github.com/Emily2040/seedance-2.0/blob/main/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`](https://github.com/Emily2040/seedance-2.0/blob/main/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.