{
  "schema": "NET001_PUBLIC_CONTRACT_v1",
  "authority": "MAKNOW synthetic exercise design; vendor facts cited separately",
  "profiles": {
    "MIGRATE_ORDERS": {
      "service_id": "orders-refresh",
      "before": {
        "sdk_version": "8.0.100",
        "runtime_version": "8.0.0",
        "target_framework": "net8.0",
        "csharp_language_version": "12.0",
        "global_json_ref": "global.json",
        "global_json": {
          "sdk": {
            "version": "8.0.100",
            "rollForward": "disable",
            "allowPrerelease": false
          }
        },
        "packages": [
          {
            "id": "Synthetic.DisplayAdapter",
            "version": "1.0",
            "compatibility_ref": "package-evidence/1.0"
          }
        ],
        "nullable_context": "enable",
        "warnings_as_errors": true,
        "async_boundary": "TASK_AWAITED_WITH_CANCELLATION",
        "configuration_source": "JSON_PROVIDER",
        "configuration_policy": "TRIM_THEN_EMPTY_FALLBACK",
        "dependency_injection_boundary": "SCOPED_LIFETIME_CONTAINS_AWAIT",
        "source_revision": "orders-v1"
      },
      "target": {
        "sdk_version": "10.0.401",
        "runtime_version": "10.0.12",
        "target_framework": "net10.0",
        "csharp_language_version": "14.0",
        "global_json_ref": "global.json",
        "global_json": {
          "sdk": {
            "version": "10.0.401",
            "rollForward": "disable",
            "allowPrerelease": false
          }
        },
        "packages": [
          {
            "id": "Synthetic.DisplayAdapter",
            "version": "2.0",
            "compatibility_ref": "package-evidence/2.0"
          }
        ],
        "nullable_context": "enable",
        "warnings_as_errors": true,
        "async_boundary": "TASK_AWAITED_WITH_CANCELLATION",
        "configuration_source": "JSON_PROVIDER",
        "configuration_policy": "NULL_EMPTY_MISSING_FALLBACK",
        "dependency_injection_boundary": "SCOPED_LIFETIME_CONTAINS_AWAIT",
        "source_revision": "orders-v2"
      },
      "change_review": [
        {
          "change_id": "CFG_NULL_10",
          "source": "https://learn.microsoft.com/en-us/dotnet/core/compatibility/extensions/10.0/configuration-null-values-preserved",
          "applicability": "APPLICABLE",
          "reason": "JSON provider/binder moves from .NET 8 to 10; null can reach a previously non-null assumption.",
          "test_ref": "config_null"
        },
        {
          "change_id": "CS14_SPAN",
          "source": "https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/10.0/csharp-overload-resolution",
          "applicability": "NOT_APPLICABLE",
          "reason": "The declared source inventory has no span overload calls; language changes to 14 but these calls are absent.",
          "test_ref": "source_inventory"
        }
      ],
      "required_action": "MIGRATE_BOUND_BASELINE"
    },
    "RETAIN_INVOICE": {
      "service_id": "invoice-refresh",
      "before": {
        "sdk_version": "10.0.112",
        "runtime_version": "10.0.12",
        "target_framework": "net10.0",
        "csharp_language_version": "12.0",
        "global_json_ref": "global.json",
        "global_json": {
          "sdk": {
            "version": "10.0.112",
            "rollForward": "disable",
            "allowPrerelease": false
          }
        },
        "packages": [
          {
            "id": "Synthetic.DisplayAdapter",
            "version": "2.0",
            "compatibility_ref": "package-evidence/2.0"
          }
        ],
        "nullable_context": "enable",
        "warnings_as_errors": true,
        "async_boundary": "TASK_AWAITED_WITH_CANCELLATION",
        "configuration_source": "JSON_PROVIDER",
        "configuration_policy": "NULL_EMPTY_MISSING_FALLBACK",
        "dependency_injection_boundary": "SCOPED_LIFETIME_CONTAINS_AWAIT",
        "source_revision": "invoice-v3"
      },
      "target": {
        "sdk_version": "10.0.112",
        "runtime_version": "10.0.12",
        "target_framework": "net10.0",
        "csharp_language_version": "12.0",
        "global_json_ref": "global.json",
        "global_json": {
          "sdk": {
            "version": "10.0.112",
            "rollForward": "disable",
            "allowPrerelease": false
          }
        },
        "packages": [
          {
            "id": "Synthetic.DisplayAdapter",
            "version": "2.0",
            "compatibility_ref": "package-evidence/2.0"
          }
        ],
        "nullable_context": "enable",
        "warnings_as_errors": true,
        "async_boundary": "TASK_AWAITED_WITH_CANCELLATION",
        "configuration_source": "JSON_PROVIDER",
        "configuration_policy": "NULL_EMPTY_MISSING_FALLBACK",
        "dependency_injection_boundary": "SCOPED_LIFETIME_CONTAINS_AWAIT",
        "source_revision": "invoice-v3"
      },
      "change_review": [
        {
          "change_id": "CFG_NULL_10",
          "source": "https://learn.microsoft.com/en-us/dotnet/core/compatibility/extensions/10.0/configuration-null-values-preserved",
          "applicability": "NO_NEW_TRANSITION",
          "reason": "Both sides already use the same .NET 10 JSON behavior; retain its regression case.",
          "test_ref": "config_null"
        },
        {
          "change_id": "CS14_SPAN",
          "source": "https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/10.0/csharp-overload-resolution",
          "applicability": "NOT_APPLICABLE",
          "reason": "The declared source inventory has no span overload calls; language remains explicitly 12.",
          "test_ref": "source_inventory"
        }
      ],
      "required_action": "RETAIN_VERSION_PINS_AND_REVERIFY"
    }
  },
  "expected_tests": {
    "config_missing": {
      "input": {},
      "expected": "Guest"
    },
    "config_null": {
      "input": {
        "Name": null
      },
      "expected": "Guest"
    },
    "config_empty": {
      "input": {
        "Name": ""
      },
      "expected": "Guest"
    },
    "config_name": {
      "input": {
        "Name": " Neda "
      },
      "expected": "Neda"
    },
    "async_failure": {
      "input": "DEPENDENCY_FAIL",
      "expected": "CAUGHT_AT_AWAIT"
    },
    "async_cancellation": {
      "input": "CANCELLED",
      "expected": "CANCELLED_BEFORE_EFFECT"
    },
    "scope_lifetime": {
      "input": "NORMAL",
      "expected": {
        "disposed_before_await": false,
        "disposed_after_await": true
      }
    }
  },
  "package_catalog": {
    "Synthetic.DisplayAdapter": {
      "1.0": {
        "verified_tfms": [
          "net8.0"
        ],
        "status": "SYNTHETIC_VERIFIED_MATRIX"
      },
      "2.0": {
        "verified_tfms": [
          "net8.0",
          "net10.0"
        ],
        "status": "SYNTHETIC_VERIFIED_MATRIX"
      }
    }
  },
  "support_snapshot": {
    "checked_on": "2026-09-12",
    "review_due": "2026-10-18",
    "runtime_families": {
      "net8.0": {
        "channel": "LTS",
        "end": "2026-11-10",
        "current_patch": "8.0.31"
      },
      "net10.0": {
        "channel": "LTS",
        "end": "2028-11-14",
        "current_patch": "10.0.12"
      }
    },
    "sdk_examples_verified": [
      "10.0.401",
      "10.0.112"
    ],
    "scope": "Dated selected-version facts, not an OS/IDE/native dependency support certification."
  },
  "source_inventory": {
    "span_overload_calls": 0,
    "background_workers": 0,
    "database_writes": 0,
    "code_requires_csharp14": false
  },
  "receipt_semantics": "Compile/test/diagnostic records are explicitly synthetic, never publisher .NET execution."
}
