{
  "status": "verified",
  "source_fingerprints": {
    "restorelab.py": "540b4e90a373d80029ccacbb89911b6979a2c07601bf9c69f157f4d3d372183d",
    "compose.yaml": "7fd62500a45a78f2a32733372205f2890bf829b91addd3287dfcbea207be6660",
    "seed.sql": "082a99066bd8be954915cc610aece0cebd0f86bef52e8b059754817984705a48"
  },
  "verified_at": "2026-09-07T15:48:02.298874+00:00",
  "scope": "Recorded on this Linux Docker Engine environment with synthetic data; not a production guarantee.",
  "happy_path": {
    "run_id": "e11fe977a6d4",
    "status": "passed",
    "steps": [
      {
        "id": "preflight",
        "label": "Check the supported environment",
        "status": "passed",
        "detail": "Python 3.12; Docker 29.2.1; local Linux context.",
        "duration_seconds": 0.51
      },
      {
        "id": "baseline",
        "label": "Create and measure the source",
        "status": "passed",
        "detail": "Created three accounts and five orders in a new, private source database.",
        "duration_seconds": 17.88
      },
      {
        "id": "capture",
        "label": "Capture the recovery requirements",
        "status": "passed",
        "detail": "Captured a logical database dump and a required runbook; recorded SHA-256 hashes outside the backup.",
        "duration_seconds": 0.46
      },
      {
        "id": "backup",
        "label": "Create an encrypted snapshot",
        "status": "passed",
        "detail": "Created an encrypted restic snapshot and recorded its exact identifier.",
        "duration_seconds": 24.15
      },
      {
        "id": "repository",
        "label": "Check repository integrity",
        "status": "passed",
        "detail": "Read and verified all stored data in this tiny lab repository. This is not an application check.",
        "duration_seconds": 8.35
      },
      {
        "id": "source-offline",
        "label": "Take the disposable source offline",
        "status": "passed",
        "detail": "Stopped only this run's source container. Its data was not deleted.",
        "duration_seconds": 3.29
      },
      {
        "id": "restore-files",
        "label": "Recover the exact snapshot",
        "status": "passed",
        "detail": "Restored the exact snapshot to a separate recovery directory.",
        "duration_seconds": 6.22
      },
      {
        "id": "file-integrity",
        "label": "Verify required files and hashes",
        "status": "passed",
        "detail": "All 2 required files are present and match their original SHA-256 hashes.",
        "duration_seconds": 0.0
      },
      {
        "id": "restore-database",
        "label": "Restore into an empty target",
        "status": "passed",
        "detail": "Imported the recovered dump into a separate, empty target database without --clean.",
        "duration_seconds": 10.61
      },
      {
        "id": "application",
        "label": "Verify the recovered application data",
        "status": "passed",
        "detail": "Exact ordered account/order contents, row counts, and the \u20ac149.00 order total match the baseline.",
        "duration_seconds": 0.13
      }
    ],
    "evidence": {
      "baseline": {
        "accounts": 3,
        "orders": 5,
        "order_total_cents": 14900,
        "database_sha256": "5ebe5dd49b462e1142e01cdecde0e21e57f260ae56b74abaab17202c0054e824"
      },
      "snapshot_id": "b48654a68276ebc1f174e31b55e34fa821cfee7d79a9a85ae39e7e838d80a35b",
      "source_offline": true,
      "files_verified": 2,
      "accounts": 3,
      "orders": 5,
      "order_total_cents": 14900,
      "database_sha256": "5ebe5dd49b462e1142e01cdecde0e21e57f260ae56b74abaab17202c0054e824"
    },
    "containers_stopped": true
  },
  "negative_control": {
    "run_id": "95f6f4bd73e6",
    "status": "failed",
    "steps": [
      {
        "id": "preflight",
        "label": "Check the supported environment",
        "status": "passed",
        "detail": "Python 3.12; Docker 29.2.1; local Linux context.",
        "duration_seconds": 0.2
      },
      {
        "id": "baseline",
        "label": "Create and measure the source",
        "status": "passed",
        "detail": "Created three accounts and five orders in a new, private source database.",
        "duration_seconds": 37.67
      },
      {
        "id": "capture",
        "label": "Capture the recovery requirements",
        "status": "passed",
        "detail": "Captured a logical database dump and a required runbook; recorded SHA-256 hashes outside the backup.",
        "duration_seconds": 0.23
      },
      {
        "id": "backup",
        "label": "Create an encrypted snapshot",
        "status": "passed",
        "detail": "Created an encrypted restic snapshot and recorded its exact identifier.",
        "duration_seconds": 15.77
      },
      {
        "id": "repository",
        "label": "Check repository integrity",
        "status": "passed",
        "detail": "Read and verified all stored data in this tiny lab repository. This is not an application check.",
        "duration_seconds": 7.32
      },
      {
        "id": "source-offline",
        "label": "Take the disposable source offline",
        "status": "passed",
        "detail": "Stopped only this run's source container. Its data was not deleted.",
        "duration_seconds": 2.98
      },
      {
        "id": "restore-files",
        "label": "Recover the exact snapshot",
        "status": "passed",
        "detail": "Restored the exact snapshot to a separate recovery directory.",
        "duration_seconds": 16.31
      },
      {
        "id": "file-integrity",
        "label": "Verify required files and hashes",
        "status": "failed",
        "detail": "Missing required file: runbook.txt. A valid snapshot can still be incomplete.",
        "duration_seconds": 0.0
      }
    ],
    "error": "Missing required file: runbook.txt. A valid snapshot can still be incomplete.",
    "containers_stopped": true
  }
}
