{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platoskallipolis.com/schemas/revalidation-discovery-surface-drift.v1.json",
  "title": "Plato's Kallipolis revalidation discovery surface drift contract",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema",
    "contractVersion",
    "state",
    "snapshotAt",
    "sources",
    "counts",
    "artifacts",
    "contractHash",
    "boundaries",
    "privacy"
  ],
  "properties": {
    "schema": {
      "const": "kallipolis.revalidation-discovery-surface-drift.v1"
    },
    "contractVersion": {
      "const": "1.0.0"
    },
    "state": {
      "const": "verified-local-discovery-surface-contract"
    },
    "snapshotAt": {
      "type": "string",
      "format": "date-time"
    },
    "sources": {
      "$ref": "#/$defs/sources"
    },
    "counts": {
      "$ref": "#/$defs/counts"
    },
    "artifacts": {
      "type": "array",
      "minItems": 27,
      "maxItems": 27,
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/artifact"
      }
    },
    "contractHash": {
      "$ref": "#/$defs/digest"
    },
    "boundaries": {
      "$ref": "#/$defs/boundaries"
    },
    "privacy": {
      "$ref": "#/$defs/privacy"
    }
  },
  "$defs": {
    "digest": {
      "type": "string",
      "pattern": "^sha256:[a-f0-9]{64}$"
    },
    "source": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "path",
        "surfaceHash",
        "artifactCount"
      ],
      "properties": {
        "path": {
          "type": "string",
          "minLength": 1
        },
        "surfaceHash": {
          "$ref": "#/$defs/digest"
        },
        "artifactCount": {
          "const": 27
        }
      }
    },
    "sources": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "catalog",
        "llmsTxt",
        "sitemap"
      ],
      "properties": {
        "catalog": {
          "$ref": "#/$defs/source"
        },
        "llmsTxt": {
          "$ref": "#/$defs/source"
        },
        "sitemap": {
          "$ref": "#/$defs/source"
        }
      }
    },
    "counts": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "catalogArtifacts",
        "llmsTxtArtifacts",
        "sitemapArtifacts",
        "crossSurfaceIntersection",
        "missingSurfaceMemberships",
        "additionalSurfaceMemberships"
      ],
      "properties": {
        "catalogArtifacts": {
          "const": 27
        },
        "llmsTxtArtifacts": {
          "const": 27
        },
        "sitemapArtifacts": {
          "const": 27
        },
        "crossSurfaceIntersection": {
          "const": 27
        },
        "missingSurfaceMemberships": {
          "const": 0
        },
        "additionalSurfaceMemberships": {
          "const": 0
        }
      }
    },
    "artifact": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "path",
        "catalogResourceId",
        "schema",
        "state",
        "surfaces",
        "memberHash"
      ],
      "properties": {
        "path": {
          "type": "string",
          "pattern": "^/(schemas|evidence|examples)/[A-Za-z0-9._/-]*revalidation[A-Za-z0-9._/-]*$"
        },
        "catalogResourceId": {
          "type": "string",
          "pattern": "^resource\\.[a-z0-9.-]*revalidation[a-z0-9.-]*$"
        },
        "schema": {
          "type": "string",
          "pattern": "^kallipolis\\.[a-z0-9.-]+\\.v1$"
        },
        "state": {
          "const": "prepared"
        },
        "surfaces": {
          "const": [
            "catalog",
            "llms.txt",
            "sitemap"
          ]
        },
        "memberHash": {
          "$ref": "#/$defs/digest"
        }
      }
    },
    "boundaries": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "publicDeploymentPerformed",
        "sitesVersion",
        "verifiedIntegrationExamples",
        "verifiedIntegrationKpiIncrease",
        "productionStateChanged",
        "organicUseClaimed",
        "walletWrites",
        "niulaiTransactions"
      ],
      "properties": {
        "publicDeploymentPerformed": {
          "const": false
        },
        "sitesVersion": {
          "const": 19
        },
        "verifiedIntegrationExamples": {
          "const": 50
        },
        "verifiedIntegrationKpiIncrease": {
          "const": 0
        },
        "productionStateChanged": {
          "const": false
        },
        "organicUseClaimed": {
          "const": false
        },
        "walletWrites": {
          "const": 0
        },
        "niulaiTransactions": {
          "const": 0
        }
      }
    },
    "privacy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "credentialsStored",
        "identityOrActivityStored",
        "requestOrResponseBodiesStored",
        "walletDataStored"
      ],
      "properties": {
        "credentialsStored": {
          "const": false
        },
        "identityOrActivityStored": {
          "const": false
        },
        "requestOrResponseBodiesStored": {
          "const": false
        },
        "walletDataStored": {
          "const": false
        }
      }
    }
  }
}
