{
  "schema": "MAKNOW_ASSESSMENT_ITEMS_v1.0",
  "lesson_id": "NET-001",
  "formative": [
    {
      "id": "NET-001-F1",
      "prompt": {
        "fa-IR": "**NET-001-F1 — بازیابی مرز:** چرا «SDK 10 نصب است» برای پذیرفتن سرویس کافی نیست؟ چهار پرسش بالا را با یک شاهد مناسب برای هرکدام پاسخ دهید و یک کار خارج از محدوده نام ببرید. اگر فقط چهار شماره نوشته‌اید، هنوز تفاوت اعلام و مشاهده را نشان نداده‌اید.\n<!-- /MN:SECTION -->",
        "en-US": "**NET-001-F1 — Retrieve the boundary:** Why is “SDK 10 is installed” insufficient to accept the service? Answer the four questions above with an appropriate evidence item for each, and name one out-of-scope activity. Listing four version numbers alone does not demonstrate the distinction between declaration and observation.\n<!-- /MN:SECTION -->"
      },
      "remediation_ref": "lesson://NET-001#section/mental_model"
    },
    {
      "id": "NET-001-F2",
      "prompt": {
        "fa-IR": "**NET-001-F2 — تشخیص منفی:** در `regression_failed.json` چرا build موفق با شکست `config_null` جمع می‌شود؟ pointer نتیجهٔ آزمون را پیدا کنید، تفاوت nullable warning و guard را توضیح دهید و ترمیمی پیشنهاد کنید که انتظار عمومی تست را برای سبزکردن نتیجه تغییر ندهد.\n<!-- /MN:SECTION -->",
        "en-US": "**NET-001-F2 — Diagnose negative evidence:** In `regression_failed.json`, how can a successful build coexist with a failed `config_null` case? Locate the test-result pointer, distinguish a nullable warning from a runtime guard, and propose a repair that does not change the public expectation merely to make the result green.\n<!-- /MN:SECTION -->"
      },
      "remediation_ref": "lesson://NET-001#section/deep_explanation"
    },
    {
      "id": "NET-001-F3",
      "prompt": {
        "fa-IR": "**NET-001-F3 — انتقال:** بدون نگاه به برچسب تصمیم مثال حل‌شده، پاسخ مستقل بسازید. در `submission.transfer.json` همهٔ علت‌ها، شواهد و برنامهٔ ترمیم را بنویسید. ورودی اصلی را حفظ کنید؛ اگر نسخهٔ پیشنهادی می‌سازید، نام جدا بدهید و رسید تازهٔ ساختگی را همان‌طور علامت بزنید. تغییر service یا هش روی رسید قدیمی، مشاهدهٔ تازه نیست. تصمیم دربارهٔ نصب نسخه و تصمیم دربارهٔ کفایت شاهد را جدا توضیح دهید.\n<!-- /MN:SECTION -->",
        "en-US": "**NET-001-F3 — Transfer:** Without consulting the worked example's decision label, create `submission.transfer.json` containing all causes, evidence and the repair plan. Preserve the original input. If you create a proposed variant, use a separate filename and label newly constructed synthetic receipts as synthetic. Changing a service identifier or hash on an old receipt is not a fresh observation. Explain the version-installation decision separately from the evidence-sufficiency decision.\n<!-- /MN:SECTION -->"
      },
      "remediation_ref": "lesson://NET-001#section/guided_and_independent_practice"
    }
  ],
  "summative": [
    {
      "id": "NET-001-S1",
      "type": "retrieval",
      "blocking": true,
      "prompt": {
        "fa-IR": "**NET-001-S1 — مرز:** در یک بند توضیح دهید نوسازی این درس چه چیزی را ثابت می‌کند و چه چیزی را ثابت نمی‌کند. SDK، Runtime، TFM و زبان را جدا کنید؛ یک وضعیت غیرموفق مناسب را با علت به کار ببرید و نشان دهید چرا این کار جای درس API یا تست و میزبانی را نمی‌گیرد.",
        "en-US": "**NET-001-S1 — Boundary:** Explain in one paragraph what this refresh establishes and what it does not. Separate SDK, runtime, TFM and language; use one appropriate non-success state with its cause; explain why the work does not replace the API lesson or the testing and hosting outcome."
      },
      "expected_evidence": "Boundary-correct explanation and one non-goal.",
      "claim_refs": [
        "lesson://NET-001#claim/NET-001-K1",
        "lesson://NET-001#claim/NET-001-K2",
        "lesson://NET-001#claim/NET-001-K3",
        "lesson://NET-001#claim/NET-001-K4"
      ],
      "answer_key": "NOT_EMBEDDED"
    },
    {
      "id": "NET-001-S2",
      "type": "application",
      "blocking": true,
      "prompt": {
        "fa-IR": "**NET-001-S2 — کاربرد:** برای `baseline.json`، جدول کامل و دفتر شواهد را بسازید. هر ۱۷ بُعد حیاتی باید حضور داشته باشد: `sdk_version`، `runtime_version`، `target_framework`، `csharp_language_version`، `support_channel`، `support_end`، `global_json_ref`، `package_target_compatibility`، `nullable_context`، `breaking_change_ref`، `compile_state`، `test_state`، `diagnostic_state`، `baseline_digest`، `candidate_digest`، `review_state` و `audit_event_id`. فیلدهای async، configuration، DI و review_owner در جدول کامل نیز باقی بمانند. به هر ادعا ارجاع بدهید و دامنهٔ تصمیم را بنویسید.",
        "en-US": "**NET-001-S2 — Application:** Build the complete matrix and evidence ledger for `baseline.json`. Include all 17 critical dimensions: `sdk_version`, `runtime_version`, `target_framework`, `csharp_language_version`, `support_channel`, `support_end`, `global_json_ref`, `package_target_compatibility`, `nullable_context`, `breaking_change_ref`, `compile_state`, `test_state`, `diagnostic_state`, `baseline_digest`, `candidate_digest`, `review_state` and `audit_event_id`. Retain async, configuration, DI and review_owner fields in the full matrix as well. Reference every claim and state the decision's scope."
      },
      "expected_evidence": "Complete evidence artifact and bounded decision.",
      "claim_refs": [
        "lesson://NET-001#claim/NET-001-K1",
        "lesson://NET-001#claim/NET-001-K2",
        "lesson://NET-001#claim/NET-001-K3",
        "lesson://NET-001#claim/NET-001-K4"
      ],
      "answer_key": "NOT_EMBEDDED"
    },
    {
      "id": "NET-001-S3",
      "type": "diagnosis",
      "blocking": true,
      "prompt": {
        "fa-IR": "**NET-001-S3 — تشخیص:** بدون حذف SDK جدید از فهرست نصب، `sdk_pin_old.json` را توضیح دهید. نسخهٔ انتخاب‌شده را به دست آورید، فیلد نامعتبر و پیامدش را مشخص کنید و ترمیم حداقلی بنویسید. بگویید پس از اصلاح پین، کدام رسیدها باید به علت تغییر context یا digest دوباره تولید شوند. نقل قول «روی ماشین من کار می‌کند» شاهد کافی نیست.",
        "en-US": "**NET-001-S3 — Diagnosis:** Explain `sdk_pin_old.json` without removing the newly installed SDK from its inventory. Compute the selected version, identify the invalidated field and consequence, and give a minimal repair. Explain which receipts must be regenerated after changing the pin because their context or digest binding changed. “It works on my machine” is insufficient evidence."
      },
      "expected_evidence": "Invalidated field/state, consequence and minimal repair.",
      "claim_refs": [
        "lesson://NET-001#claim/NET-001-K1",
        "lesson://NET-001#claim/NET-001-K2",
        "lesson://NET-001#claim/NET-001-K3",
        "lesson://NET-001#claim/NET-001-K4"
      ],
      "answer_key": "NOT_EMBEDDED"
    },
    {
      "id": "NET-001-S4",
      "type": "transfer",
      "blocking": true,
      "prompt": {
        "fa-IR": "**NET-001-S4 — انتقال:** برای سرویس موجود روی `net10.0`، جدول و پاسخ مستقل بسازید. pin زبان و باند SDK را با نیاز منبع و snapshot پشتیبانی مقایسه کنید؛ تغییر لازم و اختیاری را جدا کنید؛ اعتبار تک‌تک رسیدها را از نو بسنجید. دلیل شما باید از سرویس دوم بیاید، نه از نسخه‌ها یا حکم سرویس اول. برنامهٔ ترمیم، نقطهٔ توقف و محرک بازبینی بعدی را بنویسید.",
        "en-US": "**NET-001-S4 — Transfer:** Build an independent matrix and response for the service already on `net10.0`. Compare its language pin and SDK band with source requirements and the support snapshot; distinguish required from optional changes; reassess every receipt. Your reasoning must come from the second service, not the first service's versions or verdict. Include a repair plan, stop condition and future review trigger."
      },
      "expected_evidence": "Decision recomputed from changed evidence.",
      "claim_refs": [
        "lesson://NET-001#claim/NET-001-K1",
        "lesson://NET-001#claim/NET-001-K2",
        "lesson://NET-001#claim/NET-001-K3",
        "lesson://NET-001#claim/NET-001-K4"
      ],
      "answer_key": "NOT_EMBEDDED"
    }
  ],
  "checker_policy": "Public structure and binding checks; separate semantic and causal-rationale review."
}
