{
  "executed_at": "2026-09-15T13:34:12.750748+00:00",
  "python": "3.14.5",
  "method": "Deterministic synthetic-fixture tests; no external model, private data, or network calls.",
  "csv": {
    "cases": [
      {
        "case": "plain",
        "input": "name,note\nAda,hello\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "split_pass": true,
        "parser_pass": true
      },
      {
        "case": "quoted-comma",
        "input": "name,note\nAda,\"hello, team\"\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello, team"
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "\"hello",
            " team\""
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello, team"
          ]
        ],
        "split_pass": false,
        "parser_pass": true
      },
      {
        "case": "quoted-newline",
        "input": "name,note\nAda,\"hello\nteam\"\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello\nteam"
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "\"hello"
          ],
          [
            "team\""
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello\nteam"
          ]
        ],
        "split_pass": false,
        "parser_pass": true
      },
      {
        "case": "escaped-quote",
        "input": "name,note\nAda,\"say \"\"hello\"\"\"\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "say \"hello\""
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "\"say \"\"hello\"\"\""
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "say \"hello\""
          ]
        ],
        "split_pass": false,
        "parser_pass": true
      },
      {
        "case": "empty-field",
        "input": "name,note\nAda,\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            ""
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            ""
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            ""
          ]
        ],
        "split_pass": true,
        "parser_pass": true
      },
      {
        "case": "leading-zero",
        "input": "id,note\n0012,keep\n",
        "expected": [
          [
            "id",
            "note"
          ],
          [
            "0012",
            "keep"
          ]
        ],
        "split_output": [
          [
            "id",
            "note"
          ],
          [
            "0012",
            "keep"
          ]
        ],
        "parser_output": [
          [
            "id",
            "note"
          ],
          [
            "0012",
            "keep"
          ]
        ],
        "split_pass": true,
        "parser_pass": true
      },
      {
        "case": "unicode",
        "input": "name,note\n민지,café\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "민지",
            "café"
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "민지",
            "café"
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "민지",
            "café"
          ]
        ],
        "split_pass": true,
        "parser_pass": true
      },
      {
        "case": "crlf",
        "input": "name,note\r\nAda,hello\r\n",
        "expected": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "split_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "parser_output": [
          [
            "name",
            "note"
          ],
          [
            "Ada",
            "hello"
          ]
        ],
        "split_pass": true,
        "parser_pass": true
      }
    ],
    "total": 8,
    "split_pass": 5,
    "parser_pass": 8
  },
  "evidence": {
    "sources": {
      "S1": "The synthetic pilot included 12 tickets.",
      "S2": "The median draft time was 4 minutes in the synthetic pilot.",
      "S3": "The synthetic pilot did not measure customer satisfaction."
    },
    "cases": [
      {
        "case": "supported-count",
        "claim": "The pilot included 12 tickets.",
        "source_id": "S1",
        "quote": "The synthetic pilot included 12 tickets.",
        "source_exists": true,
        "provenance_pass": true,
        "editorially_supported": true
      },
      {
        "case": "missing-source",
        "claim": "The pilot included 12 tickets.",
        "source_id": "S9",
        "quote": "The synthetic pilot included 12 tickets.",
        "source_exists": false,
        "provenance_pass": false,
        "editorially_supported": false
      },
      {
        "case": "invented-quote",
        "claim": "The pilot included 120 tickets.",
        "source_id": "S1",
        "quote": "The pilot included 120 tickets.",
        "source_exists": true,
        "provenance_pass": false,
        "editorially_supported": false
      },
      {
        "case": "wrong-claim",
        "claim": "The pilot included 120 tickets.",
        "source_id": "S1",
        "quote": "The synthetic pilot included 12 tickets.",
        "source_exists": true,
        "provenance_pass": true,
        "editorially_supported": false
      },
      {
        "case": "supported-time",
        "claim": "Median draft time was 4 minutes.",
        "source_id": "S2",
        "quote": "The median draft time was 4 minutes in the synthetic pilot.",
        "source_exists": true,
        "provenance_pass": true,
        "editorially_supported": true
      },
      {
        "case": "unsupported-causality",
        "claim": "The tool caused faster work.",
        "source_id": "S2",
        "quote": "The median draft time was 4 minutes in the synthetic pilot.",
        "source_exists": true,
        "provenance_pass": true,
        "editorially_supported": false
      },
      {
        "case": "supported-limit",
        "claim": "Satisfaction was not measured.",
        "source_id": "S3",
        "quote": "The synthetic pilot did not measure customer satisfaction.",
        "source_exists": true,
        "provenance_pass": true,
        "editorially_supported": true
      },
      {
        "case": "empty-quote",
        "claim": "Customers loved it.",
        "source_id": "S3",
        "quote": "",
        "source_exists": true,
        "provenance_pass": false,
        "editorially_supported": false
      }
    ],
    "total": 8,
    "provenance_pass": 5,
    "supported": 3,
    "false_accepts": 2
  },
  "redaction": {
    "pattern": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b",
    "cases": [
      {
        "case": "simple",
        "input": "Email ada@example.com.",
        "expected_spans": [
          "ada@example.com"
        ],
        "output": "Email [EMAIL].",
        "remaining_spans": [],
        "pass_case": true
      },
      {
        "case": "plus",
        "input": "Email ada+lab@example.com.",
        "expected_spans": [
          "ada+lab@example.com"
        ],
        "output": "Email [EMAIL].",
        "remaining_spans": [],
        "pass_case": true
      },
      {
        "case": "subdomain",
        "input": "Email ada@team.example.com.",
        "expected_spans": [
          "ada@team.example.com"
        ],
        "output": "Email [EMAIL].",
        "remaining_spans": [],
        "pass_case": true
      },
      {
        "case": "uppercase",
        "input": "Email ADA@EXAMPLE.COM.",
        "expected_spans": [
          "ADA@EXAMPLE.COM"
        ],
        "output": "Email [EMAIL].",
        "remaining_spans": [],
        "pass_case": true
      },
      {
        "case": "two",
        "input": "ada@example.com and ben@example.org",
        "expected_spans": [
          "ada@example.com",
          "ben@example.org"
        ],
        "output": "[EMAIL] and [EMAIL]",
        "remaining_spans": [],
        "pass_case": true
      },
      {
        "case": "obfuscated",
        "input": "ada [at] example [dot] com",
        "expected_spans": [
          "ada [at] example [dot] com"
        ],
        "output": "ada [at] example [dot] com",
        "remaining_spans": [
          "ada [at] example [dot] com"
        ],
        "pass_case": false
      },
      {
        "case": "unicode-local",
        "input": "민지@example.com",
        "expected_spans": [
          "민지@example.com"
        ],
        "output": "민지@example.com",
        "remaining_spans": [
          "민지@example.com"
        ],
        "pass_case": false
      },
      {
        "case": "phone",
        "input": "Call +1 202 555 0147.",
        "expected_spans": [
          "+1 202 555 0147"
        ],
        "output": "Call +1 202 555 0147.",
        "remaining_spans": [
          "+1 202 555 0147"
        ],
        "pass_case": false
      },
      {
        "case": "identifier",
        "input": "Customer CUST-0482 asked for help.",
        "expected_spans": [
          "CUST-0482"
        ],
        "output": "Customer CUST-0482 asked for help.",
        "remaining_spans": [
          "CUST-0482"
        ],
        "pass_case": false
      },
      {
        "case": "ordinary",
        "input": "The build finished normally.",
        "expected_spans": [],
        "output": "The build finished normally.",
        "remaining_spans": [],
        "pass_case": true
      }
    ],
    "total": 10,
    "pass_cases": 6,
    "sensitive_cases": 9,
    "completely_redacted_sensitive_cases": 5
  },
  "retrieval": {
    "document": "Trial workspace: exports are available for seven days. After that window, contact support for recovery options.\n\nPaid workspace: exports are available for thirty days. Administrators can disable exports for a workspace.\n\nGuest access: guests can read shared notes. Guests cannot export a workspace.\n\nDeletion: deleting a workspace starts a fourteen day recovery period. Export availability does not extend this recovery period.",
    "strategies": {
      "fixed-80": [
        "Trial workspace: exports are available for seven days. After that window, contac",
        "t support for recovery options.\n\nPaid workspace: exports are available for thirt",
        "y days. Administrators can disable exports for a workspace.\n\nGuest access: guest",
        "s can read shared notes. Guests cannot export a workspace.\n\nDeletion: deleting a",
        " workspace starts a fourteen day recovery period. Export availability does not e",
        "xtend this recovery period."
      ],
      "overlap-80-30": [
        "Trial workspace: exports are available for seven days. After that window, contac",
        "ays. After that window, contact support for recovery options.\n\nPaid workspace: e",
        "ry options.\n\nPaid workspace: exports are available for thirty days. Administrato",
        " for thirty days. Administrators can disable exports for a workspace.\n\nGuest acc",
        "ts for a workspace.\n\nGuest access: guests can read shared notes. Guests cannot e",
        " shared notes. Guests cannot export a workspace.\n\nDeletion: deleting a workspace",
        "Deletion: deleting a workspace starts a fourteen day recovery period. Export ava",
        "ay recovery period. Export availability does not extend this recovery period.",
        "xtend this recovery period."
      ],
      "paragraph": [
        "Trial workspace: exports are available for seven days. After that window, contact support for recovery options.",
        "Paid workspace: exports are available for thirty days. Administrators can disable exports for a workspace.",
        "Guest access: guests can read shared notes. Guests cannot export a workspace.",
        "Deletion: deleting a workspace starts a fourteen day recovery period. Export availability does not extend this recovery period."
      ]
    },
    "cases": [
      {
        "strategy": "fixed-80",
        "case": "trial",
        "query": "trial exports available days",
        "target": "Trial workspace: exports are available for seven days.",
        "selected_chunk": "Trial workspace: exports are available for seven days. After that window, contac",
        "pass_case": true
      },
      {
        "strategy": "fixed-80",
        "case": "paid",
        "query": "paid exports available days",
        "target": "Paid workspace: exports are available for thirty days.",
        "selected_chunk": "Trial workspace: exports are available for seven days. After that window, contac",
        "pass_case": false
      },
      {
        "strategy": "fixed-80",
        "case": "guest",
        "query": "guest export workspace",
        "target": "Guests cannot export a workspace.",
        "selected_chunk": "y days. Administrators can disable exports for a workspace.\n\nGuest access: guest",
        "pass_case": false
      },
      {
        "strategy": "fixed-80",
        "case": "deletion",
        "query": "deleting workspace recovery period",
        "target": "deleting a workspace starts a fourteen day recovery period.",
        "selected_chunk": " workspace starts a fourteen day recovery period. Export availability does not e",
        "pass_case": false
      },
      {
        "strategy": "overlap-80-30",
        "case": "trial",
        "query": "trial exports available days",
        "target": "Trial workspace: exports are available for seven days.",
        "selected_chunk": "Trial workspace: exports are available for seven days. After that window, contac",
        "pass_case": true
      },
      {
        "strategy": "overlap-80-30",
        "case": "paid",
        "query": "paid exports available days",
        "target": "Paid workspace: exports are available for thirty days.",
        "selected_chunk": "ry options.\n\nPaid workspace: exports are available for thirty days. Administrato",
        "pass_case": true
      },
      {
        "strategy": "overlap-80-30",
        "case": "guest",
        "query": "guest export workspace",
        "target": "Guests cannot export a workspace.",
        "selected_chunk": " for thirty days. Administrators can disable exports for a workspace.\n\nGuest acc",
        "pass_case": false
      },
      {
        "strategy": "overlap-80-30",
        "case": "deletion",
        "query": "deleting workspace recovery period",
        "target": "deleting a workspace starts a fourteen day recovery period.",
        "selected_chunk": "Deletion: deleting a workspace starts a fourteen day recovery period. Export ava",
        "pass_case": true
      },
      {
        "strategy": "paragraph",
        "case": "trial",
        "query": "trial exports available days",
        "target": "Trial workspace: exports are available for seven days.",
        "selected_chunk": "Trial workspace: exports are available for seven days. After that window, contact support for recovery options.",
        "pass_case": true
      },
      {
        "strategy": "paragraph",
        "case": "paid",
        "query": "paid exports available days",
        "target": "Paid workspace: exports are available for thirty days.",
        "selected_chunk": "Paid workspace: exports are available for thirty days. Administrators can disable exports for a workspace.",
        "pass_case": true
      },
      {
        "strategy": "paragraph",
        "case": "guest",
        "query": "guest export workspace",
        "target": "Guests cannot export a workspace.",
        "selected_chunk": "Guest access: guests can read shared notes. Guests cannot export a workspace.",
        "pass_case": true
      },
      {
        "strategy": "paragraph",
        "case": "deletion",
        "query": "deleting workspace recovery period",
        "target": "deleting a workspace starts a fourteen day recovery period.",
        "selected_chunk": "Deletion: deleting a workspace starts a fourteen day recovery period. Export availability does not extend this recovery period.",
        "pass_case": true
      }
    ],
    "scores": {
      "fixed-80": {
        "pass_cases": 1,
        "total": 4
      },
      "overlap-80-30": {
        "pass_cases": 3,
        "total": 4
      },
      "paragraph": {
        "pass_cases": 4,
        "total": 4
      }
    }
  }
}
