{
  "format": "tbh.verify-manifest/1",
  "note": "A published verifier version is frozen. To change the verifier, publish the next version directory and add it here. Never edit a version that has been published, and never edit its pin to match a changed file.",
  "current": "v2",
  "versions": {
    "v1": {
      "path": "/verify/v1/verify-transaction-record.mjs",
      "source": "scripts/verify-transaction-record.mjs",
      "sha256": "1e5436cd75e9d5cf52ec3a5e8ae4c300244f3c792dd983c712ebadf714998d82",
      "bytes": 6596,
      "published": "2026-09-02",
      "recordFormat": "tbh.transaction-record/1",
      "exitCodes": {
        "0": "intact",
        "1": "altered or broken",
        "2": "could not run"
      },
      "supersededBy": "v2",
      "note": "Frozen as published 2026-09-02. Verifies format-1 records that are saved as the bare bundle only; it does not unwrap the API envelope and its linkage check reports a legitimate cross-transaction predecessor as a break. Kept so a pin taken on 2026-09-02 still resolves; use v2."
    },
    "v2": {
      "path": "/verify/v2/verify-transaction-record.mjs",
      "source": "scripts/verify-transaction-record.mjs",
      "sha256": "d1e9de8e689a2690aac41d21c99a6620bb5a10fd48c77637cc11a0250023de2a",
      "bytes": 9827,
      "published": "2026-09-04",
      "recordFormat": "tbh.transaction-record/2",
      "acceptsRecordFormats": [
        "tbh.transaction-record/1",
        "tbh.transaction-record/2"
      ],
      "acceptsEnvelope": "Also accepts the historical { \"data\": … } API envelope that exports before 2026-09-04 were saved in; new exports are the bare bundle and need no unwrap.",
      "supersedes": "v1",
      "why": "v1 could not verify a real export: it read the top level of the saved HTTP response, and its linkage check assumed the exported audit segment was contiguous in the global chain. v2 unwraps the historical envelope and treats a sealed prevOutsideRecord marker as a boundary rather than a break.",
      "exitCodes": {
        "0": "intact",
        "1": "altered or broken",
        "2": "could not run"
      }
    }
  }
}
