{
  "schemaVersion": 1,
  "blueprintId": "blueprint-28",
  "evidenceClass": "local-media-run",
  "executedAt": "2026-10-13T18:54:22.043Z",
  "nodeVersion": "v24.14.0",
  "ffmpegVersion": "ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers",
  "ffmpegBinarySha256": "a90e3db6a3fd35f6074b013f948b1aa45b31c6375489d39e572bea3f18336584",
  "fontSha256": "2c76254f6fc379fddfce0a7e84fb5385bb135d3e399294f6eeb6680d0365b74b",
  "fontVersion": "Version 2.004;hotconv 1.0.118;makeotfexe 2.5.65603",
  "productionTaskRun": false,
  "providerModelTest": false,
  "externalNetworkRequests": 0,
  "sourceClip": "Original synthetic colored geometric slate generated with lavfi; no model output",
  "cues": [
    {
      "startMs": 200,
      "endMs": 950,
      "text": "字幕安全检查 / Subtitle check"
    },
    {
      "startMs": 1000,
      "endMs": 1750,
      "text": "简体：蒸汽轻轻升起"
    },
    {
      "startMs": 1800,
      "endMs": 2550,
      "text": "繁體：蒸氣緩緩升起"
    },
    {
      "startMs": 2600,
      "endMs": 3350,
      "text": "日本語：静かな夜　한국어: 고요한 밤"
    }
  ],
  "coverage": {
    "checkedCodepoints": 43,
    "missing": [],
    "cmap": {
      "format": 12,
      "platform": 3,
      "encoding": 10
    }
  },
  "fontSelectionLog": [
    "[Parsed_ass_0 @ 0x1317154e0] libass API version: 0x1700000",
    "[Parsed_ass_0 @ 0x1317154e0] libass source: tarball: 0.17.0",
    "[Parsed_ass_0 @ 0x1317154e0] Shaper: FriBidi 1.0.12 (SIMPLE) HarfBuzz-ng 6.0.0 (COMPLEX)",
    "[Parsed_ass_0 @ 0x1317154e0] Loading font file 'fonts/font.otf'",
    "[Parsed_ass_0 @ 0x1317154e0] Using font provider coretext",
    "frame=    0 fps=0.0 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s speed=N/A    \r[Parsed_ass_0 @ 0x1317154e0] fontselect: (Noto Sans CJK SC, 400, 0) -> NotoSansCJKsc-Regular, 0, NotoSansCJKsc-Regular"
  ],
  "frameChecks": [
    {
      "atSeconds": 0.6,
      "png": "keyframe-01.png",
      "subtitleBand": {
        "x": 0,
        "y": 600,
        "width": 1280,
        "height": 120
      },
      "changedPixelsWithChannelDeltaOver16": 4948,
      "meanAbsoluteChannelDelta": 3.893654513888889,
      "claim": "Decoded pixels changed in the subtitle band; this alone does not establish character correctness."
    },
    {
      "atSeconds": 1.4,
      "png": "keyframe-02.png",
      "subtitleBand": {
        "x": 0,
        "y": 600,
        "width": 1280,
        "height": 120
      },
      "changedPixelsWithChannelDeltaOver16": 3623,
      "meanAbsoluteChannelDelta": 2.8102994791666664,
      "claim": "Decoded pixels changed in the subtitle band; this alone does not establish character correctness."
    },
    {
      "atSeconds": 2.2,
      "png": "keyframe-03.png",
      "subtitleBand": {
        "x": 0,
        "y": 600,
        "width": 1280,
        "height": 120
      },
      "changedPixelsWithChannelDeltaOver16": 4036,
      "meanAbsoluteChannelDelta": 3.235249565972222,
      "claim": "Decoded pixels changed in the subtitle band; this alone does not establish character correctness."
    },
    {
      "atSeconds": 3,
      "png": "keyframe-04.png",
      "subtitleBand": {
        "x": 0,
        "y": 600,
        "width": 1280,
        "height": 120
      },
      "changedPixelsWithChannelDeltaOver16": 5696,
      "meanAbsoluteChannelDelta": 4.222549913194444,
      "claim": "Decoded pixels changed in the subtitle band; this alone does not establish character correctness."
    }
  ],
  "outputs": {
    "sample-source.mp4": {
      "sha256": "cdfa72000a49a0aab68ead31ab8d44a594cd0a9f7063fed97c2968bff7223857",
      "bytes": 6539
    },
    "subtitle-burned.mp4": {
      "sha256": "2ab0090e358e94e380f3d7ebc18f4f54e044b6a4bf64683fcccdd386aa659ddf",
      "bytes": 22781
    },
    "sample.ass": {
      "sha256": "dda4e60592eb7fbb1dd5fdb4d54175407392db842a568ee58a3c5b8000e3f785",
      "bytes": 879
    },
    "keyframe-01.png": {
      "sha256": "e5928cad6de5e8fe52788c5239a1f71701c32bf882af2a6cf2d16505705413ae",
      "bytes": 28481
    },
    "keyframe-02.png": {
      "sha256": "0eb6cb90406278b0a10178b42ab419f7101c5d42966eb6f3607491ff1fd71f98",
      "bytes": 25095
    },
    "keyframe-03.png": {
      "sha256": "1db7dbb886a716ee2695d5aaee90ad48e0280d0b13cd59232004c0b384dcc62b",
      "bytes": 26954
    },
    "keyframe-04.png": {
      "sha256": "f8ae32fb2ecc1bf933b5c2a72615f068544125fbc92ed8e7d096e1fc359c6d01",
      "bytes": 30957
    }
  },
  "passedScenarios": [
    "strict-UTF8-SRT-preflight",
    "pinned-font-cmap-coverage",
    "bounded-actual-libass-burnin",
    "font-selection-observed",
    "four-keyframes-decoded",
    "four-subtitle-band-pixel-differences",
    "media-and-frame-output-hashes",
    "valid-four-cue-UTF8-and-CJK-cmap",
    "known-missing-codepoint-detected",
    "invalid-UTF8-rejected",
    "UTF16-BOM-rejected",
    "NUL-control-rejected",
    "timestamp-minute-range-rejected",
    "non-centisecond-SRT-boundaries-rejected",
    "collapsed-ASS-range-rejected",
    "overlapping-cues-rejected",
    "ASS-and-HTML-markup-refused",
    "variation-sequence-refused",
    "truncated-font-refused",
    "CLI-option-value-boundary",
    "CLI-duplicate-options-refused",
    "missing-font-file-refused",
    "font-symlink-refused",
    "input-path-traversal-refused",
    "network-input-refused",
    "output-path-traversal-refused",
    "missing-glyph-stops-before-FFmpeg",
    "pinned-font-hash-drift-refused",
    "special-filename-is-data-not-shell"
  ],
  "limitations": [
    "Cmap checks default glyph indexes only; regional CJK forms, variation sequences, kerning and shaping need additional validation.",
    "Decoded pixel differences and nonempty PNGs do not prove characters are correct; compare actual frames to the intended text.",
    "This run contains no MiniMax/provider generation, production API, billing or output-quality test."
  ],
  "scriptHashes": {
    "subtitle-check.mjs": "8938ecd21c2d0ff4df11c2477cc8bfb4e871cd66e2f89423541a9be41752a241",
    "run-recipe.mjs": "4aa6876161f851c60ddcaa60efce62efca7dfd0adddfd07ac4640ca6ec0450db",
    "run-preflight-tests.mjs": "851a0e4ecd36079b73465ab324e911b03db1378345ba1f2b59b8422ad393601b"
  },
  "preflightEvidence": {
    "path": "preflight-test-receipt.json",
    "sha256": "04cc4039d06e533434cf4048578a886548510c01ae5fe99d2454b5ecd8621291",
    "scenarioCount": 22,
    "passed": true
  },
  "scenarioCount": 29,
  "fontProviderObserved": "coretext",
  "fontProviderLimitation": "This macOS build reports CoreText despite the supplied fontconfig file. The bundled font was loaded and its PostScript face selected in the log; no claim of general system-font isolation is made.",
  "subtitleTimingPrecision": "Both SRT and direct ASS conversion require 10 ms-aligned start/end times; finer boundaries are rejected before rendering."
}
