{
  "recorded_at": "2026-09-28T10:56:49.881091+00:00",
  "python": "3.14.7",
  "postgres": "18.6 (Debian 18.6-1.pgdg13+2)",
  "image": "postgres:18.6-trixie@sha256:86c951e05bf56c93d95d397747fb8820ac76cc3bedb78f43abd83eedbe3666ae",
  "scope": "Local PostgreSQL, source and fresh target database in one isolated container; local files stand in for object storage; static fixture.org setting is not authentication.",
  "technical_restore_seconds": 0.3103,
  "timing_scope": "From target database creation through database restore, missing-file check, file copy and hash validation; excludes incident response, final permission tests and application restart. Not an RTO promise.",
  "source_sha256": "4f90530301f387f03782679e55cca421c22fd6578d70a982fc7d691d96a65a3f",
  "passed": 14,
  "checks": [
    {
      "case": "source has changed after the backup",
      "passed": true
    },
    {
      "case": "two contacts restored",
      "passed": true
    },
    {
      "case": "attachment metadata restored",
      "passed": true
    },
    {
      "case": "database-only recovery is incomplete",
      "passed": true,
      "missing_objects": ["alpha-note.txt", "beta-note.txt"]
    },
    {
      "case": "all attachment hashes match after file restore",
      "passed": true,
      "object_sha256": {
        "alpha-note.txt": "b24765fe66bd5fd1842358c8b0deaeb3f6a6e911ec705a3e2f5fe44304ddc6f9",
        "beta-note.txt": "9bffdb804ab6727ac85b5de056980824fa2af0f020fa3f4662196807057319b1"
      }
    },
    {
      "case": "post-backup row is absent",
      "passed": true
    },
    {
      "case": "file relationships remain intact",
      "passed": true
    },
    {
      "case": "RLS and FORCE RLS restored",
      "passed": true
    },
    {
      "case": "alpha reader sees only alpha",
      "passed": true
    },
    {
      "case": "beta reader sees only beta",
      "passed": true
    },
    {
      "case": "reader without organization sees no rows",
      "passed": true
    },
    {
      "case": "reader has no write grant",
      "passed": true
    },
    {
      "case": "corrupted attachment is detected",
      "passed": true
    },
    {
      "case": "repaired attachment passes again",
      "passed": true
    }
  ]
}
