{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://paloframework.org/schemas/policywatcher-signal.schema.json",
  "title": "PALO PolicyWatcher Monitoring Signal",
  "type": "object",
  "required": ["format", "schemaVersion", "signalId", "observedAt", "source", "summary", "changeType", "subjects", "confidence", "authority", "suggestedHandoff"],
  "properties": {
    "format": { "const": "palo-policywatcher-signal" },
    "schemaVersion": { "const": "1.0.0" },
    "signalId": { "type": "string", "pattern": "^signal-[a-z0-9-]+$" },
    "observedAt": { "type": "string", "format": "date-time" },
    "source": {
      "type": "object", "required": ["sourceId", "title", "url", "publisher", "checkedAt"],
      "properties": { "sourceId": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string", "format": "uri" }, "publisher": { "type": "string" }, "checkedAt": { "type": "string", "format": "date-time" } },
      "additionalProperties": true
    },
    "summary": { "type": "string", "minLength": 1 },
    "changeType": { "enum": ["new-publication", "amendment", "guidance", "enforcement", "consultation", "correction", "unknown"] },
    "subjects": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } },
    "jurisdictions": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
    "confidence": { "type": "object", "required": ["level", "score", "rationale"], "properties": { "level": { "enum": ["low", "medium", "high"] }, "score": { "type": "number", "minimum": 0, "maximum": 1 }, "rationale": { "type": "string", "minLength": 1 } }, "additionalProperties": true },
    "authority": { "type": "object", "required": ["status", "disclaimer"], "properties": { "status": { "const": "non-authoritative-monitoring-signal" }, "disclaimer": { "type": "string", "minLength": 20 } }, "additionalProperties": true },
    "suggestedHandoff": { "type": "object", "required": ["module", "eventName", "reviewGateIds"], "properties": { "module": { "const": "PALO_RegulatoryWatch" }, "eventName": { "const": "palo:policywatcher:signal" }, "reviewGateIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "enum": ["frame", "classify", "assess", "control", "measure", "prove"] } } }, "additionalProperties": true }
  },
  "additionalProperties": true
}
