Progress, retries, and run limits
Pipeline states, concurrency caps, retry behavior, and failure handling.
The project workspace combines project status, latest pipeline run state, and live progress snapshots. This keeps the UI current even when a WebSocket reconnects or the browser tab was hidden.
Project statuses
| Status | Meaning |
|---|---|
DRAFT | Project exists but production has not started. Draft projects auto-start when opened. |
GENERATING_SCREENPLAY | The pipeline is writing or preparing the screenplay. |
GENERATING_NARRATION | Narration audio is being generated. |
GENERATING_VISUALS | Images and video clips are being generated. |
GENERATING_MUSIC | Music soundtrack generation is running. |
ASSEMBLING | The timeline is being assembled. |
COMPLETED | Timeline and assets are ready. |
FAILED | The latest run failed. Use the workspace error state for details. |
Progress snapshots
Pipeline snapshots expose a product-facing progress view. The UI uses this to show headline, subheadline, details, ETA, frame counts, current action, blueprint readiness, resumability, and failure category.
The app refreshes the project when a progress snapshot reaches completed, failed, or needs review.
Concurrency caps
Workspace plans limit active productions:
| Plan | Concurrent runs |
|---|---|
| Creator | 1 |
| Studio | 2 |
| Pro | 3 |
| Enterprise | 5 by default |
When the cap is reached, the workspace shows a full-pane cap state. Users can check again or upgrade where applicable.
Retry behavior
If a production fails, the app checks the latest pipeline run:
- If the latest run can resume, Try again resumes from the failed step.
- If it cannot resume but the project can restart, Try again starts a new production attempt.
- If the failure is terminal, the UI does not promise retry.
- If the retry request hits the concurrent-run cap, the cap state appears.
While retrying, the UI treats the project as running immediately and polls until the backend status catches up.
Clarification before start
Starting production can return a "needs clarification" decision. In that case, Studio asks for the missing detail instead of starting the heavy pipeline.
Browser reconnects
The workspace uses both queries and subscriptions. If a live stream drops, the snapshot is refetched so the visible state stays aligned while the client reconnects.