Asset Lifecycle
How assets move through statuses from draft to final approval.
Asset Lifecycle
Every asset in Lazer moves through a defined lifecycle from initial creation to final approval. Understanding these stages and transitions is essential for managing your production workflow.
The Nine Statuses
Asset versions can be in one of nine lifecycle states:
- Draft: Initial state. Asset is a placeholder or work-in-progress. Not yet generated.
- Generated: Asset has been created by an AI platform and captured by the extension. Ready for review.
- Needs Review: Asset has been flagged for human review (quality check, rights verification, etc.).
- Reviewed: Asset has been reviewed and is awaiting approval decision.
- Approved: Asset has been approved for use. This is a key milestone.
- Selected: Asset is the preferred version among alternatives. May or may not yet be approved.
- Final: Asset is locked for final delivery. No further changes expected.
- Rejected: Asset is not suitable for use. Kept for reference but excluded from active workflows.
- Archived: Asset is no longer relevant to the current production but preserved for historical record.
State Diagram
Draft
└─> Generated
├─> Needs Review
│ └─> Reviewed
│ ├─> Approved
│ │ └─> Final
│ └─> Rejected
├─> Selected (can happen at any stage)
└─> Archived (can happen from any state)
Valid Transitions
Not all state changes are allowed. The system enforces logical progressions:
From Draft:
- To Generated (when captured from platform)
- To Archived (if no longer needed)
From Generated:
- To Needs Review (flag for review)
- To Selected (mark as preferred)
- To Approved (fast-track approval)
- To Rejected (immediate rejection)
- To Archived (no longer relevant)
From Needs Review:
- To Reviewed (review complete)
- To Rejected (failed review)
- To Archived (no longer relevant)
From Reviewed:
- To Approved (passed review)
- To Rejected (failed review)
- To Needs Review (requires additional review)
From Approved:
- To Final (lock for delivery)
- To Needs Review (issue discovered after approval)
- To Archived (production cancelled)
From Selected:
- Can transition to any status. "Selected" is a flag, not a terminal state.
From Rejected:
- To Archived (cleanup)
- To Needs Review (reconsider decision)
From Final:
- To Archived (production complete)
- No other transitions allowed (Final is locked)
From Archived:
- No transitions allowed. Archived is terminal.
Status vs Selected
There's an important distinction between the status field and the selected boolean:
Status reflects the approval workflow. It answers: "Where is this asset in the production pipeline?"
Selected reflects preference among alternatives. It answers: "Is this the version we want to use?"
An asset can be:
- Selected but still in Needs Review (preferred version, but not yet approved)
- Approved but not Selected (passed quality check, but a different version is preferred)
- Selected AND Approved (preferred version, ready to use)
Important: Setting
selected: truedoes not change status. Changing status does not automatically select the asset. These are independent dimensions.
Immutability Principle
Asset versions are immutable. Once created, the core content fields (mediaUrl, prompt, settings) never change.
What this means:
- You never edit an asset version. You create a new version.
- You never delete an asset version. You mark it as Rejected or Archived.
- You always have a complete audit trail of what was generated and when.
Why immutability matters:
- Traceability: You can always trace back to see what was tried and why it was rejected.
- Comparison: You need the original to compare against new attempts.
- Legal compliance: Some industries require complete records of what content was reviewed.
- Undo safety: You can always "unarchive" or reconsider a rejected asset without data loss.
Compare Groups
A compare group is a set of asset versions generated from the same prompt package but on different platforms (or with different settings).
Example workflow:
- Create prompt package P1 for "wide establishing shot of futuristic city."
- Generate on Sora, Veo, and Runway.
- Extension captures all three outputs with the same
compareGroup. - UI shows all three side-by-side.
- You select the best one.
Compare groups enable apples-to-apples comparison across platforms. The compareGroup field links related versions.
Compare group rules:
- Versions in a group typically have the same
promptandshotId. - Only one version in a group should be marked
selected: true(though the system doesn't enforce this). - Compare groups can span different statuses (e.g., one Approved, two Rejected).
Status Transitions in Practice
Typical Workflow
- Draft -> Generated: Extension captures output from Sora. Status automatically set to Generated.
- Generated -> Needs Review: You flag the asset for director review.
- Needs Review -> Reviewed: Director reviews and leaves notes.
- Reviewed -> Approved: Director approves the asset.
- Approved -> Selected: Among 3 approved versions, this one is selected.
- Selected + Approved -> Final: Asset is locked for final delivery.
Fast-Track Workflow
For quick iterations, you can skip intermediate steps:
- Generated -> Approved: Immediately approve a known-good output.
- Approved -> Selected: Mark as preferred.
- Selected + Approved -> Final: Lock for delivery.
Rejection Workflow
- Generated -> Rejected: Asset doesn't meet quality bar.
- Rejected -> Archived: Cleanup rejected assets after production wraps.
Or:
- Reviewed -> Rejected: Failed director review.
- Generate new version (stays separate, doesn't replace rejected version).
Reconsideration Workflow
If you rejected an asset but want to reconsider:
- Rejected -> Needs Review: Flag for re-review.
- Needs Review -> Reviewed -> Approved: Go through normal approval flow.
Status-Based Queries
Common query patterns:
Get all assets pending review:
const pending = await prisma.sceneAssetVersion.findMany({
where: { status: 'NEEDS_REVIEW' }
});
Get all approved assets for a scene:
const approved = await prisma.sceneAssetVersion.findMany({
where: {
sceneId: 'scene_xyz',
status: 'APPROVED'
}
});
Get selected and approved assets (ready to ship):
const readyToShip = await prisma.sceneAssetVersion.findMany({
where: {
selected: true,
status: 'APPROVED'
}
});
Get all versions in a compare group:
const group = await prisma.sceneAssetVersion.findMany({
where: { compareGroup: 'cmp_123' },
orderBy: { platformKey: 'asc' }
});
UI Indicators
Lazer's UI uses visual indicators for status:
- Draft: Gray, dashed border
- Generated: Blue, solid border
- Needs Review: Orange badge
- Reviewed: Yellow checkmark
- Approved: Green checkmark
- Selected: Star icon
- Final: Lock icon, green background
- Rejected: Red X
- Archived: Grayed out, low opacity
These indicators help you quickly scan large asset lists and identify what needs attention.
Best Practices
- Use Needs Review liberally: Flag anything uncertain for explicit review rather than fast-tracking to Approved.
- Mark Selected early: Don't wait for final approval. Select preferred versions as soon as you know which one you like.
- Reject clearly: If an asset is unusable, mark it Rejected immediately to avoid confusion later.
- Archive periodically: After production wraps, archive old rejected and unused assets to keep the workspace clean.
- Never delete: Rely on Rejected and Archived states instead of deletion. You'll thank yourself later when you need to reference old attempts.
Next Steps
Learn about Prompt Packages to understand how to create reusable prompts that work across multiple platforms and compare groups.