{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://policywatcher.online/schemas/agentic-incident-signal/v1","title":"PolicyWatcher normalized agentic incident signal","type":"object","additionalProperties":false,"required":["id","schemaVersion","providerId","externalId","title","occurredAt","publishedAt","dateBasis","source","providerUrl","tags","capabilityContext","evidenceAttribution","externalProviderReview","localReview","entityAssociations","provenance","boundaries"],"properties":{"id":{"type":"string","pattern":"^pwai_[0-9a-f]{24}$"},"schemaVersion":{"const":"1.0.0"},"providerId":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","maxLength":80},"externalId":{"type":"string","minLength":1,"maxLength":240},"title":{"type":"string","minLength":1,"maxLength":500},"occurredAt":{"type":["string","null"],"format":"date-time"},"publishedAt":{"type":"string","format":"date-time"},"dateBasis":{"type":["string","null"],"maxLength":120},"source":{"type":"object","additionalProperties":false,"required":["name","url"],"properties":{"name":{"type":"string","minLength":1,"maxLength":240},"url":{"type":"string","format":"uri","pattern":"^https://"}}},"providerUrl":{"type":"string","format":"uri","pattern":"^https://"},"tags":{"type":"array","maxItems":40,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100}},"capabilityContext":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"required":["providerCapabilityId","score"],"properties":{"providerCapabilityId":{"type":"string","minLength":1,"maxLength":120},"score":{"type":"integer","minimum":0,"maximum":10}}}},"evidenceAttribution":{"type":["string","null"],"maxLength":120},"externalProviderReview":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["accepted","proposed","rejected","unknown"]}}},"localReview":{"type":"object","additionalProperties":false,"required":["status","reviewedAt","note"],"properties":{"status":{"type":"string","enum":["unreviewed","accepted","rejected"]},"reviewedAt":{"type":["string","null"],"format":"date-time"},"note":{"type":"string","maxLength":1000}}},"entityAssociations":{"type":"array","maxItems":50,"items":{"type":"object","additionalProperties":false,"required":["companyId","companySlug","companyName","matchBasis","mappingVersion","localReview"],"properties":{"companyId":{"type":"string","minLength":1,"maxLength":240},"companySlug":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","maxLength":80},"companyName":{"type":"string","minLength":1,"maxLength":240},"matchBasis":{"const":"canonical-company-name-exact-phrase"},"mappingVersion":{"const":"2026-08-26"},"localReview":{"type":"object","additionalProperties":false,"required":["status","reviewedAt","note"],"properties":{"status":{"type":"string","enum":["unreviewed","accepted","rejected"]},"reviewedAt":{"type":["string","null"],"format":"date-time"},"note":{"type":"string","maxLength":1000}}}}}},"provenance":{"type":"object","additionalProperties":false,"required":["providerId","providerEndpoint","retrievedAt","mappingVersion","digest","metadataOnly"],"properties":{"providerId":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","maxLength":80},"providerEndpoint":{"type":"string","format":"uri","pattern":"^https://"},"retrievedAt":{"type":"string","format":"date-time"},"mappingVersion":{"const":"2026-08-26"},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"metadataOnly":{"const":true}}},"boundaries":{"type":"object","additionalProperties":false,"required":["temporalAssociationNotCausation","externalScoreNotPolicyRisk","providerUnavailableNotNoIncidents","statement"],"properties":{"temporalAssociationNotCausation":{"const":true},"externalScoreNotPolicyRisk":{"const":true},"providerUnavailableNotNoIncidents":{"const":true},"statement":{"const":"External incident metadata is research context. A nearby PolicyWatcher change is a temporal association, not evidence that the incident caused the change. Provider capability scores are not PolicyWatcher policy-risk scores. Provider unavailability never means that no incidents exist."}}}}}