===============================================================================
 Senthex proof bundle — OFFLINE verification, real captured output
 Verifier: the Senthex offline checker (pure Python; no DB, no Senthex server).
 Re-run it yourself — see README, section "Re-vérifier vous-même".
===============================================================================

### 1) INTACT bundle   -> expected: "chain_ok": true , exit code 0
$ python -m audit verify-export proof-bundle.json
{
  "anchored": true,
  "breaks": [],
  "bundle_version": "senthex-proof-bundle/1",
  "chain_ok": true,
  "chained_events": 18,
  "checkpoints": [
    {
      "anchors_recomputed_head": true,
      "chain_hash": "c11e3613d5dbb60e2ff83e1605349386e2782ececef3085f6a45815491639a2c",
      "chain_seq": 18,
      "checkpoint_seq": 1,
      "gen_time": "2026-06-24T15:29:30+00:00",
      "issues": [],
      "tsa_name": "www.freetsa.org",
      "tst_ok": true,
      "tst_present": true
    }
  ],
  "notes": [],
  "project_id": "acme-talent-prod"
}
exit_code=0

### 2) TAMPERED bundle -> expected: "chain_ok": false, exit code 1
    (exactly one field changed: event seq 13 injection_score 0.86 -> 0.06)
$ python -m audit verify-export proof-bundle.TAMPERED.json
{
  "anchored": true,
  "breaks": [
    {
      "event_id": "1cce1286-255b-48a7-9845-a1c6bc71b1f9",
      "issue": "row_hash-mismatch (tampered)",
      "seq": 13
    }
  ],
  "bundle_version": "senthex-proof-bundle/1",
  "chain_ok": false,
  "chained_events": 18,
  "checkpoints": [
    {
      "anchors_recomputed_head": true,
      "chain_hash": "c11e3613d5dbb60e2ff83e1605349386e2782ececef3085f6a45815491639a2c",
      "chain_seq": 18,
      "checkpoint_seq": 1,
      "gen_time": "2026-06-24T15:29:30+00:00",
      "issues": [],
      "tsa_name": "www.freetsa.org",
      "tst_ok": true,
      "tst_present": true
    }
  ],
  "notes": [],
  "project_id": "acme-talent-prod"
}
exit_code=1

### 3) The ONLY difference between the two files:
$ diff proof-bundle.json proof-bundle.TAMPERED.json
569c569
<       "injection_score": 0.86,
---
>       "injection_score": 0.06,

Reading the verdict: trust "chain_ok" and the exit code, not any field inside
the file. In the tampered run "anchored": true still appears — the freeTSA
timestamp is genuinely valid, but it covers the ORIGINAL chain head. A valid
timestamp on a broken chain does NOT rescue it: chain_ok=false, exit 1.
Tamper-evident (the change was DETECTED), not tamper-proof (not prevented).
