{
  "schema": "MAKNOW_VISUALS_v1.0",
  "lesson_id": "NET-001",
  "required": true,
  "assets": [
    {
      "asset_id": "NET-001-ASSET-TABLE",
      "learning_question": "Can a reviewer reconstruct the exact old and candidate .NET baselines, identify every applicable compatibility change, and reproduce the evidence that justifies acceptance or rollback?",
      "source_data_spec": "Service / SDK / Runtime / TFM / C# Version / Support Channel / Support End / Package Compatibility / Nullable / Async Boundary / Breaking Change / Compile / Tests / Diagnostics / Baseline Digest / Candidate Digest / Review",
      "interaction_states": [
        "baseline",
        "mutated",
        "unknown-or-disputed",
        "bounded-decision"
      ],
      "placement_semantic_anchor": "NET-001:worked_examples",
      "production_brief": "Render Modern .NET Baseline Matrix and Upgrade Verification Ledger v1 as a compact evidence table with explicit state labels.",
      "asset_lock_state": "SPEC_LOCKED"
    },
    {
      "asset_id": "NET-001-ASSET-FLOW",
      "learning_question": "Which gate must pass before the rollback-safe acceptance?",
      "source_data_spec": "declared project baseline → SDK/runtime/TFM/language resolution → support + compatibility check → breaking-change applicability → bounded candidate change → compile/test/diagnostics → ACCEPT / REPAIR / HOLD → versioned ledger",
      "interaction_states": [
        "evidence",
        "gate",
        "hold",
        "decision"
      ],
      "placement_semantic_anchor": "NET-001:mental_model",
      "production_brief": "Render as a left-to-right decision flow with explicit non-success branches.",
      "asset_lock_state": "SPEC_LOCKED"
    }
  ],
  "accessibility_contract": "Every visual must have a text-equivalent explanation of states, arrows, quantities and exceptions; color alone must never encode PASS/FAIL.",
  "rendered_asset": "derived_text/visuals/NET-001-ASSET-FLOW.svg",
  "fallback": {
    "fa-IR": "معادل متنی نمودار: وضعیت قبلی و زمینه را ثبت کن؛ SDK، Runtime، TFM و زبان را تفکیک کن؛ پشتیبانی و وابستگی‌ها را بررسی کن؛ تغییر ناسازگارِ مرتبط را به رفتار و تست وصل کن؛ نامزد محدود بساز؛ build، تست و diagnostics هم‌زمینه را بخوان؛ نبودن یا کهنه‌بودن شاهد به `HOLD` می‌رسد، تناقض به ترمیم و اجرای دوباره، و کامل‌بودن ورودی ساختگی فقط به `VERIFIED_SYNTHETIC`؛ سپس دفتر نسخه‌دار را نگه دار.",
    "en-US": "The flow's text equivalent: capture the previous state and context; separate SDK, runtime, TFM and language; check support and dependencies; connect relevant breaking changes to behavior and tests; construct a bounded candidate; examine context-bound build, test and diagnostic evidence. Missing or stale evidence leads to `HOLD`; contradiction requires repair and rerun; complete synthetic inputs permit only `VERIFIED_SYNTHETIC`. Preserve the versioned ledger afterward."
  }
}
