منبع حقیقت، محتوا، انتشار و رسانه · فصل ۴ — Media Library، Factory، FFmpeg، Workbench و QA · 168

Creative Workbench and Variant Graph

Model a creative workbench as an explicit variant graph whose immutable nodes identify exact media variants and whose typed edges record derivation/composition/input relationships and transformation context, so branches and editorial selections remain auditable without turning the editor canvas or filename into provenance authority. می‌تواند «Creative Workbench و Variant Graph» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

Creative Workbench و Variant Graph — fa-IR

Lesson summary

Model a creative workbench as an explicit variant graph whose immutable nodes identify exact media variants and whose typed edges record derivation/composition/input relationships and transformation context, so branches and editorial selections remain auditable without turning the editor canvas or filename into provenance authority.

می‌تواند «Creative Workbench و Variant Graph» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

This lesson produces

می‌تواند «Creative Workbench و Variant Graph» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

Who it is for

Foundation

Use a guided lesson-specific evidence matrix and one worked negative case.

Repair

Re-run only the failed owned dimension with a smaller deterministic synthetic fixture.

Experienced

Start from mixed authority/policy/evidence records; require explicit trade-offs and provenance.

Prerequisites

1. The problem: “final-v3” is not lineage

A creative workbench quickly produces crops, headline alternatives, color grades, and composites. If the relationships among those outputs live only in filenames, folders, or editor history, a rename, history compaction, or export can make it impossible to prove which candidate came from which exact bytes and transform. CON-017 turns that ambiguity into an auditable Variant Graph.

2. The owned CON-017 boundary

This lesson owns the Creative Variant Graph & Workbench Decision Ledger v1. It does not define canonical media-library authority, own deterministic transform-recipe reproduction, teach FFmpeg execution, or approve publication. CON-017 records durable lineage and editorial candidate selection; adjacent lessons own rights, QA, and release authorization.

3. Every material variant is an immutable node

Any variant that materially enters the decision flow gets a distinct node with at least variant_node_id, asset_ref, and asset_digest. When bytes change, create a new node. “The same file with a tiny edit” is not enough for provenance: new bytes mean a new identity and a new lineage statement.

4. PROV separates entities from derivation

W3C PROV models provenance using Entity, Activity, and Agent concepts and can represent derivation or revision among distinct entities. That lets a source and each material variant remain separate entities while the transform is represented as an activity. PROV does not define MAKNOW editorial review, rights, or publication policy.

5. An edge needs a type

Two nodes are not merely “related.” A crop or grade normally expresses derivation; a composite needs explicit ingredient relationships; and a computational process should preserve the role of its inputs. An untyped edge or an edge without exact references leaves lineage ambiguous and must remain UNKNOWN or LINEAGE_GAP.

6. What C2PA ingredient relationships contribute

C2PA 2.4 defines parentOf for an ingredient from which the current asset is derived, componentOf when the ingredient is one part of a composition, and inputTo when it is input to a computational process. Those semantics strengthen provenance records, but they do not themselves define branch policy, editorial selection, or publication approval.

7. A branch is different lineage, not a different folder

A branch_id should state why work diverged, such as locale/fa, locale/en, or headline/B. Two directories do not create authoritative branches. A branch becomes durable only when exact nodes, parents, and edges are recorded and each branch can carry its own ingredients independently.

8. Do not model merge as silent inheritance

If a corrected product cutout is merged into only the Persian branch, the English branch must not silently inherit it. Record the merge against the exact branch and ingredient. A sibling receives the new ingredient only when its own edge or merge record says so.

9. Editor state is a supporting reference

workbench_session_id and editor_state_ref can help an audit, but they are not lineage authority. History may be compacted, caches deleted, or the editor project moved. A digest-bound graph remains reconstructable after those changes; editor history alone is not durable provenance.

10. Filenames and thumbnails are not identity

Renaming must not alter the graph. If lexical ordering reverses while node IDs, digests, and edges remain unchanged, lineage is unchanged. Any method that infers “latest” from names such as final2 or final_final is a convenience heuristic, not an authority record.

11. Keep editorial selection separate from provenance

The graph explains how a candidate was produced. The Decision Ledger records which candidate was selected for review or rejected. selected_candidate, rejected_candidate, review_note, and rejected_reason must be durable. A blue UI highlight or active editor tab is not an auditable editorial decision.

12. Never guess through LINEAGE_GAP or ORPHAN

If a candidate has bytes but lacks the required parent or ingredient binding, do not attach it to the closest-looking file. Preserve LINEAGE_GAP or ORPHAN_VARIANT and define a precise recheck trigger. This prevents invented provenance based on directory proximity or visual similarity.

13. Reading the Evidence Matrix

CON-017-T1 places the decisive fields side by side: variant node, digest, branch, parent, edge type, ingredient, recipe reference, workbench session, review note, candidate state, selected/rejected reason, and lineage completeness. The table and diagram encode the same semantics; no state depends on color alone.

14. Lab: eight fixtures and 64 assertions

lab://CON-017/CON017-LAB1 contains eight synthetic fixtures: a complete baseline, deleted editor history with durable graph evidence, filename renaming, a node without a digest, an orphan candidate, a composite with a missing ingredient, UI-only selection, and a two-locale transfer. The task is to separate durable graph authority from convenience state and preserve every missing binding explicitly.

15. Transfer: two locale branches, one corrected cutout

The transfer forks a square variant into Persian and English branches. A corrected cutout is merged with componentOf into the Persian branch only, while the older headline is rejected. Earlier nodes are never rewritten; the English branch keeps its original ingredient until its own merge is recorded. The supported result is LINEAGE_READY, not “publishable”: release authority still belongs to CON-018/CON-022.

Assessment

There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.

Q1 application

A square crop is exported and renamed. Which fields keep its lineage authoritative after rename?

lesson ✗AI ✗notes ✗

Q2 diagnosis

A composite references a cutout by filename but has no bound ingredient record. What state should the graph preserve?

lesson ✗AI ✗notes ✗

Q3 decision

The editor highlights variant B but no decision-ledger record exists. Can the selection be treated as durable?

lesson ✗AI ✗notes ✗

Q4 transfer

Fork FA/EN variants and merge a corrected cutout into FA only. Which branch inherits the corrected ingredient and why?

lesson ✗AI ✗notes ✗

Q5 reflection

State one claim proven by a complete variant graph and one publication claim it does not prove.

lesson ✗AI ✗notes ✗
Assessment rubric

Critical dimensions: exact node identity, typed edge binding, negative/unknown-state preservation, bounded lineage decision, and changed-context transfer.

A sufficient submission never infers parentage from filename/editor state, never silently propagates a merge to sibling branches, and never turns LINEAGE_READY into publication approval.

References & freshness

·
·

Case studies

Lab files

Use the supplied synthetic fixtures to evaluate durable variant identity, typed edge binding, lineage completeness, orphan state, and editorial selection recording.

The editor history and filename are convenience evidence only. Do not infer missing parent/ingredient bindings from visual similarity or folder order. Run python run_checks.py to verify fixture shape before implementing starter.py.