منبع حقیقت، محتوا، انتشار و رسانه · فصل ۴ — Media Library، Factory، FFmpeg، Workbench و QA · 165
Media Library: Hash, Rights, Variant, QC
محتوا یا media تولید میکند اما provenance، rights، version، approval و release boundary را یک سیستم واحد نمیبیند. موضوع جاری: «Media Library: Hash, Rights, Variant, QC». میتواند «Media Library: Hash, Rights, Variant, QC» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
خلاصهٔ درس
محتوا یا media تولید میکند اما provenance، rights، version، approval و release boundary را یک سیستم واحد نمیبیند. موضوع جاری: «Media Library: Hash, Rights, Variant, QC».
میتواند «Media Library: Hash, Rights, Variant, QC» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
خروجی این درس
میتواند «Media Library: Hash, Rights, Variant, QC» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
پیشنیازها
1. «final.mp4» هویت نیست
Filename، folder، thumbnail و latest-modified برای پیدا کردن فایل مفیدند، اما authority نیستند. دو فایل میتوانند دقیقاً یک نام داشته باشند و byteهای متفاوتی داشته باشند. Media Library باید هویت قابل ممیزی را از labelهای mutable جدا کند.
2. مرز مالکیت CON-014
CON-014 رکورد authority رسانه را میبندد: bytes/digest، source/provenance، rights، variant lineage و QC versioned. Recipe در CON-015، اجرای FFmpeg در CON-016، creative branching در CON-017 و publication gate در CON-018/CON-022 خارج از این outcome هستند.
3. digest فقط byte identity/integrity است
asset_digest همراه digest_algorithm به exact bytes متصل میشود. RFC 9530 هم Content-Digest و Repr-Digest را برای integrity تعریف میکند و صریحاً authentication، authorization یا privacy را تعریف نمیکند. پس digest درست، مجوز استفاده یا تأیید محتوایی نیست.
4. Asset و Source Asset را جدا نگه دار
media_asset_id رکورد bytes فعلی است و source_asset_id مرجع منشأ آن. اگر filename ثابت بماند اما bytes عوض شوند، باید asset identity/digest جدید ثبت شود؛ overwrite کردن تاریخچه باعث از دست رفتن provenance میشود.
5. Provenance رابطه است، نه حدس از مسیر فایل
source_authority_ref و provenance_ref باید منشأ و relation را مشخص کنند. C2PA 2.4 رابطههای ingredient مانند parentOf، componentOf و inputTo را مدل میکند. این metadata برای lineage مفید است، اما بهتنهایی publication approval یا همه حقوق قانونی را ثابت نمیکند.
6. Rights یک لایه مستقل است
rights_basis، rights_scope و rights_expiry باید جدا از digest و provenance ثبت شوند. یک asset میتواند byte-identical و provenance-complete باشد ولی rights آن منقضی یا محدود شده باشد. در این حالت identity ثابت است اما decision باید محدود یا مسدود شود.
7. برچسب «CC» کافی نیست
Creative Commons چند license با شروط متفاوت BY، NC، ND و SA دارد. بنابراین CC بهتنهایی basis کافی برای adaptation یا commercial reuse نیست. license دقیق، version/terms و scope واقعی باید ثبت شوند؛ این درس مشاوره حقوقی ارائه نمیکند.
8. Variant lineage را صریح بساز
هر variant_id باید variant_role، parent، relation و transform_recipe_ref داشته باشد. mobile rendition، proxy و master یک چیز نیستند. variant جدید فقط شاخه خودش را تازه میکند؛ siblingها بدون evidence نباید silent-invalid شوند.
9. QC یک badge واحد نیست
Technical، semantic، rights و aesthetic QC چهار evidence dimension مستقلاند. green بودن technical QC نمیتواند semantic mismatch، rights failure یا aesthetic rejection را جبران کند. هر QC باید qc_record_id و qc_profile_version داشته باشد.
10. Staleness را versioned و typed نگه دار
اگر parent digest، rights event یا QC profile تغییر کند، evidence وابسته ممکن است STALE شود. history قدیمی حذف نمیشود؛ فقط state فعلی و trigger ارزیابی مجدد ثبت میشوند. UNKNOWN نیز نباید خودکار PASS شود.
11. Decision فقط درباره library authority است
LIBRARY_CURRENT یعنی رکورد library برای همان scope و evidence فعلی منسجم است؛ نه اینکه asset خودکار publishable است. RESTRICTED، BLOCK و DEFER نیز باید reason دقیق و recheck trigger داشته باشند.
12. Matrix را از signalهای مستقل بساز
برای هر asset/variant، byte binding، source/provenance، rights، lineage و QC را کنار هم ثبت کن. تصمیم فقط وقتی معتبر است که هیچ critical dimension پشت filename، timestamp، thumbnail یا یک badge پنهان نشده باشد.
13. Failureهای وسوسهانگیز را عمداً تست کن
سه shortcut رایج را رد کن: «جدیدترین فایل پس حتماً authoritative است»، «digest match پس rights هم درست است»، و «green technical QC پس آماده انتشار است». هرکدام یک لایه را با کل سیستم اشتباه میگیرند.
14. Lab: هشت fixture و 64 assertion
Lab هشت case synthetic دارد: baseline، same-name byte change، rights expiry، fresh proxy، lineage mismatch، QC-profile drift، generic CC label و transfer mobile-only. evaluator برای هر case هشت خروجی مستقل میسنجد تا collapse شدن stateها آشکار شود.
15. Transfer: bytes جدید، rights تغییرکرده، فقط mobile regenerated
در transfer، source visually identical ولی byte-new میشود، یک rights grant منقضی میشود و فقط mobile variant دوباره ساخته میشود. باید نشان دهید asset identity، rights state، parent lineage و QC staleness مستقل تغییر میکنند و sibling unaffected بدون دلیل invalid نمیشود.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
AF1 formative
Name the CON-014 owned artifact and one adjacent outcome it does not own.
AF2 formative
Why can a matching digest not close rights or approval? Give one explicit negative case.
AF3 formative
When should QC become STALE rather than be silently overwritten?
AS1 application
Build the Media Asset Authority Record & Variant QC Matrix v1 for the supplied synthetic fixture.
AS2 diagnosis
Diagnose the newest green-QC proxy without using recency as authority.
AS3 decision
Issue a bounded library decision and state what downstream code may rely on.
AS4 transfer
Rebuild after byte-new source, rights expiry, and mobile-only regeneration.
AS5 reflection
State the strongest supported claim, strongest unsupported claim, and one residual risk.
ملاکهای ارزیابی (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.
منابع و تازگی
مطالعهٔ موارد (case studies)
تصاویر درس
فایلهای آزمایشگاه
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.