{
  "schema": "explainer-film-receipt/1",
  "slug": "checking-cost",
  "title": "Claiming got cheap. Checking did not.",
  "page": "explainers.html#checking-cost",
  "script": {
    "path": "media/explainers/checking-cost/film.json",
    "sha256": "422776d1a11598a3992ff5a8d6df8fd67b5d17442a9e093dc58cb72f8af7b5ff"
  },
  "evidence": {
    "path": "media/explainers/checking-cost/evidence.json",
    "sha256": "bf36f2204c9f04389e3b138fad7b2f26e96dfb2b7c2950f75f65361dc6389870"
  },
  "render_code": {
    "media/explainers/checking-cost/film.scene.mjs": "42334bba8f79432e94290ef9c9fb59ed88ff590bd49ce301168a040263c0009c",
    "media/explainers/checking-cost/scene/lib.mjs": "eac691919a1d7d82bf80ee14897fa3b9b26d642b04fdec535f38bb08161be9a6",
    "media/explainers/checking-cost/scene/s1-reference.mjs": "15c839ff1a73dd12428da7a88f166902de3b5e9acc27b0069c1b6dc16e982206",
    "media/explainers/checking-cost/scene/s2-list.mjs": "d7c67d73127f6122f0f6a3895e918d759ff764b6fb495f2deaf7d1051252229c",
    "media/explainers/checking-cost/scene/s3-year.mjs": "c290dd28ce2cca7d540a3b3644857e3fff15e3837903fdad7e46f52a5ea25635",
    "media/explainers/checking-cost/scene/s4-spread.mjs": "a3f9b49ae734242836c7081e01251b0dfc88dc507d495d3c585e1dceb7c12738",
    "media/explainers/checking-cost/scene/s5-rerun.mjs": "390a74720ff7228ae9ebdd11a4ed694f88ef231d34e614dc341c9e68c67157ae",
    "media/explainers/checking-cost/scene/s6-close.mjs": "349a340174bfc55e477acccf3697da3b7e40da1bf2d8c37dfb630f348db90bb1",
    "media/explainers/checking-cost/score.json": "8c3ecddcf7159a6fcc3b50890000cb65229ce6454ea214358e03c46c3db914e4",
    "media/raw-native/web-23ec93f/motion/capture.html": "fc2595317f6db46d3fdc39832123e2e8a67e2ee7825c11f393e9da7973852f8c",
    "media/raw-native/web-23ec93f/motion/engine.mjs": "8725bf9d55f282b4e1e90351fcd18419457aeca7e1e6abd3eb1227889c41124b",
    "media/raw-native/web-23ec93f/motion/morph.mjs": "ed8776e6400cbf0e63c597d384669f40ccbc47b6790ec15a03dedbc1bf68c2cd",
    "media/raw-native/web-23ec93f/motion/particles.mjs": "bc1e664f68c2e3fa35e9219e09a4b782467bdcb64ab76939e019abbdd2d94650",
    "media/raw-native/web-23ec93f/motion/path.mjs": "7b802dbf34ed4f930aa0223d61d64b2e98b0cb8de24d93d2d47a7ccc085a4a44",
    "media/raw-native/web-23ec93f/motion/player.mjs": "c545f53c5667c6ba3f1ff14fa7788772c3fcb52a99fb23cb1e2727aa8b5b78cc",
    "media/raw-native/web-23ec93f/motion/renderer.mjs": "165f1256576f1a64e6ddfb7d28450fee44d2f79fb6c66abd1d888dc6f2047553",
    "media/raw-native/web-23ec93f/motion/scene.mjs": "e8a97ea8a0811f773818ad5a5df7eefb563cee11416dac3029bc46c7d87a4839",
    "media/raw-native/web-23ec93f/motion/shaders.mjs": "987b6255e6b6bad7eb5a7273641d7b337cba6278c78bf39ad4e48520d9a7631d",
    "media/raw-native/web-23ec93f/motion/text.mjs": "f895f535ad21bf88e18c8daa55fdab36939c0219d2e25d275bb6e561494eea73",
    "media/raw-native/web-23ec93f/motion/timeline.mjs": "ad6fcef445ddecc1aee634d2124759cb4a357d04e14428b9f3e4a6df67f4eb1e",
    "media/raw-native/web-23ec93f/motion/vector.mjs": "5fc6f381071459f3648dd64ba674f0983a0adf856fbadb5afadd2bb09c58b5db",
    "media/raw-native/web-23ec93f/raw-gpu.mjs": "e6fad74db2d11ba107b8c04d9dfdfcf7ee8a7745d09b79e107df2be35625e7ec",
    "media/raw-native/web-23ec93f/frame-graph.mjs": "71244a0e499ce3d61758fa9237e686fbfdc827979ac4718415934607e9f93bef",
    "media/raw-native/web-23ec93f/threads.mjs": "8fe4f8d5119563faec3ed1aaf796a57833a5a77a34e41a33e00040d5ca5e34ea",
    "media/raw-native/web-23ec93f/threads.wgsl": "8fa08424ec68ee1de040b090e671897ce9897be2cb75cca59c2f4637b1c30632",
    "media/explainers/motion/hanken-500.json": "dac04490546485d2ddd94baffe1396c0e5435dabaa5a069bf5d5ac8f5b234814",
    "media/explainers/motion/hanken-650.json": "20c548f8ac04ac5c200748e7e6425d51d010a37a61da4ea951ad5ad10e18b366",
    "media/explainers/motion/conso-400.json": "ac833366bae7b28541dd3b6ccf036fee96ca215be571080411717bd880b0310b",
    "tools/explainer/film/motion.py": "75ae90043407587fe049884c852d37b7249aecb460bdb3b3f131ec81269c4b40",
    "tools/explainer/film/score.py": "a0929e7f2f144aedca39b3bf34b24a6493cd2e25da6cef79b036043f6897c898"
  },
  "toolchain": {
    "renderer": "raw-native Motion (web/motion), WebGPU in headless Chrome, frames encoded by WebCodecs H.264",
    "adapter": {
      "vendor": "nvidia",
      "architecture": "lovelace",
      "device": "",
      "description": ""
    },
    "python": "3.12.10",
    "os": "Windows-11-10.0.26220-SP0",
    "ffmpeg": "ffmpeg version 7.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers",
    "master": {
      "width": 3840,
      "height": 2160,
      "frames": 5324,
      "frame_ms_median": 26.5,
      "frame_ms_p95": 36.1,
      "wall_seconds": 181.8,
      "sha256": "304f1dd54ea2edcd3dbec89bac7ec5565d80eef7191117e536e35ad877f80b7e"
    },
    "score": {
      "generator": "tools/explainer/film/score.py",
      "mix_db": -13,
      "sha256": "e28ebd77c23b2ceb7bb917ac885f22a90d1ca28ee808ea1d1dc3503764935070"
    }
  },
  "narration": {
    "wav_sha256": "bb8fc56f56c0c4e9dc1f43b5dac9f5cb8eb3cedf28bd4e27086bcecaeb7fbc77",
    "seconds": 175.96,
    "backend": "qwen3-tts-local",
    "hosted": false,
    "model": "Qwen3-TTS-12Hz-1.7B-Base + the author's fine-tune",
    "fine_tune_sha256": "629342643caee8b5b2df4117f482ee758a447709d5ec6fb79eb6b09140686838",
    "package": "qwen-tts 0.1.1",
    "settings": {
      "dtype": "float32",
      "attn_implementation": "sdpa",
      "do_sample": true,
      "temperature": 0.9,
      "top_k": 50,
      "top_p": 1.0,
      "repetition_penalty": 1.05,
      "subtalker_temperature": 0.9,
      "subtalker_top_k": 50,
      "language": "Auto",
      "speaker": "author",
      "mode": "custom_voice",
      "device": "cpu"
    },
    "label": "A synthesized version of the author's voice, from a model fine-tuned on his recordings with his approval.",
    "asr_check": {
      "engine": "faster-whisper",
      "model": "medium.en",
      "device": "cpu int8",
      "accept_ratio": 0.92,
      "tries": 5,
      "sentences": 37,
      "flagged": 0,
      "mean_ratio": 0.9918
    },
    "loudness": {
      "rule": "explainer-speech-normalise/1",
      "meter": "superstack-bs1770/1",
      "target_lufs": -16.0,
      "before_lufs": -22.06,
      "before_peak_dbfs": -5.5,
      "gain_db": 6.12,
      "limiter": {
        "ceiling_dbfs": -2.0,
        "lookahead_s": 0.02,
        "oversample": 4
      },
      "after_lufs": -16.0,
      "after_peak_dbfs": -2.0,
      "sample_peak_headroom_db": 0.5
    },
    "rate": 48000,
    "reproducible": false,
    "does_not_prove": [
      "An ASR match shows the words were spoken as written; it does not show they sound natural.",
      "Seeds are recorded, but CPU float32 sampling was not checked for bit-exact reruns, so a rerun may differ."
    ],
    "narrated_with": {
      "code": "tools/explainer/film/narrate.py at commit 9ed4ea7 (later split into helpers with no change in behaviour)",
      "sha256": "1d302c11a7ccf4e2effbbc297792853aa0135af8bda0e1044619d1d323ea998d"
    },
    "correction_2026_10_04": "The first write of this file said GPU sampling; the narration ran on the CPU in float32."
  },
  "frames": 5324,
  "fps": 30,
  "seconds": 177.46666666666667,
  "outputs": {
    "checking-cost.mp4": "98a76f019596c735df2e9112a21dffc65b6207d3faa73a4a9d4fca7210457b5b",
    "checking-cost.vtt": "b100a8d9a2f67113067c75bebfb69ca99ec0c5c216b05f0c1ca25a2613547f0a",
    "checking-cost.srt": "5d220119850a63dc7818a974ff7bff44f478ef8d78a4ed148feb1bf4bb491408",
    "poster.jpg": "a2f8b23dce382b182c5ae1712d48a8327d11d333c50c25401f39806540c67b5f",
    "timing.json": "698e3ff04b82a95f75de7eb6d71e047ed910f554a60da8ba256a2381a733d6f7",
    "checking-cost.m4a": "9b16b42cbdbf24d894843a3c3fdb7c0778e0366f7964644676e46e4b37c08262"
  },
  "does_not_prove": "Matching hashes show these files are the ones this build made from this script, scene code, engine and narration. They do not show that the explanation is correct or that it teaches. The pictures are drawn for explanation: shapes such as the cascade trees and the order of the dots are illustrations, and only the numbers on screen come from the sources. The narration is a synthesized version of the author's voice, sampled from a speech model, so a rerun need not give the same audio bytes."
}
