{
  "schema": "explainer-receipt/v1",
  "slug": "receipt-is-not-a-verdict",
  "title": "A receipt is not a verdict",
  "page": "no-receipt-no-accept.html#4-the-loop-walked-end-to-end",
  "spec": {
    "path": "media/explainers/receipt-is-not-a-verdict/spec.json",
    "sha256": "a0ef55b53b8b134bbaa123d098a04d17be3c3136c04aff585a9c654022b29890"
  },
  "params": {
    "limit": 1.5,
    "measured": 1.84
  },
  "live": {
    "plugin": "system/media-engine/plugins/explainer.mjs",
    "state": "system/explainer/state.mjs",
    "note": "The page's live version draws from the same spec; its frame receipts carry this spec hash."
  },
  "render_code": {
    "tools/explainer/draw.py": "552d54ecc5ee16310033e27f23e4b44506e06945220a2a581b9a69d7bab59da6",
    "tools/explainer/marks.py": "6b3b85f351f6854ee48d369f48af6dc852ee1abb8e68f9b1a3b5405c021f703c",
    "tools/explainer/scene.py": "0fa330710cb272fecafe241b9c2b7af966f299fccc46ca0beb27ae548fd259ed",
    "tools/explainer/voice.py": "8a640e64509eef556093fb57a28b3fdbf60134f766e104b4b581cad7682eb0af",
    "tools/explainer/loudness.py": "2cc2232f758f52f272d2a77a2744e614f8943ff2dd8436b5c54c4043da467c0e",
    "tools/explainer/render.py": "117860ab1ea74e9cd4fc9cf8e8a8167b9592b06b71a99d2abadab71685661067"
  },
  "fonts": {
    "system/fonts/hanken-grotesk.woff2": "e9201eddf1d41d0b62253295d869ce3cf65768f7102b797f02c7f8c876b4a9d5",
    "system/fonts/conso-regular.woff2": "0e4a48ca69d9f6b6a1916eb1c6459fe6947bd4a9f999c684f1237beda1c24f78"
  },
  "toolchain": {
    "python": "3.12.10",
    "pillow": "12.2.0",
    "numpy": "2.4.5",
    "ffmpeg": "ffmpeg version 7.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers",
    "voice": "Microsoft Zira Desktop",
    "os": "Windows-11-10.0.26220-SP0"
  },
  "outputs": {
    "receipt-is-not-a-verdict.mp4": "ce9de1c9f6cc676f86c8fadf1e5e00de8c56874f0b49aa2de3861bc94d162c42",
    "receipt-is-not-a-verdict.srt": "5e3ef70322e2dd9a84397289c8f04c7c8cbb34694f9cf6768267789d2ee0beca",
    "receipt-is-not-a-verdict.vtt": "141497c06b386c95076815ed230c4c0a85e04e2ac69b3b673073d9fe87a2c17a",
    "poster.png": "5293f3fafbf622b0f4227f660283fb7d16530c2eb6a9c577a2c125c92714226f",
    "aperture.png": "7f4101c9cbd5784ff1b2808f9cb1f240c508b7725e70a60a7a3f1bfee5cb452a"
  },
  "narration_wav_sha256": "4550c9ed5b1cf36c5a564e5b21dbbcc51c25f975c8f49c4167e2418fff5f84f8",
  "narration_loudness": {
    "rule": "explainer-speech-normalise/1",
    "meter": "superstack-bs1770/1",
    "target_lufs": -16.0,
    "before_lufs": -20.25,
    "before_peak_dbfs": -1.89,
    "gain_db": 5.41,
    "limiter": {
      "ceiling_dbfs": -2.0,
      "lookahead_s": 0.02,
      "oversample": 4
    },
    "after_lufs": -16.01,
    "after_peak_dbfs": -2.0,
    "sample_peak_headroom_db": 0.5
  },
  "frames": 1296,
  "fps": 30,
  "seconds": 43.2,
  "frame_chain_sha256": "cbbcd0be7a518d91a127399cffb12b4a579ac09ca2775b6de5425ff955e76dd2",
  "timeline": [
    {
      "scene": "title",
      "start": 0.0,
      "end": 3.5,
      "text": "A receipt is not a verdict."
    },
    {
      "scene": "receipt",
      "start": 3.5,
      "end": 9.9,
      "text": "A receipt records what ran: the command, the inputs and the hash of the output."
    },
    {
      "scene": "rerun",
      "start": 9.9,
      "end": 19.0,
      "text": "Rerun the command and the hash matches. That shows the same bytes came out. It says nothing about whether they are right."
    },
    {
      "scene": "criterion",
      "start": 19.0,
      "end": 27.3,
      "text": "A verdict needs a criterion the author did not write, such as a test suite, a proof checker or a measured threshold."
    },
    {
      "scene": "split",
      "start": 27.3,
      "end": 35.967,
      "text": "Here the rerun matches, and the independent test reports drift. The receipt holds, and the claim fails."
    },
    {
      "scene": "close",
      "start": 35.967,
      "end": 43.2,
      "text": "Keep both. The receipt says what happened. The verdict says whether it holds up."
    }
  ],
  "rerun": "python -m tools.explainer.render media/explainers/receipt-is-not-a-verdict --verify",
  "does_not_prove": "Matching hashes show the same bytes came out of the same spec, code and tools. They do not show that the explanation is correct or that it teaches. The narration voice ships with Windows, so the audio rebuilds only on a machine with the same voice."
}
