{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platoskallipolis.com/schemas/evidence-reputation.v1.json",
  "title": "Plato's Kallipolis Evidence-derived Reputation",
  "description": "A non-transferable, non-purchasable score derived from eligible, current, deduplicated evidence.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "subject", "policyVersion", "observedAt", "score", "band", "components", "excludedEvidence", "boundaries", "claimBoundary"],
  "properties": {
    "schema": {"const": "kallipolis.evidence-reputation.v1"},
    "subject": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "id"],
      "properties": {
        "type": {"enum": ["resource", "provider", "agent"]},
        "id": {"type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$", "maxLength": 160}
      }
    },
    "policyVersion": {"const": "1.0.0"},
    "observedAt": {"type": "string", "format": "date-time"},
    "score": {"type": "integer", "minimum": 0, "maximum": 100},
    "band": {"enum": ["insufficient-evidence", "limited-evidence", "corroborated-evidence", "operational-evidence"]},
    "components": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["evidenceId", "evidenceType", "issuerId", "issuerRelationship", "sourceUrl", "observedAt", "expiresAt", "points"],
        "properties": {
          "evidenceId": {"type": "string"},
          "evidenceType": {"type": "string"},
          "issuerId": {"type": "string"},
          "issuerRelationship": {"enum": ["platform", "independent"]},
          "sourceUrl": {"type": "string", "format": "uri"},
          "observedAt": {"type": "string", "format": "date-time"},
          "expiresAt": {"type": "string", "format": "date-time"},
          "points": {"type": "integer", "minimum": 0}
        }
      }
    },
    "excludedEvidence": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["evidenceId", "reason"],
        "properties": {
          "evidenceId": {"type": "string"},
          "reason": {"enum": ["duplicate", "expired", "failed", "self-attestation", "relationship-not-eligible", "rule-cap-reached", "subject-mismatch", "unknown-type", "invalid"]}
        }
      }
    },
    "boundaries": {
      "type": "object",
      "additionalProperties": false,
      "required": ["transferable", "purchasable", "settlementValue", "niulaiInfluence", "fiatInfluence", "scoreIsDerived"],
      "properties": {
        "transferable": {"const": false},
        "purchasable": {"const": false},
        "settlementValue": {"type": "null"},
        "niulaiInfluence": {"const": false},
        "fiatInfluence": {"const": false},
        "scoreIsDerived": {"const": true}
      }
    },
    "claimBoundary": {"const": "evidence score is scoped operational evidence, not proof of universal trust, identity, safety, or economic value"}
  }
}
