برنامه‌ریزی، تحلیل و عملیات پلتفرم · فصل ۴ — Adapter، Capability، Shadow/Direct Publish و Quota · 212

Platform Capability Registry

داده و event دارد اما آن‌ها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمی‌کند. موضوع جاری: «Platform Capability Registry». می‌تواند برای «Platform Capability Registry» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.

Platform Capability Registry — en-US

خلاصهٔ درس

داده و event دارد اما آن‌ها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمی‌کند. موضوع جاری: «Platform Capability Registry».

می‌تواند برای «Platform Capability Registry» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.

خروجی این درس

می‌تواند برای «Platform Capability Registry» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.

پیش‌نیازها

1. مسئله: Feature visibility با API capability یکی نیست

وقتی کاربر در UI یک پلتفرم دکمه‌ای برای «آپلود ویدئو»، «ویرایش پست» یا «گزارش‌گیری» می‌بیند، هنوز معلوم نیست همان عمل از API رسمی، در نسخه فعلی، برای همان نوع حساب و با scope لازم قابل انجام باشد. خروجی این درس Platform Capability Registry v1 است؛ رجیستری‌ای که هر قابلیت را به evidence رسمی و نسخه‌دار متصل می‌کند.

2. مرز درس

PLN-021 فقط capability evidence را مدل می‌کند. Adapter و Policy Snapshot درس PLN-020، Shadow Validation درس PLN-022 و Direct Publish درس PLN-023 خارج از Scope هستند. این درس هیچ publish واقعی یا تماس شبکه‌ای انجام نمی‌دهد.

3. FACT خارجی و MAKNOW DESIGN

GitHub برای REST API یک OpenAPI machine-readable منتشر می‌کند. LinkedIn Marketing API نسخه‌دار است و تغییرات ماهانه می‌تواند رفتار resourceها را تغییر دهد. YouTube برای هر method پارامترها و quota impact را مستند می‌کند؛ videos.list در بررسی 2026-09-16 هزینه 1 quota unit دارد. اما stateهای SUPPORTED / CONDITIONAL / UNSUPPORTED / STALE_EVIDENCE / UNKNOWN MAKNOW DESIGN هستند.

4. requested action را به operation دقیق تبدیل کن

عبارت‌هایی مثل «پلتفرم X از ویدئو پشتیبانی می‌کند» برای Registry کافی نیست. باید مشخص شود action دقیق چیست: read_video_metadata، create_video، update_video یا delete_video. هر operation capability مستقل دارد و موفقیت یک operation، operation دیگر را ثابت نمی‌کند.

5. resource و media type را جدا نگه دار

resource_type مشخص می‌کند روی چه شیئی کار می‌کنیم و media_type نوع داده یا رسانه را محدود می‌کند. پشتیبانی از text post دلیل پشتیبانی از video upload نیست؛ پشتیبانی از video read هم دلیل video update نیست.

6. API version جزو evidence است

Capability بدون api_version ناقص است. اگر مستندات برای نسخه دیگری باشند یا نسخه مورد استفاده sunset/changed شده باشد، state قبلی را reuse نکن. LinkedIn نمونه خوبی است: version header و چرخه نسخه بخشی از قرارداد درخواست‌اند.

7. endpoint/method باید از evidence رسمی بیاید

endpoint_or_method باید به operation مورد درخواست اشاره کند، نه به یک صفحه عمومی یا UI. OpenAPI GitHub می‌تواند شکل operation و schema را نشان دهد؛ در YouTube نیز صفحه‌ی method پارامترهای مجاز همان method را ثبت می‌کند.

8. Auth scope و Account prerequisite دو Gate جدا هستند

داشتن endpoint مستند کافی نیست. ممکن است scope لازم در credential نباشد یا account/product tier prerequisite را نداشته باشد. در این حالت capability می‌تواند CONDITIONAL باشد، نه SUPPORTED.

9. Constraints و Quota را داخل همان row نگه دار

اندازه فایل، نوع media، required parameters، visibility rules و quota relevance باید قابل مشاهده باشند. Quota نامعلوم را صفر یا نامحدود فرض نکن؛ آن را QUOTA_REVIEW کن. Constraint صریحاً ناسازگار می‌تواند capability را UNSUPPORTED کند.

10. Evidence locator، Retrieved At و Provenance

هر row باید evidence_locator، زمان retrieval و provenance_ref داشته باشد. لینک بدون زمان برای APIهای volatile کافی نیست. Evidence قدیمی یا version-mismatched باید STALE_EVIDENCE شود و نیاز به recheck داشته باشد.

11. State machine محدود

SUPPORTED یعنی operation مستند، نسخه منطبق، scope/account/constraint معتبر، quota evidence قابل دفاع و provenance حاضر است. CONDITIONAL یعنی capability مستند است اما یک Gate اجرایی مثل scope، account prerequisite یا quota review باز است. UNSUPPORTED فقط با evidence صریح منفی صادر می‌شود. نبود evidence را UNKNOWN نگه دار؛ evidence قدیمی را STALE_EVIDENCE.

12. Baseline: operation مستند و evidence کامل

در baseline یک operation مستند GitHub با version، endpoint، scope، account prerequisite، constraints، quota relevance و provenance کامل ثبت می‌شود و به SUPPORTED می‌رسد. تصمیم بعدی فقط EXECUTE_SHADOW است؛ این lesson مجوز publish واقعی نمی‌دهد.

case_idplatform_idoperationapi_versionendpoint_or_methodauth_scope_grantedquota_relevanceavailability_statefallback_statenext_decision
baseline_github_documentedgithubcreate_issue2022-11-28POST /repos/{owner}/{repo}/issuesTrueKNOWNSUPPORTEDNONEEXECUTE_SHADOW
ui_only_featureprovider-xauto_magic_edit2026-09—FalseNONEUNKNOWNEVIDENCE_REQUIREDBLOCKED_EVIDENCE
missing_auth_scopelinkedinupdate_campaign202608PATCH /rest/adCampaigns/{id}FalseKNOWNCONDITIONALREAUTH_REQUIREDDEFER_SCOPE_REPAIR
version_mismatchlinkedinread_campaign202607GET /rest/adCampaigns/{id}TrueKNOWNSTALE_EVIDENCEREVERIFY_VERSIONDEFER_RECHECK
unsupported_media_typeprovider-ycreate_mediav3POST /mediaTrueKNOWNUNSUPPORTEDALT_MEDIA_OR_MANUALREJECT_AUTOMATION
missing_provenancegithubcreate_issue2022-11-28POST /repos/{owner}/{repo}/issuesTrueKNOWNUNKNOWNEVIDENCE_REQUIREDBLOCKED_EVIDENCE
quota_unknownprovider-zcreate_postv1POST /postsTrueUNKNOWNCONDITIONALQUOTA_REVIEWDEFER_QUOTA_REVIEW
transfer_youtube_videos_listyoutuberead_video_metadatav3GET /youtube/v3/videosFalseKNOWNSUPPORTEDNONEEXECUTE_SHADOW

13. Shortcutهای خطرناک

UI-visible را به API-supported تبدیل نکن؛ generic supports_video=true نساز؛ read را write فرض نکن؛ scope مفقود را نادیده نگیر؛ version قدیمی را current معرفی نکن؛ و quota نامعلوم را unlimited نکن. این shortcutها باعث false platform confidence می‌شوند.

14. Transfer: همان platform، operation یا media جدید

در transfer یک capability جدید از صفر ساخته می‌شود. مثال این درس videos.list در YouTube است: method و quota impact مستندند، پس read metadata می‌تواند SUPPORTED شود؛ اما از آن نتیجه نمی‌گیریم که upload/update همان evidence را دارد.

15. Lab، Assessment و Freshness

در lab/PLN-021-LAB1/learner/ دستور python run_checks.py را اجرا کن. هشت fixture شامل baseline، UI-only، missing scope، version mismatch، unsupported media، missing provenance، unknown quota و transfer هستند. منابع GitHub، LinkedIn و YouTube در 2026-09-16 دوباره بررسی شده‌اند؛ تغییر bytes پذیرفته‌شده نیازمند package version جدید است.

ارزیابی

پاسخ‌نامه‌ی این درس در بسته‌ی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار می‌فرستد.

PLN-021-S1 retrieval

Why does a provider UI feature not prove the corresponding API capability?

lesson ✗AI ✗notes ✗

PLN-021-S2 application

Build a capability row for a documented operation with version, scope, constraints, quota evidence and provenance.

lesson ✗AI ✗notes ✗

PLN-021-S3 diagnosis

Diagnose a row whose operation is documented but the required auth scope is not granted.

lesson ✗AI ✗notes ✗

PLN-021-S4 transfer

Rebuild the registry row for YouTube videos.list without inferring create/update capability from the read method.

lesson ✗AI ✗notes ✗
ملاک‌های ارزیابی (rubric)
  • Identity and boundary: capability registry is owned; adapter, shadow, and direct publish remain separate.
  • Exact evidence binding: operation, version, method, scope, constraints, quota relevance and provenance are explicit.
  • Typed negative states: UNKNOWN, STALE_EVIDENCE, CONDITIONAL and UNSUPPORTED are not coerced to success.
  • Bounded decision: only SUPPORTED routes to the separate shadow gate.
  • Transfer: changed platform/operation evidence is recomputed rather than copied.

منابع و تازگی

GitHub Docs — About the OpenAPI description for the REST API
·
GitHub REST API is fully described in an OpenAPI-compliant, machine-readable document; interface evidence does not prove account authorization.
LinkedIn Marketing API — Versioning
·
LinkedIn Marketing APIs use versioned releases; current 202608 material demonstrates provider behavior can vary by version.
YouTube Data API — videos.list
·
Method-specific request parameters and quota impact; videos.list currently costs 1 quota unit.

مطالعهٔ موارد (case studies)

SIMPLE

WRONG_APPROACH

TRANSFER_NEAR

فایل‌های آزمایشگاه

دستور python run_checks.py را اجرا کنید. هر fixture را بررسی کنید و سپس rowهای محدود خودتان را بسازید. Lab آفلاین و synthetic است: API key، تماس Provider یا Publish واقعی ندارد.

هدف: capability مستند را از UI visibility جدا کنید و stateهای non-success را صریح نگه دارید.