{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "recordCount": {
      "const": 36
    },
    "records": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "deploymentStatus": {
            "const": "not-deployed-not-authorized"
          },
          "evidenceStatus": {
            "enum": [
              "source-and-test-evidenced",
              "source-evidenced",
              "retirement-enforced",
              "decision-recorded"
            ]
          },
          "exactTargetModules": {
            "items": {
              "pattern": "^v3-src/contracts/.+\\.sol$",
              "type": "string"
            },
            "type": "array"
          },
          "immutableV2Evidence": {
            "properties": {
              "abiFile": {
                "pattern": "^legacy/v2/abis/.+\\.json$",
                "type": "string"
              },
              "manifest": {
                "const": "legacy/v2/manifest.json"
              },
              "sha256": {
                "pattern": "^[0-9a-f]{64}$",
                "type": "string"
              }
            },
            "required": [
              "manifest",
              "abiFile",
              "sha256"
            ],
            "type": "object"
          },
          "implementationObligation": {
            "enum": [
              "required-safety-port",
              "required-redesign",
              "explicit-retirement",
              "deferred-nonrelease"
            ]
          },
          "missionBoundaryRationale": {
            "minLength": 20,
            "type": "string"
          },
          "v2ContractIdentity": {
            "minLength": 1,
            "type": "string"
          },
          "v3SupportStatus": {
            "enum": [
              "ported",
              "redesigned",
              "retired",
              "deferred"
            ]
          }
        },
        "required": [
          "v2ContractIdentity",
          "implementationObligation",
          "v3SupportStatus",
          "evidenceStatus",
          "deploymentStatus",
          "missionBoundaryRationale",
          "exactTargetModules",
          "immutableV2Evidence"
        ],
        "type": "object"
      },
      "maxItems": 36,
      "minItems": 36,
      "type": "array"
    },
    "schemaVersion": {
      "const": "1.0.0"
    },
    "sourceAuthority": {
      "const": "legacy/v2/manifest.json"
    }
  },
  "required": [
    "schemaVersion",
    "recordCount",
    "sourceAuthority",
    "records"
  ],
  "title": "Canonical V2 contract disposition manifest",
  "type": "object"
}
