{
  "date": "2026-10-04",
  "environment": "Codex in-app browser on Windows; engine version not captured; local static production build at http://127.0.0.1:5176/webp-to-jpg/",
  "extraction": "Actual converter Download JPG data URLs read from the rendered DOM and decoded to files. Browser downloadMedia receipt timed out; no successful browser save receipt is claimed.",
  "browser_download_receipt": false,
  "input_hashes_verified": 7,
  "outputs": [
    {
      "input": "alpha-bands.webp",
      "output": "alpha-bands.jpg",
      "format": "JPEG",
      "width": 256,
      "height": 128,
      "bytes": 1074,
      "sha256": "33e53b1ffede0291391b6b6232a8f6d6d10a86871ab7f1a1afdd8fa8f6c6db4b",
      "input_bytes": 72,
      "larger_than_input": true,
      "alpha_probe_positions": [
        [
          32,
          64
        ],
        [
          96,
          64
        ],
        [
          160,
          64
        ],
        [
          224,
          64
        ]
      ],
      "alpha_probe_rgb": [
        [
          255,
          255,
          255
        ],
        [
          255,
          127,
          126
        ],
        [
          0,
          0,
          254
        ],
        [
          191,
          255,
          192
        ]
      ],
      "expected_white_composite_rgb": [
        [
          255,
          255,
          255
        ],
        [
          255,
          127,
          127
        ],
        [
          0,
          0,
          255
        ],
        [
          191,
          255,
          191
        ]
      ],
      "maximum_allowed_channel_error": 3
    },
    {
      "input": "odd-detail.webp",
      "output": "odd-detail.jpg",
      "format": "JPEG",
      "width": 257,
      "height": 129,
      "bytes": 8522,
      "sha256": "2a6cd3d7993b874528731750cf5864c345166ef3cee207a8c04b4fcf5ac1ed63",
      "input_bytes": 1370,
      "larger_than_input": true,
      "mean_absolute_rgb_difference_from_decoded_webp": [
        1.8722890839441377,
        2.976985491509064,
        14.644406237746207
      ],
      "interpretation": "Pixel differences after another lossy encoding; not a perceptual quality score."
    },
    {
      "input": "two-frame.webp",
      "output": "two-frame.jpg",
      "format": "JPEG",
      "width": 96,
      "height": 64,
      "bytes": 798,
      "sha256": "d718d9d3ff1247b54954a6692c8e6494d0790e6469355ed932c61b4100b635d8",
      "input_bytes": 144,
      "larger_than_input": true,
      "center_rgb": [
        230,
        20,
        21
      ],
      "observation": "Single JPEG matches the red first frame, not the blue second frame."
    },
    {
      "input": "side-4096.webp",
      "output": "side-4096.jpg",
      "format": "JPEG",
      "width": 4096,
      "height": 8,
      "bytes": 1145,
      "sha256": "4ca83cde104b4bb146a0856d99b3f2d8c3d5c43158ec6d2f0a4cc0a4af7db35f",
      "input_bytes": 44,
      "larger_than_input": true
    }
  ],
  "rejections": [
    {
      "sample": "side-4097.webp",
      "error": "Image dimensions must be at most 4096 pixels per side and 16 million pixels total.",
      "no_download": true
    },
    {
      "sample": "truncated.webp",
      "error": "This image could not be opened in this browser.",
      "no_download": true
    },
    {
      "sample": "renamed.webp",
      "error": "This file is not a valid WEBP file.",
      "no_download": true
    }
  ],
  "scope": "These synthetic fixtures only. Browser JPEG encoders can change exact bytes and hashes. Negative UI records are saved observations, not re-executed by this Python script."
}
