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

Media Library: Hash, Rights, Variant, and QC

Design and verify a media-library record that binds immutable asset bytes by digest, records source/provenance and rights separately, models variant lineage explicitly, stores technical/semantic QC as versioned evidence, and preserves UNKNOWN/STALE/BLOCKED states instead of promoting a convenient file to publication authority. می‌تواند «Media Library: Hash, Rights, Variant, QC» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

Media Library: Hash, Rights, Variant, QC — fa-IR

Lesson summary

Design and verify a media-library record that binds immutable asset bytes by digest, records source/provenance and rights separately, models variant lineage explicitly, stores technical/semantic QC as versioned evidence, and preserves UNKNOWN/STALE/BLOCKED states instead of promoting a convenient file to publication authority.

می‌تواند «Media Library: Hash, Rights, Variant, QC» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

This lesson produces

می‌تواند «Media Library: Hash, Rights, Variant, QC» را در یک 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. final.mp4 is not identity

A filename, folder, thumbnail, and latest-modified timestamp are useful lookup hints, not authority. Two files can have exactly the same name while containing different bytes. A media library must separate auditable identity from mutable labels.

2. The owned CON-014 boundary

CON-014 owns the media authority record: byte/digest identity, source/provenance, rights, variant lineage, and versioned QC. CON-015 owns reproducible recipes, CON-016 owns FFmpeg execution, CON-017 owns creative branching, and CON-018/CON-022 own publication gates and final media QA.

3. A digest is byte integrity/identity evidence only

asset_digest plus digest_algorithm binds exact bytes. RFC 9530 defines Content-Digest and Repr-Digest for integrity and explicitly does not define authentication, authorization, or privacy. A valid digest therefore does not establish reuse permission or semantic approval.

4. Separate Asset from Source Asset

media_asset_id identifies the current byte-bound record while source_asset_id identifies its source authority. If a filename stays constant but bytes change, create a new byte identity/digest record; overwriting history destroys provenance.

5. Provenance is a relationship, not a path guess

source_authority_ref and provenance_ref record where an asset came from and how it relates to another asset. C2PA 2.4 models ingredient relationships including parentOf, componentOf, and inputTo. That lineage does not by itself grant publication approval or every legal right.

6. Rights are an independent layer

Record rights_basis, rights_scope, and rights_expiry separately from digest and provenance. An asset can remain byte-identical and fully traced while its rights expire or become restricted. Identity stays stable while the decision changes.

7. A generic CC label is insufficient

Creative Commons licenses differ across BY, NC, ND, and SA conditions. A generic CC label cannot safely imply adaptation or commercial-reuse permission. Record the exact license/terms and applicable scope; this lesson does not provide legal advice.

8. Model variant lineage explicitly

Each variant_id needs a variant_role, parent, derivative relation, and transform_recipe_ref. A mobile rendition, proxy, and master are not interchangeable. Regenerating one branch does not silently invalidate unaffected siblings.

9. QC is not one green badge

Technical, semantic, rights, and aesthetic QC are separate evidence dimensions. A technical PASS cannot compensate for a semantic mismatch, rights failure, or aesthetic rejection. Bind each record to qc_record_id and qc_profile_version.

10. Keep staleness versioned and typed

A changed parent digest, rights event, or QC profile can make dependent evidence STALE. Historical evidence remains recorded; current state and recheck trigger change. UNKNOWN must not be converted into PASS for convenience.

11. The decision is about library authority only

LIBRARY_CURRENT means the library record is coherent for its exact scope and current evidence; it does not automatically make the asset publishable. RESTRICTED, BLOCK, and DEFER require an explicit reason and recheck trigger.

12. Build the matrix from independent signals

For each asset/variant, record byte binding, source/provenance, rights, lineage, and QC side by side. A valid decision cannot hide any critical dimension behind a filename, recency signal, thumbnail, or single badge.

13. Test tempting shortcuts deliberately

Reject three common shortcuts: “the newest file is authoritative,” “the digest matches so rights must be fine,” and “technical QC is green so publication is safe.” Each collapses one signal into a system-wide conclusion.

14. Lab: eight fixtures and 64 assertions

The lab includes baseline, same-name byte change, rights expiry, a fresh proxy, lineage mismatch, QC-profile drift, a generic CC label, and a mobile-only transfer. The evaluator checks eight independent outputs per case so state collapse becomes visible.

15. Transfer: new bytes, changed rights, mobile-only regeneration

In the transfer, the source is visually identical but byte-new, one rights grant expires, and only the mobile variant is regenerated. Rebuild the record so byte identity, rights state, parent lineage, and QC staleness change independently while unaffected siblings retain their own history.

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.

AF1 formative

Name the CON-014 owned artifact and one adjacent outcome it does not own.

lesson ✗AI ✗notes ✗

AF2 formative

Why can a matching digest not close rights or approval? Give one explicit negative case.

lesson ✗AI ✗notes ✗

AF3 formative

When should QC become STALE rather than be silently overwritten?

lesson ✗AI ✗notes ✗

AS1 application

Build the Media Asset Authority Record & Variant QC Matrix v1 for the supplied synthetic fixture.

lesson ✗AI ✗notes ✗

AS2 diagnosis

Diagnose the newest green-QC proxy without using recency as authority.

lesson ✗AI ✗notes ✗

AS3 decision

Issue a bounded library decision and state what downstream code may rely on.

lesson ✗AI ✗notes ✗

AS4 transfer

Rebuild after byte-new source, rights expiry, and mobile-only regeneration.

lesson ✗AI ✗notes ✗

AS5 reflection

State the strongest supported claim, strongest unsupported claim, and one residual risk.

lesson ✗AI ✗notes ✗
Assessment rubric

Critical dimensions: exact byte identity; source/provenance; rights; variant lineage; versioned multidimensional QC; typed staleness; bounded decision; transfer. A convenient filename, recency, thumbnail, generic license label, or one green check cannot override missing evidence.

References & freshness

RFC 9530: Digest Fields
·
Content-Digest/Repr-Digest integrity fields and explicit non-coverage of authentication, authorization, or privacy.
C2PA Technical Specification 2.4
·
Ingredient relationship values parentOf, componentOf, and inputTo for asset lineage.
Creative Commons Licenses
·
Official overview of BY, NC, ND, and SA conditions and their differences.

Case studies

Lesson visuals

CON-014-AUTHORITY-PATH

Lab files

Inspect the eight synthetic records and implement evaluate_asset(record) in starter.py. Preserve byte identity, source/provenance, rights, variant lineage, QC, and staleness as separate dimensions. Do not treat filename/recency/one green check as authority.