{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://humbleagents.local/schema/outcome-envelope.schema.json",
  "title": "Sanitized outcome envelope",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion", "eventId", "projectPseudonym", "workflow", "result", "categories",
    "confidence", "occurredAt", "versions", "evidenceHashes", "integrity", "authentication"
  ],
  "properties": {
    "schemaVersion": { "const": 1 },
    "eventId": { "type": "string", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" },
    "projectPseudonym": { "type": "string", "pattern": "^prj_v1_[A-Za-z0-9_-]{43}$" },
    "workflow": { "enum": ["setup", "references", "design-system", "canvas", "review", "ads", "product", "improve"] },
    "result": { "enum": ["succeeded", "failed", "blocked", "cancelled"] },
    "categories": {
      "type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true,
      "items": { "enum": ["accessibility", "composition", "copy", "design-system", "interaction", "quality", "delivery", "reliability", "security", "performance", "tooling"] }
    },
    "confidence": { "type": "integer", "minimum": 0, "maximum": 1000 },
    "occurredAt": { "type": "string", "format": "date-time" },
    "versions": {
      "type": "object", "additionalProperties": false,
      "required": ["runtime", "agent", "knowledge"],
      "properties": {
        "runtime": { "$ref": "#/$defs/identifier" },
        "agent": { "$ref": "#/$defs/identifier" },
        "knowledge": { "$ref": "#/$defs/identifier" }
      }
    },
    "evidenceHashes": {
      "type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true,
      "items": { "$ref": "#/$defs/sha256" }
    },
    "protectedEvidenceRef": { "type": "string", "pattern": "^project-evidence:[a-f0-9]{64}$" },
    "integrity": {
      "type": "object", "additionalProperties": false,
      "required": ["algorithm", "sha256"],
      "properties": { "algorithm": { "const": "sha256" }, "sha256": { "$ref": "#/$defs/sha256" } }
    },
    "authentication": {
      "type": "object", "additionalProperties": false,
      "required": ["algorithm", "keyId", "signature"],
      "properties": {
        "algorithm": { "const": "hmac-sha256" },
        "keyId": { "$ref": "#/$defs/identifier" },
        "signature": { "$ref": "#/$defs/sha256" }
      }
    }
  },
  "$defs": {
    "identifier": { "type": "string", "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._-]{0,126}[A-Za-z0-9])?$" },
    "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
  }
}
