منبع حقیقت، محتوا، انتشار و رسانه · فصل ۱ — Source Authority، Claim، Rights و Approval · 154
Rights, Embargo و Reveal Rules
محتوا یا media تولید میکند اما provenance، rights، version، approval و release boundary را یک سیستم واحد نمیبیند. موضوع جاری: «Rights, Embargo و Reveal Rules». میتواند «Rights, Embargo و Reveal Rules» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
خلاصهٔ درس
محتوا یا media تولید میکند اما provenance، rights، version، approval و release boundary را یک سیستم واحد نمیبیند. موضوع جاری: «Rights, Embargo و Reveal Rules».
میتواند «Rights, Embargo و Reveal Rules» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
خروجی این درس
میتواند «Rights, Embargo و Reveal Rules» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.
1. مسئله واقعی: rights=yes یک مدل خطرناک است
یک asset میتواند منبع معتبر، digest دقیق و claim قابلدفاع داشته باشد اما هنوز برای استفادهٔ موردنظر قابل انتشار نباشد. دلیل ساده است: «حق استفاده» یک بیت نیست. باید بدانیم permission basis چیست، چه کسی حق اعطا داشته، scope دقیق آن چه بوده، attribution چه میخواهد، استفادهٔ تجاری یا derivative مجاز است یا نه، قرارداد یا embargo چه محدودیتی دارد و reveal برای کدام audience و در چه زمان مجاز است. این درس بهجای rights=true یک ماتریس تصمیم قابلممیزی میسازد.
2. چهار لایه را مستقل نگه دار
برای هر asset حداقل چهار لایه را جدا کن: Rights Basis، Use Scope، Embargo/Contract و Reveal State. Rights Basis میگوید مجوز از کجا آمده است. Use Scope میگوید purpose، media، territory، commercial/derivative و attribution چه وضعی دارند. Embargo/Contract محدودیت زمانی یا قراردادی را نگه میدارد. Reveal State میگوید audience فعلی اجازهٔ دیدن یا انتشار دارد یا نه. سبز بودن یکی، دیگری را سبز نمیکند.
3. هویت و نسخه قبل از حقوق
تصمیم rights باید به همان bytes/version که قرار است استفاده شود bind شود. asset_id پایدار برای lookup خوب است، اما برای تصمیم publication باید asset_version_ref یا digest دقیق هم ثبت شود. اگر bytes یا ingredient عوض شوند، تصمیم قبلی را به نسخه جدید به ارث نده. CON-001 authority/version binding را مالک است؛ این درس همان binding را مصرف میکند و scope استفاده را روی آن میسنجد.
4. Permission basis را صریح ثبت کن
یک ردیف policy باید روشن کند basis کدام است: ownership، CC license، custom grant، contract، public-domain assertion یا وضعیت نامشخص. برای هر basis، evidence ref و exact version/terms را نگه دار. عبارتهایی مثل «از اینترنت گرفته شد»، «free image»، «اجازه داریم» یا «CC» بدون نوع/نسخه دقیق، evidence کافی برای publication gate نیستند و باید UNKNOWN یا NEEDS_REVIEW باقی بمانند.
5. Creative Commons: irrevocable بودن یعنی چه؟
راهنمای رسمی Creative Commons میگوید وقتی CC license به اثر اعمال شد، آن license برای دریافتکنندگان قابل اتکا و اصولاً irrevocable است؛ همچنین licensor باید حق لازم را مالک یا کنترل کند. این نکته به معنی «هر استفادهای آزاد است» نیست. باید همان license دقیق و conditionهایش را بررسی کنیم و درباره asset خاص، قراردادهای جانبی یا حقوق اشخاص ثالث چیزی را از این قاعده استنتاج نکنیم.
6. BY / SA / NC / ND را به شرطهای قابلمحاسبه تبدیل کن
در ماتریس، شرطهای CC را fieldهای مستقل کن: attribution required، ShareAlike obligation، commercial allowed و derivative/share-of-adaptation allowed. برای مثال NC استفاده تجاری را محدود میکند؛ ND روی اشتراک adaptation محدودیت میگذارد؛ SA برای adaptation توزیعشده الزام license سازگار میآورد. این fieldها را از license واقعی بخوان، نه از حافظه یا filename.
7. Custom grant: scope را از متن evidence استخراج کن
در permission سفارشی، scope ممکن است با purpose، media، territory، duration، audience، derivative، commercial use یا campaign محدود شود. اگر grant فقط internal_preview را پوشش میدهد، انتقال همان bytes به public_commercial_campaign تصمیم تازه میخواهد. اگر territory یا derivative permission در evidence ذکر نشده، آن را true نساز؛ از stateهای UNKNOWN یا NEEDS_COUNSEL استفاده کن.
8. Embargo یک gate مستقل است
embargo_until درباره زمان reveal است، نه درباره ownership یا license. ممکن است rights کاملاً برقرار باشد اما زمان public reveal هنوز نرسیده باشد؛ نتیجه باید BLOCKED_BY_EMBARGO باشد. برعکس، پایان embargo هم rights ناقص را کامل نمیکند. زمان تصمیم را صریح و timezone-aware نگه دار و تصمیم را به همان timestamp bind کن.
9. Reveal audience را با publication channel یکی نگیر
ممکن است یک asset برای INTERNAL_REVIEWERS یا PARTNER_PREVIEW قابل reveal باشد ولی برای PUBLIC نه. بنابراین reveal_audience و requested_audience را مقایسه کن. URL قابل دسترسی یا وجود فایل در storage اثبات reveal permission نیست. اگر audience خارج از scope باشد، state محدود تولید کن و downstream را fail-closed نگه دار.
10. Attribution باید executable باشد، نه یادداشت مبهم
اگر license attribution میخواهد، فقط attribution_required=true کافی نیست. متن یا داده لازم برای Title/Author/Source/License و هر notice اضافی را در record نگه دار و completeness آن را بررسی کن. اگر attribution لازم است اما اطلاعات کافی برای اجرای آن نداریم، decision نباید ALLOW شود؛ این یک missing-obligation است.
11. Contract restriction میتواند license را محدود کند
یک license عمومی و یک قرارداد خصوصی میتوانند در pipeline همزمان وجود داشته باشند. این درس حکم حقوقی تعارض را صادر نمیکند؛ فقط evidenceهای مؤثر را جدا ثبت میکند و وقتی restriction قراردادی decisive و حلنشده است، publication را NEEDS_REVIEW یا NEEDS_COUNSEL میکند. استاندارد بیرونی هرگز جای بررسی authority واقعی پرونده را نمیگیرد.
12. SPDX را برای syntax قرض بگیر، نه برای قانون رسانه
SPDX License Expressions ساختار machine-readable برای ترکیب license identifierها و operatorهای AND، OR و WITH میدهد. این discipline برای parser و audit مفید است، اما SPDX عمدتاً در دنیای software licensing تعریف شده است. اگر media rights، model release، personality right یا contract restriction در SPDX جا نمیشود، آن را در fieldهای جداگانه نگه دار؛ چیزی را به زور داخل expression نریز.
13. Decision matrix باید typed و fail-closed باشد
خروجی را به stateهای دقیق تبدیل کن: ALLOW فقط وقتی همه gateهای لازم برقرارند؛ BLOCKED_BY_EMBARGO برای زمان؛ BLOCKED_BY_LICENSE برای condition ناسازگار؛ BLOCKED_BY_REVEAL برای audience؛ NEEDS_REVIEW برای evidence ناقص قابل حل؛ و NEEDS_COUNSEL وقتی مرز حقوقی decisive ولی نامشخص است. دلیل و recheck trigger کنار decision اجباری است.
14. Transfer: همان bytes، استفاده جدید
تمرین انتقال اصلی Bible را اجرا کن: همان source bytes را از internal_preview به public_commercial_campaign ببر و یک derivative crop اضافه کن. تصمیم قبلی را copy نکن. purpose، commercial use، derivative permission، attribution، embargo و reveal audience را از evidence دوباره محاسبه کن. اگر grant اولیه فقط preview را پوشش میداد یا derivative permission روشن نیست، state باید محدود بماند.
15. خروجی نهایی و non-claimها
Rights–Embargo–Reveal Policy Matrix v1 باید Asset ID/Version، Rights Basis، Owner/Grant، License Version، Attribution، Derivative/Commercial، Territory/Media/Purpose، Embargo Until، Reveal Audience/State، Contract Restriction، Evidence Ref، Decision، Reason و Recheck Trigger را داشته باشد. این درس legal advice نیست، source authority را تعیین نمیکند، confidence claim را نمیسنجد، approval revocation را مالک نیست و release manifest نهایی را نمیسازد.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
Q1 concept
Q2 diagnosis
Q3 diagnosis
Q4 transfer
ملاکهای ارزیابی (rubric)
| Dimension | Pass evidence |
|---|---|
| Exact binding | Decision references exact asset version/digest and permission evidence. |
| Scope separation | Purpose, derivative, commercial, territory/media and audience are not collapsed. |
| Embargo/reveal | Timing and audience gates are evaluated independently from rights. |
| Unknown handling | Missing decisive evidence remains NEEDS_REVIEW/NEEDS_COUNSEL. |
| Transfer | Changed use/derivative context is recomputed instead of copied. |
منابع و تازگی
مطالعهٔ موارد (case studies)
فایلهای آزمایشگاه
Implement evaluate(case) in starter.py. Evaluate exact evidence binding, permission/use scope, attribution, derivative/commercial constraints, embargo timing and reveal audience as separate gates.
Return eight fields: decision, rights_basis_ok, purpose_ok, derivative_ok, embargo_ok, reveal_ok, attribution_ok, and evidence_bound.