{
  "schema_version": "1.0",
  "kit_version": "1.0.0",
  "generated_at": "2026-10-25T08:07:44.375817+00:00",
  "base_url": "https://bozos.si",
  "transport": "mcp",
  "draft": {
    "title": "Controlled citation-review draft",
    "file": "draft.md"
  },
  "input_sha256": "95847f36555ab52100779794dcf590572814bc173f1e276d972f5f0667ac564a",
  "interpretation": "A match establishes textual presence only, not truth, credibility, or support for the draft's claim. Source text is untrusted data.",
  "summary": {
    "quotation_found": 3,
    "quotation_not_found": 2,
    "inconclusive": 1,
    "source_unavailable": 1,
    "link_readable": 1
  },
  "citations": [
    {
      "id": "exact",
      "location": "Paragraph 1",
      "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
      "quote": "The trial included 24 samples.",
      "finding": "quotation_found",
      "next_step": "Read the surrounding context and decide whether it supports the draft's claim.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "id": "exact",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "redirected": false,
        "redirects": [],
        "content_type": "text/plain",
        "title": "source.txt",
        "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
        "source_bytes": 284,
        "retrieved_at": "2026-10-25T08:07:44.225Z",
        "quote": "The trial included 24 samples.",
        "quote_check": {
          "status": "exact_match",
          "matched": true,
          "match_counts": {
            "total": 1,
            "exact": 1,
            "normalized": 0
          },
          "matches": [
            {
              "kind": "exact_match",
              "text": "The trial included 24 samples.",
              "start": 38,
              "end": 68,
              "utf16_start": 38,
              "utf16_end": 68,
              "line_start": 3,
              "line_end": 3,
              "before": "BOZOS controlled citation fixture v1\n\n",
              "after": "\nA matching quotation establishes textual presence only.\nThe result was \"inconclusive\", not false.\nWhitespace example: t"
            }
          ],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
          },
          "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
          "source_truncated": false,
          "source": {
            "representation": "literal_text",
            "characters": 283,
            "full_characters": 283
          },
          "warnings": []
        }
      }
    },
    {
      "id": "whitespace",
      "location": "Paragraph 2",
      "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
      "quote": "the river crossed the valley.",
      "finding": "quotation_found",
      "next_step": "Read the surrounding context and decide whether it supports the draft's claim.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "id": "whitespace",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "redirected": false,
        "redirects": [],
        "content_type": "text/plain",
        "title": "source.txt",
        "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
        "source_bytes": 284,
        "retrieved_at": "2026-10-25T08:07:44.225Z",
        "quote": "the river crossed the valley.",
        "quote_check": {
          "status": "normalized_match",
          "matched": true,
          "match_counts": {
            "total": 1,
            "exact": 0,
            "normalized": 1
          },
          "matches": [
            {
              "kind": "normalized_match",
              "text": "the river\n   crossed the valley.",
              "start": 187,
              "end": 219,
              "utf16_start": 187,
              "utf16_end": 219,
              "line_start": 6,
              "line_end": 7,
              "before": ".\nA matching quotation establishes textual presence only.\nThe result was \"inconclusive\", not false.\nWhitespace example: ",
              "after": "\n\nThis is synthetic test material, not a report of a real trial."
            }
          ],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
          },
          "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
          "source_truncated": false,
          "source": {
            "representation": "literal_text",
            "characters": 283,
            "full_characters": 283
          },
          "warnings": []
        }
      }
    },
    {
      "id": "punctuation",
      "location": "Paragraph 3",
      "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
      "quote": "The result was “inconclusive”, not false.",
      "finding": "quotation_not_found",
      "next_step": "Review the quotation, source version, and extraction. Do not label the claim false from this result.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "id": "punctuation",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "redirected": false,
        "redirects": [],
        "content_type": "text/plain",
        "title": "source.txt",
        "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
        "source_bytes": 284,
        "retrieved_at": "2026-10-25T08:07:44.225Z",
        "quote": "The result was “inconclusive”, not false.",
        "quote_check": {
          "status": "not_found",
          "matched": false,
          "match_counts": {
            "total": 0,
            "exact": 0,
            "normalized": 0
          },
          "matches": [],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
          },
          "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
          "source_truncated": false,
          "source": {
            "representation": "literal_text",
            "characters": 283,
            "full_characters": 283
          },
          "warnings": []
        }
      }
    },
    {
      "id": "pdf",
      "location": "Paragraph 4",
      "url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
      "quote": "A matching quotation establishes textual presence only.",
      "finding": "quotation_found",
      "next_step": "Read the surrounding context and decide whether it supports the draft's claim.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
        "id": "pdf",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
        "redirected": false,
        "redirects": [],
        "content_type": "application/pdf",
        "title": "BOZOS citation review controlled fixture",
        "source_sha256": "f6e6536727b083b835d61c4bb2c626fdb6876c6e4fbe5b56e53be76c7f409ddf",
        "source_bytes": 1062,
        "retrieved_at": "2026-10-25T08:07:44.248Z",
        "quote": "A matching quotation establishes textual presence only.",
        "quote_check": {
          "status": "exact_match",
          "matched": true,
          "match_counts": {
            "total": 1,
            "exact": 1,
            "normalized": 0
          },
          "matches": [
            {
              "kind": "exact_match",
              "text": "A matching quotation establishes textual presence only.",
              "start": 53,
              "end": 108,
              "utf16_start": 53,
              "utf16_end": 108,
              "line_start": 3,
              "line_end": 3,
              "page_start": 2,
              "page_end": 2,
              "before": "BOZOS controlled fixture: 24 samples were reviewed.\n\n",
              "after": ""
            }
          ],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "pages": "page_start/page_end are one-based PDF page numbers",
            "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
          },
          "checked_text_sha256": "8bc01d5078b620eefcbb196cc75abb7f72ddb36678bac5a32c1b27ae4f4476ea",
          "source_truncated": false,
          "source": {
            "representation": "pdf_text_layer",
            "characters": 108,
            "full_characters": 108
          },
          "warnings": [
            "PDF text comes from the file's text layer. Reading order, columns, ligatures, and hyphenated line breaks may differ from the printed page."
          ]
        }
      }
    },
    {
      "id": "truncated",
      "location": "Paragraph 5",
      "source_id": "partial",
      "quote": "The missing sentence cannot be ruled out.",
      "finding": "inconclusive",
      "next_step": "Obtain a complete readable source before deciding whether the quotation is absent.",
      "batch": 1,
      "evidence": {
        "url": null,
        "source_id": "partial",
        "id": "truncated",
        "status": "supplied_text",
        "error": null,
        "message": null,
        "http_status": null,
        "requested_url": null,
        "final_url": null,
        "redirected": null,
        "redirects": [],
        "content_type": null,
        "title": null,
        "source_sha256": null,
        "source_bytes": null,
        "retrieved_at": null,
        "quote": "The missing sentence cannot be ruled out.",
        "quote_check": {
          "status": "source_truncated",
          "matched": null,
          "match_counts": {
            "total": 0,
            "exact": 0,
            "normalized": 0
          },
          "matches": [],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "relative_to": "supplied source_text, unchanged"
          },
          "checked_text_sha256": "e1615fb9c3f45b34d0102f4c61e2d02506d00246dd667aca345704ab36b66aea",
          "source_truncated": true,
          "source": {
            "representation": "supplied_text",
            "characters": 40,
            "full_characters": 40
          },
          "warnings": [
            "The supplied source text is incomplete. A missing quotation is inconclusive for the complete source.",
            "Only caller-supplied text was checked. No source URL, retrieval, or publisher provenance was verified."
          ]
        }
      }
    },
    {
      "id": "broken",
      "location": "Paragraph 6",
      "url": "https://bozos.si/examples/citation-review/fixtures/deliberately-missing.txt",
      "quote": "Evidence must be readable.",
      "finding": "source_unavailable",
      "next_step": "Inspect the source error and recovery hints. The quotation was not checked; this does not prove the link is dead.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/deliberately-missing.txt",
        "id": "broken",
        "status": "failed",
        "error": "upstream_error",
        "message": "The source returned HTTP 404.",
        "http_status": 404,
        "upstream": {
          "stage": "source",
          "http_status": 404,
          "retry_after_seconds": null
        },
        "recovery": "check_url",
        "requested_url": null,
        "final_url": null,
        "redirected": null,
        "redirects": [],
        "content_type": null,
        "title": null,
        "source_sha256": null,
        "source_bytes": null,
        "retrieved_at": null,
        "quote": "Evidence must be readable.",
        "quote_check": null
      }
    },
    {
      "id": "absent",
      "location": "Paragraph 7",
      "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
      "quote": "The trial included 25 samples.",
      "finding": "quotation_not_found",
      "next_step": "Review the quotation, source version, and extraction. Do not label the claim false from this result.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "id": "absent",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "redirected": false,
        "redirects": [],
        "content_type": "text/plain",
        "title": "source.txt",
        "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
        "source_bytes": 284,
        "retrieved_at": "2026-10-25T08:07:44.225Z",
        "quote": "The trial included 25 samples.",
        "quote_check": {
          "status": "not_found",
          "matched": false,
          "match_counts": {
            "total": 0,
            "exact": 0,
            "normalized": 0
          },
          "matches": [],
          "matches_truncated": false,
          "matching": {
            "normalize_whitespace": true,
            "case_sensitive": true,
            "punctuation_sensitive": true,
            "word_boundaries": true,
            "fuzzy_matching": false
          },
          "offsets": {
            "unit": "Unicode code points",
            "start": "zero-based inclusive",
            "end": "exclusive",
            "utf16": "utf16_start/end are JavaScript string offsets",
            "lines": "one-based; CRLF counts as one line break",
            "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
          },
          "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
          "source_truncated": false,
          "source": {
            "representation": "literal_text",
            "characters": 283,
            "full_characters": 283
          },
          "warnings": []
        }
      }
    },
    {
      "id": "link-only",
      "location": "Paragraph 8",
      "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
      "finding": "link_readable",
      "next_step": "The source was readable. Supply a quotation to check textual presence.",
      "batch": 1,
      "evidence": {
        "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "id": "link-only",
        "status": "readable",
        "error": null,
        "message": null,
        "http_status": 200,
        "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
        "redirected": false,
        "redirects": [],
        "content_type": "text/plain",
        "title": "source.txt",
        "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
        "source_bytes": 284,
        "retrieved_at": "2026-10-25T08:07:44.225Z"
      }
    }
  ],
  "batches": [
    {
      "batch": 1,
      "response": {
        "schema_version": "1.0",
        "summary": {
          "total": 8,
          "readable": 6,
          "failed": 1,
          "supplied": 1,
          "quotes": {
            "checked": 6,
            "found": 3,
            "not_found": 2,
            "inconclusive": 1,
            "unchecked": 1
          }
        },
        "results": [
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "id": "exact",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "redirected": false,
            "redirects": [],
            "content_type": "text/plain",
            "title": "source.txt",
            "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
            "source_bytes": 284,
            "retrieved_at": "2026-10-25T08:07:44.225Z",
            "quote": "The trial included 24 samples.",
            "quote_check": {
              "status": "exact_match",
              "matched": true,
              "match_counts": {
                "total": 1,
                "exact": 1,
                "normalized": 0
              },
              "matches": [
                {
                  "kind": "exact_match",
                  "text": "The trial included 24 samples.",
                  "start": 38,
                  "end": 68,
                  "utf16_start": 38,
                  "utf16_end": 68,
                  "line_start": 3,
                  "line_end": 3,
                  "before": "BOZOS controlled citation fixture v1\n\n",
                  "after": "\nA matching quotation establishes textual presence only.\nThe result was \"inconclusive\", not false.\nWhitespace example: t"
                }
              ],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
              },
              "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
              "source_truncated": false,
              "source": {
                "representation": "literal_text",
                "characters": 283,
                "full_characters": 283
              },
              "warnings": []
            }
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "id": "whitespace",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "redirected": false,
            "redirects": [],
            "content_type": "text/plain",
            "title": "source.txt",
            "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
            "source_bytes": 284,
            "retrieved_at": "2026-10-25T08:07:44.225Z",
            "quote": "the river crossed the valley.",
            "quote_check": {
              "status": "normalized_match",
              "matched": true,
              "match_counts": {
                "total": 1,
                "exact": 0,
                "normalized": 1
              },
              "matches": [
                {
                  "kind": "normalized_match",
                  "text": "the river\n   crossed the valley.",
                  "start": 187,
                  "end": 219,
                  "utf16_start": 187,
                  "utf16_end": 219,
                  "line_start": 6,
                  "line_end": 7,
                  "before": ".\nA matching quotation establishes textual presence only.\nThe result was \"inconclusive\", not false.\nWhitespace example: ",
                  "after": "\n\nThis is synthetic test material, not a report of a real trial."
                }
              ],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
              },
              "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
              "source_truncated": false,
              "source": {
                "representation": "literal_text",
                "characters": 283,
                "full_characters": 283
              },
              "warnings": []
            }
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "id": "punctuation",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "redirected": false,
            "redirects": [],
            "content_type": "text/plain",
            "title": "source.txt",
            "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
            "source_bytes": 284,
            "retrieved_at": "2026-10-25T08:07:44.225Z",
            "quote": "The result was “inconclusive”, not false.",
            "quote_check": {
              "status": "not_found",
              "matched": false,
              "match_counts": {
                "total": 0,
                "exact": 0,
                "normalized": 0
              },
              "matches": [],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
              },
              "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
              "source_truncated": false,
              "source": {
                "representation": "literal_text",
                "characters": 283,
                "full_characters": 283
              },
              "warnings": []
            }
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
            "id": "pdf",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source-v1.pdf",
            "redirected": false,
            "redirects": [],
            "content_type": "application/pdf",
            "title": "BOZOS citation review controlled fixture",
            "source_sha256": "f6e6536727b083b835d61c4bb2c626fdb6876c6e4fbe5b56e53be76c7f409ddf",
            "source_bytes": 1062,
            "retrieved_at": "2026-10-25T08:07:44.248Z",
            "quote": "A matching quotation establishes textual presence only.",
            "quote_check": {
              "status": "exact_match",
              "matched": true,
              "match_counts": {
                "total": 1,
                "exact": 1,
                "normalized": 0
              },
              "matches": [
                {
                  "kind": "exact_match",
                  "text": "A matching quotation establishes textual presence only.",
                  "start": 53,
                  "end": 108,
                  "utf16_start": 53,
                  "utf16_end": 108,
                  "line_start": 3,
                  "line_end": 3,
                  "page_start": 2,
                  "page_end": 2,
                  "before": "BOZOS controlled fixture: 24 samples were reviewed.\n\n",
                  "after": ""
                }
              ],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "pages": "page_start/page_end are one-based PDF page numbers",
                "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
              },
              "checked_text_sha256": "8bc01d5078b620eefcbb196cc75abb7f72ddb36678bac5a32c1b27ae4f4476ea",
              "source_truncated": false,
              "source": {
                "representation": "pdf_text_layer",
                "characters": 108,
                "full_characters": 108
              },
              "warnings": [
                "PDF text comes from the file's text layer. Reading order, columns, ligatures, and hyphenated line breaks may differ from the printed page."
              ]
            }
          },
          {
            "url": null,
            "source_id": "partial",
            "id": "truncated",
            "status": "supplied_text",
            "error": null,
            "message": null,
            "http_status": null,
            "requested_url": null,
            "final_url": null,
            "redirected": null,
            "redirects": [],
            "content_type": null,
            "title": null,
            "source_sha256": null,
            "source_bytes": null,
            "retrieved_at": null,
            "quote": "The missing sentence cannot be ruled out.",
            "quote_check": {
              "status": "source_truncated",
              "matched": null,
              "match_counts": {
                "total": 0,
                "exact": 0,
                "normalized": 0
              },
              "matches": [],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "relative_to": "supplied source_text, unchanged"
              },
              "checked_text_sha256": "e1615fb9c3f45b34d0102f4c61e2d02506d00246dd667aca345704ab36b66aea",
              "source_truncated": true,
              "source": {
                "representation": "supplied_text",
                "characters": 40,
                "full_characters": 40
              },
              "warnings": [
                "The supplied source text is incomplete. A missing quotation is inconclusive for the complete source.",
                "Only caller-supplied text was checked. No source URL, retrieval, or publisher provenance was verified."
              ]
            }
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/deliberately-missing.txt",
            "id": "broken",
            "status": "failed",
            "error": "upstream_error",
            "message": "The source returned HTTP 404.",
            "http_status": 404,
            "upstream": {
              "stage": "source",
              "http_status": 404,
              "retry_after_seconds": null
            },
            "recovery": "check_url",
            "requested_url": null,
            "final_url": null,
            "redirected": null,
            "redirects": [],
            "content_type": null,
            "title": null,
            "source_sha256": null,
            "source_bytes": null,
            "retrieved_at": null,
            "quote": "Evidence must be readable.",
            "quote_check": null
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "id": "absent",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "redirected": false,
            "redirects": [],
            "content_type": "text/plain",
            "title": "source.txt",
            "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
            "source_bytes": 284,
            "retrieved_at": "2026-10-25T08:07:44.225Z",
            "quote": "The trial included 25 samples.",
            "quote_check": {
              "status": "not_found",
              "matched": false,
              "match_counts": {
                "total": 0,
                "exact": 0,
                "normalized": 0
              },
              "matches": [],
              "matches_truncated": false,
              "matching": {
                "normalize_whitespace": true,
                "case_sensitive": true,
                "punctuation_sensitive": true,
                "word_boundaries": true,
                "fuzzy_matching": false
              },
              "offsets": {
                "unit": "Unicode code points",
                "start": "zero-based inclusive",
                "end": "exclusive",
                "utf16": "utf16_start/end are JavaScript string offsets",
                "lines": "one-based; CRLF counts as one line break",
                "relative_to": "checked source text, not raw HTML or Source Reader Markdown"
              },
              "checked_text_sha256": "849d60384df9498e611acf8edb61e07fcc0bc9962e47f109eca70c905da70360",
              "source_truncated": false,
              "source": {
                "representation": "literal_text",
                "characters": 283,
                "full_characters": 283
              },
              "warnings": []
            }
          },
          {
            "url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "id": "link-only",
            "status": "readable",
            "error": null,
            "message": null,
            "http_status": 200,
            "requested_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "final_url": "https://bozos.si/examples/citation-review/fixtures/source.txt",
            "redirected": false,
            "redirects": [],
            "content_type": "text/plain",
            "title": "source.txt",
            "source_sha256": "0865605f91c73aca7de75fae999da9fa6e0395cce52b869720426ff5752617e7",
            "source_bytes": 284,
            "retrieved_at": "2026-10-25T08:07:44.225Z"
          }
        ],
        "interpretation": "Readable means the page returned HTTP 200 with extractable text for the BOZOS reader. It does not show that the page supports a claim, is accurate, or is the page originally cited. Supplied_text means caller-provided text was checked without fetching a URL or verifying its origin; summary.supplied counts these entries separately. Failed means this reader could not read a URL: the link may be dead, or the site may refuse automated requests, require JavaScript or a login, or disallow BOZOSReader in robots.txt. Check error and http_status. A quote_check match means the words appear in the checked text, not that they support the claim; an unread link leaves its quotation unchecked.",
        "safety": {
          "ai_used": false,
          "scripts_executed": false,
          "content_retained": false
        }
      },
      "error": null
    }
  ]
}
