{
  "lexicon": 1,
  "id": "net.bisks.recant.apology",
  "defs": {
    "main": {
      "type": "record",
      "description": "A public recantation, written to the author's own repo. recant.bisks.net discovers every author's history network-wide via public/lib/global-wall.js (com.atproto.sync.listReposByCollection + a getRepo CAR download, no backend of recant's own) — reading the record straight off the author's own PDS is itself the trust boundary, there's no separate server-side verification step. Each apology also gets its own shareable, personalized-unfurl permalink at /a/<did>/<rkey> (src/index.ts). One record per apology; multiple are allowed, newest first on the wall. Read by recant (https://recant.bisks.net).",
      "key": "tid",
      "record": {
        "type": "object",
        "required": ["text", "createdAt"],
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 1200,
            "maxGraphemes": 300,
            "description": "The apology itself, in the author's own words."
          },
          "subject": {
            "type": "string",
            "maxLength": 200,
            "maxGraphemes": 100,
            "description": "Optional short label for what's being apologized for, e.g. 'assuming OpenAI was at fault'."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the apology was written, as an ISO 8601 datetime."
          }
        }
      }
    }
  }
}
