{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platoskallipolis.com/schemas/resource-contradiction-register.v1.json",
  "title": "Plato's Kallipolis Resource Contradiction Register",
  "description": "Local-only deterministic contradiction state. Any unresolved contradiction fails the resource quality gate closed; this output cannot activate a production KPI.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "state", "snapshotAt", "evaluatedResourceCount", "contradictionCount", "openContradictionCount", "resolvedContradictionCount", "withdrawnContradictionCount", "qualityFailClosedResourceCount", "resources", "privacy", "productionQualityMetric"],
  "properties": {
    "schema": {"const": "kallipolis.resource-contradiction-register.v1"},
    "state": {"const": "local-only"},
    "snapshotAt": {"type": "string", "format": "date-time"},
    "evaluatedResourceCount": {"type": "integer", "minimum": 0},
    "contradictionCount": {"type": "integer", "minimum": 0},
    "openContradictionCount": {"type": "integer", "minimum": 0},
    "resolvedContradictionCount": {"type": "integer", "minimum": 0},
    "withdrawnContradictionCount": {"type": "integer", "minimum": 0},
    "qualityFailClosedResourceCount": {"type": "integer", "minimum": 0},
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["resourceId", "version", "contentHash", "contradictionState", "qualityGate", "contradictions"],
        "properties": {
          "resourceId": {"type": "string", "pattern": "^resource\\.[a-z0-9]+(?:[.-][a-z0-9]+)*$"},
          "version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"},
          "contentHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
          "contradictionState": {"enum": ["none", "open"]},
          "qualityGate": {"enum": ["pass", "fail"]},
          "contradictions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["contradictionId", "claimId", "state", "openedAt", "lastObservedAt", "resolution", "publicEvidence"],
              "properties": {
                "contradictionId": {"type": "string", "pattern": "^contradiction\\.[a-f0-9]{64}$"},
                "claimId": {"type": "string", "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$"},
                "state": {"enum": ["open", "resolved", "withdrawn"]},
                "openedAt": {"type": "string", "format": "date-time"},
                "lastObservedAt": {"type": "string", "format": "date-time"},
                "resolution": {
                  "type": ["string", "null"],
                  "enum": [null, "resource-corrected", "evidence-refuted", "scope-clarified", "source-withdrawn"]
                },
                "publicEvidence": {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": ["transition", "observedAt", "url", "contentHash"],
                    "properties": {
                      "transition": {"enum": ["opened", "confirmed", "resolved", "withdrawn"]},
                      "observedAt": {"type": "string", "format": "date-time"},
                      "url": {"type": "string", "format": "uri", "pattern": "^https://"},
                      "contentHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"}
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "privacy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["ownerIdentityStored", "ownerActivityStored", "reviewerIdentityStored", "reviewerActivityStored", "contributionActivityStored", "requestDataStored", "walletDataStored"],
      "properties": {
        "ownerIdentityStored": {"const": false},
        "ownerActivityStored": {"const": false},
        "reviewerIdentityStored": {"const": false},
        "reviewerActivityStored": {"const": false},
        "contributionActivityStored": {"const": false},
        "requestDataStored": {"const": false},
        "walletDataStored": {"const": false}
      }
    },
    "productionQualityMetric": {
      "type": "object",
      "additionalProperties": false,
      "required": ["enabled", "value", "reason"],
      "properties": {
        "enabled": {"const": false},
        "value": {"type": "null"},
        "reason": {"type": "string", "minLength": 1}
      }
    }
  }
}
