{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.michaeldariuseastwood.com/schemas/assertion-quarantine.schema.json",
  "title": "AI-generated assertion quarantine register",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion","registerId","policyDate","owner","sourceContext","defaultRule","statuses","entries"],
  "properties": {
    "schemaVersion": {"const":1},
    "registerId": {"type":"string","minLength":1},
    "policyDate": {"type":"string","format":"date"},
    "vocabularyNote": { "type": "string", "description": "Optional. Records that a phrase in this frozen, dated register is banned vocabulary on live surfaces from a stated date, and that the wording is kept as the dated record rather than rewritten. Added 6 September 2026 so the historical-record rule is machine-readable; not required." },
    "owner": {"type":"string","minLength":1},
    "sourceContext": {"type":"string","minLength":1},
    "defaultRule": {"type":"string","minLength":1},
    "statuses": {"type":"array","minItems":1,"uniqueItems":true,"items":{"enum":["unreviewed","unsupported","partially-supported","supported","retracted","prohibited"]}},
    "entries": {"type":"array","minItems":1,"items":{"$ref":"#/$defs/entry"}}
  },
  "$defs": {
    "entry": {
      "type":"object","additionalProperties":false,
      "required":["id","category","assertion","status","publicUse","risk","requiredEvidence","permittedPublicWording","matchTerms"],
      "properties": {
        "id":{"type":"string","pattern":"^AQ-[0-9]{3}$"},
        "category":{"type":"string","minLength":1},
        "assertion":{"type":"string","minLength":1},
        "status":{"enum":["unreviewed","unsupported","partially-supported","supported","retracted","prohibited"]},
        "publicUse":{"enum":["permitted","qualified-only","prohibited"]},
        "risk":{"type":"string","minLength":1},
        "requiredEvidence":{"type":"array","items":{"type":"string","minLength":1}},
        "permittedPublicWording":{"type":["string","null"]},
        "matchTerms":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","minLength":1}},
        "effectiveDate":{"type":"string","format":"date"}
      }
    }
  }
}
