AI asset version lineage: trace generation sources and every edited derivative
AI asset version lineage answers a practical question: where did this published file come from, and what depends on it? A filename and prompt history are not enough when a campaign uses a real product photograph, a generated background, a text layer, and several placement crops.
Genace identifies generation jobs and their outputs. Your application must track edits, source references, approvals, storage objects, and publishing destinations. Model completion does not automatically create that production history.
Represent the asset as a graph
Use source nodes for collected media and derivative nodes for transformations. A composite can have several parents. A crop may have one parent and a recipe describing its rectangle. A final video edit can depend on multiple clips and an end-card asset.
Keep edges explicit rather than embedding all history in a single note. That makes it possible to find every derivative affected by a corrected product photograph or a withdrawn copy revision.
Record transformation boundaries
| Node type | Required references | Example change |
|---|---|---|
| Collected output | Job ID and output index | Select another generated candidate |
| Composite | Background and product sources | Replace product photograph |
| Crop | Parent and crop rectangle | Create vertical placement |
| Text composition | Parent and approved copy revision | Correct a translated word |
| Encoded export | Parent and encoding recipe | Create a smaller delivery file |
| Publication | Export and destination ID | Replace the live asset |
These are application records. Do not place the entire graph into an unsupported generation field and expect the gateway to maintain it.
Use immutable nodes for changed bytes
When an editor changes a layer or a crop, create a new derivative identifier. Keep the old object and its review status intact. A human-readable label can move between revisions, but the underlying record should not pretend that two different files are the same version.
Store a content hash after collecting or exporting bytes. The hash helps verify identity, while the graph explains meaning. Two files with different encodings may show the same approved scene but have different hashes and distinct delivery purposes.
Keep the original request parameters with the generation node. A seed is useful provenance, not a guarantee that rerunning the request will recreate the archived output. The stored file is the evidence of what was actually reviewed.
Trace a correction through dependents
Suppose a package label changes. Start at the source artwork node, list its composites, then list crops and published exports derived from those composites. Mark affected derivatives for review rather than assuming every campaign asset needs regeneration.
A missing edge is an operational defect. If a designer creates a composite outside the normal pipeline, provide a simple way to register its parents and recipe before it can be approved.
Acceptance checklist
Pick one published image and reconstruct all its parents without asking the author. Then change a source reference in a staging exercise and verify that every affected export can be found. Confirm that old approvals remain attached to old bytes and that new derivatives require the correct review.
Continue with prompt versioning, campaign naming, and archive policy.
Continue with creative workflows
Where these facts come from
- codebase: src/app/api/v1/images/generations/route.ts
- codebase: src/ai/providers/types.ts
- Application-owned workflow recommendations; human review and post-processing are outside the generation gateway
- Editorial keyword hypothesis; search volume not measured