داده، SQL، قراردادها و ماشین حالت · فصل ۵ — JSON Schema، OpenAPI، AsyncAPI، Protobuf و gRPC · 69

JSON Schema 2020-12 برای Contracts و Content

داده را ذخیره یا query می‌کند اما constraint، consistency، compatibility و recovery را به یک contract مهندسی تبدیل نمی‌کند. موضوع جاری: «JSON Schema 2020-12 برای Contracts و Content». می‌تواند «JSON Schema 2020-12 برای Contracts و Content» را برای یک domain محدود مدل کند و constraint، compatibility یا recovery evidence لازم را مشخص کند.

JSON Schema 2020-12 for Contracts and Content — en-US

خلاصهٔ درس

داده را ذخیره یا query می‌کند اما constraint، consistency، compatibility و recovery را به یک contract مهندسی تبدیل نمی‌کند. موضوع جاری: «JSON Schema 2020-12 برای Contracts و Content».

می‌تواند «JSON Schema 2020-12 برای Contracts و Content» را برای یک domain محدود مدل کند و constraint، compatibility یا recovery evidence لازم را مشخص کند.

خروجی این درس

می‌تواند «JSON Schema 2020-12 برای Contracts و Content» را برای یک domain محدود مدل کند و constraint، compatibility یا recovery evidence لازم را مشخص کند.

پیش‌نیازها

_Locale: fa-IR · Lesson: DAT-012 · Public order: 69_

خروجی و artifact کاری

این درس برای ساختن رکورد راستی‌آزمایی قرارداد JSON Schema نسخه ۱ است: یک artifact تصمیم که مشاهده، فرض، محدودیت و evidence موردنیاز را از هم جدا می‌کند. هدف حفظ یک مدل قابل‌انتقال است، نه حفظ‌کردن نام ابزارها.

می‌تواند «JSON Schema 2020-12 برای Contracts و Content» را برای یک domain محدود مدل کند و constraint، compatibility یا recovery evidence لازم را مشخص کند.

مدل مرزی

JSON Schema 2020-12 می‌تواند contract ساختاری machine-checkable بسازد، اما validation به dialect اعلام‌شده، vocabularyها، configuration validator و assertionهای واقعاً نوشته‌شده محدود است. valid بودن instance همه business invariantها را ثابت نمی‌کند. contract مفید fixture مثبت، fixture منفی عمدی و تصمیم compatibility برای هر تغییر schema دارد.

در هر بخش سه برچسب نگه دارید: «مشاهده‌شده»، «استنباط محدود» و «نیازمند بررسی». اگر evidence در دسترس نیست، نتیجه را unknown ثبت کنید؛ نام ابزار یا pass شدن یک happy path جای evidence را نمی‌گیرد.

1. Dialect را اعلام کنید

با $schema meta-schema مورد نظر را مشخص کنید. بدون dialect صریح، دو ابزار ممکن است keyword یا vocabulary پشتیبانی‌شده را متفاوت تفسیر کنند.

2. Assertion و annotation را جدا کنید

keywordهایی مانند type، required و bound عددی validity را محدود می‌کنند. metadataهایی مانند title، description و بسیاری از کاربردهای format الزام domain مورد انتظار را خودکار ایجاد نمی‌کنند.

3. Object و array را آگاهانه مدل کنید

برای object، propertyهای required و extension policy را تعیین کنید. برای array، prefixItems tuple-like را از items تکرارشونده جدا کنید و uniqueness/size را فقط با نیاز domain اضافه کنید.

4. داده ردشونده را هم تست کنید

schemaای که فقط fixture valid دیده، مرز خود را ثابت نکرده است. field غایب، type غلط، property ناشناخته، عدد مرزی و union مبهم باید probe عمدی باشند.

5. Compatibility جهت دارد

سخت‌کردن schema consumer می‌تواند داده قدیمی را رد کند؛ آزادکردن producer می‌تواند داده‌ای بسازد که consumer قدیمی نمی‌پذیرد. تغییر را با جهت producer/consumer و retained data بسنجید.

روش پنج‌مرحله‌ای

  1. مرز instance و invariantهایی را که واقعاً structural هستند بنویسید.
  2. draft 2020-12 را pin کنید و کوچک‌ترین مجموعه assertion لازم را بسازید.
  3. در کنار fixtureهای مثبت، برای هر boundary تعیین‌کننده یک fixture منفی بسازید.
  4. suite را با configuration validator انتخاب‌شده اجرا و رفتار format و referenceها را ثبت کنید.
  5. برای هر schema diff اثر producer و consumer را جدا classify و invariantهای application-only را بیرون schema نگه دارید.

مثال حل‌شده

یک content card به id، kind و title نیاز دارد و kind یکی از دو payload shape را انتخاب می‌کند. contract، draft 2020-12 را اعلام می‌کند، با oneOf و requiredهای متقابلاً انحصاری ambiguity را کم می‌کند، object نام‌دار extensions را باز و property ناشناخته top-level را بسته نگه می‌دارد. تست‌ها article و video معتبر، title غایب، payload مبهم و key ناشناخته را پوشش می‌دهند. افزودن extension اختیاری جدا از requiredکردن field قبلی ارزیابی می‌شود.

ماتریس تصمیم و evidence

موضوعمرز/مالکevidenceتصمیم یا محدودیت
dialect2020-12وجود $schemaفرض اجرایی ناشناخته رد شود
fieldهای requiredid/kind/titlefixture مثبت و missing-fieldassertion ساختاری
extensionbag نام‌دار بازtop-level ناشناخته رد شدextensibility محدود
formatرفتار configuration ثبت شدنمونه date-like نامعتبرassertion بیش‌ازحد ادعا نشود
تغییر schemaافزودن field اختیاریsuite قدیم/جدیدclassification جهت‌دار

خطاهای محتمل و روش اصلاح

  • تعمیم validation به همه invariantهای business
  • فرض assertion بودن format در هر implementation
  • یکی‌گرفتن schema identifier با policy نسخه داده
  • بستن property ناشناخته بدون توجه به extensibility

برای هر مورد، ادعا را محدود کنید، یک counterexample بسازید و بنویسید کدام مشاهده می‌تواند آن را تأیید یا رد کند.

تمرین انتقال

سناریو را طوری تغییر دهید که یکی از فرض‌های مثال دیگر برقرار نباشد. بدون کپی‌کردن تصمیم قبلی، رکورد راستی‌آزمایی قرارداد JSON Schema نسخه ۱ را دوباره بسازید؛ سپس تفاوت decision rule و تفاوت دادهٔ ورودی را توضیح دهید.

این درس چه چیزی را ثابت نمی‌کند

این درس certification، تضمین production یا پوشش همه implementationها را ادعا نمی‌کند. نتیجه فقط در مرز سناریو، sourceهای تاریخ‌دار و observationهای ثبت‌شده معتبر است.

خودسنجی

  • [ ] آیا مسئولیت‌ها را از نام framework یا tool جدا کرده‌ام؟
  • [ ] آیا دست‌کم یک failure probe و نتیجه موردانتظار آن را نوشته‌ام؟
  • [ ] آیا fact، inference و design choice از هم مشخص‌اند؟
  • [ ] آیا non-claim و evidence گمشده را ثبت کرده‌ام؟
  • [ ] آیا transfer را روی context تغییرکرده و بدون پاسخ آماده انجام داده‌ام؟

منابع و مرز تازگی

sourceها در 2026-09-19 طبق Bible منجمدشده مرور شده‌اند. تاریخ review_due یک trigger برای بازبینی نسخه‌ای است؛ هیچ بسته‌ای نباید درجا و بدون نسخه جدید تغییر کند.

  • JSONSCHEMA-SPEC — Official specification index; current published JSON Schema version and document set. (https://json-schema.org/specification; review: 2026-12-31)
  • JSONSCHEMA-2020-12 — Draft 2020-12 overview, meta-schema and release semantics. (https://json-schema.org/draft/2020-12; review: 2026-12-31)
  • JSONSCHEMA-CORE — Core dialect, vocabulary, reference and schema-resource semantics. (https://json-schema.org/draft/2020-12/json-schema-core; review: 2026-12-31)
  • JSONSCHEMA-VALIDATION — Validation and format vocabulary semantics. (https://json-schema.org/draft/2020-12/json-schema-validation; review: 2026-12-31)

ارزیابی

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

DAT-012-S1 retrieval

lesson ✗AI ✗notes ✗

DAT-012-S2 application

lesson ✗AI ✗notes ✗

DAT-012-S3 diagnosis

lesson ✗AI ✗notes ✗

DAT-012-S4 decision

lesson ✗AI ✗notes ✗

DAT-012-S5 transfer

lesson ✗AI ✗notes ✗
ملاک‌های ارزیابی (rubric)
DimensionCriticalSufficient evidence
contract/protocol correctnessyesExplanation preserves version/dialect, compatibility/reliability and evidence semantics.
evidence qualityyesPositive, negative and change/repair observations are traceable and separated from inference.
scope disciplineyesAdjacent outcomes and unsupported tool/runtime generalizations are deferred.
transfer independenceyesChanged-context task is solved without decisive scaffold.

A submission passes only when every critical dimension is sufficient and the learner states missing evidence honestly. AI suggestions are not observed evidence; the learner remains accountable for the final bounded judgment.

منابع و تازگی

· PRACTICE_EVOLVING
Official specification index; current published JSON Schema version and document set.
· PRACTICE_EVOLVING
Draft 2020-12 overview, meta-schema and release semantics.
· PRACTICE_EVOLVING
Core dialect, vocabulary, reference and schema-resource semantics.
· PRACTICE_EVOLVING
Validation and format vocabulary semantics.

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

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

با fixture امن محلی، رکورد راستی‌آزمایی قرارداد JSON Schema نسخه ۱ را بسازید. ابتدا prediction را بنویسید؛ سپس baseline و failure probeهای اعلام‌شده را ثبت کنید و observation مثبت و منفی را نگه دارید. transfer را بدون کپی تصمیم مثال انجام دهید.

starter عمداً classification یا risk decision نهایی را انتخاب نمی‌کند. evaluate_record.py و evidence template را تکمیل کنید. اجرای python3 ../run_checks.py فقط environment و شکل fileها را بررسی می‌کند و تصمیم محتوایی شما را grade نمی‌کند.

مرز ایمنی: No production system/data, no external account/service dependency, and all failure probes must be bounded and deterministic.

رسانه و اسلایدهای درس

MAKNOW_DAT-012_DECISION_EVIDENCE_TABLE_v1.0.0.svg
DECISION EVIDENCE TABLE v1.0.0.svg
MAKNOW_DAT-012_FAILURE_REPAIR_v1.0.0.svg
FAILURE REPAIR v1.0.0.svg
MAKNOW_DAT-012_PRIMARY_MODEL_v1.0.0.svg
PRIMARY MODEL v1.0.0.svg
MAKNOW_DAT-012_WORKED_EXAMPLE_v1.0.0.svg
WORKED EXAMPLE v1.0.0.svg

فایل‌های آموزشی (دانلود)

XLSXJSON Schema Contract Verification Record v1 v1.0.0.xlsxفایل‌های آموزشی (دانلود)
DOCXJSON Schema Contract Verification Record v1 WORKSHEET v1.0.0.docxفایل‌های آموزشی (دانلود)
PDFJSON Schema Contract Verification Record v1 WORKSHEET v1.0.0.pdfفایل‌های آموزشی (دانلود)