Skip to content

Versioned compatibility evidence

The current public evidence matrix contains 3,934 total rows: 3,217 decode / inspect / verify rows and 717 encode rows. Of those, 3,217 decode rows are active and 690 encode rows are active; 27 encode rows remain planned.

WebP lossless method-six token and sink parity — 2026-11-11

The active parity row encode:webp:enc_lossless_method_6_tiled_noise_token encodes a deterministic 128×1024 RGB image made from eight repeats of a pinned 128×128 noise tile. It checks Pillow 12.2.0 encoded bytes and decoded pixels, including the token-aware encoder and append-only sink path. The selected run passed 1/1 row, produced 49,376 encoded bytes, matched all decoded pixels, made six public encode calls, and observed zero panics.

This is encoder stress and parity evidence for image-slash-star#9h5w; it did not increase the observed branch count in src/codecs/webp/native/encoder/backward_refs.rs. The 500-entry cost-manager fallback stayed false after 1,020 and 680 insertion attempts at its two checked sites, so this row does not close that branch gap. Sixteen- and thirty-two-repeat probes also passed parity without reaching the fallback and took longer, so the retained fixture uses eight repeats. The retained LLVM report is local evidence only: Coverage MCP was not queried, source identity is unverified, and test attribution is unknown.

Selected report: .coverage-mcp/local-evidence/selected/20261111T052625.786070Z-b2d38ea9adba4886bd05b4b26641aa6a/coverage.json (SHA-256 b3a1f49845a6f508b671b08e6560226068cc3926829853d9f56bc72b4df59c06). Its local receipt SHA-256 is 4cda522035242aa9fc1906fdb6f1aa5fab92313b15739e037ce58f4fbb61103f.

JPEG progressive YCCK and long Huffman mode parity — 2026-11-11

Appended decode:jpeg:progressive_ycck_subsampled_17x9 and decode:jpeg:long_huffman_code_slow_path to the append-only mode_decode_cases index, which now contains 58 rows across all eight decode formats. The progressive YCCK case adds a progressive CMYK layout; the grayscale case uses eleven-bit DC and AC Huffman codes to reach the decoder's slow fallback. The indexed rows check owned and borrowed header identity, decoded-transfer identity, token-aware decode, max-pixel policy, and exact Pillow pixels.

The focused run passed 2/2 rows: 612 exact CMYK bytes for progressive YCCK and 64 exact L8 bytes for the long-code case. Coverage MCP's selected-report query found no missing branch group in JPEG's fast-reader Huffman fallback at src/codecs/jpeg/decode/huffman.rs:371. The separate checked dequantization overflow fallback in progressive JPEG remains unobserved in this selection; the parser bounds coefficients to i16 and quantizers to u16, making that overflow unreachable from an accepted JPEG input. No unit tests or runtime codec changes were added.

The selected LLVM report contains 3,017/142,891 lines, 382/32,132 branches, 247/9,185 functions, and 4,543/221,283 regions for this two-row subset. These are not aggregate coverage totals: Coverage MCP marks source identity unverified and test attribution unknown. Report SHA-256: a46e4716fd044c1e915b8b49f859348cbed7ed9b1e7f86bb8799d8e360d0f7bd; local receipt SHA-256: 4da3e37af1cef5fe656fe82989b67efd1ecd35d14cbe7e972a0ec4059b6bcc80.

Selected report: .coverage-mcp/local-evidence/selected/20261111T071142.720348Z-00c2643339cf45d9a7043a657cf90912/coverage.json.

WebP lossy method-3 SNS strength parity — 2026-11-11

The WebP VP8 encoder now uses zero SNS strength for methods below 4 and the libwebp default strength of 50 for methods 4 and above. The new active parity row encode:webp:enc_lossy_sns_strength_method_3_q50 checks exact Pillow 12.2.0 encoded bytes and decoded pixels at quality 50, including token-aware encoding and the append-only sink path. The shared encode runner also checks that the sink preserves its existing prefix and reports the exact appended byte count.

Selected parity passed 4/4 rows: the GIF and TIFF header/transfer-mode edge cases, the new WebP method-3 case, and the existing WebP method-5 trellis case. The local Coverage MCP report for that selected run is .coverage-mcp/local-evidence/selected/20261111T023804.203107Z-e1aa38b8da0042a9909aed1e363e8a7f/coverage.json; its WebP VP8 query reports 1,118 covered branches of 32,130 for this selected subset. This local selection is not a whole-repository coverage result.

JPEG trailing DHT partial-length parity — 2026-11-11

Selected the twelve active baseline 4:4:4 rows for valid, missing, partial, truncated, and oversized post-scan DHT/metadata tails. This includes the existing baseline_444_single_scan_dht_missing_length and baseline_444_single_scan_dht_partial_length cases: both preserve the complete 8×8 RGB scan when the trailing DHT ends with no EOI and has zero or one length byte. All twelve rows passed exact Pillow pixel/error parity.

Coverage MCP reports no remaining branch group at src/codecs/jpeg/decode/parser.rs:546; the selected input set observes both complete and incomplete trailing DHT length fields. It still reports the checked_add overflow outcome at the next condition as unobserved. The marker length is a u16 and its position is inside a valid slice, so that overflow is not reachable through a public input and does not warrant a parity row. The selected report records 2,831/142,880 lines, 369/32,128 branches, 235/9,183 functions, and 4,025/221,266 regions. Coverage MCP marks source identity unverified and test attribution unknown; these are selected-run totals, not an aggregate coverage claim. The accompanying receipt is local evidence, not a Coverage MCP source/build receipt.

Selected report: .coverage-mcp/local-evidence/selected/20261111T004831.265337Z-9e06b707c43441e1a56fafd9b604c00b/coverage.json (SHA-256 14e6c06b9b21975dde1c42f23c11b66eac548d1f81c5e756081ac9cd2ed8cb25). Its local receipt SHA-256 is 2a8174d2909f541c210e45eaa992599684eec6c02368e802ea23c51f4e22c4b4.

AVIF 12-bit 4:2:0 alpha mode identity parity — 2026-11-10

Appended decode:avif:high_bitdepth_still_12bit_420_alpha_odd_edge_17x9 to the append-only mode_decode_cases index, which now contains 52 entries. Its Rgba8 header and transfer pair was already represented by another AVIF layout; this separate 17×9, 12-bit 4:2:0 auxiliary-alpha input covers odd right and bottom chroma edges in the specialized reconstruction path. The indexed row checks owned and borrowed header identity independently from the decoded transfer identity, then compares all 612 decoded bytes with the exact Pillow reference.

The focused parity run passed 1/1 row. Coverage MCP was queried against the selected report and reports 13,929/142,865 lines, 2,158/32,126 branches, 992/9,182 functions, and 18,786/221,250 regions. Its source identity is unverified and test attribution is unknown, so these are selected-run totals, not an aggregate coverage increase. The query lists six missing invalid-shape arms in convert_subsampled_420_12bit_alpha; the retained full-matrix report has the same source hash for src/codecs/avif/decode.rs and records those shape-error arms as observed by the existing fault-contract rows. No ordinary unit tests or codec implementation changes were added.

Selected report: .coverage-mcp/local-evidence/selected/20261110-avif-12bit-420-alpha-mode/coverage.json (SHA-256 d2cb74598515f8feab756a77c46f6ba72b037c690c4c11934c1da5c8838d0296). Its local receipt SHA-256 is fe061f064b629c5594b1291ddde890e021804ea0021c11f817a640f67cc15d05.

JPEG and PNG sequence-option decoder parity — 2026-11-10

For image-slash-star#dgby, enabled the public token-aware and work-budget sequence decode operations on the existing JPEG subsampling_444 and PNG apng_animated parity rows. The JPEG case covers sequence fallback when no sequence codec is available; the APNG case exercises the incremental sequence codec. Both paths compare format, sequence validity, and exact reference pixels; still-image fallback also checks decoded transfer and raster identity. The selected parity run passed 2/2 rows, covering all four option/case pairs.

Coverage MCP comparison with the retained full report observed four branch coordinates in decode_sequence_token_format_with_mode that were absent from the selected cases' previous measurement, with no remaining queried branch group. Coverage MCP marked the comparison limited because source/build identity is unverified. The selected report records 4,092/142,880 lines, 551/32,132 branches, 315/9,183 functions, and 5,998/221,268 regions. These are selected run totals, not an aggregate project coverage claim. The accompanying receipt is local evidence and is not a Coverage MCP source/build receipt. No ordinary unit tests or decoder implementation changes were added.

Selected report: .coverage-mcp/local-evidence/selected/20261110T184641.825120Z-5b3f7eef216349f8bf2a58ae25738bc4/coverage.json (SHA-256 3801ec85846f3bd2651fe6b02af964d6bda10ceb71083393448fb822b327ad8c). Its local receipt SHA-256 is 05123d713b023a552d2b123b923ae05adcb65e33120e19e44c50ed89e8a302f3.

JPEG and GIF token-aware append-only sink parity — 2026-11-10

For image-slash-star#9h5w, extended two existing encoding parity rows through token-aware append-only sinks. The JPEG progressive 4:2:0 restart case checks still-image and one-frame sequence sink delivery; the animated GIF case checks two-frame sequence sink delivery. Each call preserves the existing sink prefix, reports the exact appended length, and matches both Pillow's encoded-byte reference and the ordinary Rust encoder. The focused run passed 2/2 rows with 12 counted public encode calls and no panics.

Coverage MCP comparison with the retained full report observed two branch coordinates in encode_sequence_to_sink_with_token, covering JPEG dispatch and its typed JPEG options. The comparison is limited because source/build identity is unverified and test attribution is unknown. The selected report records 8,032/142,880 lines, 1,077/32,132 branches, 582/9,183 functions, and 12,246/221,268 regions. These are selected-run totals, not an aggregate project coverage claim. No ordinary unit tests or codec implementation changes were added.

Selected report: .coverage-mcp/local-evidence/selected/20261110T193453.903506Z-14a596dd251b4131a79de76c391f66d8/coverage.json (SHA-256 ac885f241917b01430869ae7bcab9209d5bb233402c8b13a55998aff37e52373). Its local receipt SHA-256 is 73b2d44d71ffee139d1888d5ccf7669c84080e44172d4f32838d86c98ebe9479.

JPEG YCCK mode identity and CMYK encode parity — 2026-11-10

Appended decode:jpeg:ycck_h2v2_even_upsample_edges_18x10 to the append-only mode_decode_cases index, which now contains 53 entries. This 18×10 YCCK input exercises the even-edge 4:2:0 interpolation layout separately from the existing odd-edge YCCK representative; the index checks the CMYK header and decoded transfer identities independently before exact pixel parity.

The focused parity run passed 2/2 rows. The YCCK decode matched all 720 Pillow reference bytes. The prioritized existing encoding row encode:jpeg:enc_cmyk_subsampling_420_odd_edges emitted 544 bytes and re-decoded to exact 13×9 CMYK pixels. The encode-mode pair remains represented by its existing unique index entry. Fixture integrity, capability documentation, and matrix-hash receipts pass after regeneration.

Coverage MCP was queried against the selected report. It marks source identity unverified and test attribution unknown, so the result is not an aggregate coverage claim. The remaining YCCK and row-upsampling gaps point to cfg(coverage) malformed-buffer fault hooks; no additional public-input case was inferred from those hooks. No ordinary unit tests or codec implementation changes were added.

Selected report: .coverage-mcp/local-evidence/selected/20261110T110012.212196Z-a5e3784124ac4bf280a4fe8cae2b54ca/coverage.json (SHA-256 53197dcfca5b14ccecf7c8bcdcf62d20f1a924dcb448bd78986c241ac9e738e7); its local receipt SHA-256 is 72d1a778a0733903ec85ae4ef7cd7de47879390cbfe048352906e3cc9939dee4.

TIFF CIELAB SampleFormat parity — 2026-11-10

For image-slash-star#y81n and image-slash-star#dgby, added five active TIFF decode rows around CIELAB SampleFormat and ExtraSamples: zero-count, signed, three explicit unsigned values, mixed signedness, and an unmatched extra sample. The three Pillow-accepted inputs preserve exact LAB header and decoded transfer identity; the other three reject with the same public malformed-input outcome. The focused parity run passed 6/6 rows, including the existing lab baseline. The mode-decode index remains at 40 because LAB → LAB was already represented. Restored the existing palette associated-alpha error row to the manifest after matrix regeneration showed that the row had been present only in the generated matrix.

Coverage MCP reports no missing branch at src/codecs/tiff/inspect.rs:443-446 in this six-case local measurement. The measurement is source-unverified with unknown test attribution, so this is focused branch evidence rather than a verified repository-wide coverage increase. Report SHA-256: 7626d1b9bcea67190c63d5293f4bae3ebf57be2ff6500cb317f1992f8886501c; local receipt SHA-256: 993466b8136a5864a692c0704193e5f21712ebb75554d36739b7cd6832859b7c.

Report: .coverage-mcp/local-evidence/selected/20261109T235936.686964Z-fbbb0ad80a5446f28fbffbc60782ccc5/coverage.json.

The complete matrix then passed 3,899/3,899 active decode/encode parity rows and 206/206 fault contracts (4,105 active selections including fault contracts); 27 planned encode rows remain unexecuted. Its LLVM report records 100,752/142,863 lines (70.5235%), 20,920/32,126 branches (65.1186%), 5,471/9,180 functions (59.5969%), and 152,980/221,254 regions (69.1423%). Coverage MCP comparison reports four newly observed branches in layout_and_palette at lines 443–445 and no missing branches at lines 443–446; one separate branch remains at line 440. The report source and test attribution are unverified, so these are local measurements rather than a confirmed project-wide coverage increase. Full report SHA-256: c29b68d6eaa6b51be15eb1c95f1682783f08aa883f91edf6d190e3cd5596b8e1; local receipt SHA-256: 354d7b001237a9acc8198cffaa657b2ee7d2d8b99860efcd878e24308a11d367.

Full report: .coverage-mcp/local-evidence/selected/20261110T000200.834727Z-48aad626c926404dbdb92819486bbd00/coverage.json.

WebP animated VP8L alpha-hint mode parity — 2026-11-10

For image-slash-star#y81n and image-slash-star#dgby, added decode:webp:animated_animated_vp8l_alpha_hint_without_vp8x_alpha_flag. It clears the animation's VP8X alpha flag while preserving alpha-bearing VP8L frames. Pinned Pillow accepts the stream as RGB and returns both exact frames, pixel data, and frame durations. The focused parity run passed 1/1. Appended frame-indexed mode-decode entries for both frames; the index now contains 51 cases.

Coverage MCP comparison against the retained full report found one newly observed branch arm at src/codecs/webp/native/lossless.rs:155, where an alpha-bearing VP8L frame enters the RGB animation path. This is a focused local observation: source/build identity and test attribution are unverified, so it does not prove an aggregate coverage increase. The selected LLVM report records 1,824/142,865 lines, 195/32,126 branches, 176/9,182 functions, and 2,513/221,250 regions. Report SHA-256: 7c82b4836a6493dd2b9fcd08a3614304a9c1b1f822adc21b57e9abe810b1d3d4; local receipt SHA-256: 8e172d97b20f450234dc8fc0c36e91c408b23b4abd6672a70623cf713a295de0.

Report: .coverage-mcp/local-evidence/selected/20261110T084306.932359Z-3139debbf6ad408babae26fc6100894c/coverage.json.

WebP signed I-mode token parity — 2026-11-10

For image-slash-star#9h5w, extended active case encode:webp:enc_lossless_i32_signed_clamp to run the public token-aware WebP encoder as well as the ordinary encoder for signed 32-bit TIFF I input. The selected parity run passed 1/1: both Rust paths matched Pillow's 48-byte output, and the decoded result retained exact 257×1 RGB pixels. The runner made five public encode calls and observed no panics. The mode-encode index remains at 59 entries because I → Rgb8 was already represented.

Coverage MCP's focused branch query no longer reports a missing branch in expand_i32_to_rgb at src/codecs/webp/encode/mod.rs:1222. This is local selected-case evidence only: Coverage MCP marks the report source unverified and test attribution unknown, so it does not establish a repository-wide coverage change. Report SHA-256: 640f4bfd8a9d77ce1431c7af242e1ce3a4102bfcd47e481869a4d9c73c54a197; local receipt SHA-256: 0bf2f1b43423aae4a51671299133d99f7b22da4bc9532e2b5cf83da046c9a5bb.

Report: .coverage-mcp/local-evidence/selected/20261109T230156.077554Z-39daa69e321b4ea598261d917316a1c4/coverage.json.

The full matrix run passed 3,894/3,894 active decode/encode parity rows and 206/206 fault contracts (4,100 active selections including fault contracts); 27 planned encode rows remain unexecuted. Its local LLVM report records 100,752/142,863 lines (70.5235%), 20,916/32,126 branches (65.1061%), 5,471/9,180 functions (59.5969%), and 152,980/221,254 regions (69.1423%). Coverage MCP comparison reports the expand_i32_to_rgb branch as newly observed against the prior snapshot, but source/build identity is unverified, and the aggregate branch count is unchanged. Treat this as local evidence, not a verified project-wide coverage increase. The local receipt records no source changes during the run, but the checkout was dirty.

Full report SHA-256: 30178374b94d956263146e43e5377f0886e99af11f77a9bf6c38c1ce9462310b; local receipt SHA-256: 780b1e599747ca0e34f70282ff693529d78838c2912612453cb5ec274d2b316e.

Full report: .coverage-mcp/local-evidence/selected/20261109T230549.983972Z-643456c7952c4f0296395cb93ac51c1a/coverage.json.

WebP lossless EXIF metadata without prefix — 2026-11-10

For image-slash-star#9h5w, added active parity case encode:webp:enc_lossless_exif_unprefixed_metadata_reuse. It gives the lossless WebP metadata-reuse path a valid EXIF TIFF payload without the optional Exif\0\0 prefix, covering the fallback arm in attach_metadata_reusing_output. Pinned Pillow 12.2.0 and the Rust encoder produce the same 74-byte output; re-decoding preserves exact 1×1 RGB pixels.

The selected parity run passed 1/1, with four public encode calls and zero panics. Coverage MCP's retained full-parity report had identified the unprefixed-payload arm at src/codecs/webp/encode/mod.rs:949 as uncovered. The selected report no longer lists that arm as missing; other branches in the metadata-reuse function remain uncovered. Coverage MCP marks this local report source identity unverified and test attribution unknown, so this confirms the focused branch hit rather than an aggregate coverage change. The report's SHA-256 is bd252dfeefda56fadbdab053add8710b4cdc7a6dae7767ad5481307f1a6a37e1; its local receipt SHA-256 is 3bb9f9d92f22c97164cb16453102ae99cd7af0af5cb61b1c1bf0dc001aaddc38. Mode case indexes remain at 40 decode entries and 59 encode entries.

Report: .coverage-mcp/local-evidence/selected/20261110-webp-exif-unprefixed/coverage.json.

Sequence-frame mode decode parity — 2026-11-09

Extended the append-only mode_decode_cases index to represent an exact sequence frame with frame_index. The new entries cover Pillow's P header → Rgb8 second-frame transfer in decode:gif:netscape_loop_split_subblocks, and Rgb8 header → L8 second-page transfer in decode:tiff:multi_page_multipage_mixed. Mode-pair completeness now includes every exact Pillow-backed sequence frame, not only each file's first decoded image. The index contains 40 entries.

The selected parity run passed both rows (2/2), including exact frame pixels, sequence metadata, and frame modes. cargo fmt --all -- --check passed; no codec implementation changes or unit tests were added.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261109T180744.736818Z-6fd7f340e09746c486e36a0bd6b4cb0a/coverage.json (SHA-256 5e0e95258194cea3f22f57fe6196901b7b5fb115cb646e313f4fe441d87878bc). The local receipt SHA-256 is a04ea08b8ec6c6e300b5f19259c9f8741eff5b22cf8a585ccfbf1f2e125a642b. This selected report measures 2,593/142,863 lines (1.8150%), 307/32,126 branches (0.9556%), 260/9,180 functions (2.8322%), and 3,819/221,254 regions (1.7261%). Coverage MCP was not queried; the local receipt marks source identity unverified and test attribution unknown. These selected counts are not aggregate project coverage.

JPEG multi-scan restart markers without DRI — 2026-11-09

Added decode:jpeg:baseline_444_multiscan_restart_markers_without_dri by removing only the DRI=1 segment from the pinned two-scan JPEG fixture. Pillow 12.2.0 accepts the complete JPEG and returns the pinned 16×8 RGB pixels. The selected parity run passed 2/2, including the existing single-scan no-DRI case. The mode decode index did not need a new entry because JPEG RGB was already indexed. decode.rs no longer checks scans.len() == 1 inside the single-scan reconstruction helper: public dispatch sends every multi-scan image to the multi-scan helper first.

The selected local LLVM report measures 3,458/142,785 lines (2.4218%), 435/32,112 branches (1.3546%), 246/9,180 functions (2.6797%), and 5,359/221,185 regions (2.4229%). This selected report is local-only; Coverage MCP was not queried, so these totals do not establish repository-wide coverage.

Report: .coverage-mcp/local-evidence/selected/20261109T114509.280683Z-607c42b1162749c6ac7d522f62b2e897/coverage.json (SHA-256 4f9f939883c1b91855a13e79cd3e997d82cf63a3758471a662468614e668c8fb).

ICO source dimension parity — 2026-11-09

For image-slash-star#9h5w, the full parity coverage snapshot 20261109T090133.287637Z-1797a898ca364af99e0fda666ed44339 passed all 3,881 active decode and encode rows; 27 planned rows remained unexecuted. Two ICO encoder parity cases exercise the public source-size guard with valid requested 16×16 entries: a 257×129 JPEG source covers the width limit, and a 192×272 PNG source covers the height limit. Pillow 12.2.0 encodes and reopens both ICOs; the Rust encoder returns the declared dimensions error in each case. The selected case run passed 2/2 rows.

The parity-only LLVM report records 97,871/142,788 lines (68.5429%), 20,349/32,114 branches (63.3649%), 5,272/9,180 functions (57.4292%), and 148,896/221,186 regions (67.3171%). Coverage MCP reports 11,765 unobserved branches, concentrated in AVIF AV1 block decoding. Its local query labels this run's source as unverified and test attribution as unknown because no managed receipt-registration action is connected; the local execution sidecar records 3,881 passes, zero failures, and no source changes during the run. In ICO encoding, the remaining four reported branches are in directory_header's defensive invalid-input path, which is precluded by public source-size validation. No unit tests or runtime codec changes were added.

WebP scalar-mode encoder parity — 2026-11-09

Added five Pillow 12.2.0 parity rows for WebP encoding from TIFF I;16B, I, and F sources. They cover big-endian source metadata, signed 32-bit clamp boundaries, float conversion, and the token-aware preparation checkpoint on a 128×128 float image. WebP converts the scalar transfer samples to grayscale RGB using the same native-order sample interpretation and saturating conversion as Pillow. The public-mode error contract now keeps I and F in the accepted mode set and continues checking structured errors for unsupported modes. The append-only mode encode index now includes I;16B → Rgb8, I → Rgb8, and F → Rgb8.

The focused selected parity run passed 5/5 rows with exact encoded bytes and pixel output. make lint and make lint-x86-simd pass, including the strict x86-64 SSE2 baseline and AVX2 Clippy builds. No unit tests were added. The selected LLVM report measures 6,752/142,788 lines (4.7287%), 1,130/32,114 branches (3.5187%), 455/9,180 functions (4.9564%), and 9,578/221,186 regions (4.3303%) for this run. Coverage MCP was not queried; its local receipt marks source identity unverified and test attribution unknown, so these selected counts are not a repository-wide coverage claim.

Report: .coverage-mcp/local-evidence/selected/20261109T061152.051311Z-3c05f788dd644b3eb82e8a57779bd4e0/coverage.json (SHA-256 a1dc51f16caa38542ac6c7fc5d873ca4f13a05d3077bc483001410aea577bf1a).

TIFF palette-extra mode identity — 2026-11-09

Added decode:tiff:palette_alpha_separate_planar: Pillow inspects and verifies the separate-plane header as PA, then rejects pixel decoding. The new decode:tiff:palette_unspecified_extra_sample row covers a contiguous indexed image with ExtraSamples=0; Pillow retains P identity and drops the second sample. TIFF inspection now preserves these header identities independently of pixel storage, while decoding keeps Pillow's malformed result for separate PA planes. The existing PA encoder parity row verifies encoded header and decoded transfer identity through the append-only sink.

The focused selection passed 5/5: decode:tiff:compression_none, decode:tiff:palette_alpha, decode:tiff:palette_alpha_separate_planar, decode:tiff:palette_unspecified_extra_sample, and encode:tiff:enc_palette_alpha. Coverage MCP reports no missing branch groups at inspect.rs:439 or the decode_ifd guard at decode.rs:253. Matrix validation checked the append-only mode decode/encode case indexes, and the encoder row exercised the append-only sink. Its selected LLVM report records 2,551/142,734 lines (1.7872%), 266/32,112 branches (0.8284%), 244/9,174 functions (2.6597%), and 3,540/221,113 regions (1.6010%) across the instrumented crate. Coverage MCP labels this local report source identity unverified and test attribution unknown; these selected-case totals are not a repository-wide coverage claim.

Report: .coverage-mcp/local-evidence/selected/20261109T035617.440441Z-48d4a4b2422f41cb8869af6fda5c812f/coverage.json (SHA-256 a5012a8c32501582f9438a5dd87aa65493ae6b07b962697637643c901ab66ecba).

TIFF short ColorMap palette identity — 2026-11-09

Added decode:tiff:palette_alpha_short_color_map and decode:tiff:palette_unspecified_extra_sample_short_color_map. Pillow accepts these complete TIFF files, retains PA and P sample identities, and returns the exact samples while exposing no palette table. The latter also ignores the second sample declared with ExtraSamples=0. These cases exercise both palette-present/absent decisions in ordinary and token-aware decoding without changing the decoder implementation.

The selected parity coverage run passed 2/2 rows. Coverage MCP's report leaves only the palette-present arms unobserved at decode.rs:2191, 2199, 2470, and 2479, confirming that both palette-absent arms were reached. The local report measures 1,725/142,734 lines (1.2085%), 193/32,112 branches (0.6010%), 174/9,174 functions (1.8967%), and 2,450/221,113 regions (1.1080%). Coverage MCP labels this local report's source identity unverified and test attribution unknown; the captured matrix run itself records exactly these two case IDs, unchanged source/fixture hashes during execution, and zero failures. These selected totals are not a repository-wide coverage claim.

Report: .coverage-mcp/local-evidence/selected/20261109T045141.584220Z-f057cbc475184f558b9d92be1f35fa8d/coverage.json (SHA-256 3508735588798726bcb196fde79f851b48fd270a9b5234198588fb551be5e6eb).

Big-endian 16-bit TIFF encoder identity — 2026-11-09

Added two Pillow parity rows for a source decoded as I;16B. Uncompressed TIFF output now retains the big-endian MM header and I;16B raster identity; Deflate with horizontal prediction matches Pillow's little-endian II output and normalized I;16 identity. The encoder converts carrier samples only for the raw big-endian path and includes Pillow's single-sample tag on compressed 16-bit grayscale output. A new manifest-driven parity row covers a two-page I;16 TIFF sequence whose second frame is converted to I;16B; Pillow and Rust both reject that mixed-byte-order save.

The new focused parity selection passed 1/1: encode:tiff:enc_error_mixed_sample_byte_order_sequence. The earlier TIFF selection at commit 431c3e6 passed 66 encode rows, one big-endian decode row, and the now-retired target-only sequence contract (68/68 total). The combined selection was not rerun after replacing that contract with the Pillow parity row. No unit tests were added.

The current focused report is retained at .coverage-mcp/local-evidence/selected/20261109T023700.826628Z-e73d13e2f2c44d6fa0c060ddbb529cc1/coverage.json (SHA-256 e477f22c95d3fab74c09f8215f3f5825060019df545be041ca149b2256d22185). Coverage MCP was not queried; this is local selected-case evidence, not an aggregate coverage-gain claim. The previous selected report is retained at .coverage-mcp/local-evidence/selected/20261109T015929.647840Z-1c5c4218abe545d68c06482986e4694b/coverage.json (SHA-256 0fde190b49b1d7e0b20c09e7c2f41185794ec0df28a8c9253831506e3cee7ba1). That earlier receipt marks source identity unverified and test attribution unknown.

TIFF indexed encoding with no retained palette — 2026-11-08

Added encode:tiff:enc_indexed_missing_palette, using Pillow 12.2.0's short_color_map.tiff input. TIFF encoding now preserves its indexed P8 samples and emits the required palette ColorMap even when the decoded source has no retained palette entries. The exact encode and decode-back parity row passes. The unsupported-mode contract no longer lists P8 for TIFF.

PYTHON=.oracle-venv/bin/python make coverage-parity passes all 3,861 active decode/encode rows (3,200 decode and 661 encode); 27 planned encode rows were not run. The run did not execute separate fault-contract cases. Its matrix-run LLVM report measures 97,670/142,643 lines (68.4716%), 20,312/32,080 branches (63.3167%), 5,256/9,170 functions (57.3173%), and 148,610/220,959 regions (67.2568%). These figures describe this parity-matrix run, not full-suite coverage or the managed release baseline.

Report: .coverage-mcp/local-evidence/selected/20261108T171104.159617Z-9aab56d3b8864d3091ce6335eebfeec6/coverage.json (SHA-256 464de80a08252c239055b850cc2c3033a422736beadcd363c8e895ff24d1e089). Coverage MCP was not queried for this local report; its receipt marks source identity unverified and test attribution unknown.

CIELAB TIFF identity and PA encoder parity — 2026-11-08

Added active decode row decode:tiff:lab from Pillow 12.2.0. Basic and full header inspection, EncodedImage, EncodedImageView, normal decode, and token-aware decode retain the Pillow-visible LAB identity over the RGB8 transfer carrier; all six three-channel samples match exactly. The TIFF decoder accepts unsigned 8-bit CIELAB samples and reports Mode::ImageLab8 without converting them to RGB.

The existing PA encoder rows were also confirmed together: TIFF preserves PA indices, per-pixel alpha, and palette colors; PNG rejects PA with Pillow's cannot write mode PA as PNG error. The focused parity selection passed 3/3 rows (one decode and two encodes), with zero panics.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261108T152700.992871Z-2c0d00c6b484489e8ff2f534ace3dd9c/coverage.json (SHA-256 8288c824bf0fd5f0dc9e7d181225704f710651d6d3c39227b4d782a52da3d4e6). Coverage MCP marks this retained selected report's source as unverified and test attribution as unknown; it supports the focused parity outcome, not an aggregate coverage-gain claim.

CIELAB TIFF compression parity — 2026-11-08

Added Pillow 12.2.0 CIELAB inputs for LZW, Adobe Deflate, and PackBits TIFF. The four selected rows (decode:tiff:lab and the three compressed variants) all pass 18-byte exact pixel parity and retain LAB identity through basic inspection, ordinary decode, and token-aware decode. The compressed fixtures are generated and pinned by scripts/generate_tiff_lab_compressed_fixtures.py; their TIFF tags retain PhotometricInterpretation 8 and the requested compression.

The Coverage MCP gaps query on the selected report still ranks tiff::inspect::layout_and_palette and decoder branches as remaining gaps. This report is selected evidence only; MCP marks the source unverified and test attribution unknown, so it does not support an aggregate coverage claim.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261108T161041.861067Z-4c0d6fe5d8754ba696b01168977b5c03/coverage.json (SHA-256 39924a91884f9cfb07e0d05de82a27b7d55762499fecba973c5edcb02eca7fee). Its local receipt has SHA-256 c0176a586c60de58512644f9dec2ad9966dd7ee8c61522627d36bf5ee206caad.

F-mode encoder rejection parity — 2026-11-08

Added active encode rows for float32.tiff (Pillow mode F) to BMP, JPEG, and ICO. Pinned Pillow 12.2.0 rejects them with cannot write mode F as BMP, cannot write mode F as JPEG, and cannot write mode F as PNG for ICO's PNG-backed entry. The Rust encoder returns the corresponding structured Unsupported errors. Focused parity passed 3/3 rows with no panics.

The existing I32-to-PNG transfer was also rechecked: little- and big-endian signed TIFF inputs both match Pillow's 16-bit grayscale output after clamping to 0..65535; focused parity passed 2/2 rows.

TIFF associated-alpha identity was checked across contiguous raw, contiguous Deflate, separate raw, and separate Deflate strips. The successful decode paths match Pillow's straight-RGBA samples; separate raw retains the RGBa inspected header identity and the Pillow-compatible decode rejection. Focused parity passed 4/4 selected rows across two runs.

Selected LLVM reports are retained under .coverage-mcp/local-evidence/selected/:

  • F-mode BMP/JPEG/ICO: 20261108T141847.357857Z-9a8c1d70713649da9527a49fac6f26f8/coverage.json (SHA-256 a623052732ad32af4cdc48930b4d8b3eea57cfcc6df2d5c257546b5b0e46f6ba).
  • I32 PNG little/big endian: 20261108T142634.812024Z-5b451ed7275e4c928cee1cc7197c71fd/coverage.json (SHA-256 ae10f26072f8a46ca044f5f88af46075e49c8250bd1e176b0e8d7b16f1c02f2e).
  • TIFF associated-alpha raw strips: 20261108T141417.735466Z-92637700e538406487c40a196b6884d9/coverage.json (SHA-256 8dc919465acc235c449271f96ba766455773027595b934df072019545067fd30).
  • TIFF associated-alpha compressed strips: 20261108T142949.995633Z-86bf6264e36a49a8b13d27a2b37077b1/coverage.json (SHA-256 c9f03a541550733025cf549e4a22aaa74252356107a38a9faaee73b4660dbb99).

Coverage MCP reports these selected measurements as source=unverified and tests=unknown; they support the focused parity outcomes, not an aggregate coverage-gain claim.

JPEG grayscale restart markers without DRI — 2026-11-08

Added the active parity row decode:jpeg:grayscale_sampling_420_128x128_restart_markers_without_dri. Its deterministic source retains the entropy-coded restart markers while removing the preceding restart-interval (DRI) segment. Pinned Pillow 12.2.0 accepts the complete grayscale image. The selected public parity run passed 1/1 row with exact 16,384-byte pixel output and no panic.

The selected LLVM report records the previously unobserved outcome at src/codecs/jpeg/decode/decode.rs:2896 with branch counts 4/0 for this run. Coverage MCP's local gaps query returned status=measured and 285/32,024 branches for the selected report, with the other arm still unobserved. The report's source identity is unverified and test attribution is unknown; these are local selected observations, not a verified aggregate gain.

Report: .coverage-mcp/local-evidence/selected/20261108T000622.475420Z-17fe23a16c234b878586bc49da2aa5ba/coverage.json (SHA-256 67565ae163e90a75b53c91afb21d13f365e5d838de843eb5e42fb1603992dd22). The adjacent coverage.local-evidence.json records the exact selector, fixture hashes, toolchain, and passing execution.

JPEG baseline 4:2:2 restart markers without DRI — 2026-11-08

Added active parity row decode:jpeg:baseline_422_restart_markers_without_dri, generated by removing only the DRI=1 segment from the existing Pillow baseline 4:2:2 fixture. Its first selected run found a 782-byte pixel mismatch. Later RST-delimited entropy segments were being mapped to the first MCUs because the input supplied no DRI interval from which to calculate their MCU positions. The baseline decoder now uses the first segment for this single-scan, no-DRI case; selected output then matched Pillow exactly.

Selected parity passed 3/3 for the new row, the existing 4:2:2 DRI=1 row, and the existing grayscale no-DRI row. The local LLVM report records src/codecs/jpeg/decode/decode.rs at 1,519/4,311 regions, 1,032/2,652 lines, 162/454 branches, and 30/108 functions. Its whole-report totals are 5,318/220,945 regions, 3,424/142,632 lines, 448/32,070 branches, and 240/9,169 functions. Coverage MCP was not queried; the local receipt marks source attribution unverified and test attribution unknown. This selected run is not an aggregate coverage claim. No Rust unit tests were added.

Report: .coverage-mcp/local-evidence/selected/20261108T093025.740487Z-f02ed3bc3d90476fa11024ba1a9e0851/coverage.json (SHA-256 431973dea87ae8eaa6507bec97a4db363c07dfd9dda8c698b06282cdfa6e2058); its local receipt and captured command output are adjacent.

JPEG small baseline 4:4:4 entropy parity — 2026-11-08

Added encode:jpeg:enc_8x8_444_independent_entropy_no_optimize, using the existing 8×8 RGB JPEG source with baseline 4:4:4 sampling and Huffman optimization disabled. Pinned Pillow 12.2.0 produces the exact 672-byte reference; selected parity passed 1/1 and re-decoded to pixel-identical 8×8 RGB. The selected report records the baseline_444_independent_entropy_is_compatible true arm at src/codecs/jpeg/encode/mod.rs:4717 three times. Targeted checks of the existing 16×16 4:2:0 and 32×16 4:2:2 rows also pass and reach their matching independent-entropy helpers.

Coverage MCP reports 523/32,064 branches for the one-row report. The false arm of the 4:4:4 sampling predicate remains unobserved. MCP marks source identity unverified and test attribution unknown, so this is selected-case evidence and not an aggregate coverage claim. Report: .coverage-mcp/local-evidence/selected/20261108T071608.429017Z-70390c41963a420aa4d42e9929e03a52/coverage.json (SHA-256 464de2355f13b8539e18b06fa22f51b0d64fa2ab641a29ff06208bacd41ac18c). The 4:2:0/4:2:2 selected report is .coverage-mcp/local-evidence/selected/20261108T072051.187354Z-f147db75ef3f4ec190a949692a23b6ff/coverage.json (SHA-256 e669869098ee86114adaea06596166a705440c6fc39cf54c55ba955dc040b136).

GIF local color table under metadata limit — 2026-11-08

Split animated_gif_animated_3frame into its own active manifest row and set rust_decode_with_metadata_limit to 1,725 bytes. Its three-frame GIF contains a global color table, one local color table, four extensions, and 24,207 bytes of compressed LZW payload inside a 25,932-byte container. Selected public decode parity passed 1/1 with the exact 16,384-byte Pillow pixel reference in P mode.

The selected LLVM report observes the metadata preflight's local color-table read at src/codecs/gif/decode.rs:408-410 once per line; the file summary is 703/1,101 regions, 430/652 lines, 66/140 branches, and 21/34 functions. The selected report totals are 1,891/220,940 regions, 1,339/142,623 lines, 148/32,064 branches, and 141/9,169 functions. Coverage MCP was not queried in this session; its local receipt marks source identity unverified and test attribution unknown. These are selected local observations, not an aggregate coverage claim. No Rust unit tests were added.

Report: .coverage-mcp/local-evidence/selected/20261108T081716.234967Z-441ed5026fe34bb9ba830e6c02b1970d/coverage.json (SHA-256 34dd567a8795afa429d3124fc41bc57e3340bb3fa9b0217f37f762f7be1c79f2); its local receipt and command log are adjacent.

The existing post_frame_zero_padding and valid_frame_missing_trailer parity rows also passed together (2/2) at their exact metadata limits. Their selected report observed the end-of-input-after-frame and padding-block outcomes in metadata_bytes at src/codecs/gif/decode.rs:382-383 and :423. Coverage MCP was not queried; the selected report and local receipt are .coverage-mcp/local-evidence/selected/20261108T082216.233656Z-8eb2d55d1dc64672a277c7bc30099811/coverage.json (SHA-256 392b2603a399f8d9696b05049bfb52e920cfbba60345275f04a70d602b9d1ff8).

After merging the current main history into develop, the three rows above passed together (3/3) against the merged tree. The selected report records 710/1,101 regions, 435/652 lines, 73/140 branches, and 21/34 functions in src/codecs/gif/decode.rs. The receipt marks Coverage MCP as not queried, the source as unverified, and test attribution as unknown; these remain local selected-run observations, not aggregate coverage claims. Report: .coverage-mcp/local-evidence/selected/20261108T083132.867282Z-b869ddaedb8244ecaab61e5d4a60806c/coverage.json (SHA-256 1b00597a814ad6adbc86058b232764ef2d5cd0895cf9f21e7720c8b32a284d03).

AVIF sequence mode mismatch alpha fault contract — 2026-11-07

Added target-only row fault-contract:avif:avif_sequence_mode_declaration_mismatch_alpha, backed by the active five-frame RGBA8 decode:avif:high_bitdepth parity fixture. Together with the existing RGB sequence contract, both variants verify the structured sequence-decode mismatch and that a retry without fault injection succeeds. The row has oracle_status: not_applicable; it adds no Pillow parity result.

The selected local LLVM run passed both fault-contract rows. It observed both outcomes of mode == ImageMode::Rgb8 at src/codecs/avif/decode.rs:234 (one taken for each mode), where the prior RGB-only selection observed only the true outcome. Report: .coverage-mcp/local-evidence/selected/20261107T181346.208410Z-28512009f3ff444ab5ff56c187c001df/coverage.json (SHA-256 f23dd1ed448e0e908173cae0792d2979115d381b8424597fcb863adace01269e); the captured run log and local receipt are in the same directory. Coverage MCP was not queried; the local receipt marks MCP source attribution unverified. This case-only result does not update aggregate coverage totals. No Rust unit tests were added.

AV1 monochrome palette parity and selected coverage — 2026-11-07

Added active parity row decode:avif:coverage_monochrome_palette_16x16 for a deterministic 8-bit YUV400 still image with palette coding enabled. The generator checks pinned libavif 1.4.1/libaom 3.13.2 output, AV1 sequence-header monochrome signaling, deterministic AVIF bytes, and the Pillow 12.2.0 RGB reference. The fixture SHA-256 is 64d2f38fe719b898ad11c4c84e36ef26653daa2596844b2ff8cff782f1a75ff0; the 768-byte RGB reference SHA-256 is 7da6d6dc0cb94021c2425b4fc418377c69c69b03b494a8a9a1080461a8e77e72. Selected public parity passed 1/1.

The selected local LLVM report records the monochrome palette validation arm at src/codecs/avif/av1/block.rs:338 as taken 12 times, while the paired color-format palette case does not execute this arm. Report: .coverage-mcp/local-evidence/selected/20261107T170748.811387Z-007b8abc8bd24ecfb6de2b689e5c8252/coverage.json (SHA-256 ce2f9f2052077148dd279089a539db44faa2b881b39a2b8e81a3b003d3356c84); execution receipt: .coverage-mcp/local-evidence/selected/20261107T170748.811387Z-007b8abc8bd24ecfb6de2b689e5c8252/coverage.local-evidence.json. Coverage MCP is unavailable in this session, so the local receipt marks source attribution unverified and test attribution unknown. This selected run is evidence for this case only and does not change aggregate coverage totals.

ICO malformed-header decoder contracts — 2026-11-07

Added target-only contracts for the ICO reserved-field and container-type guards. Each reuses an existing Pillow-backed malformed ICO parity input, preserves Pillow's public unknown-format result, and calls the ICO decoder below format detection to require a structured Malformed error at offset 0 or 2. The six-row selected campaign passed both healthy icon/CUR parity rows, both malformed-input parity rows, and both direct-decoder contracts.

The selected LLVM branch report observed both sides of the reserved-field guard at src/codecs/ico/decode.rs:45 (1/7), both outcomes of the first type comparison at :51 (3/4), and both outcomes of the second comparison (1/2). Report: .coverage-mcp/local-evidence/selected/20261107T052654.028960Z-9b30b1442d3a4000ab8d05674e1ba6fa/coverage.json (SHA-256 81f19f0a759065d1d2db4f6ef137264334e8549b41428acceef971f07172c1b2); receipt: .coverage-mcp/local-evidence/selected/20261107T052654.028960Z-9b30b1442d3a4000ab8d05674e1ba6fa/coverage.local-evidence.json. Coverage MCP is unavailable in this session, so the receipt labels source attribution unverified and test attribution unknown. This is selected local evidence, not an aggregate coverage update.

AVIF grid with orphan dimg reference — 2026-11-07

decode:avif:grid_orphan_dimg_reference preserves the primary color-grid references, removes the two auxiliary-alpha relationships, and adds a dimg reference from auxiliary item 5 to auxiliary item 6. A sibling free box fills the removed iref bytes, preserving the enclosing metadata extent and every iloc item payload offset. Pinned Pillow accepts the 2,373-byte file as RGB and returns the shared 19,200-byte pixel reference used by grid_unreferenced_alpha_items.

The selected parity and LLVM coverage run passed 1/1. Its local report observes both outcomes of the color_items.contains(&reference.from_id) branch in src/codecs/avif/container.rs:1457 and :1484; the retained full report had zero hits on the previously missing outcomes. This selected report does not change full-suite coverage percentages. The report, command log, and local execution receipt are retained under .coverage-mcp/local-evidence/selected/avif-grid-orphan-dimg-20261107-retry/.

AVIF monochrome padded-edge context parity — 2026-11-07

The 2026-11-06 sweep passed 244 active grayscale and monochrome AVIF decode parity rows but did not execute the right-starting arm at src/codecs/avif/av1/block.rs:43768. The new public parity row decode:avif:lossless_monochrome_padded_right_context_1x128 uses a pinned 1x128 all-lossless monochrome image. Its 4x4 coded leaves extend into AV1's padded right edge, so the complete streamed-lossless path declines the one-pixel width and the monochrome fallback must decode those leaves to build neighbor context.

The case first exposed an extent error when a decoded leaf lay entirely beyond the visible canvas. The canvas now validates the decoded leaf extent, then skips copying leaves outside its storage boundary; the caller retains each decoded leaf for subsequent neighbor context. The selected public parity run passed 1/1 rows with exact Pillow RGB8 output. Branch counts at line 43768 were [372, 93], covering both the left-starting and right-starting leaf arms. No unit tests were added.

Report: .coverage-mcp/local-evidence/selected/20261106T194911.355296Z-b547351b67784b919797bd8f766d4ba2/coverage.json (SHA-256 d93ee9e114bc60d7479f8d49a1ab7374ad252567e54875bb76773ced41876b85); receipt: .coverage-mcp/local-evidence/selected/20261106T194911.355296Z-b547351b67784b919797bd8f766d4ba2/coverage.local-evidence.json (SHA-256 a3413cb2fd6a292e0921691a22cd0da5051593b7472cab4b8ab588e7dea4384a). Coverage MCP is not connected, so the receipt marks source attribution unverified and test attribution unknown. This is selected local evidence, not an aggregate coverage update.

BMP direct inspection rejects an invalid signature — 2026-11-06

Added the target-only fault-contract:bmp:bmp_inspect_invalid_signature_rejected to exercise the BMP inspector signature guard below public format detection. The contract decodes the existing Pillow-backed decode:bmp:depth_24 fixture, checks its pixel parity, changes its first signature byte, and requires a structured BMP inspection error. The existing decode:bmp:error_malformed_truncated_magic case remains public parity for a one-byte B input; detection rejects it before dispatching to the BMP codec. The new inspection seam exists only in coverage builds.

The combined selected coverage run passed all four rows: two BMP parity rows and the BMP/PNG target-only inspection contracts (2/2, oracle not_applicable). Coverage MCP gaps reports no missing branch outcome at src/codecs/bmp/inspect.rs:13. This is a selected local report, not an aggregate coverage update; Coverage MCP labels its source identity unverified and test attribution unknown. Report: .coverage-mcp/local-evidence/selected/20261105T224352.555287Z-d9bf2dc18d524dcc8ab77765bad53e42/coverage.json (SHA-256 af96402ba566233ae7849f35f0e52d5e86ffb29a05be3a729cb545e927fb68be), with receipt .coverage-mcp/local-evidence/selected/20261105T224352.555287Z-d9bf2dc18d524dcc8ab77765bad53e42/coverage.local-evidence.json (SHA-256 358521f4b580b463496d131139e09946d083539d4663ccece8a70ab5f21ac82e). No unit tests or normal-build dispatch changes were added.

AVIF exact inter-block geometry coverage attribution — 2026-11-06

Coverage MCP showed the exact-plan geometry gate once per callback monomorphization in decode_inter_translation_impl. The validation now lives in the non-generic validate_inter_transform_plan_geometry helper so branch observations aggregate across callbacks. Its original plan gate remains conditional; release builds inline the helper, while coverage builds keep one attributed body.

The selected 11-row AVIF parity run passed 11/11. Its LLVM report covers 5,581/32,020 selected branches; that selected total is not an aggregate coverage result. Coverage MCP attributes the validation to one group and reports 243 branch outcomes unobserved in this selection. The exact geometry predicate still has 20 unobserved outcomes. A line-specific query identifies the missing false outcome for visible_height == 8 on B16x8.

Report: .coverage-mcp/local-evidence/selected/20261106T024555.293798Z-40ec0dcc56144ae1b4dc97a421c773b8/coverage.json (SHA-256 667c24f081b595ab2968429954d4f19b24f608a48b0d7b32d6bd56fc71b504b1), with receipt SHA-256 76cf804050d52b347d72b61d42cb13a9a048b294702249e4bba0910be50abcfa. Coverage MCP labels source identity unverified and test attribution unknown; the retained runner log records the 11 active parity rows.

A release A–B–B–A probe used the 2048×128 animated AVIF on an Apple M3 Pro with Rust 1.96.1, three cycles, 25 timed decodes per block, and 75 samples per version. The baseline median was 9.414 ms and the helper candidate was 9.308 ms (1.13% lower). The first cycle had high timing variance, so this is evidence against a material penalty on this workload, not a speedup claim. Raw samples, build logs, commands, and source hashes are retained at .coverage-mcp/local-evidence/perf/avif-geometry-helper-abba-20261106/.

The follow-up adds quality-70 and quality-99 two-frame parity inputs with a 16x15 clipped-height B16x8 partition. The fixture generator's pinned-oracle checks passed for both inputs, and the selected run passed all 1,393 active AVIF decode rows plus five encode rows. Coverage MCP still reports the false outcome for visible_height == 8 as missing at src/codecs/avif/av1/block.rs:49555; these cases expand clipped-height pixel parity but do not close that transform-plan geometry branch. The selected report covers 12,563/32,020 branches and is local evidence, not an aggregate coverage result. Report: .coverage-mcp/local-evidence/selected/20261106T060522.104147Z-73614bcc1f98460c905bb85edc0352f0/coverage.json (SHA-256 888d892e7216ca76f29c940e29b8c3bc86efbe5c949176cabb2d1b2a3adecd0a); receipt SHA-256 80abf08ed054a1371aab458f224f0c733affe2c1cf9ffbe16629b06e86712f82.

AVIF B16x8 16×7 reachability probe — 2026-11-06

A 16×7 8-bit I420 sequence was produced from a fixture-only copy of libaom configured to force a horizontal split. Pillow 12.2, dav1d 1.5.3, and AOM 3.13.2 decoded the sequence. The temporary selected-matrix run checked exact pixels for frame 0 and sequence decoding and structure; it did not assert exact pixels for frame 1. A temporary coverage-instrumented build did not call exact_inter_block_geometry, and the selected Coverage MCP query still reported the false visible_height == 8 outcome at src/codecs/avif/av1/block.rs:49555 as missing.

This probe does not qualify as a parity fixture for that branch. It also does not prove the branch unreachable for all valid AV1 inputs. These reports are exploratory; Coverage MCP marks source identity unverified and test attribution unknown. The probe did not add a permanent fixture or matrix row. Reports: .coverage-mcp/local-evidence/selected/20261106-b16x8-forced-height7-probe/coverage.json (SHA-256 626110884caa6935ecf564969c0b5c85737069e63f4d67824b9f6a6e71bb9bd9; receipt SHA-256 91acdbdd95198bf27c6cac7fc9c58c1e48e16f435aa3d52b8d1539950e4ad4ab) and .coverage-mcp/local-evidence/selected/20261106-b16x8-forced-height7-instrumented-probe/coverage.json (SHA-256 c73712e56050bbf8dcd1461dece49d9fe717c261eec5b86647f3fedcc8465b9c; receipt SHA-256 eb631124713e46455e827b3b2c16c87c06114d9b9592ab114ac9cfe47a943ef9).

The current source path explains why this input did not reach the predicate. decode_inter_transform_size admits a lossy B16x8 split plan only for a full 16×8 visible extent. Its lossless-grid admission allows clipped extents only for the separately bounded B32 profile. validate_inter_transform_plan_geometry calls exact_inter_block_geometry only for non-single plans. Thus the current admitted plan paths cannot call the B16x8 predicate with width 16 and a clipped height. This is a source-path finding for the current implementation, not a claim that every valid AV1 stream has this restriction. No public parity case has yet shown a supported way to reach the false height comparison; revisit it if the admitted B16x8 plan grammar changes.

AVIF bounded C-string parser consolidation — 2026-11-06

The container and sample readers each had a missing-terminator path that reported NeedMore when their bounded payload lacked a NUL byte. Both readers are reached only after the enclosing box or sample extent has been validated; an incomplete outer box is rejected by the whole-input parser first. The incremental branches were therefore unreachable through the public API. A shared c_string_len helper now returns the existing malformed-input contract for an unterminated bounded payload and keeps the common search inline in production builds. No fixture or private unit test was added.

Selected parity coverage passed 3/3: decode:avif:error_infe_missing_item_name_terminator, decode:avif:high_bitdepth_still_12bit_420_alpha_odd_edge_17x9, and decode:avif:animated_equal_picture_interval_two_ticks. make lint and cargo fmt --all -- --check passed. Coverage MCP queried c_string_len on the selected report and returned no missing branch groups; its source identity is unverified and test attribution is unknown.

A full all-feature make coverage run passed 57 parity/fault-matrix cases, 7 decode-policy cases, 1 determinism case, and 70 feature-contract cases. It measured 103,007/142,447 lines (72.312509%), 21,181/32,020 branches (66.149282%), 5,699/9,153 functions (62.263739%), and 156,758/220,692 regions (71.030214%). These are local LLVM totals; the report's SHA-256 is dd4691342a89bda868f96847043ebe5a7b009b274aee34e6e9c6e4b6feab8753. The 100% coverage goal remains open.

JPEG trailing DHT without EOI parity — 2026-11-05

Added decode:jpeg:baseline_444_single_scan_trailing_dht_no_eoi. Its 768-byte fixture removes only the terminal EOI marker from the valid trailing-DHT JPEG; the input SHA-256 is d011b9970ca7e690525a2db582647406828ede4d02c1c97a61224642668cfcd7. Pillow 12.2.0 verifies the structure and decodes the completed 8×8 RGB scan to 192 bytes with SHA-256 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f.

Before the parser change, Rust reached EOF after parsing the valid trailing DHT and returned a marker-stream error. It now preserves the entropy boundary at that DHT, accepts EOF after the completed baseline scan, and reports the entire input as consumed. The selected parity row passed 1/1, and the ten-row trailing-DHT parity selection passed 10/10, including malformed-DHT rejection cases. make lint passed across standard, all-feature, release, coverage-hook, AVIF-only, and JPEG benchmark configurations.

Coverage MCP gaps for parse_jpeg at line 554 returned status=measured and no missing branch outcome in the ten-row report. The MCP result labels source identity unverified and test attribution unknown; the local receipt records the exact selected parity pass. Report: .coverage-mcp/local-evidence/selected/20261105T201133.725391Z-c1a95409f7f64ae991ee5430333fe2f3/coverage.json (SHA-256 28080dc29ffda8ca8a18e34733cbbd9d24d7159a52bf01ac91655a9f7489472f), with receipt .coverage-mcp/local-evidence/selected/20261105T201133.725391Z-c1a95409f7f64ae991ee5430333fe2f3/coverage.local-evidence.json (SHA-256 ce4b4998e71a2a9ac3b099815073e7be225f0352c1889b6bce92ead503f19551). This selected result does not establish an aggregate coverage increase; the 100% coverage goal remains open. No unit tests or SIMD changes were added.

AVIF empty-movie container guard contract — 2026-11-05

The existing error_avis_moov_without_trak parity row is rejected during sample validation, before the separate container-inspection pass can evaluate container::parse_movie's empty-track guard. Extended the existing avif_container_inspection_invariant_guards target-only integration contract with a minimal AVIS ftyp plus empty moov, routed through a cfg(coverage) inspection seam. The runner checks the externally returned AVIF malformed inspection error; the normal decode and inspection paths are unchanged. No private unit tests were added.

The selected fault contract passed 1/1 with the oracle marked not applicable. Its local LLVM report records one true-arm execution at src/codecs/avif/container.rs:1518: .coverage-mcp/local-evidence/selected/20261105-avif-container-empty-movie-contract/coverage.json (SHA-256 dc5e039e084476aa0fe89deb3d8f879d51fc8f66468fe824a0030699ab146c87), with local receipt .coverage-mcp/local-evidence/selected/20261105-avif-container-empty-movie-contract/coverage.local-evidence.json (SHA-256 a26a9488f575e0959c53c53a0573fcf2dff9c36f63cb735047eeb8e8be45a824). The Coverage MCP interface is unavailable in this session, so the report remains local-only with unverified source identity and unknown MCP test attribution; this selected result does not update aggregate coverage totals.

A fresh full make coverage run on the same source tree passed, including all 57 coverage-matrix tests and 70 feature-gate tests. It measured 102,939/142,402 lines (72.287608%), 21,156/32,020 branches (66.071205%), 5,686/9,141 functions (62.203260%), and 156,664/220,621 regions (71.010466%). The report is .coverage-mcp/local-evidence/full/20261105-develop-avif-empty-movie-contract/coverage.json (SHA-256 27763b8ff91d159663cad7dfae9a706a67209d9033d665b15b438319be7782f3). These are local LLVM totals, not Coverage MCP-verified totals, and remain below the 100% goal.

AVIF duplicate track-box inspection parity contracts — 2026-11-05

Added target-only inspection contracts backed by the existing error_animated_duplicate_minf and error_animated_duplicate_stbl Pillow malformed-input parity rows. Each contract verifies the fixture hash, confirms normal inspection returns a structured malformed AVIF inspection error, then passes the same bytes through the coverage-only unvalidated container path. This reaches the duplicate minf and stbl guards in the second-pass parser without adding codec-private unit tests or changing normal decode behavior.

Both selected contracts passed (2/2), with oracle_status: not_applicable. The local LLVM report records the true arm at src/codecs/avif/container.rs:1589 for duplicate minf and line 1609 for duplicate stbl. Report: .coverage-mcp/local-evidence/selected/20261105T103824.192393Z-b883404e07d244db972bf7ede32f2ea6/coverage.json (SHA-256 924b1ad21fcd247bbe336f13015f8ea1c74ec0a0c098275711fb6a1f644255c1), with local receipt .coverage-mcp/local-evidence/selected/20261105T103824.192393Z-b883404e07d244db972bf7ede32f2ea6/coverage.local-evidence.json (SHA-256 9f0518b9cf2609407d78f12831314fff1e91f7ea4b9e12e772a54871a9f4ee7d). The Coverage MCP interface is unavailable in this session, so the evidence remains local-only with unverified source identity and unknown MCP test attribution; this selected result does not update aggregate coverage totals.

AVIF missing track-box inspection contracts — 2026-11-05

Added coverage-only inspection contracts for four existing active Pillow malformed-input rows: error_animated_missing_minf, error_animated_missing_sample_table, error_animated_missing_sample_size, and error_animated_missing_sample_description. Each source row still passes its public malformed-inspection parity assertion. The contract then routes the same hash-checked bytes through the unvalidated second-pass container parser, covering the missing minf, stbl, stsz, and stsd error paths. No fixture, normal decode path, or codec-private unit test was added.

The four Pillow parity rows and four target-only fault contracts passed 8/8. The selected LLVM report records the missing-minf arm at src/codecs/avif/container.rs:1598, missing-stbl at line 1616, and both missing sample-table checks at line 1643. Report: .coverage-mcp/local-evidence/selected/20261105T120826.837944Z-95426933047e4b1a8cdc714c51171970/coverage.json (SHA-256 dfcfb70c1926cc2d501455c88229a7be8580a9b2cceb9ca90dbef2a202612d28), with local receipt .coverage-mcp/local-evidence/selected/20261105T120826.837944Z-95426933047e4b1a8cdc714c51171970/coverage.local-evidence.json (SHA-256 e3e0d8870061f2bff0cc486682df1913096b684e87d3965376de5c06073680de). The receipt records a dirty source tree and unknown test attribution; this is selected local evidence only and makes no aggregate coverage claim.

Full LLVM coverage after missing track-box contracts — 2026-11-05

The full make coverage PYTHON=.oracle-venv/bin/python run passed after the four missing-track-box inspection contracts were added. The coverage matrix passed 57/57 cases and the feature-gate matrix passed 70/70; the remaining full-run targets also passed, and all configured coverage floors passed. Coverage measured 102,944/142,402 lines (72.291120%), 21,162/32,020 branches (66.089944%), 5,686/9,141 functions (62.203260%), and 156,673/220,621 regions (71.014545%).

The retained report is .coverage-mcp/local-evidence/full/20261105-develop-avif-missing-track-box-contracts/coverage.json (SHA-256 c84d9b26cd42eb619a0d28d60ae5c24c8460ab5f705940e415aa4281feef616c). It was generated from source revision e5ce3f22761d42ffd2c4b6269207432ad69311d1 with the AVIF contracts and generated evidence changes present in a dirty working tree. Coverage MCP was unavailable, so this is local LLVM evidence without MCP build or per-test attribution; the aggregate remains below the 100% goal.

Full LLVM coverage refresh after duplicate-box contracts — 2026-11-05

The full make coverage PYTHON=.oracle-venv/bin/python run passed after the duplicate minf and stbl inspection contracts were added. The 57 coverage- matrix tests and 70 feature-gate tests passed, along with the other full-run targets; all configured coverage floors passed. The report measures 102,941/142,402 lines (72.289013%), 21,158/32,020 branches (66.077452%), 5,686/9,141 functions (62.203260%), and 156,669/220,621 regions (71.012732%).

The local LLVM report is .coverage-mcp/local-evidence/full/20261105-develop-3e88e28/coverage.json (SHA-256 fb5ea175c1d28ff2492c64dc065374a639c5c2c592a534510b93c6f41ddae472), generated from source revision 3e88e28bca547c25a46ff2da7b661c16955dc53a. Coverage MCP was unavailable, so this report has no MCP build or test attribution. The aggregate remains below the 100% goal.

JPEG partial trailing DHT length parity — 2026-11-05

Added decode:jpeg:baseline_444_single_scan_dht_partial_length. The fixture appends one byte of a DHT length field after the trailing DHT marker in a completed baseline scan. Pillow 12.2.0 accepts the JPEG and returns the pinned 192-byte RGB reference; the parser now treats the incomplete trailing length as the end of that completed scan. The fixture SHA-256 is bee79bee58292421431950ef3ee8f0b3b09d93a8a3d0e990e1eab76abb6015be; the RGB output SHA-256 is 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f.

The selected parity row passed 1/1, and the nine-case trailing-DHT bundle passed 9/9. Its report is .coverage-mcp/local-evidence/selected/20261105T025920.650568Z-7bbdba25dcab4b6f9896271d50c86950/coverage.json (SHA-256 ce56d9a45b2a52f6337f1f2cffa0df53d9810960edb71ebd6da6142959e3bdce) with local execution receipt .coverage-mcp/local-evidence/selected/20261105T025920.650568Z-7bbdba25dcab4b6f9896271d50c86950/coverage.local-evidence.json (SHA-256 abf806063812e35dfea6809e5e1b5e42ea279e2b4b5445485a0bda1eee84d05e). Coverage MCP identifies this receipt as local-only with source unverified and tests unknown, so the selected run makes no aggregate coverage claim. No unit tests or SIMD/performance changes were added.

The fresh full make coverage run passed and measured 102,910/142,381 lines (72.2779%), 21,156/32,026 branches (66.0588%), 5,680/9,136 functions (62.1716%), and 156,632/220,604 regions (71.0014%), above the configured floors but below the 100% goal. Its local report is .coverage-mcp/local-evidence/full/20261105-develop-jpeg-partial-dht/coverage.json (SHA-256 c53bba19c1f5f61a818b9c86f69aea424f69fda4ebf8a0e82e74f7c281822e9c). The full-run report has no Coverage MCP source/build receipt, so these totals are local make coverage evidence only.

JPEG bare trailing DHT parity — 2026-11-05

Added decode:jpeg:baseline_444_single_scan_dht_missing_length. The fixture replaces a trailing comment and EOI in a baseline 4:4:4 JPEG with a bare DHT marker at EOF. Pillow 12.2.0 accepts the completed scan and returns the pinned 192-byte RGB reference. Before the parser change, the Rust decoder rejected the missing DHT length; it now stops at that marker only after a completed single baseline scan. The seven neighboring trailing-DHT rows also passed, including malformed length and truncated table cases.

The fixture SHA-256 is 7c8f8b67f671325d938bb236da0d4d702b89f636128ae3328dfa494b669b345d; the Pillow RGB SHA-256 is 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f. The selected eight-row parity run passed 8/8. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261104T222908.928036Z-e30160c11127480c9d407eaf528cf437/coverage.json (SHA-256 1a26547544e9ea51be81301d867a94e750efabe6cb7ec5e4ae00377803db71c7) and its execution receipt is .coverage-mcp/local-evidence/selected/20261104T222908.928036Z-e30160c11127480c9d407eaf528cf437/coverage.local-evidence.json (SHA-256 2e3590a0f92e7789ba8df8f82a81d7f7708ec326a3761592b09b0aebd06aca85). The receipt marks source identity unverified and test attribution unknown, so this selected result makes no aggregate coverage-gain claim. No unit tests or SIMD/performance changes were added.

AVIF I422 B8x4 qindex-zero parity — 2026-11-05

Updated decode:avif:animated_lossy_inter_422_b8x4_qindex0_mode_select_64x64 with a reproducible 64x64 8-bit I422 witness. The fixture-only AOM patches create a non-lossless qindex-zero inter frame and preserve a horizontal B8x4 partition at the top-left root. The generator's pinned --check passed; the 11,725-byte AVIF hash is 5c2fd79d69b2fb1a96542c30ea4eb6d103993982f9f322b1e64d040730f946f9. Pillow 12.2.0 frame hashes are 246f2904b49d857c90295a1a379d1eadea4058a6e04c8df8639aac4392732d50 and 2daef02f6cde1d7914f04e930bf65f36a0bc74273f1a1029a5ec054434611b14.

The updated selected parity row passed 1/1. A temporary diagnostic trace observed split_b8x4=true, exact_b8x4=true, and axis_q0=true for the target I422 block. The selected LLVM report records the line 49910 condition as true once and false zero times. This local report is not a verified Coverage MCP attribution: its receipt says source=unverified and tests=unknown, so no aggregate coverage gain is claimed. The report is .coverage-mcp/local-evidence/selected/20261104T205205.022074Z-52dd75df25c24e5ab2704c3745243932/coverage.json (SHA-256 e62dd245728da4bb95e220c4f7750e08f2fc0729f3e34bda108b377d41016160); its local execution receipt is .coverage-mcp/local-evidence/selected/20261104T205205.022074Z-52dd75df25c24e5ab2704c3745243932/coverage.local-evidence.json (SHA-256 fc0d2bf99b19f6fb6d3efe11609039dd4bdd8409ac2c0ca19d9f4e0f9125bfae). No Rust decoder, SIMD, or performance code changed, and no unit tests were added.

TIFF tiled grayscale edge parity — 2026-11-04

Integrated three public TIFF parity rows for big-endian 17x17 grayscale images stored in 16x16 Deflate-compressed tiles with clipped right and bottom edges: decode:tiff:tiled_gray16_be_deflate_clipped_edges, decode:tiff:tiled_gray16_be_deflate_predictor_clipped_edges, and decode:tiff:tiled_gray32_signed_be_deflate_predictor_clipped_edges. The cases cover unsigned Gray16 with and without horizontal Predictor=2, plus signed Gray32 with Predictor=2. The pinned Pillow 12.2.0 references contain 578 bytes for each Gray16 image and 1,156 bytes for Gray32; selected parity passed 3/3.

The local selected coverage report is .coverage-mcp/local-evidence/selected/20261104T115324.874376Z-d3b6c49b337b45549ed281d7443afd1a/coverage.json. It records the three selected rows only; no full-suite coverage or marginal global coverage claim is made. No production codec code, unit tests, or SIMD changes were added.

JPEG oversized trailing COM parity — 2026-11-04

Added decode:jpeg:baseline_444_single_scan_com_oversized_length. The fixture is an 8x8 baseline 4:4:4 JPEG with one scan and a trailing COM length that extends beyond EOI. Before the decoder change, it failed with a truncated metadata payload error; Pillow 12.2.0 decodes it as RGB. The parser now stops at EOI for this completed single-scan case, and entropy reconstruction ends at the completed scan. The decoded 192-byte output matches Pillow exactly.

Input SHA-256: b554f0b32009da0282d524952288a3dd561c85f7d50591af6a3a997ba13c15f0; raw RGB SHA-256: 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f. The pinned fixture generator passes --check. The fresh one-row parity run passed 1/1; its local report is .coverage-mcp/local-evidence/selected/20261104T054723.457215Z-b5ffbd42328743bb8fd6ae04e8397890/coverage.json (SHA-256 fd00cca8e5c1aecc21a08b24c1778ada33aa5252b900700ce9cc9f37155bdf60) and its execution receipt is .coverage-mcp/local-evidence/selected/20261104T054723.457215Z-b5ffbd42328743bb8fd6ae04e8397890/coverage.local-evidence.json (SHA-256 37b26ab729274e762d7400c1038e5b563457038db4c549eb74f846bab96bba4e). Coverage MCP records the true side of the decoder condition at line 3051 and reports the false side as the remaining selected-report gap. The receipt says the selected row passed, but MCP source identity is unverified and test attribution is unknown; treat this as local measurement evidence, not a managed attribution receipt.

The final full coverage report is .coverage-mcp/local-evidence/full/20261104-jpeg-com-oversize/coverage.json (SHA-256 4bad12103c6f554a4e2f0399cfaf4b12b72798db7b7da036e09b8d0b7a0a9b69). The coverage matrix passed 57/57 rows. The report records 102,857/142,351 lines (72.2559%), 21,109/32,010 branches (65.9450%), 5,680/9,137 functions (62.1648%), and 156,551/220,549 regions (70.9824%). Coverage MCP's full-scope comparison is limited: source identity is unverified and tests are unknown, so its coordinate deltas are not a verified gain or regression. make lint, make lint-x86-simd, and fixture-integrity refresh passed. No unit tests or SIMD changes were added, and no performance gain is claimed.

JPEG oversized trailing APP1 parity — 2026-11-04

Added decode:jpeg:baseline_444_single_scan_app1_oversized_length for an 8x8 baseline 4:4:4 JPEG whose post-scan APP1 length extends past EOI. The pinned Pillow 12.2.0 oracle verifies and decodes the file as RGB. The JPEG parser now applies its completed single-scan tolerance to oversized APP and COM segments; both cases produce the same 192-byte pixels as Pillow.

Input SHA-256: 53a5354d026c35b5a1f105af5192e1213fb873bae48b253728a85fcbc07add4f; raw RGB SHA-256: 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f. The pinned generator passes --check. The focused COM and APP1 parity run passed 2/2. Its local selected report is .coverage-mcp/local-evidence/selected/20261104T125849.464658Z-6ab952a8b202434bbc4f770b94197d6f/coverage.json (SHA-256 cbd227a50f6343693931269991a4e2bfac8f19ce48bec298b3029aa14f931141) and its execution receipt is .coverage-mcp/local-evidence/selected/20261104T125849.464658Z-6ab952a8b202434bbc4f770b94197d6f/coverage.local-evidence.json (SHA-256 18b7c93551cbd3b7b783729a96fd7cfd2dcd8563a9c7a9f980ebd32a91847362). Coverage MCP still reports 27 branch observations missing across single_baseline_scan_entropy_end in this selected report. Source identity is unverified and test attribution unknown; this is local evidence, not a managed attribution receipt. No performance gain is claimed.

JPEG oversized trailing DHT parity — 2026-11-04

Added decode:jpeg:baseline_444_single_scan_dht_oversized_length for an 8x8 baseline 4:4:4 JPEG whose post-scan DHT length extends past EOI. The complete file verifies and decodes through Pillow 12.2.0 as RGB. The parser stops at EOI for this oversized DHT after the completed single baseline scan; the decoded 192-byte output matches Pillow.

Input SHA-256: 3a948d8d4900f6b30d6cfef147dbe7a1a84b02ff8e628fb728e79b74d9576211; raw RGB SHA-256: 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f. The focused COM, APP1, and DHT parity run passed 3/3. Its local selected report is .coverage-mcp/local-evidence/selected/20261104T133654.454668Z-1addb5ea4768434d92ffdc5d4dee3a85/coverage.json (SHA-256 18b4aef9b87f84b469400b7740dff791787d5dc39e8f6ec27a1423e2649f9c3c) with execution receipt .coverage-mcp/local-evidence/selected/20261104T133654.454668Z-1addb5ea4768434d92ffdc5d4dee3a85/coverage.local-evidence.json (SHA-256 0459ec12a3423d6e2c9327a274df7c0d864d42716ea054836ed35708db631258). Coverage MCP reports no missing branch observations at decoder line 3052 in this selected report; it still lists two false edges in the parser guard at line 539. Source identity is unverified and test attribution unknown, so this is local evidence only.

Added decode:jpeg:baseline_444_three_scans_dht_after_second_scan to cover the second false edge with a valid three-scan baseline JPEG. It repeats the four header Huffman tables between the second and third scans; Pillow 12.2.0 verifies and decodes it to the same 192 RGB bytes as the source. The input SHA-256 is 8fa86b39601dc652d6a6a7f65c3e15d48568d7498071b1f1fd390f87787fc353, and the pixel SHA-256 is 0d4dccc69dc0ee4ae956be8c624186ddb2b5f3d411671361056c51a7ea7f9e66.

A five-case selected run also included decode:jpeg:progressive_spectral to cover the progressive false edge, plus the COM, APP1, and oversized-DHT rows. All 5/5 parity rows passed. The selected report is .coverage-mcp/local-evidence/selected/20261104T134938.253878Z-c88b364b31b4436eaf2b1b02421c82b0/coverage.json (SHA-256 1037fae1434d560027da3bd6ecffb31113445576fe68a998aed3d5e9a17e4a7d), and its local receipt is .coverage-mcp/local-evidence/selected/20261104T134938.253878Z-c88b364b31b4436eaf2b1b02421c82b0/coverage.local-evidence.json (SHA-256 700acca8621e54de29943481a8c70e1ef4b5460c29a9ae209ba6f3a62850398c). The selected aggregate is 3,779/142,382 lines (2.6541%), 546/32,032 branches (1.7045%), 258/9,137 functions (2.8237%), and 5,959/220,601 regions (2.7013%). Coverage MCP reports zero missing branch observations at parser line 539 and decoder line 3052 for this report. Source identity remains unverified and test attribution unknown; these selected totals are not a full-project coverage claim.

JPEG row upsampling overflow fault contracts — 2026-11-04

The prior full Coverage MCP report identified uncovered checked-overflow exits in fancy_upsample_row: row-start multiplication, required-source-length addition, and destination-height multiplication. Valid JPEG dimensions and sampling ratios cannot reach these usize overflow states in the 64-bit coverage build. Added three target-only fault-contract rows that inject those states through the existing public YCCK decode case and require an error followed by a successful uninjected retry. The hooks are cfg(coverage) only; production decoding has no added checks.

The selected fault-contract run passed 3/3. Its local report is .coverage-mcp/local-evidence/selected/20261104-jpeg-row-overflow-fault-contracts/coverage.json (SHA-256 a511e62430c8c2f350e0c13cc9bc8501e2d104a0d46d91b36ca5844f039c0519) and its execution receipt is .coverage-mcp/local-evidence/selected/20261104-jpeg-row-overflow-fault-contracts/coverage.local-evidence.json (SHA-256 689b07131d293030cd09740630070b346d012e5258bfa22d0f6fac587016baf3). Coverage MCP finds no remaining branch gaps at upsample.rs lines 386, 389, and 400 in the selected report. Source identity remains unverified and test attribution unknown; this is local selected evidence, not a managed receipt. No unit tests were added, and the full-project report was not refreshed for these three coverage-only hooks.

AV1 partition walker even-grid invariant — 2026-11-04

The AV1 partition walker derives frame extents as twice the number of 8-pixel blocks, so frame bounds are even in its four-pixel grid. Tile origins and superblock roots are aligned to at least 16 grid units, and recursive offsets before level 4 are even. A level-4 node inside its root therefore has at least two grid units remaining and cannot enter the old no-split boundary-leaf path. That path and its redundant frame-bound checks were removed; valid partition and block parsing is unchanged, with fewer checks in the recursive walk.

Four existing Pillow-backed AVIF parity rows passed: 10-bit I420 CDEF at 15x16, a 73x64 lossless monochrome grid, 10-bit lossless I444, and lossless I444 film grain. The selected report is .coverage-mcp/local-evidence/selected/av1-partition-even-grid-20261104/coverage.json (SHA-256 561e37ac…2f81d6). Its local execution receipt records 4/4 passed and no source changes during the run; Coverage MCP identity and test attribution remain unverified. make lint passed formatting and all configured strict Clippy lanes, including coverage and AVIF-only builds. No parity rows or unit tests were added.

An ARM64 A-B-B-A release probe of the 2048x128 AVIF sequence used two runs of 42 and 120 timed decodes per revision. Their directions differed (+3.4% and -2.2%); pooled medians were 9.887 ms before and 9.857 ms after. This is no measurable speed change, not a speedup claim. Raw samples and host/build details are retained under .coverage-mcp/local-evidence/perf/av1-partition-even-grid-20261104/. The measurement is ARM64-only and says nothing about SSE2 or AVX2 runtime performance.

AVIF all-lossless I422 B16x16 parity and selected coverage — 2026-11-04

Added decode:avif:animated_lossless_inter_i422_fixed_b16x16_64x64, a two-frame 64x64 8-bit I422 all-lossless sequence with fixed 16x16 inter partitions. The pinned Pillow 12.2.0/libavif 1.4.1/libaom 3.13.2 generator reproduces the input hash 43866d1b…e4343 and both exact RGB frame hashes. Both decoded frames match the pinned Pillow output, and a separate pinned native loop observation confirms the two-frame sequence and infinite repetition. The manifest's older B4x8 I420 row now reflects its supported sequence parity instead of retaining a stale unsupported expectation.

A selected cargo llvm-cov parity run passed all 1,391 AVIF rows: 1,386 decode rows and five encode rows. The source and fixture inventories did not change during that run. Its local report is .coverage-mcp/local-evidence/selected/20261103T185507.555297Z-5a1d2c210a464100a0853b8e4de45f06/coverage.json (SHA-256 e109b0859b01039590b374f0aab1dccc985044fc935a54fb4644da639b856fc4). For this selected profile, LLVM reports 53,253/142,370 lines, 12,541/31,998 branches, 2,917/9,138 functions, and 76,721/220,595 regions covered. These are selected-run totals, not a full-project baseline or a 100% coverage claim.

The coverage-mcp gaps query for src/codecs/avif surfaced missing branches in AV1 inter-translation paths in src/codecs/avif/av1/block.rs. The report is local-only: Coverage MCP marks its source as unverified and tests as unknown, because this CLI has no receipt-registration action. No unit tests were added; the next coverage work is to map the remaining gaps to public parity inputs and target-only fault contracts.

AV1 CDEF aligned chroma edge parity — 2026-11-03

Added decode:avif:coverage_i420_intra_cdef_10bit_15x16 to cover a CDEF boundary not reached by the existing odd-size cases. With a 15-pixel I420 luma width, the corresponding visible chroma width is 8 and ends on a complete four-sample CDEF block. This reaches the in-plane boundary path for chroma while the luma plane still exercises its partial right edge.

The case exposed an incorrect edge extension in frame_coordinate: samples beyond a coded plane were clamped to its last coded sample. AV1 treats those tap locations as unavailable. The decoder now rejects coordinates at or past the coded extent and still preserves hidden samples that lie inside it. The new row initially differed from the pinned Pillow output in 30 of 720 RGB bytes at the final column; after the fix, the exact output matches. The existing 9x9 and 9x16 CDEF rows plus this 15x16 case pass 3/3.

The final one-row selection passes 1/1 and records 798 in-plane and 819 out-of-plane decisions at the coded-extent guard. Its selected LLVM report is .coverage-mcp/local-evidence/selected/av1-cdef-chroma-align-15x16-final-20261103/coverage.json (SHA-256 743609b3a4f1b4fd910d3c9a4815c8e03b07ec21cf5032d2306862f0b9908eb); the adjacent local evidence receipt has SHA-256 6d5c4bfa70ae8f21d7c26c9971d6641d3716fb463ac710a81632626258b9e6c5. The source inventory hash remained the same before and after this selected run. This is local selected evidence, not a Coverage MCP receipt or a full-suite coverage result. No unit tests were added and the full coverage baseline was not refreshed.

AV1 CDEF low-variance parity — 2026-11-03

Added decode:avif:coverage_i420_intra_cdef_10bit_low_variance_16x16, a 16x16 full-range 10-bit I420 key frame with active CDEF and nonzero but low luma direction variance. The parity row passes 1/1 against the pinned Pillow 12.2.0/libavif 1.4.1 RGB output. Its selected LLVM report records nine takes of the variance >> 6 == 0 arm in adjust_primary_strength and three takes of the zero-variance early return.

The report is .coverage-mcp/local-evidence/selected/cdef-low-variance-final-20261103/coverage.json (SHA-256 bfc56e8b6f934ee20309936f509ba30e913b84ab724d3c9f6efe958840f4d021); the adjacent local evidence receipt has SHA-256 9725baf0e278cfa0f50f747209e4713ff064b2fa87094890d66bd3512fbf41a9. This is local selected evidence, not a Coverage MCP receipt or a full-suite coverage result. No unit tests were added and the full coverage baseline was not refreshed.

AV1 chroma-grain overlap and scaling invariants — 2026-11-03

Two more film-grain branches were unreachable after public parameter checks. Scaling points are strictly increasing before generate_scaling, so its zero-width interval skip was redundant; zero intervals now reach the existing checked-division error. Chroma overlap spans one sample along a subsampled axis, so blend always receives index zero when using chroma weights. Removed that redundant index condition while retaining both luma weight pairs.

The existing public I422 U-only, I422 10-bit overlap/restricted-range, and malformed non-increasing-Y parity rows passed 3/3 with exact Pillow outcomes. The selected local LLVM report is .coverage-mcp/local-evidence/selected/20261103T053658.094666Z-f975453674d64bc1a05c35c50f741bed/coverage.json (SHA-256 de1567295f1b69a93e95a3ae398745701635d2bd9a64fee606ccea76505a627f). It records both chroma and luma blend branches in this selected run. This is local selected evidence, not a Coverage MCP receipt or a full-suite coverage result; the full baseline was not refreshed. No new matrix rows or unit tests were added.

AV1 chroma-only film-grain guard cleanup — 2026-11-03

apply_chroma_ar_lut already exits the central coefficient loop when Y scaling points are empty. The later luma contribution therefore only runs with non-empty Y points. Removed its redundant empty-Y conditional, whose zero arm was unreachable and obscured that invariant. The existing public decode:avif:filmgrain_422_8bit_u_only_64x64 parity row exercises the legal zero-Y/active-chroma path and passed 1/1 with exact Pillow RGB output. Its selected local LLVM report records 7,980 visits to the empty-Y guard: .coverage-mcp/local-evidence/selected/20261103T050420.721871Z-1837669f8c8a41da8131bacb50624d65/coverage.json (SHA-256 4635095f6bb4713ce868e4bb86e40d1096e0becfb8a1b78cd5a7c5ad1f1dbf5e). This is local selected evidence, not a Coverage MCP receipt or a full-suite coverage result. The full coverage baseline was not refreshed. make lint passed all configured format and strict Clippy lanes; no unit tests were run.

AVIF mixed-segment super-resolution with CDEF and film grain — 2026-11-03

Added decode:avif:animated_mixed_lossless_superres_420_8bit_cdef_filmgrain_80x48. The pinned libavif 1.4.1/AOM 3.13.2 input combines mixed-segment 4:2:0 super-resolution, active inter-frame CDEF, and display film grain. Both 80×48 RGB frames match the pinned Pillow 12.2.0 output exactly. The generator checks the fixture digest and active CDEF strengths.

The local selected cargo llvm-cov run passed all 34 selected mixed-superres rows and one ordinary AVIF control. Its source and fixture inventories stayed unchanged during execution. The retained report is .coverage-mcp/local-evidence/selected/20261103T021139.218417Z-43ec103ff51e4576adebd5638867eac1/. Coverage MCP was not queried: this session has no MCP receipt-registration or CLI bridge, and the local receipt records source as unverified and test status as unknown. This selected run does not establish global coverage; the four 100% coverage metrics remain open.

AV1 mixed-super-resolution active deblocking parity — 2026-11-03

Added decode:avif:animated_mixed_lossless_superres_420_8bit_loopfilter_80x48. The 80×48 8-bit 4:2:0 sequence uses super-resolution denominator 10 and nonzero Y/U/V deblocking on both its key and inter frames. Pinned AOM 3.13.2 accepts the sequence, and the two RGB frames match Pillow 12.2.0 exactly (abcb8903…2305 and df65607b…f02ca). The focused selected parity run passed 1/1 with exact 11,520-byte RGB output.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261103T030016.796649Z-3deb9e53bf524471bc6a97fef91aa91f/coverage.json (SHA-256 a283fb33b4c3a3cd79b0296d3860f453a76806524f8b242efbf63c946e9d2f70); its local receipt SHA-256 is 3c67077b3407e32b43eb958d93581a193c873b36ea51c12123bd814cca8715b4. This is local selected evidence, not a Coverage MCP receipt or full-suite coverage result. No Rust unit tests or production-source changes were added.

AV1 10-bit 4:4:4 mixed-super-resolution deblocking parity — 2026-11-03

Added decode:avif:animated_mixed_lossless_superres_444_10bit_loopfilter_80x48. The two-frame 80×48 10-bit 4:4:4 sequence uses a coded inter width of 64, denominator-10 super-resolution, mixed lossless/lossy inter segments, and nonzero Y/U/V deblocking on both frames. The pinned libavif/AOM producer reproduces the 3,810-byte fixture twice; an independent pinned libavif observation decodes both frames and reports infinite repetition. Pillow 12.2.0 produces exact 11,520-byte RGB references for both frames (abcb8903…2305 and 00068330…eefe5). The selected parity run passed 1/1.

The local selected LLVM report is .coverage-mcp/local-evidence/selected/av1-mixed-superres-444-10bit-loopfilter-20261103/final/coverage.json (SHA-256 af4815dd99946029456343e6ab54ed79dece84c625997fd2eca2c52c3663c383); its local receipt SHA-256 is 04ab0586b5010948f749487ee45c47291bf0360073636cd2340228ae023c3de0. In this selected run, src/codecs/avif/av1/filter.rs covered 135/252 branches (53.57%). This is local selected evidence, not a Coverage MCP receipt or a whole-repository coverage result. No Rust unit tests or production-source changes were added.

AV1 loop-filter sharpness parity — 2026-11-03

Added decode:avif:avif_loopfilter_sharpness_420_8bit_still_128x128, a 128x128 8-bit 4:2:0 still whose key frame carries sharpness 7 and active Y/U/V deblocking. The pinned libavif 1.4.1/AOM 3.13.2 producer reproduced the input twice with identical bytes (SHA-256 0a00c49e15b5b66fdb7c0b2ac130698c3f4ab52a2863b5a762b5e938351beb78)). Pillow 12.2.0 supplied the exact 49,152-byte RGB reference (5e2824bb560253f7dfdfff3a641c73217d35ca0b62cce96910039df1bd2721a0`); the selected public parity run passed 1/1.

The local selected LLVM report is .coverage-mcp/local-evidence/selected/20261103T042707.955830Z-d4a9dab2d48c4a94b137b9e978336c6f/coverage.json (SHA-256 fd5c3aa8cfbce28e6088a93cda7cf3ce93fc1dfb734348697b44205b31415570); src/codecs/avif/av1/filter.rs covered 88/252 branches for this selected row, and the sharpness branch at line 528 recorded 384 hits. Its local receipt SHA-256 is 125cec8c4d4b00e5926468fe65fd3a45d4d2f23448101bc2525f95e49b5b1f9f. Coverage MCP was unavailable, so this is local selected evidence only, not a managed attribution or full-suite coverage claim. No Rust unit tests or production-code changes were added.

AVIF implicit layer IDs and frame timing — 2026-11-03

Absent AV1 OBU extensions supply temporal/spatial IDs of zero. The decoder now applies its selected operating-point mask to those IDs instead of rejecting a frame whenever any operating point has a nonzero mask. The obsolete cached flag and sequence-wide scan are removed. A sample containing only excluded layers is malformed rather than an unsupported implementation subset; OBU bounds are still validated before layer selection. This makes no measured latency claim.

Twenty new complete-container parity inputs cover twelve valid timestamp/layer layouts and eight malformed neighbors. They distinguish absent and explicit zero IDs, explicit temporal-one IDs, excluded implicit layers, absent/mixed operating-point parameters, multiple admitted points, one/two-bit timestamps, timestamp EOF and six bounded frame-header prefixes. All sixty complete frame buffers and observable durations from the twelve valid inputs match pinned Pillow 12.2.0. Twelve fresh repeated libavif 1.4.1 observations independently retain their loop counts. All 577 preceding native observations are unchanged.

The fresh canonical selection passes 26/26 cases: twenty additions and six existing controls. Its actual executable, two profiles, 139 source files, 128 fixtures and eight producers are retained. The initial 25/26 run exposed the unsupported-versus-malformed classification mismatch and remains recorded as a failure. The corrected run's Coverage MCP context reports source matches_receipt and tests passed; it is explicitly locally derived evidence, not managed MCP execution.

A fresh full all-feature campaign passes six integration executables with 140 checks, all 3,775 active parity rows and 167 separate target-only fault rows. Every executed case ID occurs exactly once in the final pass ledger. Fault oracles remain not_applicable; 27 planned AVIF encoder rows are unexecuted. All 657 source/setup files and 11,205 fixture files remain byte-identical during execution. The actual base revision is 9f94c0b7b with the retained dirty-tree changes. Actual executables, profiles, sources, inputs and original reports are retained. Coverage is 102,450/142,191 lines (72.0510%), 20,950/31,980 branches (65.5097%), 5,667/9,136 functions (62.0293%) and 156,021/220,396 regions (70.7912%). Alpha floors pass; strict 100% exits 2 and remains unmet. No coverage exclusions or lower floors are introduced. The fresh full report replaces the older frame-parser mapping for current gap planning; source changes affect its denominators. Historical managed measurements remain unchanged.

All 3,782 preceding matrix rows, 1,330 preceding AVIF JSON rows and 167 fault rows retain their observations. Prior AVIF loop-evidence index digests refresh because the index gains twelve witnesses; earlier pixel files remain exact. Pinned fixture generation, repository verification and strict default, all-feature, release, nightly coverage and AVIF-only Clippy checks pass. No codec unit tests, unsafe code, runtime dependencies or public APIs are added. Original selected and full execution evidence remains under .coverage-mcp/local-evidence/parity/avif-frame-timing-canonical-20261103/ and .coverage-mcp/local-evidence/full/20261103-9f94c0b7b-avif-layer/.

AVIF timing, display-delay and depth EOF neighbors — 2026-11-03

Eight additional complete-container inputs stop inside decoder-buffer and frame-presentation delay widths, the low-delay-mode flag, initial-display-delay value, twelve-bit selector, monochrome color range, and horizontal or vertical subsampling selectors. Valid picture-interval UVLC values and complete repeated operating points align these fields without changing the frame payloads. The pinned Pillow oracle and public Rust decoder match all 92 complete frame buffers from 28 healthy layouts. Header verification accepts the eight bounded neighbors; decoding rejects each one at its intended sequence-field EOF path.

A fresh canonical selection passes all eight new cases and four existing healthy controls. Its actual executable, two profiles, 139 source files, 32 fixtures and eight producer files are retained. Coverage MCP reports source matches_receipt and tests passed through an explicitly locally derived context. This is not managed MCP execution. The unchanged sequence-parser region mapping gains eight observed regions: the compatible retained union is 487/492, up from 479/492. This is not a fresh full run or a new global coverage percentage; five regions in this mapping remain unobserved.

The fixture producer preserves all 29 preceding generated input files exactly. All 3,774 preceding matrix rows, 1,322 preceding AVIF JSON rows, 7,666 preceding output artifacts, the native-loop index and 167 target-only fault rows are unchanged. Pinned producers, fixture integrity and repository verification pass. These additions change no production Rust and add no codec unit tests, new fault rows, coverage exclusions or lower coverage floors. Original execution receipts remain in .coverage-mcp/local-evidence/parity/avif-sequence-timing-depth-alignment-20261103/.

AVIF operating-point alignment and EOF neighbors — 2026-11-02

Eight further complete-container cases align later sequence fields by repeating valid default operating points. They cover EOF at the delta and additional frame-ID widths, inter/intra and joint-compound flags, integer-motion selector, explicit screen-content-tools value, CDEF flag, and monochrome selector. The live pinned oracle preserves all 96 complete frame buffers across 24 healthy layouts; the public Rust decoder matches every buffer. Both reject each shortened neighbor, and its retained profile hits the intended EOF region.

A fresh canonical selection passes all 17 new cases from this combined batch and nine existing controls. Its actual executable, two profiles, 139 source files, 85 fixtures, and eight producer files are retained. Coverage MCP reports source matches_receipt and tests passed through a locally derived context; this is not managed MCP execution. The identical owned sequence-parser region mapping has a compatible observation union of 479/492, up from 463/492 before this batch. These 16 additional observed regions do not constitute a fresh full run or a new global coverage percentage.

All 3,766 preceding matrix rows and 1,314 preceding AVIF JSON rows retain their exact outcomes after the eight additions. The native-loop index, all 167 target-only fault rows, and 7,666 preceding output artifacts are unchanged. Pinned producers, fixture integrity, and documentation checks pass. No production Rust changes, codec unit tests, coverage exclusions, or lower coverage floors are introduced.

AVIF sequence EOF fields and accepted padding neighbor — 2026-11-02

Nine additional public manifest cases cover eight sequence-field EOF paths and one complete header with an extra zero padding byte removed. Every input retains a bounded complete container and consistent sample/primary-item extents. Pinned Pillow 12.2.0 verifies each container, rejects the eight EOF neighbors through still and sequence decode, and preserves all five complete frames and durations for the padding neighbor. A fresh repeated libavif 1.4.1 observation independently retains that input's infinite repetition count.

Canonical selected coverage passes all nine new cases and eight healthy controls. The 139 codec/build/test source hashes and 73 selected fixture hashes remain unchanged during execution; the actual executable and profiles are retained. Coverage MCP reports source matches_receipt and tests passed through an explicitly locally derived selected-execution context.

The identical owned sequence-parser mapping has 492 regions. Combining the retained full baseline and two canonical selections covers 471 regions, up from the preceding union of 463. This is a compatible observation union, not a fresh full run or a new global coverage percentage. The 3,757 preceding matrix rows retain their public outcomes; their only observation-metadata change is the loop-index digest after appending one native observation. All 576 preceding native loop records, 167 target-only fault rows, and 7,652 preceding output artifacts retain their exact contents. No codec unit tests, production Rust changes, new fault rows, coverage exclusions, or lower floors are introduced.

AVIF selected and ignored operating-point layers — 2026-11-02

Three new complete animation inputs exercise AV1 operating-point selection through ordinary public parity. The existing animated_opidc_0x101 control selects temporal and spatial layer zero with explicit frame extensions. Two neighbors insert an empty frame OBU on unselected temporal layer one or spatial layer one before the first selected frame. Pinned Pillow ignores those OBUs and preserves all five complete RGB frames and their durations. A third input claims a payload larger than its bounded sample on an ignored layer; both Pillow and Rust reject decoding after successful header verification. Layer selection does not bypass the envelope bounds check.

The pinned producer repairs BMFF sample lengths and the primary-item extent, checks the rewritten container independently, and compares every accepted frame and duration with the live source animation. Only then do positive manifest rows share its pixel references. These cases require no production Rust change, codec unit test, target-only fault, lint exception, dependency, unsafe code, or coverage exclusion.

Complete files, live Pillow frame buffers, standalone public still/sequence release clients and actual executables, source identities, and receipts are retained in .coverage-mcp/local-evidence/parity/avif-operating-point-lead-20261102/. The independent sequence client matches all fifteen complete accepted frame buffers and the malformed outcome. Canonical selected coverage uses the original animation, retained selected-layer control, and three new rows; its execution and source/fixture guards determine whether a coverage claim is compatible. The preceding raw AVIF profile located the skip-layer gap but includes additional integration-test and standard-library paths, so its totals are not a full-suite measurement. Historical measurements and release floors remain unchanged.

AVIF final OBU without a size field — 2026-11-02

Pinned Pillow accepts a complete baseline AVIF whose final frame OBU omits its ULEB128 size field. It also accepts that frame with a zero-layer-ID extension header whose reserved bits are set. Both inputs produce the same complete 49,152-byte RGB buffer as the baseline. The previous Rust parser rejected both at its mandatory-size-field check.

The parser now gives an unsized OBU the remaining bytes of its bounded sample, matching Pillow/dav1d. It never searches those payload bytes for another OBU. Explicit sizes retain their existing bounds checks, and every iteration still consumes at least a header byte. This adds no allocation, dependency, unsafe code, lint exception, or coverage exclusion.

Five ordinary public manifest rows cover the two complete accepted inputs and three malformed neighbors. Unsized temporal-delimiter and sequence-header OBUs consume the rest of their samples without producing a frame. Removing the final byte of the unsized frame also remains malformed. All three containers pass Pillow header verification but fail pixel decoding. The producer repairs the BMFF lengths and item extent and independently checks live pinned Pillow pixels or failures before sharing baseline pixel data.

Before/after public executables, complete input files, live Pillow pixels, source and fixture snapshots, selected coverage receipts, raw profiles, and Coverage MCP queries belong under .coverage-mcp/local-evidence/parity/avif-obu-implicit-size-20261102/. Validation uses the canonical selected workflow for the baseline and five new rows, followed by the complete AVIF matrix on its retained executable. These are local parity receipts; no refreshed full-suite percentage or managed Coverage MCP run is claimed. Historical measurements remain intact.

AVIF tolerated OBU headers — 2026-11-02

Thirty-three complete baseline AVIF mutations expose observable decoder mismatches: pinned Pillow accepts forbidden/reserved OBU header bits, extension headers on temporal delimiters and sequence headers, redundant frame extensions for an all-layer operating point, and all eight values of the three reserved extension bits. Each mutation preserves the complete 49,152-byte baseline RGB output. The previous Rust parser rejected all thirty-three before reconstructing pixels.

The parser now masks the header fields it uses and ignores the reserved bits as Pillow does. A nonzero operating point still requires layer IDs; selected layer membership, sequence/frame validation, and sample/payload bounds remain checked. Three complete malformed neighbors set both header flag bits on different OBUs and remove the final frame byte, updating the container extent. Pillow verifies their headers but rejects pixel decoding.

All thirty-six inputs are ordinary manifest parity rows, with live pinned Pillow observations. Positive rows share the baseline pixel reference only after the generator independently checks every complete pixel buffer. They add no codec unit tests, target-only fault cases, runtime dependencies, or unsafe code. Before sources and matrix, actual public decoder executable, input mutations, full Pillow pixels, and producer receipts are retained under .coverage-mcp/local-evidence/parity/avif-obu-header-compatibility-20261102/ and the preceding avif-obu-header-flags-lead-20261102/ and avif-obu-extension-lead-20261102/ directories.

The retained instrumented executable passes all 1,285 AVIF decode rows, with zero failures or skips, including the existing operating-point error cases. Canonical selected coverage runs the baseline and thirty-six new rows (37/37); its final source and fixture guards must remain unchanged. The selected report and Coverage MCP query are retained in the compatibility directory. This is focused local evidence, not a refreshed full-suite percentage or a managed Coverage MCP run.

Strict Clippy passes default/all-feature, release, nightly coverage, AVIF-only coverage, and SSE2/AVX2 cross-compile lanes. No lint exception, coverage exclusion, or release floor changes accompany the parser fix.

AVIF padding-heavy samples — 2026-11-02

Three public decode rows prepend empty padding OBUs to the complete baseline AVIF, producing samples with 4,096, 4,097, and 8,192 total OBUs. The original temporal delimiter, sequence header, and frame bytes remain intact. Pinned Pillow accepts all three and returns the same 49,152 RGB bytes. The previous Rust decoder rejected the latter two at an arbitrary 4,096-OBU limit.

The parser now relies on its bounded sample and advancing byte offset. Each accepted OBU consumes at least its header and size byte, including empty padding. All envelope and payload checks remain. A fourth row retains the padding but removes the final frame byte, with a correctly bounded BMFF item extent; Pillow and Rust still reject frame and sequence decoding after successful header verification.

The original baseline and four new rows pass canonical selected coverage (5/5). The retained executable also passes all 1,249 AVIF decode rows, with zero failures or skips. Strict Clippy, its SSE2/AVX2 cross-compile lanes, fixture verification, and workflow lint pass. Existing matrix row values and all 3,369 existing output files remain unchanged.

Before/after public probe executables, exact live Pillow witnesses, selected fixtures, source snapshots, raw profiles, and Coverage MCP queries are retained outside target/ in .coverage-mcp/local-evidence/parity/avif-padding-count-20261102/. The selected query reports matching source and passed tests from a locally derived receipt, not a managed Coverage MCP execution. This fixes an observable decoder mismatch; it does not claim a refreshed full-suite percentage.

JPEG full-range samples in AVX2 batch geometry — 2026-11-02

Six public encode rows combine complete 64x16 and 113x17 RGB sources with baseline 4:2:0 at Q1, Q85, and Q100. Each block row mixes black, white, checker, inverse-checker, stripe, and ramp patterns. Equal RGB channels preserve the full luma range, including the large signed DC coefficients that smaller alternating-color cases do not produce.

The 64x16 image reaches an eight-block luma packet on AVX2. The odd 113x17 image also exercises right and bottom replication. Pinned Pillow supplies complete JPEG bytes; a separate native ARM64 public encoder probe matches all six outputs exactly. The manifest-driven matrix checks those same complete outputs, and native x86 CI executes the rows under SSE2 and AVX2. These are numerical boundary parity cases, not a claim of newly covered global branch outcomes or a refreshed full-suite percentage.

Inputs, live Pillow references, public probe outputs and executable, and source receipts are retained outside target/ in .coverage-mcp/local-evidence/parity/jpeg-eight-lane-extremes-staging-20261102/. The rejected reciprocal experiment and its measured regression limits are documented in Benchmarking; codec arithmetic is unchanged.

AVIF color grids with unattached alpha items — 2026-11-02

decode:avif:grid_unreferenced_alpha_items removes the two auxiliary-alpha relationships from the existing 80x80 color grid. A sibling free box keeps all item offsets and AV1 payload bytes unchanged; the alpha items remain well-formed but unattached. Pinned Pillow accepts the complete file as RGB, with the exact color channels of the original RGBA grid. The 2,373-byte input SHA-256 is 4f687d744f2afefcf00d387b5c21607d6e52922593b249e9dcf194a1da13926b; its 19,200-byte RGB output SHA-256 is f9a11555c837abeb321bdedd737638cc4a62c1784ad58f9b699fd49d3288c019.

The canonical selected run passes the original and unattached-alpha grid rows (2/2). Source and fixture guards remain unchanged during execution. Compared with byte-identical source files in the retained full report, the pair observes three previously unobserved branch outcomes in validate_grid_with_token: absent cell alpha, absent alpha canvas, and no alpha placement. Duplicate LLVM records are combined by source span and arm using OR; these observations do not establish a refreshed full-suite percentage. All 1,244 existing AVIF decode rows, other format rows, fault contracts, and existing raw output bytes remain unchanged.

The report, actual test executable, raw and merged profiles, 139 source/setup files, fixture receipts, and producer recipe are retained outside target/ in .coverage-mcp/local-evidence/parity/avif-grid-unreferenced-alpha-20261102/. This is local selected-test evidence, not a managed Coverage MCP execution. No codec implementation or runtime dispatch changes are required.

Reduced AV1 inter transform alphabet — 2026-11-02

decode:avif:animated_lossy_inter_420_b16x64_reduced_transform_set_64x64 adds a 2,550-byte I420 animation with two 64x64 RGB frames. Both picture headers signal the reduced transform set; the inter frame uses TX_MODE_SELECT at positive qindex with B16x64 leaves. The fixture encoder uses the ordinary AOM reduced-tx-type-set option and its existing pinned partition controls. Its input SHA-256 is 3a52bdb0573571d5b9d6c5f79cbf4f41816fa84e4ec052034a9e418b9797511e.

Pinned Pillow 12.2.0 provides both exact 12,288-byte RGB frames and 100 ms durations. A separate clean-source libavif 1.4.1 observer decodes both frames, reports repetition count zero (one total play), and repeats the observation. Two normalized native encodes agree byte for byte. The existing normal and qindex-zero B16x64 fixtures retain their exact input and frame hashes after the encoder gains the new option.

The targeted public probe reaches the true reduced-set branch in decode_inter_transform_type; that outcome has count zero in the retained full report against the identical entropy source. This is selected-case evidence, not a refreshed full-suite percentage. The canonical selected run passes the normal and reduced-set rows (2/2), with unchanged source and input guards throughout execution. The reduced-set branch records four true observations; the normal alphabet remains exercised in the same run. Raw coverage, producer identity, native observations, and receipts are retained in .coverage-mcp/local-evidence/parity/avif-reduced-transform-set-20261102/. Codec arithmetic, runtime dependencies, coverage exclusions, and release floors are unchanged.

Incomplete TIFF integer subsampling pairs — 2026-11-02

Five public decode cases retain Pillow's default 2-by-2 YCbCr clumps when tag 530 contains only one value. They cover BYTE, LONG, SBYTE, SSHORT, and SLONG; the existing SHORT cases remain unchanged. Each incomplete tag stores 1, so using that value instead of ignoring the incomplete pair changes decoding. The pinned Apple ARM64 Pillow oracle independently reproduces the exact RGB pixels, inspection, verification, and sequence observations.

The five-case selected run passes, and a fresh selected run of all 438 active TIFF decode cases passes with stable source and fixture identities. In that run, src/codecs/tiff/inspect.rs covers 140/140 branches, compared with 135/140 in the retained pre-publication full report. Its other metrics remain 460/483 lines, 27/32 functions, and 677/711 regions in the TIFF-only run. Duplicate LLVM source spans for the integer match alternatives are preserved in the raw report; the Coverage MCP coordinate view coalesces those spans. No full-suite percentage or named-case coverage attribution is inferred.

Reports and local receipts remain outside target/ under .coverage-mcp/local-evidence/selected/20261102T072413.107722Z-1cbcb9ce611d4565965d53342ebac1c0/ and .coverage-mcp/local-evidence/selected/20261102T072657.671780Z-fe371f157bc748a2a56cb8a4bd622dde/. Codec source, dependencies, feature selection, and lint policy are unchanged; this fixture-only change makes no latency claim. All 3,684 previous matrix rows and their canonical observations are preserved.

Publication and canonical x86 JPEG word boundaries — 2026-11-02

The accumulated work is committed to the existing develop branch in PR #154. GitHub requires its Required CI checks status before publication to main. No new local branch or worktree is created. The fixture-integrity job now supplies the same hash-locked Python/Pillow environment on Apple ARM64 as the primary oracle; its complete regeneration and observation checks remain intact. Fixture setup steps have distinct names so the existing workflow-policy mutation checks continue to target the quality job.

Initial native x86 Linux SSE2 and Windows MSVC execution both find the same 38 JPEG mismatches among 570 decode rows. The affected complete grayscale inputs cover sequential/progressive signed-word dequantization, wide quantizers, partial blocks, both column halves and dense coefficients. Their pinned Pillow outputs are unchanged. The preceding ARM64-only parity and x86 compile checks had not established native x86 behavior.

The SIMD IDCT now uses the pinned ARM64 oracle's signed-word truncation and four-column zero-vertical-AC grouping on every SIMD target. SSE2/AVX2 workspace clamping no longer changes canonical pixels for extreme values. When an AVX2 DC workspace wraps, an outlined complete four-column transform handles each half independently; the normal eight-lane transform retains its existing admission test. No scalar fallback, unsafe code, dependency, production fault hook or codec unit test is added. Native x86 parity remains a required CI gate; this change makes no latency or world-ranking claim.

Local ARM64 JPEG decode parity passes all 570 rows. Strict stable/default/ all-feature/release/coverage Clippy and SSE2/AVX2 compile checks pass. The complete local workflow/release tooling, formatting, verification, parity and feature lanes pass before the x86 correction; package verification requires a clean checkout and is deferred to CI because pending changes and pre-existing local files are preserved. The full coverage report below predates the x86 correction and retains its exact source identity; it is not relabeled as a new measurement. Raw CI failures, local checks and source comparisons are retained locally in target/jpeg-x86-word-parity-20261102/ and the publication evidence directory. All 3,657 active parity cases and 167 separate fault contracts remain required; strict 100% and the 27 planned AVIF encoder rows remain open.

AVIF integer-motion precision parity — 2026-11-02

Nine complete public input sequences cover I420/I422/I444 at 8/10/12 bits, with mixed lossless/lossy key segments and inter-frame super-resolution from coded width 102. Native screen-content tuning on equal varied source frames selects integer-only motion precision. Palette and intra-block copy stay disabled. The recipe contains only input and encoder settings; the standard collectors obtain exact still and sequence output from live pinned Pillow. Both frame headers independently confirm screen-content tools and integer motion precision. All 72 maintained color recipes reproduce complete pinned bytes twice, preserving the preceding 63 inputs.

Coverage MCP 0.16.0's installed CLI identified the unobserved true side of MotionVector::reduce_precision at motion.rs:35. The nine-case selected run passes exactly nine cases and records 432 true evaluations. The fresh full run preserves the preceding 53,424 false evaluations and records the same 432 true evaluations. The unchanged motion file gains one covered line, one branch and four regions; the unchanged frame parser gains another branch. Imported source remains locally unverified and individual-case attribution unknown. Queries, raw overlapping branch rows and both full report identities are retained; counters are not summed across overlapping rows.

The full campaign passes 139 integration checks in six executables, all 3,657 active parity cases and 167 separately reported existing fault contracts. Twenty-seven planned AVIF encode rows remain unexecuted. Source and fixtures stay stable throughout measurement. A runner completion interleaved one GIF case marker; reconciliation retains the raw log and joins only the observed fragments of a declared active identifier. All case markers reconcile exactly. No private unit-test executable runs.

Metric Covered / total Percent
Lines 102,327 / 142,071 72.0253%
Branches 20,938 / 31,992 65.4476%
Functions 5,660 / 9,128 62.0070%
Regions 155,766 / 220,198 70.7391%

Alpha floors pass; strict 100% remains unmet. Global denominators differ from the preceding translated-source run: concurrent, owner-approved mode() getters in src/source.rs add six lines, two functions and six regions, which remain uncovered. Those edits are preserved. An initial const getter through Arc failed compilation and was corrected by the other editor before the successful campaign. This fixture work changes no Rust codec algorithm. Fresh strict Clippy (including coverage configuration), SSE2/AVX2 compile and native/WASM/WASI feature gates pass against the final stable source. A fresh source-bound release executable also matches all nine complete inputs through public still and sequence APIs. No runtime speed measurement is claimed; SSE2/AVX2 execution still needs matching hardware.

All 3,675 previous matrix rows, 7,296 canonical outcomes, 564 native observations and 10,823 preceding fixture paths are preserved. Nine rows add 63 fixture files; shared index identities and metadata receipts refresh without changing old outcomes. The native index now contains 573 cases and 1,980 artifacts. The current matrix has 3,684 rows, including 1,243 active AVIF decode rows. The parent AVF-SEQUENCE-001 remains planned. AVIF encoder completion, broader reconstruction, all-four 100% coverage and native x86 speed comparisons remain unfinished.

The source-bound full evidence is .coverage-mcp/local-evidence/full/20261102-integer-motion/; the selected report is .coverage-mcp/local-evidence/selected/20261102T060331.725547Z-38b4ef6978a8461aa4dde2b3075ba9b8/. The retained parity checkpoint is .coverage-mcp/local-evidence/parity/avif-integer-motion-20261102/. Local inventories, profiles, native observations, repeated recipes, failed validation attempts and final checks remain outside target/ in that checkpoint. Local reports and build artifacts are excluded from the source commit. All work uses /Users/lazytrot/work/image-slash-star and the existing develop branch; no branch or worktree is created. Publication to main is owner-authorized.

AVIF fixed-four CDF shared-shift trial — 2026-11-02

The fixed-four adaptive-symbol reader accounts for 1,240 of 4,602 leaf samples in the retained lossy compound profile. Its three CDF adaptation branches motivated a bounded shared-shift experiment. Writing a probability as p = q * 2^r + t, the upward adjustment is exactly 2^(15-r) - q - [t != 0] for AV1 rates 5 through 7. The candidate shares p >> r between both directions, with an explicit remainder correction; symbol selection, normalization, count updates and failure handling stay intact. It adds no unsafe Rust, dependency, public API or runtime hook.

Native ARM64 assembly replaces all three adaptation branches with conditional selections. Each matching routine has 133 instructions instead of 135, while the 96-byte stack frame and refill path stay the same. This does not establish a performance gain: more of the arithmetic executes on common downward updates. Both source-bound binaries match live pinned Pillow pixels and shapes on all 13 complete still/sequence workloads before timing, including translated motion and split/disjoint extent controls.

One predeclared independent cohort retains 156 process samples: three A-B-B-A cycles over 13 workloads, ten warmup calls and a three-second sample target, with 30 to 500,000 iterations. Complete public decode and result destruction are timed after reading the input. No Cargo build or test campaign overlaps the measurements. The shared Apple M3 Pro ARM64 host runs macOS 15.7.7 and Rust 1.96.1. This cohort is not pooled with earlier experiments.

Workload Overall median latency change Changes in the three cycles
Lossy compound sequence -1.104% -1.127%, -1.630%, -0.640%
Lossless compound sequence +1.879% +1.443%, +2.215%, +0.819%
Ordinary 10-bit monochrome super-resolution control -4.254% -4.079%, -3.672%, -3.801%

The admission rule requires at least a 3% overall gain and a 3% gain in at least two cycles on either profiled compound workload, with no control repeatedly more than 3% slower overall. Neither profiled workload qualifies. The ordinary monochrome control's repeatable improvement cannot replace that declared gate. One noise-monochrome cycle has a +55.674% ratio excursion and an OBMC cycle has +6.486%; all samples remain included. No outlier is discarded, threshold changed or follow-up cohort used to seek a pass. The runtime candidate is rejected and entropy.rs is restored byte for byte. The full 129-file accepted runtime/build identity matches the preceding translated-source checkpoint.

No selected/full codec or SIMD campaign is run for the reverted candidate. Fresh formatting, documentation, no-source-unit-test, roadmap, claim-ledger and capability-document checks pass. The unchanged implementation retains the previous exact-source style/feature checks and complete coverage evidence at .coverage-mcp/local-evidence/full/20261102-translated-mixed-key/: 139 integration checks, 3,648 parity cases and 167 separate fault contracts pass. Its measured figures remain 102,326/142,065 lines (72.0276%), 20,936/31,992 branches (65.4414%), 5,660/9,126 functions (62.0206%) and 155,762/220,192 regions (70.7392%). Alpha floors pass; strict 100% remains unmet. All 10,823 fixtures remain byte-identical.

Coverage MCP 0.16.0 queries of that source-matched full report, raw fixed-four branch rows, exact candidate/baseline source, disassembly, arithmetic review, live parity, environment, timing samples and the failed gate are retained at .coverage-mcp/local-evidence/performance/avif-cdf-shared-update-20261102/. The connector is unavailable; the installed CLI is used. Imported source status remains locally unverified and named-case attribution unknown. Further entropy work needs a different measured cause; branch removal by itself is insufficient for these profiled requests. Native SSE2/AVX2 execution, world rankings, the AVIF semantic encoder and all-four 100% coverage remain unfinished. Work stays local and uncommitted in the sole develop checkout; no branch or worktree is created.

AVIF translated-source scaled-motion parity — 2026-11-02

Nine new public parity cases cover I420/I422/I444 at 8/10/12 bits with distinct source patterns in two 128x48 frames. The second source samples the pattern at luma offsets (+4, +2), with corresponding chroma offsets. Mixed lossless/lossy segments and neutral filters are retained; the inter frame uses horizontal super-resolution from logical coded width 102. The encoder chooses motion vectors and residuals. This adds ordinary complete-file stimuli, with no expected output in recipes and no forced decoder paths.

All nine inputs are deterministic across two native encodes after timestamp normalization, and both public still and sequence APIs match live pinned Pillow exactly. The maintained color generator now has 63 named recipes; all 54 existing recipes reproduce their complete pinned bytes twice as well. Standard Pillow collectors own decoded references; the independent native observer records both frame headers, pixels, timing and repetitions.

Coverage MCP's installed CLI guided the preceding encoder-gap review. The reviewed JPEG/GIF gaps are internal geometry/histogram invariants, and AVIF's 27 planned encode rows still require a Rust semantic compressor. Native entropy replay is not an image encoder. Those findings are retained rather than adding private tests for unreachable states. The translated-source family addresses a missing temporal input pattern in the prior AVIF corpus. No Rust runtime, integration-test source, Cargo configuration or Makefile changes are needed.

The focused run executes exactly nine selected cases, all passing, with stable source and fixtures. Its retained report is .coverage-mcp/local-evidence/selected/20261102T051954.392794Z-78868a886a474d3a8115cd7b47c6e9a1. The fresh complete run passes 139 integration checks in six executables, 3,648 active parity cases and 167 separately reported existing fault contracts; all case markers reconcile. The 27 planned encode rows remain unexecuted. All four denominators match the preceding complete report. Coverage gains 3 lines, 1 branch and 4 regions, with no function gain:

Metric Covered / total Coverage
Lines 102,326/142,065 72.0276%
Branches 20,936/31,992 65.4414%
Functions 5,660/9,126 62.0206%
Regions 155,762/220,192 70.7392%

The new branch is the negative-coordinate sign path in scaled motion compensation at motion.rs:1275; raw before/after branch rows and source spans are retained without summing overlaps. The gains also include two lines in block.rs. This is family-level full-report evidence, with no named-case attribution. Coverage MCP's local source status is unverified; separate hashes bind unchanged runtime source and stable measured fixtures. Alpha floors pass; make coverage-complete exits 2 solely because strict 100% remains unmet. The full report is .coverage-mcp/local-evidence/full/20261102-translated-mixed-key/, SHA-256 d2e633db6b21e1197d30f2c80a4d7da33b3ee1ecfc4ee1d02fe53c5524296134. It retains six instrumented executables, six raw profiles, one merged profile and 152 frozen source/setup files.

All 3,666 preceding matrix rows, 7,278 canonical outcomes and 555 native cases are preserved; shared native-index receipts update on 530 prior outcomes. There are now 3,675 matrix rows, 3,007 active decode rows, 641 active encode rows and 27 planned encode rows. AVIF has 1,234 active decode cases. The native bundle has 564 cases and 1,953 artifacts. All 10,760 preceding fixture paths remain, with 63 additions and seven metadata/receipt documents refreshed.

Fresh fixture integrity, documentation, roadmap, claim-ledger, formatting and no-source-unit-test checks pass. Strict Clippy, SSE2/AVX2 compile and feature-lane implementation results are reused from the exact unchanged Rust/build source at the color coded-tail checkpoint; this does not claim fresh cross-target execution of the new inputs. The first fixture-integrity failure from stale roadmap counts is retained alongside the corrected successful run. Final roadmap documentation refreshes only the claim-ledger roadmap receipt after measurement, with the measured fixture identities preserved separately.

The immutable checkpoint is .coverage-mcp/local-evidence/parity/avif-translated-mixed-key-20261102/. It retains independent inputs and observations, repeated encodes, exact pixels, source identities, all validation attempts, selected profiles and full-report bindings outside target/. There is no new unit test, runtime fault hook, coverage exclusion, relaxed threshold, unsafe Rust or dependency. There is no new runtime timing claim because runtime source is byte-identical. Strict 100%, AVIF encoding, broader reconstruction and native SSE2/AVX2/world-ranking performance remain unfinished. Work remains local and uncommitted in the sole /Users/lazytrot/work/image-slash-star checkout on existing develop.

AVIF compound-decoder profiling and rejected trials — 2026-11-02

Two complete three-frame 256x256 public AVIF sequences match live pinned Pillow before native sampling. The lossy sequence attributes 1,240 of 4,602 samples to fixed-four-symbol decoding and another 936 to the general adaptive-symbol reader. The lossless sequence also identifies the Golomb bit loops embedded in dequantization as material work. Retained-frame validation checks metadata and buffer geometry; it does not scan every retained sample. Sampling is diagnostic, separate from the paired timing measurements.

Four independent timing cohorts retain 432 process samples in total. Each uses the same nine material public still/sequence inputs, exact live pinned Pillow comparisons for both source-bound release binaries, three A-B-B-A cycles and ten warmup calls on the shared Apple M3 Pro ARM64 host running macOS 15.7.7 and Rust 1.96.1. The first three cohorts target one second per process sample; the last targets five seconds. Complete public decoding and result destruction are timed after reading input bytes. Cohorts are never pooled.

Trial Lossy compound median change Admission
Fixed-four window-refill outline -0.61% Failed
Golomb helper outline -1.28% Failed
Existing fixed-four helper at generic AC/DC base-token sites, short -4.43% Failed cycle rule
Same two call sites, independent longer cohort -2.92% Failed magnitude rule

The declared rule requires at least a 3% overall gain and a 3% gain in at least two of three cycles on a profiled compound workload, with no repeated overall regression above 3% on any control. The short third cohort's lossy compound cycle changes are -2.62%, -4.68% and -1.27%. The longer cohort shows roughly 5–6% lower latency on two other sequences, while every measured row is faster; those bounded observations do not satisfy the declared profiled-workload gate. All trial source changes are restored exactly. Smaller instruction counts and stack frames did not justify keeping either outlining trial.

At the profiling checkpoint, runtime, fixtures and test setup matched the color coded-tail checkpoint. Its complete coverage and style/feature results remained reusable; no codec campaign was repeated for that evidence-only update. Coverage MCP 0.16.0 queries of that retained full report are stored with the profiles because the connector is unavailable. Imported source status is unverified and named-case attribution is unknown; separate hashes bind the local source and binaries. This work adds no tests, runtime hooks, exclusions, dependencies or unsafe Rust. Further work should address the measured coefficient/entropy cost with new causal evidence rather than repeat these trials. The 100% coverage, AVIF encoder and native SSE2/AVX2 performance objectives remain unfinished.

The reproducible plans, failed gates, exact source snapshots, raw profiles, assembly, live parity receipts and timings are retained in .coverage-mcp/local-evidence/performance/avif-compound-profile-20261102/.

AVIF color mixed-key and coded-tail parity — 2026-11-02

Fifty-four new public parity cases match live pinned Pillow exactly for still output and both sequence frames. They cover I420/I422/I444 at 8/10/12 bits, flat and varied keys, and inter logical coded widths 71, 100 and 102. Display sizes are 80x20 and 112x20 with denominator 9, and 128x48 with denominator 10. The 20-row cases also exercise padded bottom edges. Varied keys require nonconstant residual reconstruction. The previous decoder passed ten complete cases; the other 44 sequences and all eighteen I422 first frames were unsupported. The bounded color follow-up under AVF-SEQUENCE-001 is closed; its parent sequence work item remains unfinished.

The retained public probes distinguish three causes. First, the mixed neutral super-resolution admission excluded non-four-aligned color coded widths even though color reconstruction already preserves physical padding and separates logical resize phase from source extent. That neutral profile now admits these widths; active filters, grain and restoration retain their prior restrictions. Second, I422 intra reconstruction rejected all segmented keys. It now reuses the existing strict mixed segment-map and quantization proof, while existing inter and restoration wrappers explicitly retain their frame-kind checks. The neutral-filter helper is named for its shared segment role.

Third, the first candidate was exact on 42/54 cases but failed twelve 8-bit sequences. Existing debug traces stopped at B8x8 inter blocks. Their legacy fixed 2x2 WHT helper required frame transform mode zero, despite segment losslessness selecting the same fixed TX4x4 grammar in mixed modes 1/2. It now uses the existing checked mixed-lossless mode predicate, retaining buffer, depth, plane, geometry and zero-quantizer checks. No transform or resize arithmetic, native runtime fallback or allocation strategy changes. Both runtime changes are limited to entropy.rs and block.rs.

The new input-only color generator has 54 named recipes, all encoded twice through the unchanged pinned mixed-key producer. Both complete files match pinned digests and independently parsed sequence/frame features. Existing inter-only and monochrome generators and complete input files remain unchanged. A single additional --check command joins ordinary Makefile fixture verification. Standard live Pillow collectors own expected pixels; independent native observers record complete frames, syntax, timing and repetitions.

Coverage MCP 0.16.0 queried the preceding and current full reports using its installed CLI because the connector is unavailable. Its ranked entropy gaps led to bounded source inspection and public profile probes. Raw branch rows for the shared segment proofs and new I422 intra selector are retained without summing overlapping spans or assigning observations to individual cases. Local LLVM source identity remains unverified and named-case attribution is unknown. The final selected run passed exactly 54 declared public cases with stable source and fixtures. Its report is .coverage-mcp/local-evidence/selected/20261102T035845.945500Z-74964e30acd241f8bf0c77af13313abc.

A fresh complete campaign passed all 139 integration checks in six executables, 3,639 active parity cases and 167 separately reported existing fault contracts. All case markers reconcile; 27 planned encode rows were not executed. Source and fixtures stayed stable. Alpha floors pass. make coverage-complete exits 2 only because the strict 100% target remains unmet:

Metric Covered / total Coverage
Lines 102,323/142,065 72.0255%
Branches 20,935/31,992 65.4382%
Functions 5,660/9,126 62.0206%
Regions 155,758/220,192 70.7374%

The report is .coverage-mcp/local-evidence/full/20261102-color-coded-tail/, SHA-256 4b6edd30c765df8f71424946a51a1770e69b6bf6dd08b722703ab7664e13e032. It retains six instrumented executables, six raw profiles, one merged profile and 152 frozen source/input files. The preceding full report at the prior coded-tail checkpoint contains 3,585 parity cases. This refresh adds 54 rows and changes two runtime files, with different denominators; global changes are not assigned solely to individual new fixtures. No source is excluded, defensive check hidden or threshold reduced.

Fresh strict Clippy, release/coverage-cfg lanes, SSE2/AVX2 compile checks and the final native/WASM/WASI feature matrix pass. The initial feature-matrix campaign overlapped fixture registration: all execution lanes passed and its generated document check failed. That failure is retained. Capability docs were regenerated and the complete feature matrix passed again with stable case index identities. Fixture and final documentation checks also pass. No new unit test, test executable, unsafe Rust, dependency or runtime fault hook is introduced.

The source-bound whole-call latency comparison passed 648 samples across 54 unchanged successful workloads using three ABBA cycles and the declared repeated 3% review threshold. Its largest median slowdown was 1.606%. All ten successful-before new cases are included as timing controls; the other 44 have no successful-before latency ratio. Both binaries match live pinned Pillow on every timed workload. The cohort measures accepted babffc16 against final a06302a3 on ARM64, with exact source and executable identities. It establishes neither zero overhead nor native x86/world-ranking performance. The earlier ordinary 10-bit monochrome performance investigation remains separate; cohorts are not pooled.

All 3,612 preceding matrix rows and 7,170 canonical outcomes are preserved; only the shared native-index receipt changes on 476 preceding canonical rows. The matrix now contains 3,666 rows, 2,998 active decode rows, 641 active encode rows and 27 planned encode rows. AVIF has 1,225 active decode rows. The native index contains 555 cases and 1,926 artifacts. All 10,382 preceding fixture paths remain; seven metadata documents change and 378 files are added. Existing fault contracts, native producer, dependencies and protected untracked files remain unchanged. Closing the bounded roadmap follow-up after testing refreshes only the claim-ledger roadmap digest; final fixture/document checks are rerun, and the original measured fixture receipt stays intact.

The immutable checkpoint is .coverage-mcp/local-evidence/parity/avif-color-coded-tail-20261102/. It retains final source, native inputs/observations, exact pixels, hypotheses, the incomplete first candidate and debug trace, all validation attempts, selected profiles, full-report bindings and fresh performance receipts. Inventories are independently rehashed outside target/.

Strict 100% coverage, broader sequence/reference reconstruction, encoder completion, native SSE2/AVX2 runtime speeds and world-ranking comparisons remain open. All work remains local and uncommitted in the sole checkout at /Users/lazytrot/work/image-slash-star on existing develop; no branch or worktree was created.

AVIF monochrome coded-tail reconstruction — 2026-11-02

Twelve public parity cases now match live pinned Pillow exactly for still output and both sequence frames. They cover mixed lossless/lossy monochrome keys and inter frames at 8/10/12 bits: 128x128 and 128x20 with denominator 10 (logical inter width 102), 112x20 with denominator 9 (width 100), and 80x20 with denominator 9 (width 71). Before this change, ten sequences returned Unsupported; the 10/12-bit width-100 sequences returned incorrect edge pixels. All first frames were already exact. AVF-SEQUENCE-001's width-102 follow-up is closed for these declared cases; the parent sequence work item remains unfinished.

Pinned dav1d reconstruction explains the edge mismatch: resize phase uses the logical coded width, while filter taps read reconstructed samples through the next eight-pixel coded boundary. The earlier admission-only experiment cropped that tail before resizing. The Rust decoder now moves the complete existing luma canvas through separate logical and physical resize geometry, limited to the neutral single-tile mixed-monochrome profile. Existing checked bounds, neutral-filter, film-grain and restoration restrictions remain. The 8-bit path also removes an unnecessary monochrome exclusion from the existing fixed TX4x4 lossless WHT grid; depth, quantization and geometry checks stay in place. No arithmetic kernel or native runtime fallback is introduced.

The input-only generator has 26 named recipes; all reproduce twice through the unchanged pinned producer, including the preceding fourteen complete files. Complete digests and independently parsed headers are validated. Standard live Pillow reference collectors and independent native observers own pixels, complete-frame syntax, timing and repetition evidence. The new inputs contain no expected Rust results.

The final selected run passed exactly twelve declared public cases with stable source and fixtures. Raw LLVM observations cover the geometry adapter and coded-padding path. Duplicate branch spans remain raw and are not summed; named-case coverage attribution is unknown. Coverage MCP 0.16.0 queried the new full report for entropy, block, frame and resize gaps through its installed CLI because the connector is unavailable. Local source identity remains unverified. The selected report is .coverage-mcp/local-evidence/selected/20261102T032935.917004Z-d0fad720b6204d7c93212912ddc88710.

A fresh complete campaign passed all 139 integration checks in six executables, 3,585 active parity cases and 167 separately reported existing fault contracts. Twenty-seven planned encode rows were not executed. Source and fixtures stayed stable; all case markers reconcile without normalization. Alpha floors pass. make coverage-complete exits 2 only because its strict 100% gate remains unmet:

Metric Covered / total Coverage
Lines 102,223/142,040 71.9678%
Branches 20,900/31,970 65.3738%
Functions 5,657/9,125 61.9945%
Regions 155,640/220,169 70.6912%

The report is .coverage-mcp/local-evidence/full/20261102-coded-tail/ with SHA-256 def73c5cafb1f0add34c0746368adf6ed78b754e811a5ae2c940dda21d9206f9. It retains all six instrumented executables, six raw profiles, one merged profile and 152 frozen source/input files. The preceding full campaign had 3,564 parity cases; this refresh includes the prior nine boundary cases and the new twelve, with four runtime files changed. Denominators differ, so movement is not attributed solely to these twelve inputs. Function coverage changes from 5,656/9,123 to 5,657/9,125; its slightly lower percentage is retained. No source is excluded and no coverage threshold is reduced.

Fresh make lint, make lint-x86-simd and make test-feature-matrix pass, including strict release/coverage-cfg Clippy and native/WASM/WASI lanes. The first Clippy run rejected a nonminimal boolean expression; the equivalent short-circuit form passed. Its rebuilt complete release executable is byte-identical to measured decoder babffc16, with both source identities and build receipts retained in an explicit bridge. No additional timing run is claimed for that textual simplification.

The whole-call latency guard passed 384 samples across 32 unchanged successful workloads using three ABBA cycles. Its largest median slowdown was 1.995%, below the declared repeated 3% review threshold. Formerly failing or incorrect cases have separate correctness proof and no successful-before latency ratio. This ARM64 cohort establishes neither zero overhead nor native x86/world-ranking performance. The earlier ordinary 10-bit monochrome performance investigation remains separate; cohorts are not pooled.

All 3,600 preceding matrix rows and 7,146 canonical outcomes are preserved; only the common native-index receipt changes on 464 preceding canonical rows. The matrix now has 3,612 rows, 2,944 active decode rows, 641 active encode rows and 27 planned encode rows. AVIF has 1,171 active decode rows. The native index contains 501 cases and 1,764 artifacts. All 10,298 preceding fixture paths remain; seven metadata documents change and 84 files are added. Existing fault contracts, dependencies, Makefile, native producer and protected untracked files remain unchanged. No unit test or additional test executable is added.

The immutable checkpoint is .coverage-mcp/local-evidence/parity/avif-coded-tail-20261102/. It retains final source, public inputs and pixels, native observations, selected profiles, full-report bindings, source/build/performance receipts, prior partial trials and failed validation logs. The timing campaign for the incorrect unaligned-only intermediate source was stopped and excluded from acceptance. The earlier width-only trial remains rejected evidence. Inventories are independently rehashed outside target/.

Strict 100% coverage, broader sequence reconstruction, encoder completion, native SSE2/AVX2 runtime measurements and world-ranking comparisons remain open. All changes remain local and uncommitted in the sole checkout at /Users/lazytrot/work/image-slash-star on existing develop; no branch or worktree was created.

AVIF mixed-segment key boundary parity — 2026-11-02

Nine new public parity cases exercise varied 8/10/12-bit monochrome key/inter sequences at 40x16, 60x20 and 128x128. Their inter coded widths are 32, 48 and 64 respectively; the first two use denominator 10 and the largest uses 16. The 60x20 inputs expose four-pixel key-frame and bottom-edge tails, while the 128x128 key exercises the admitted size bound. Still output and both sequence frames match live pinned Pillow exactly. Separate native observers confirm complete frames, timing and repeat payloads for all nine sequences.

The maintained input-only generator now uses named recipes for dimensions, depth, speed, restoration, key variation, denominator and complete digest. All fourteen recipes reproduce twice through the unchanged pinned producer; the preceding five IDs, parameters and input bytes remain unchanged. Complete file hashes and independently parsed AV1 segment, quantization and scaling features are checked before writing. Inputs own no expected pixels or Rust results; standard live reference collectors own observations.

Coverage MCP 0.16.0 queried the preceding full report and the selected report. The connector is unavailable, so the installed CLI inspected the retained LLVM JSON. An initial functions metric query was rejected by that CLI; its failure is retained, and raw LLVM function counts informed the subsequent source inspection. Local source verification remains unavailable and named-case coverage attribution is unknown.

The selected run executed and passed exactly nine declared public cases with stable source and fixture identities. Comparing unique raw branch spans on identical runtime source found four newly observed arms among 14,428 compared spans; 1,609 nonunique spans were excluded. These include the non-eight-aligned height rejection in the filtered-profile selector and three reference-tool predicates in the large-frame inter admission path. Counts are not assigned to individual cases. Baseline observations absent from this selected subset are not regressions. No replacement or additive full-coverage percentage is claimed.

All 129 runtime source identities, Cargo inputs and the accepted public wrapper remain unchanged from accepted decoder 7bdc1ab7. Fresh make lint, make lint-x86-simd, make test-feature-matrix, fixture validation and final documentation/preservation checks pass. SSE2/AVX2 validation remains compile-only on ARM64. No optimization or runtime change is retained, and no new speed measurement is claimed. The preceding source-bound performance guard remains historical evidence for the same accepted binary.

The nine cases preserve all 3,591 preceding matrix rows and all 7,128 canonical outcomes. Only the common native-index receipt changes on 455 preceding canonical rows. There are now 3,600 matrix rows, 2,932 active decode rows, 641 active encode rows and 27 planned encode rows. AVIF has 1,159 active decode rows. The native index contains 489 cases and 1,728 artifacts. All 10,235 preceding fixture files remain; seven fixture metadata documents are refreshed and 63 assets are added. Existing fault contracts are unchanged. No unit test or additional test framework is introduced.

A distinct, unresolved public input class remains recorded under AVF-SEQUENCE-001: denominator-10 128x128 sequences have coded width 102. All three accepted-source key frames match Pillow, while sequence rendering returns Unsupported at 8/10/12 bits. A one-condition neutral-monochrome admission trial left 8-bit unsupported and returned unequal right-edge pixels at 10/12 bits (198 and 222 differing RGB bytes in the second frame). The trial was rejected and every runtime source byte restored. Complete inputs, feature reports, live Pillow pixels, before/trial commands, rejected source, patch and binary are retained. The successful denominator-16 boundary cases do not resolve this two-pixel-tail reconstruction issue. Coded-plane reconstruction and scaled-reference borders need first-divergence tracing before another admission proposal. These failures remain parity mismatches, not fault cases. The wrong-edition standalone formatter diagnostic from the rejected experiment is also retained; the later project-aware formatting/lint checks passed.

The selected report is .coverage-mcp/local-evidence/selected/20261102T025630.954087Z-77f90e37c53c4ab980eebb5643e30fa9. The checkpoint is .coverage-mcp/local-evidence/parity/avif-mixed-key-boundaries-20261102/. It retains the selected executable and raw/merged profiles, complete new fixtures/native observations, immutable accepted-parent bindings, all failed probe evidence and an independently rehashed inventory. No full campaign was rerun for this fixture-only increment. The latest full baseline remains .coverage-mcp/local-evidence/full/20261102-monochrome-mixed-key/: 71.9570% lines, 65.3406% branches, 61.9972% functions and 70.6843% regions; its strict 100% gate remains unmet. Full coverage, the newly exposed coded-width-102 class, native x86 speeds, encoder completion and a world-ranking comparison remain unfinished. Work remains local and uncommitted in the sole checkout at /Users/lazytrot/work/image-slash-star on existing develop.

AVIF monochrome mixed-segment key admission — 2026-11-02

Five new public manifest sequences cover a monochrome key frame containing both lossless and lossy segments, followed by super-resolution inter output. The preceding accepted decoder rejected the key frame before reconstructing it. The corrected admission reuses the checked depth-parametric intra residual path for neutral-filter, single-tile 8/10/12-bit mixed segmentation. Frame-kind checks move to the existing inter callers so their prior restrictions remain. No kernel, allocation strategy, error conversion, retained Option category, unsafe Rust, runtime fault hook or dependency changes in this increment. Only entropy.rs differs among the 129 captured runtime source identities.

The cases include a flat 8-bit key, varied 8/10/12-bit keys at native speed 3, and a varied 8-bit key at speed 7. Both frames of every sequence match live pinned Pillow exactly, with separate native full-frame, timing and repeat observations. The retained original investigation input c553936d10bdd28d7911e4f15ea094c57b9af7d34054529ff9ecf348ff27b474 also now matches Pillow through both still and sequence APIs. The new flat recipe is a different complete file and does not claim to reproduce that original input's bytes. All five new sequences were unsupported before this admission change; their successful after results have no before latency ratio.

The maintained input-only generator is scripts/generate_avif_monochrome_mixed_key_fixtures.py. It reproduces each complete file twice and checks pinned digests and independently parsed AV1 features. Its separate AOM profile applies libaom-mixed-key-segmentation.patch after the preceding mixed-superres patch. All five actual sequence headers disable restoration and all frame restoration types are NONE, including the fast flat recipe's ignored restoration request. Varied key inputs exercise nonconstant first-frame residuals. Rebuilding the updated C producer against the preceding libraries also reproduced all 29 preceding mixed/ordinary monochrome/I422 recipes twice with their original digests. Expected pixels remain owned by the normal live Pillow/native collectors.

The initial static native link failed because decoder entry points were omitted from AOM. Resuming the owned build with CONFIG_AV1_DECODER=1 fixed that link. The initial link failure and corrected build, producer-version pin and actual-header corrections, and setup assertion correction remain recorded. No dependency was installed and no additional Git checkout was created.

All 3,586 preceding matrix rows and 7,118 canonical outcomes are preserved; 450 canonical rows update only their common native-index receipt. The current matrix contains 3,591 rows, with 3,564 active parity rows and 27 planned encode rows. AVIF has 1,150 active decode rows. The native index contains 480 cases and 1,701 artifacts. The 10,200 prior fixture files remain, with seven fixture metadata documents refreshed and 35 new assets added.

The source-bound performance plan paired accepted baseline 93a40366 with candidate 7bdc1ab7 using the same optimized public wrapper. Both match live Pillow on 23 previously supported complete public-call workloads. Three ABBA cycles retain 276 timed samples. The declared guard passed; the largest measured median increase was 2.62%, below its 3% threshold. This bounds this fix on the ARM64 shared host. It does not settle the separate before-admission monochrome cost investigation or establish zero cost for all inputs, native x86 speed, SIMD gains, or a world ranking.

Fresh make lint, make lint-x86-simd and make test-feature-matrix passed. The SSE2/AVX2 lanes are strict compile checks on this ARM64 machine. The selected coverage run passed all nine declared public parity cases with unchanged source and fixture identities. Its report, receipt, instrumented executable, raw profile and merged profile are retained. The full run passed all 139 integration checks, all 3,564 parity rows and 167 separately reported existing fault-contract rows. No private unit-test executable ran; all 27 planned encode rows remained unexecuted. Full source and fixture identities were stable. One JPEG pass marker was split by a concurrent test-runner prefix/status; exact raw fragments were reconciled only against a declared active ID. The original log, first unreconciled analysis and correction receipt are retained; tests were not rerun to repair the accounting.

Metric Covered/total Coverage Covered/total delta from preceding full run
Branches 20,875/31,948 65.3406% +43/+10
Functions 5,656/9,123 61.9972% +2/+0
Lines 102,179/142,000 71.9570% +57/+6
Regions 155,596/220,128 70.6843% +79/+7

Coverage MCP 0.16.0 inspected the retained LLVM measurements. These are local dirty-source results: source verification is unavailable and named-case attribution is unknown. A separate raw comparison of identical mapped entropy.rs source lines found 37 newly observed arms and 0 no-longer-observed arms among 5,585 unique spans; 23 nonunique spans were excluded. Changed-source denominators are reported explicitly; these counts do not assign coverage to individual new cases. The owner-approved alpha coverage floors passed. make coverage-complete exited 2 at the retained strict 100% gate; the broader coverage/performance/encoder goal remains open.

The immutable local checkpoint is .coverage-mcp/local-evidence/parity/avif-monochrome-mixed-key-20261102/. The complete full report, frozen source, six executables and raw/merged profiles remain in .coverage-mcp/local-evidence/full/20261102-monochrome-mixed-key/. The selected report is .coverage-mcp/local-evidence/selected/20261102T022905.119739Z-3f42b86d36ca4ae5887c4d4e4582255d. The checkpoint binds their artifact inventories and independently rehashes its own inventory after atomic rename. All work remains local and uncommitted in /Users/lazytrot/work/image-slash-star on existing develop; no branch, worktree, staging, commit or remote mutation is introduced.

AVIF I422 neutral super-resolution — 2026-11-02

Four public sequences expose ordinary 8-bit I422 super-resolution with neutral filters and no segmentation. The preceding executable rejects all four sequences; the current executable matches every live pinned Pillow frame exactly. They cover 40x16, 80x48 and 128x64 display extents, denominators 9/10/16, an odd coded width of 71, and height beyond the separate active-restoration profile's limit.

The causal change is the generic I422 inter root-geometry proof in entropy.rs. It now uses checked padded coded dimensions, matching the existing I444 geometry rule, instead of requiring an active-restoration or mixed-segment profile to prove super-resolution dimensions. The shared checked I422 compositor already reconstructs, filters and resizes complete coded planes. Layout, depth, references, transform grammar, film-grain and active-restoration checks remain in their existing predicates. No kernel, postfilter plan, allocation, Option category, unsafe block, dependency, source exclusion, threshold or fault hook is changed.

scripts/generate_avif_i422_neutral_superres_fixtures.py is an input-only producer using the existing pinned native source recipe. All four complete files reproduce twice and pass independent AV1 feature checks. Normal fixture verification checks them. Live Pillow/native collection supplies the standard sequence observations and complete exact pixels; no private unit test or alternate test framework is added. All 3,582 previous matrix rows, 7,110 canonical outcomes, 167 fault contracts and 10,172 previous fixture paths are preserved. Twenty-eight files are added; seven existing fixture metadata documents change, including 446 native-index SHA receipts. The matrix now has 3,586 rows, 3,559 active parity rows and 27 planned encoder rows. Canonical outcomes number 7,118; native observations number 475.

The source-bound full-call ARM64 performance guard compares accepted pre-fix e5f696f9 with current 93a40366: 16 previously successful complete workloads, three ABBA cycles, and 192 samples. Both executables match live pinned Pillow on all 16 workloads. No overall latency increase above 3% repeats above 3% in two cycles; the largest overall increase is 1.30%. This is a bounded nonregression result, not proof of zero overhead or a general speedup. The four previously unsupported sequences have no successful pre-fix latency ratio. This cohort also does not resolve the separate before-admission 10-bit monochrome slowdown.

Fresh strict lint, coverage-configuration lint, native/WASM/WASI feature checks, and SSE2/AVX2 strict compile lanes all pass. Native x86 runtime and speed remain unproven on this ARM64 host. Seven focused public cases pass, covering the new four and three existing restoration/mixed-segment guards. The fresh full native all-feature run passes all 139 integration checks, all 3,559 active parity cases, and 167 separately reported fault contracts. All case markers reconcile; no private unit-test executable runs. Twenty-seven planned encoder rows remain unexecuted. Source and fixture identities stay stable during both coverage runs.

Full LLVM coverage is 102,122/141,994 lines (71.919940%), 20,832/31,938 branches (65.226376%), 5,654/9,123 functions (61.975227%), and 155,517/220,121 regions (70.650688%). Compared with the preceding full report, covered/total deltas are lines -1/-4, branches +6/-8, functions 0/0 and regions -2/-5. The causal geometry edit changes denominators; these percentages are not a test-only coverage gain. A separate comparison finds 13 newly observed arms on identical mapped source lines among 5,587 unique entropy spans, excluding duplicate spans. None of those compared arms loses observation. This is bounded source-span evidence with no per-case attribution; it is not a repository-wide no-regression claim. Coverage MCP still reports missing branches and labels this dirty source unverified and test attribution unknown. Alpha floors pass; strict 100% fails, so the full make command exits 2 despite all executed tests passing.

Fixture, documentation, roadmap, claim-ledger, generated-capability, no-source-unit-test and whitespace checks pass. The first fixture check caught one stale AVIF count in the human roadmap; it is corrected and the complete fixture check passes. That failed receipt remains in the local investigation.

Selected and full reports stay outside target/ at the paths recorded by .coverage-mcp/local-evidence/parity/avif-i422-neutral-superres-20261102/. The checkpoint retains before/current source-bound executables, public wrappers, producer/observer/link inputs, input recipes, complete native observations, performance plans/timings/pixels, strict-check logs, and coverage source/profile identities. The full report has its own complete artifact inventory. All work remains local and unstaged on existing develop in the sole checkout at /Users/lazytrot/work/image-slash-star. The 100% coverage, general performance, encoder, native SSE2/AVX2 and world-ranking goals remain unfinished.

AVIF ordinary restoration parity and rejected caching — 2026-11-02

Two ordinary monochrome 8/10-bit SGR super-resolution sequences now have public manifest parity cases. They are the complete retained workloads used for the restoration performance follow-up. Their pixels and frame/sequence metadata come from live pinned Pillow and the independent native collector. The input-only producer is generalized and renamed to scripts/generate_avif_monochrome_superres_fixtures.py: all three preceding neutral inputs keep their case IDs and bytes, and all five recipes reproduce twice. The normal fixture check validates all five complete files and AV1 features. No Rust runtime or test source changes are retained in this increment.

A longer unchanged-binary ABBA control uses 24 samples on two workloads. The 10-bit latency increase repeats at 1.21% overall, with cycle ratios 1.020932/1.002925/1.010524. Assembly disproves a segmentation-copy hypothesis: the helper contains no copy call. It shows two static admission-helper call sites. A proposed shared proof also bypasses unused mixed-profile checks, but 156 samples over thirteen exact-live-Pillow workloads miss the predeclared 1% target gain: the affected workload is 0.41% slower. The original 3% safety gate passes, but that is insufficient to keep the optimization. Its exact source, binary, timings, commands and rejection are retained; entropy.rs is restored byte-for-byte to the preceding accepted source. No speedup or zero performance cost is claimed. Both bounded macOS sampling attempts time out without reports; the second owned worker is retired explicitly. The dynamic cause of the small slowdown remains unproven. Geometry validation in retained views must not be confused with sample-range validation at surface creation.

Two temporary registration-helper mistakes (a wrong parser and stale count constants) are retained with repairs. Written state is independently verified: all 3,580 preceding matrix rows, 7,106 canonical outcomes and 167 fault-contract rows keep their behavior; 444 native-index SHA receipts refresh. Current totals are 3,582 matrix rows, 3,555 active public parity rows, 27 planned encode rows, 7,110 canonical outcomes and 471 independent native observations. All 10,158 previous fixture paths remain; fourteen files are added.

Selected coverage passes all five ordinary monochrome cases, with zero selected faults. The unique neutral-restoration decision records three neutral and four active continuations, and Coverage MCP reports zero gaps for that condition within this cohort. This improves the preceding three-case focused cohort, whose opposite outcome was absent; it does not close a new full-suite gap. The fresh full run passes all 139 integration checks, 3,555 public parity rows and 167 separately counted fault contracts. No private unit-test executable runs; source and fixture hashes remain stable during measurements.

Full totals remain unchanged: lines 102,123/141,998 (71.918619%), branches 20,826/31,946 (65.191260%), functions 5,654/9,123 (61.975227%) and regions 155,519/220,126 (70.649991%). Alpha floors pass; strict 100% fails. Existing strict Rust, feature and SSE2/AVX2 compile evidence is reused for byte-identical Rust/Cargo inputs; fixture and documentation checks are fresh. No new native x86, SIMD speed, ranking or whole-file closure result is claimed. Local Coverage MCP source status remains unverified and individual case attribution unknown.

The selected report is retained at .coverage-mcp/local-evidence/selected/20261102T012621.167559Z-1f3acf9a68e247d3b5e5579d30d660c1/ and the fresh full baseline at .coverage-mcp/local-evidence/full/20261102-monochrome-sgr-parity/. The complete checkpoint is .coverage-mcp/local-evidence/parity/avif-neutral-restoration-cost-20261102/. Other public parity defects, the restoration performance follow-up and 100% coverage remain unfinished. Work remains on the existing develop branch in the sole working checkout.

AVIF neutral monochrome super-resolution admission — 2026-11-02

Three complete ordinary monochrome sequences at 8/10/12 bits expose a missing inter-frame admission: their first frame decodes, but the neutral-filter super-resolution inter frame previously produced Unsupported. The frozen pre-fix executable fails all three new public matrix cases. Sharing the existing bounded structural/reference proof with the neutral-restoration case now produces exact live Pillow pixels for both frames. Reconstruction, resizing, geometry, motion and reference validation stay in the existing checked paths. Active restoration alone creates a restoration plan; the intra restoration admission remains unchanged. Only entropy.rs changes at runtime.

The input-only producer's optional ordinary argument omits its fixture ROI control. All three inputs reproduce twice and match the retained original failing files byte-for-byte; its default invocation also reproduces all twenty preceding mixed-segment inputs twice without changing their digests. Independent AV1 header checks confirm actual frame features. Standard Pillow and native collectors own reference observations. A manifest registration check caught an initial insertion under the wrong format; that attempt and its correction are retained before the runtime change.

Focused coverage passes 3/3 selected public parity cases, with no selected fault contracts. The fresh full native run passes all 139 integration checks, 3,553 active public parity rows and 167 separately reported fault contracts; 27 planned encode rows remain unexecuted. No private unit-test executable runs. Source and fixtures stay stable during both measurements. Current totals are 3,580 matrix rows, 2,912 active decode rows, 641 active encode rows, 7,106 canonical cases and 469 independent native loop observations. All 3,577 previous matrix rows and 7,100 canonical outcomes retain their behavior; 441 native-index SHA receipts refresh. Existing fault-contract rows remain unchanged.

The fresh full report covers 102,123/141,998 lines (71.918619%), 20,826/31,946 branches (65.191260%), 5,654/9,123 functions (61.975227%) and 155,519/220,126 regions (70.649991%). Alpha floors pass; the strict 100% gate fails. At the new neutral-restoration decision, raw LLVM branch counts are three neutral continuations and ten active-restoration continuations. Coverage MCP reports zero gaps for that one condition, not whole-file closure. Local source verification remains unverified and individual case attribution is unknown.

Fresh strict Clippy, coverage-cfg Clippy, SSE2/AVX2 compile checks and native, WASM and WASI feature lanes pass. Ten complete public decode workloads match live Pillow on both binaries before three paired ABBA timing cycles. All 120 samples satisfy the predeclared regression rule (reject an overall increase above 3% repeated in at least two cycles). The largest median increase is 2.01% on the existing 10-bit monochrome restoration control; all three cycles are slower, so this remains a performance follow-up. This correctness fix does not establish zero overhead, a speedup, native x86 performance or a ranking. No dependency, unsafe Rust, runtime fault hook, unit test, source exclusion or threshold reduction is added.

The source-bound full baseline and selected report are retained in .coverage-mcp/local-evidence/full/20261102-monochrome-neutral-superres/ and .coverage-mcp/local-evidence/selected/20261102T005449.353034Z-859c2dd85f4f49b0b15a992343981bd1/. The complete investigation and checkpoint are in .coverage-mcp/local-evidence/parity/avif-monochrome-neutral-superres-20261102/. The other retained I422 and mixed-key public parity defects, broader coverage and performance work remain unfinished. Work stays on the existing develop branch in the sole working checkout.

AVIF mixed-segment super-resolution parity — 2026-11-02

Twenty input-only native recipes cover a lossy key followed by a mixed lossless/lossy inter frame, coded at 64x48 and displayed at 80x48. Monochrome, 4:2:0, 4:2:2 and 4:4:4 cover 8/10/12-bit samples with neutral filters; eight additional 8/10-bit variants within those twenty use active luma SGR restoration. Pinned libavif disables 12-bit encoder restoration, making four attempted recipes byte-identical to neutral inputs. Those attempts remain retained and are not registered as extra cases. Every distinct input reproduces twice. Independent AV1 header parsing checks the actual features; standard live Pillow and native collectors own the reference observations.

All twenty exact public decode/sequence cases pass in focused coverage, with source and selected fixture identities unchanged during measurement. The previous full baseline records 178,170 rejecting outcomes and no admissions at entropy.rs:4236; this selected cohort records no rejections and 6,700 admissions on identical runtime source. The rest of the restoration profile also executes. Coverage MCP still reports one gap for the opposite outcome within this selected report. No whole-file closure, summed generic gaps, per-case attribution or new full-suite coverage percentage is inferred. The selected report and its receipt remain in .coverage-mcp/local-evidence/selected/20261102T003221.843140Z-6d1d1c9111264b10b617b5e015f457cd/.

All 3,557 previous matrix rows and 7,060 canonical outcomes retain their public behavior; 421 native-index receipts refresh. Current totals are 3,577 matrix rows, 3,550 active public parity rows, 27 planned encode rows, 7,100 canonical cases and 466 independent native loop observations. The 167 existing target-only fault contracts are unchanged and none is selected in this run. No Rust runtime or test source changes; strict Rust/feature/SSE2/AVX2 compile and full-baseline evidence from the preceding source remains applicable to that source. No new performance or native x86 runtime result is claimed.

The native producer investigation retains unsuccessful builds, speed-8 native crashes, a retired bounded debugger attempt, non-mixed control inputs and valid inputs that pinned Pillow decodes but the current Rust implementation rejects as unsupported. Those are unresolved parity defects, not passing rows or target-only faults. Full coverage and codec performance remain unfinished. The producer recipe, source snapshots, all attempts and scoped verification are retained in .coverage-mcp/local-evidence/parity/avif-mixed-superres-20261102/. Work stays on the existing develop branch in the sole working checkout.

AVIF super-resolution admission cost — 2026-11-02

Five source-bound public decode profiles identify repeated super-resolution eligibility checks on the current decoder. ARM64 assembly confirms a 264-byte segmentation copy before structural rejection. Borrowing that immutable state removes the copy. Restoration admission now rejects incompatible structure and layout before filter classification, and neutral profiles avoid classification whose result they do not use. All existing predicates and checked fallbacks remain. This changes two private helpers in entropy.rs only.

The borrow-only trial retains exact live Pillow parity but misses the predeclared 3% full-call gain threshold; its source, executable and all 96 paired timing samples remain retained. A second source-bound A–B–B–A trial combines the borrow with deferred filter classification. Across eight unchanged public decode workloads, both frozen binaries match live pinned Pillow before timing. All 96 samples from three cycles are retained. The profiled 12-bit 4:2:0 16x4 inter sequence improves by 3.50% overall, with per-cycle changes of -1.71%, -4.62% and -3.66%. Changes across all eight workloads range from -3.50% to +0.37%; none crosses the repeated 3% regression gate. This is a bounded Apple M3 Pro shared-host latency result, without native x86 execution or a world-ranking claim. The initial formatting-only build is retained separately and was not timed.

Fresh full native all-feature coverage passes all 139 integration checks in six executables. All 3,530 active public parity rows and the existing 167 separately reported fault contracts execute and pass exactly once; 27 planned encode rows remain unexecuted. No new test or fixture is added. All 150 source/setup identities and all 9,997 fixture-file identities remain unchanged during measurement. No private unit-test executable runs.

Metric Covered / total Coverage
Lines 101,918 / 141,993 71.776778%
Branch outcomes 20,648 / 31,942 64.642164%
Functions 5,649 / 9,123 61.920421%
Regions 155,234 / 220,122 70.521802%

Alpha floors pass; the unchanged strict 100% gate still fails. These fresh metrics describe the refactored source and do not replace historical managed claims. Coverage MCP imports remain source-unverified with unknown test attribution; retained source identities bind this local measurement. Full coverage, raw profiles and six instrumented executables remain in .coverage-mcp/local-evidence/full/20261102-superres-admission/.

The actual restoration-admission decision records 178,170 rejections and no admissions in this corpus. Its admitted path remains uncovered; a public mixed-segment super-resolution input is a concrete next coverage target. A function-header gap query is not evidence that the decision is fully covered.

Formatting, strict stable/coverage Clippy, SSE2/AVX2 compile checks and the native/WASM/WASI feature matrix pass. There is no new allocation, unsafe Rust, dependency, optional-state category, runtime fault hook or coverage exclusion. Both trials, current profiles, source snapshots, assembly and raw timings remain in .coverage-mcp/local-evidence/parity/avif-superres-admission-20261102/. Work remains on develop in the sole /Users/lazytrot/work/image-slash-star checkout, without staging, commits, new branches, worktrees or remote writes. The full coverage and codec performance goal remains active.

AVIF adjacent square-64 chroma neighbor parity — 2026-11-02

Eighteen five-frame 128x128 inputs cover adjacent 64x64 inter blocks in 4:2:2 and 4:4:4, at 8/10/12 bits and qualities 70/95/99. A gray key frame precedes four colored checker periods. Ordinary encoder controls retain square roots; no native partition patch is needed. The high-depth planar sources preserve nonzero low sample bits. Every source reproduces twice byte-for-byte, and independent observed/unmodified scalar dav1d decoders produce identical YUV on all eighteen inputs and six additional mixed-pattern investigation guards. Expected pixels and native sequence observations are collected separately from input generation through the existing reference workflows.

All eighteen checker sequences fail on the preceding Rust decoder. A bounded trace confirms the first divergent U terminal in a deep 64x64 block: both decoders have arithmetic range 39,176, but Rust selects coefficient-skip context 11 instead of native context 12. Its lower left chroma edge remains neutral because SplitB64Deep is absent from the full-grid loading predicate. The existing reconstruction path already traverses that complete grid. Including the deep plan beside shallow and mixed plans fixes all eighteen regressions; the six mixed-pattern guards also retain exact live Pillow parity. All five complete RGB frames and sequence metadata are checked. Only entropy.rs changes among runtime files. Temporary Rust tracing and diagnostic field visibility are removed after retaining their evidence.

The existing fixture-verification target now checks the input-only square-64 generator. All 3,539 prior matrix rows and 7,024 canonical outcomes remain unchanged, apart from 403 native-index receipts. The matrix has 3,530 active public parity rows, 27 planned encode rows, 7,060 canonical cases and 446 independent native loop observations. The existing 167 target-only fault contracts remain separately counted. An investigation-helper count assertion failed before bundle mutation; its corrected assertion and original failure are retained. A copied summary field was independently corrected from 42 to the actual eighteen new rows without rerunning registration.

Fresh full native all-feature coverage passes all 139 integration checks in six executables. Every active parity and fault-contract row executes and passes exactly once; planned rows remain unexecuted. No private unit-test executable runs. All 150 source/setup identities and 9,997 actual fixture-file identities remain unchanged during measurement. A runner status fragment splits one BMP pass marker; the initial failed reconciliation, exact raw span and catalog-checked rejoining rule are retained without editing the raw log.

Metric Covered / total Coverage
Lines 101,924 / 141,991 71.782014%
Branch outcomes 20,652 / 31,942 64.654687%
Functions 5,649 / 9,123 61.920421%
Regions 155,244 / 220,122 70.526344%

Alpha floors pass; make coverage-complete returns 2 solely because the unchanged strict 100% gate fails. Coverage MCP reports no gap at the deep-plan and chroma-grid decisions. Its LLVM import remains source-unverified with unknown test attribution; separate local identities bind the source. Full coverage, raw profiles, six instrumented executables and reconciliation receipts remain in .coverage-mcp/local-evidence/full/20261102-square64-neighbors/.

A fresh source-bound ARM64 A–B–B–A comparison checks eight unchanged public decode workloads. Both frozen binaries match live pinned Pillow before timing. All 96 samples from three cycles are retained; median latency changes range from -1.24% to +1.75%, with no repeated regression above 3%. This supports a bounded shared-host Apple M3 Pro regression check, without a speedup, native x86/SIMD execution or world-ranking claim.

Strict stable/coverage Clippy, SSE2/AVX2 compile checks, native/WASM/WASI feature matrix and fixture integrity pass. The change adds no allocation, unsafe Rust, dependency, runtime fault hook, private unit test, optional-state category or coverage exclusion. Five fresh, untimed public decoder profiles on the preceding source retain exact live Pillow parity and identify entropy decoding as a material follow-up cost; sampled runs are not performance comparisons. Investigation, source/input reproduction, public regressions and validation evidence remain in .coverage-mcp/local-evidence/parity/avif-square64-neighbors-20261102/. The full coverage and codec performance goal remains active on develop in /Users/lazytrot/work/image-slash-star, with one checkout and no staging, commit, new branch, worktree or remote mutation.

AVIF 16x64 and 64x16 chroma reconstruction parity — 2026-11-02

Forty-two complete-file parity inputs exercise thin inter leaves in 128x64 and 64x128 sequences. Monochrome, 4:2:0, horizontal 4:2:2 and 4:4:4 cover 8/10/12-bit samples and qualities 70/99. Independent scalar dav1d observations witness shallow, mixed and fully split transform trees; its observed and unmodified decoders produce identical YUV on all 42 inputs. The input producer reads no Rust output or expected pixels. Six vertical 4:2:2 requests return clean producer errors before writing a file because the native chroma geometry is invalid; these are neither public parity nor target fault-contract cases.

The original decoder matches 18 of the 42 valid inputs. Extending the existing inherited-transform mapping to deep and mixed thin-64 chroma paths brings that to 35. Mixed 4:4:4 rectangular plans also omitted the complete above/left context grid. At the first divergent terminal, native and Rust arithmetic ranges agree, but the missing neighbor context selects skip context 11 instead of 12 and changes a nonzero transform into a skipped one. Loading the complete grid for those existing plans fixes the remaining seven cases. Both complete frames, exact RGB pixels and sequence metadata now match live pinned Pillow for all 42 cases. Initial failures, bounded first-divergence traces and both intermediate/final executable identities remain retained. Temporary Rust diagnostics have been removed.

All 125 maintained narrow inputs reproduce twice byte-for-byte, preserving the previous 83 inputs. All 3,497 previous matrix rows and 6,940 canonical cases retain their public outcomes; 361 native-loop index receipts update. There are now 3,512 active public parity rows, 27 planned encode rows, 7,024 canonical cases and 428 independent native loop observations. The existing 167 target-only fault contracts remain separately reported.

A fresh all-feature native coverage run passes all 139 integration checks in six executables. Every active parity row and fault-contract row is reconciled exactly once; planned rows remain unexecuted. A test-runner completion message split one TIFF execution marker. Its exact raw span, the initial failed reconciliation and the bounded rejoining rule are retained; the raw log is unchanged. All 150 source/setup identities and 9,763 fixture-file identities remain unchanged during measurement. No private unit-test executable runs.

Metric Covered / total Coverage
Lines 101,905 / 141,991 71.768633%
Branch outcomes 20,639 / 31,942 64.613988%
Functions 5,647 / 9,123 61.898498%
Regions 155,219 / 220,122 70.514987%

The alpha floors pass. make coverage-complete returns 2 solely because its unchanged strict 100% gate fails. Both outcomes of the previously missing 16x64 and 64x16 all-children-split decisions are now observed: counts 37/80 and 93/63 respectively. Coverage MCP reports no remaining gap at either decision. Its LLVM import remains source-unverified with unknown test attribution; separate local identities bind the source. Full report, raw profiles, instrumented binaries and reconciliation receipts remain in .coverage-mcp/local-evidence/full/20261102-wide16-inter/.

A fresh paired ARM64 check compares the frozen accepted and corrected release binaries on the same eight unchanged public decode workloads. Both binaries match live pinned Pillow before timing. Three A–B–B–A cycles retain all 96 raw samples; median latency changes range from -0.65% to +0.75%, with no repeated regression above 3%. These shared-host Apple M3 Pro measurements support a bounded regression check, without a new speedup or world-ranking claim.

Strict stable/coverage Clippy, SSE2/AVX2 compile checks and the native/WASM/WASI feature matrix pass. Only two runtime files change; the fixes add no allocation, private unit tests, unsafe Rust, dependencies, runtime fault hooks, new optional state categories or coverage exclusions. Work remains uncommitted on the existing develop branch in /Users/lazytrot/work/image-slash-star, with one checkout. Investigation and reproduction evidence is retained in .coverage-mcp/local-evidence/parity/avif-wide16-inter-20261102/. Full 100% coverage, further performance improvements and native x86 runtime evidence remain unfinished.

AVIF 8x32 and 32x8 inter transform parity — 2026-11-02

Forty-two complete-file public parity rows cover fine-detail 64x32 and 32x64 sequences at 8, 10 and 12 bits. Monochrome, 4:2:0, horizontal 4:2:2 and 4:4:4 inputs use qualities 70/99. Independent scalar dav1d traces witness narrow inter leaves with shallow, mixed and fully split transform trees; observed and unmodified native decoders produce identical YUV for every valid probe. Exact live pinned Pillow RGB frames and sequence metadata match the unchanged Rust runtime. All 83 maintained narrow inputs reproduce twice byte-for-byte, including the unchanged 41 earlier inputs.

The six forced vertical 4:2:2 native producers fail before writing a public input. A compiled lookup against the pinned native source confirms that its chroma-size table maps an 8x32 4:2:2 leaf to BLOCK_INVALID. The maintained producer now rejects that geometry before allocation; its partition-forcing patch also preserves the native validity test. All six requests then return a clean error with no output file. These are producer diagnostics, not Pillow parity failures or target fault-contract results. The initial native failure, its attempted commands and the build preflight failure remain retained.

All 42 new selected matrix rows pass. Identical-source coordinate comparison against the compatible prior 1,007-row and twelve-row reports adds 86 observed branch outcomes: 72 in block reconstruction and 14 in entropy decoding. Both outcomes of the previously unobserved 8x32 child-offset decision are reached; Coverage MCP reports no remaining gap at that decision. Generic instances are OR-merged by source coordinate. Unselected prior hits absent from this subset are not measured losses. MCP imports remain source-unverified with unknown test attribution; separate identities bind local source. Reports and receipts remain outside target/ in .coverage-mcp/local-evidence/selected/20261102-avif-wide8-inter/.

All 3,455 prior matrix rows and 6,856 canonical cases retain their public outcomes. Only 319 canonical native-loop index receipts update. The matrix now has 6,940 canonical cases and 386 independent native loop observations. All 138 Rust/harness/build identities and 129 runtime/build identities match the prior accepted implementation; 2,780 unaffected fixture hashes also match. The prior 1,019 selected-case evidence and strict Rust/native/WASM/WASI/SIMD compile checks are reused under those identities. The eight performance inputs and accepted ARM64 confirmation remain unchanged, with no new speed claim. No Rust edits, private unit tests, unsafe Rust, dependencies, fault hooks, new optional-state categories or coverage exclusions are added. Full aggregate coverage, encoder/decoder optimization and native x86 performance remain open. Evidence is retained in .coverage-mcp/local-evidence/parity/avif-wide8-inter-20261102/.

AVIF frozen and selective entropy CDF parity — 2026-11-02

Twelve complete-file public parity rows cover ordinary encoder CDF controls. Nine inputs freeze probability tables on both key and inter frames across 8, 10 and 12 bits in 4:2:0, horizontal 4:2:2 and 4:4:4. Three inputs retain adaptive key-frame tables and freeze the following inter-frame tables. Exact live pinned Pillow RGB frames, dimensions, mode and sequence metadata match the current source-bound release decoder for every input. Independent native loop observations confirm both frames and repetition behavior. The input producer reads no target output or expected pixels; its optional CDF control uses the pinned libaom API. All 41 maintained narrow inputs reproduce twice byte-for-byte, including the unchanged 29 earlier inputs.

All twelve new selected matrix rows pass. Compared by identical runtime source coordinates with the prior 1,007-row report, they add six observed branch outcomes: two in block reconstruction, three in entropy, and one in frame parsing. The public image subset now observes both outcomes of all five branches in the specialized four-symbol method. Coverage MCP reports no remaining gap there, closing the complete-file follow-up recorded below. Generic instances are OR-merged by source coordinate; unselected prior hits absent from the subset are not measured losses. Imported MCP source remains unverified with unknown test attribution; local identities bind source separately. The selected report and receipt are retained in .coverage-mcp/local-evidence/selected/20261102-avif-frozen-cdf/.

All 3,443 previous matrix rows and 6,832 previous canonical cases retain their public outcomes. Only 307 canonical native-loop index receipts update. There are now 6,856 canonical cases and 344 independent native loop observations. The prior 1,007-case result is reused under identical Rust runtime, harness and build identities, equivalent old public cases and verified unaffected fixture hashes. All 129 runtime/build identity files and performance inputs are unchanged, so the preceding strict Rust, target, SIMD compile and ARM64 performance evidence remains applicable. No private unit tests, runtime hooks, unsafe Rust, dependencies, new optional-state categories or coverage exclusions are added. Full aggregate coverage, further codec optimization and native x86 performance remain open. Investigation, reproduction and registration evidence is retained in .coverage-mcp/local-evidence/parity/avif-frozen-cdf-20261102/.

AVIF fixed four-symbol entropy decoding — 2026-11-02

Fresh untimed profiles of five complete public decode workloads identify adaptive symbol decoding as a material cost. A fixed four-symbol method now uses three explicit probability boundaries and a fixed three-probability CDF update. Eighty-five statically typed four-entry table callers use it, including coefficient low/high tokens and motion tables. Variable-size tables retain the general decoder. The final count slot remains bounded to 32, so its shifted probability is the same implicit zero boundary as pinned dav1d. Normalization, wrapping arithmetic, update rates and trace observations retain their order. The common trace completion helper has no separate release symbol.

Both source-bound release binaries match live pinned Pillow on all eight predeclared timing workloads. A high-token-only trial failed the greater-than-3% profiled-workload gain gate and remains retained. The broader trial narrowly passed provisionally, then received five-times-longer confirmation with the same workload cohort, three cycles and A–B–B–A order. All 96 confirmation samples remain available. Overall median latency changes range from -3.23% to +0.90%; two profiled workloads improve by approximately 3.2%. No control triggers the predeclared repeated greater-than-3% regression rule. These are bounded public-call observations on a shared Apple M3 Pro ARM64 host; native x86 runtime, SIMD execution and world rankings are not established.

All 1,007 active selected AVIF rows pass, including exact pixels and structured failures. The report and unchanged-source/fixture receipt are retained in .coverage-mcp/local-evidence/selected/20261102-avif-symbol4/. A freshly built unmodified pinned scalar dav1d independently reproduces all 103 committed entropy states; the existing Rust integration parity test matches those exact values, CDFs and decoder states, including frozen CDF behavior. That trace run observes both outcomes of all five source branches in the specialized method. The public image subset alone leaves the disabled-CDF-update branch unobserved; a complete-file Pillow parity companion remains useful follow-up work.

Strict make lint, SSE2/AVX2 compile checks and all seven relevant native, WASM and WASI checks pass. No unit tests, coverage exclusions, unsafe Rust, dependencies, fault hooks or new optional-state categories are added. Imported Coverage MCP source status remains unverified with unknown test attribution; separate hashes bind the local source. Full aggregate percentages remain the historical measurement. The current manifest receipt is refreshed after an earlier whitespace cleanup changed its byte hash, preserving historical coverage and measured-input fields. Frozen source, every trial, native oracle, profiles and receipts are retained in .coverage-mcp/local-evidence/parity/avif-symbol4-20261102/.

AVIF fully split vertical narrow transforms — 2026-11-02

Four input-driven public parity rows cover fine-detail 16x64 sequences at 10 and 12 bits in 4:2:0 and 4:4:4. Pinned scalar dav1d observations establish fully split 4x16 inter transform trees. All twelve exploratory inputs, including 8-bit and lower-quality controls, match exact live Pillow RGB frames and metadata. The observed and unmodified native decoders produce identical YUV. The maintained producer's optional fine input pattern changes source pixels; no target output or private target state enters fixture generation. All 29 registered narrow-inter inputs reproduce twice byte-for-byte, including the unchanged 25 earlier inputs.

All four new selected parity rows pass. Their source-bound report in .coverage-mcp/local-evidence/selected/20261102-avif-vertical-deep/ adds twelve observed branch arms to the prior 1,003-row AVIF measurement: eleven in block reconstruction and one in entropy. Coverage MCP reports no missing arm at the previously untested fully split vertical decision. This comparison merges generic instances by identical source coordinates; the four-row subset does not remeasure unselected baseline hits or establish a full regression result. The prior 1,003-row evidence is reused because the runtime is identical, all old public cases are equivalent, and all 2,716 unaffected fixture file hashes still match. MCP imports remain source-unverified with unknown attribution; local hashes bind the reports and runtime separately.

All 3,439 prior matrix rows and 6,824 prior canonical cases retain their public outcomes. Only append-only native loop-index receipts change. The matrix now has 6,832 canonical cases and 332 independent native loop observations. Rust runtime, integration harness, build policy and performance controls are unchanged; the prior strict style, target and public-call performance checks remain applicable. Full aggregate coverage and native x86 runtime measurements remain open. Investigation and registration evidence is retained in .coverage-mcp/local-evidence/parity/avif-vertical-deep-20261102/.

AVIF high-depth narrow transform companions — 2026-11-02

Ten input-driven parity rows extend the narrow 16x4 and 4x16 inter sequences to 10 and 12 bits at quality 99: four 4:2:0, two horizontal 4:2:2 and four 4:4:4 inputs. The maintained input-only producer reproduces every registered input twice byte-for-byte. Live pinned Pillow supplies both exact RGB frames and sequence metadata; independent native observations supply loop evidence. All 6,804 prior canonical cases preserve their public outcomes, with only append-only loop-index receipts updated. The matrix now has 6,824 canonical cases and 328 native loop observations.

All thirty exploratory 10/12-bit probes at qualities 45, 70 and 99 match live Pillow. Six of the ten registered inputs expose pixel mismatches in the source-bound release build preceding the two narrow-inter fixes described below. Current Rust source is unchanged. Additional scalar dav1d transform observations witness deep horizontal and mixed vertical split trees, and observed and unmodified native decoders produce identical YUV on all thirty inputs. Deep vertical trees remain an unmeasured case.

All 1,003 active selected AVIF rows pass: 998 decode and five encode rejection rows. The source-bound report in .coverage-mcp/local-evidence/selected/20261102-avif-narrow-depth/ records 51 newly observed source branch arms, 41 in block reconstruction and ten in entropy, with zero lost arms. The comparison uses identical runtime source and merges repeated generic instances by source coordinate. It reaches the deep horizontal and mixed vertical narrow-transform branches. Coverage MCP imports remain source-unverified with unknown test attribution; separate local hashes bind the source and fixtures. This selected run does not update full aggregate percentages or establish 100% coverage.

The prior strict Rust style, native/WASM/WASI, x86 SSE2/AVX2 compile checks and 120-sample public-call performance regression campaign are reused because all 129 runtime/build source identities and their validation inputs are unchanged. This fixture expansion makes no new SIMD runtime or speed claim. Frozen probe outputs, native observer changes and registration receipts are retained in .coverage-mcp/local-evidence/parity/avif-narrow-depth-20261102/.

AVIF narrow inter chroma and transform contexts — 2026-11-02

Fifteen input-driven parity rows add two-frame 64x16 and 16x64 sequences at qualities 45, 70 and 99: six 4:2:0, three horizontal 4:2:2 and six 4:4:4 inputs. Pinned native leaf traces establish 16x4 or 4x16 inter geometry. The maintained native producer reproduces all fifteen complete inputs twice byte-for-byte. Live Pillow supplies exact frames and independent native observations supply loop evidence. All 6,774 prior canonical cases retain their public outcomes; only 278 receipts change to reference the append-only loop index. There are now 6,804 canonical cases and 318 complete native loop observations.

The probes exposed two decoder defects. Shared sub-eight chroma now assembles its two or four prediction parts using each causal luma owner's reference, motion vector and interpolation filter. An intra or unavailable neighbor uses the complete checked current-block predictor. The private pending predictor is optional complete prepared state, cleared before every inter leaf and taken once; its absence selects that complete fallback. The two-element iterator's optional result is ordinary collection exhaustion. Neither category suppresses malformed-input errors. Existing chroma residual reconstruction is reused.

The narrow transform parser also preserves the zero width context of TX4x8 and the zero height context of TX8x4. A preceding child's split cannot lower that four-pixel axis context. This fixes the quality-99 horizontal 4:4:4 mixed tree as well as the six 4:2:0 pixel mismatches. All 171 oracle-success probes match exact Pillow dimensions, modes and every frame byte in the final release build, with zero regressions. Three vertical 4:2:2 producer probes are rejected by pinned Pillow on frame two and remain separately retained negative evidence.

All 993 active AVIF selected rows pass: 988 decode and five encode rejection rows. The retained report and its receipt are in .coverage-mcp/local-evidence/selected/20261102-avif-narrow-inter/. All 129 runtime/build identities and the selected fixtures remain unchanged through that run. Coverage MCP imports remain source-unverified with unknown test attribution; the local source hashes provide separate binding. This selected report does not refresh full aggregate percentages or establish 100%.

A fresh pre-fix release build differs only in the two edited AVIF modules and uses the same public wrapper and build options. Both binaries match live Pillow on ten declared timing controls before measurement. All 120 ABBA samples across three cycles are retained; median changes range from -2.06% to +2.67% on the shared Apple M3 Pro ARM64 host. No control triggers the repeated greater-than-3% regression rule. These observations establish the bounded regression gate, not a universal speed gain or x86/SIMD speed claim. The original and observed pinned scalar dav1d builds also produce identical YUV for all fifteen accepted new inputs, keeping the geometry witnesses independent of instrumentation effects.

Exact equal-source span mapping finds 90 newly observed branch arms in the block module and thirteen in entropy, with no lost arms. Other unchanged runtime modules have zero additions or losses. New, changed and deleted source branches remain in the selected report; they are outside this coordinate comparison. Coverage MCP still identifies unmeasured inter-transform branches.

Frozen sources, inputs, exact outputs, failed probes, command receipts, native trace observers, raw timings and the verified inventory are retained in .coverage-mcp/local-evidence/parity/avif-narrow-inter-20261102/. The checkpoint contains the new fixture evidence and hashes for the complete selected corpus; full replay also requires the unchanged repository fixture corpus. Everything remains local and uncommitted in the requested checkout on develop.

Strict default/all-feature/release/nightly-coverage Clippy, native AVIF and all-feature contracts, WASM AVIF/all-feature Clippy and rustdoc, WASI Clippy, and SSE2/AVX2 compile checks pass. The host is ARM64; x86 runtime parity and benchmark evidence remain open. No dependency, unsafe code, private unit test, fault hook, coverage exclusion, project branch or worktree is added.

WebP histogram candidates not retained — 2026-11-02

Six histogram candidates were evaluated against the accepted sparse-predictor checkpoint. Seven source-bound builds, including a freshly rebuilt baseline, each match live Pillow in all 168 alpha calls: 1,176 exact public calls total. Seven three-cycle ABBA pilots retain 144 samples each across twelve controls, for 1,008 samples total. Eight ordinary controls include varied-color lossless RGB/RGBA, method-five RGBA, palette chains and the large plane transition; four token-aware controls check caller-budgeted encoding. The zero-block prototype also matches 72 live-Pillow lossless calls through both public APIs.

The table shows median latency changes for five ordinary controls; negative values mean lower latency. Every control, cycle, byte gate and sample is retained in the pilot JSONs, including token-aware misses. The initialization pilot uses the freshly rebuilt baseline; the earlier pilots use the accepted binary.

Candidate Raw alpha Combined alpha Method-four RGBA Method-five RGBA Large transition
Occupied bounds +3.79% +2.12% +4.22% +1.19% +1.89%
Eight-bin zero probe +4.81% -1.08% +4.51% -3.67% -1.06%
Eight-zero admission +2.85% +0.06% +1.68% -1.13% -1.56%
One histogram group -0.58% +0.25% +0.85% +1.67% +2.62%
Contiguous populations +2.87% +6.71% -1.09% +0.44% -5.39%
Single initialization -0.22% -1.47% -0.10% +0.30% +1.23%

No candidate is retained. Occupied bounds add bookkeeping without a repeatable full-call gain. Unconditional zero-block probing helps palette inputs but repeatedly regresses raw alpha and method-four RGBA. Admitting probes only after eight observed zeros reduces those regressions but retains mixed results. A single-group shortcut and avoiding duplicate initialization give only marginal gains. Contiguous population storage improves the large transition but regresses combined alpha. The independent same-source baseline control spans -1.01% to +1.69%, insufficient to explain the repeated 4–7% misses. The rejected block probe compiles to ARM64 vector loads and OR reductions; that static evidence does not establish a SIMD speed improvement.

Both touched runtime modules were restored byte-for-byte. All 129 runtime/build identities and all 9,414 source/setup identities match the accepted checkpoint; its 502-row WebP parity, strict lint, target and fixture results remain reusable. No fixture, canonical expectation, manifest case, dependency, unsafe code, private unit test, fault hook, coverage exclusion or new branch was introduced. Documentation checks are rerun for this record. The original performance gap, full coverage and x86 runtime validation remain unfinished.

Coverage MCP navigation confirms one remaining histogram gap group at the defensive pair-queue capacity guard; the guard is retained. All four PNG source files match the complete retained baseline, whose PNG query returns no missing branch groups. The unchanged AV1 block module has 723 gap groups, many involving generic inter-decoder instances, and remains a higher-return coverage target. The entropy module differs from that full baseline, so its old query is only navigation evidence and cannot prove current coordinates or a denominator. No full coverage percentage is refreshed by this investigation.

All frozen candidates, binaries, live-oracle outputs, producers, decisions, paired samples, build-environment receipts and source-bound navigation records are retained with a verified inventory in .coverage-mcp/local-evidence/parity/webp-histogram-no-go-20261102/. Its accepted source/setup anchor is the independently verified webp-spatial-entropy-20261102 checkpoint, manifest SHA-256 00a138142c113977ffe5d7a5a293551ee5ac77f0d8a560f1f4cb8eaf1f641a56. Everything remains local and uncommitted on develop in /Users/lazytrot/work/image-slash-star.

WebP cached sparse predictor entropy — 2026-11-02

Two new input-driven parity rows encode a 259x259 RGBA PNG at methods four and six. Its blue plane changes after a zero prefix longer than 65,536 pixels, across clipped predictor tiles. The existing input-only generator supplies the source independently of encoded output; pinned Pillow supplies exact encoded bytes, decoded modes and pixels. All 3,412 prior matrix rows and all 6,770 prior canonical JSON cases remain unchanged, including 1,000 WebP canonical cases. The matrix now has 6,774 canonical JSON cases.

The private predictor caches each accumulated bin's fixed-point entropy term and its per-plane sum while the fourteen modes compete. A tile histogram also records its populated symbols once. Cost evaluation starts with the cached previous sum and replaces only populated bins with the same two terms as the original complete scan. Adding the winning histogram refreshes the cache once. Each subtracted term is still present in its plane sum; validated WebP geometry bounds populations and sums. This preserves the exact integer entropy, zero-bin bias, tie order and full transform/reference search. Guards, structured errors, hidden-RGB behavior and cancellation checkpoints remain unchanged. State stays on the stack, using about 10 KiB more than the previous three count arrays; there are no new heap allocations. The module documentation now describes both the method-four grid and the bounded method-five/six sampling search.

All 502 selected WebP parity rows pass: 266 decode and 236 encode rows, with 978 public encode calls and zero panics. Five existing target-only fault contracts pass separately. The cache-only prototype, sparse prototype and final build each preserve all 168 live-Pillow alpha probe bytes and pixels. Another 72 lossless calls and eight baseline/candidate calls for the new cases match bytes, modes and pixels through ordinary and token-aware encoding.

The retained cache-only pilot has 72 ABBA samples across six controls; medians improve by 5.14–21.69%. The sparse pilot has 96 samples across eight controls, including ordinary method-five RGBA and the large transition; medians improve by 4.35–34.17%. Their frozen sources, binaries, byte gates and all samples remain. The final benchmark keeps all seventeen previous controls and adds the large transition. Both builds match fresh Pillow output for all eighteen controls before timing. Across 216 ABBA samples and three cycles on the shared Apple M3 Pro ARM64 host, median changes range from -34.60% to +2.97%. No control exceeds the 3% regression threshold in two cycles. Raw-alpha latency improves by 34.60%, ordinary method-five RGBA by 34.36%, lossless RGB noise by 13.48%, and the large transition by 7.81%. Palette chains with sixteen and seventeen colors improve by 28.58% and 27.90%. These are complete public-call latency measurements; uniform-RGB alpha controls are excluded from codec throughput ranking.

The original performance regression remains open. Twelve separately retained paired samples against the earlier incomplete-search implementation measure 0.288 ms versus 3.032 ms on the raw-alpha control, a 10.53x median latency ratio (cycle ratios 6.77–10.57x). That earlier build fails other ordinary parity inputs and cannot replace full native search. A fresh diagnostic profile has histogram clustering entropy as its leading collapsed codec frame, ahead of the predictor cost calculation. Profiling timings are not benchmark rankings.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261101T193234.821110Z-336cf241bff844dab5dd83376031e711/coverage.json. Coverage MCP reports three remaining predictor branch-gap groups, two encoder groups, eight backward-reference groups and one cross-color group. All forty branch outcomes across the fifteen selected predictor helper instantiations are observed, including the first/repeated-symbol branch. Unchanged WebP source coordinates have zero newly observed and zero lost observations. The changed predictor module is excluded from that coordinate comparison. Importer source identity remains unverified and per-test attribution unknown; independent local hashes bind 129 runtime/build files and the validation inputs. This is selected coverage, not a refreshed complete aggregate or a 100% coverage claim.

Strict default/all-feature/release/coverage lint, SSE2/AVX2 compile checks, native WebP/all-feature contracts, WebP WASM Clippy/rustdoc, all-feature WASI Clippy, fixture integrity and documentation checks pass against unchanged source/setup identities. No unit test, fault hook, unsafe code, dependency, coverage exclusion, extra branch, worktree or remote write was introduced. All work remains local and uncommitted on develop in /Users/lazytrot/work/image-slash-star. Reproducible producers, all variants, paired samples, source snapshots, checks and the selected report are retained in .coverage-mcp/local-evidence/parity/webp-spatial-entropy-20261102/, with an independently verified inventory. Full aggregate coverage, the original latency gap, x86 runtime parity/speed and world ranking remain unfinished.

WebP predictor cost reduction — 2026-11-02

Four new input-driven parity rows cover zero color planes and transitions between zero and nonzero planes across clipped 33x35 predictor tiles, at methods four and six. The existing input-only generator supplies two complete RGBA PNGs; pinned Pillow independently supplies exact bytes, decoded modes and pixels. All 3,408 prior matrix rows and 992 prior WebP canonical JSON rows remain unchanged. The whole matrix now contains 6,770 canonical JSON rows.

The private predictor histogram writer fills a borrowed buffer. Two local arrays retain trial and winning counts; swapping their mutable references avoids repeated 4 KiB copies. Exact tile and accumulated pixel counts also prove when both residual histograms contain only zeros. Their combined entropy is exactly zero under the existing fixed-point tables, and the prediction bias reduces to the same nonnegative rounding expression. The proof uses histograms after residual calculation and hidden-RGB cleanup. Mode order, strict tie order, complete transform/reference search, guards, errors and cancellation checkpoints remain unchanged. Only the predictor runtime module changes in this checkpoint.

All 500 active WebP parity rows pass: 266 decode and 234 encode rows, 968 public encode calls and zero panics. Five existing target-only fault contracts pass separately. Both intermediate variants retain all 168 alpha probe byte hashes and pixel matches. Seventy-two live-Pillow lossless calls match exact bytes, modes and pixels. The four new cases also pass through both public APIs in both the complete-search baseline and the optimized build, for sixteen calls.

The first buffer-only pilot reduces six public-call medians by 4.38–10.99%. The combined pilot reduces them by 4.01–31.55%; both pilots retain every sample. The final benchmark keeps all eleven previous controls and adds six method-six controls, including varied-color palette and zero-plane inputs. Both builds first match live Pillow in all seventeen controls. Across 204 ABBA samples and three cycles on the shared Apple M3 Pro ARM64 host, median changes range from -41.77% to +2.26%. No control exceeds the 3% regression review threshold in two cycles. The raw-alpha control improves by 16.40%, the ordinary lossless RGB-noise control by 10.74%, and the ordinary method-five RGBA control by 30.11%. Palette chains with sixteen and seventeen colors improve by 25.56% and 30.94%.

The original performance regression remains open. A separate twelve-sample paired comparison against the earlier incomplete-search implementation measures 0.292 ms versus 4.678 ms on the raw-alpha control, a 16.00x latency ratio. Both outputs match Pillow for this control; the older build fails other parity inputs. The final diagnostic profile still places predictor entropy and histogram clustering among the largest costs. The measured reduction validates this optimization, without establishing the broader performance objective.

Timing includes public encoding, output materialization and drop, with input reading and image construction outside the timed boundary. Uniform-RGB alpha controls measure alpha/overhead behavior and remain excluded from codec throughput ranking. No world ranking, full-codec speed ratio or x86 runtime speed claim follows from these ARM64 latency measurements.

Coverage MCP leaves three predictor gap groups, two encoder groups and eight backward-reference groups. LLVM observes all eight branch outcomes in spatial cost, including both zero-population conditions, and all twenty in the borrowed histogram writer. All ten selected predictor-helper instantiations have no missing branch outcomes. Unchanged WebP modules show no newly observed or lost outcomes against the prior selected report; the changed predictor is excluded from coordinate comparison. No guard or coverage total is removed. Importer source identity remains unverified and per-test attribution unknown; separate hashes bind 129 runtime/build files and fixture/test setup before and after validation. These selected observations do not establish a new full-suite percentage or 100% coverage. Selected report: .coverage-mcp/local-evidence/selected/20261101T185906.474877Z-4883ca79950248fd88a3458f89c57d95/coverage.json.

Strict default/all-feature/release/coverage Clippy, fixture/documentation guards, native WebP/all-feature contracts, WASM WebP Clippy/rustdoc, WASI all-feature Clippy and SSE2/AVX2 compile checks pass. No unit tests, unsafe code, dependencies, fault hooks, safety-check removals or coverage exclusions are added. Optional cancellation and neighboring predictor modes retain genuine absence meanings; the histogram helper continues to return Result.

Checkpoint: .coverage-mcp/local-evidence/parity/webp-crunch-cost-20261102/. It retains baseline and candidate identities, both pilots, canonical parity references, selected coverage, every final and legacy-control timing sample, profiles and validation receipts. The original slowdown, remaining parity and coverage gaps, and x86 runtime measurements remain unfinished. All changes remain local and uncommitted on develop in /Users/lazytrot/work/image-slash-star; no additional branch or worktree is used.

WebP method-six search and opaque alpha flag — 2026-11-02

Fourteen new input-driven parity rows cover method-six alpha ramps, palette boundaries, single-row and single-column inputs, modified-Zeng palette ordering, and opaque RGBA lossless headers. Five complete PNG sources come from the new input-only generator; pinned Pillow supplies all canonical expectations. Both ordinary and fresh-token public encoding must match exact bytes, decoded modes and pixels. All 3,394 prior matrix rows and 964 prior WebP canonical JSON rows remain unchanged. The whole matrix now contains 6,762 canonical JSON rows.

Method six at internal quality 100 now evaluates the native transform order, including palette-plus-spatial prediction and both palette orderings. Strict size comparisons retain the first winner on ties. Cached and uncached backward references compete independently, and the original palette cardinality selects the native box-chain configuration. Trial pixels, palette adjacency and token buffers reuse bounded scratch allocations. An existing RGBA scan also records actual transparency for the VP8L header; opaque storage no longer sets an alpha hint that changes Pillow's decoded mode. Lower-method alpha palette settings and the method-five palette-plus-spatial search remain separate unfinished work.

All 496 active WebP parity rows pass: 266 decode and 230 encode rows, 948 public encode calls and zero panics. Five existing target-only fault contracts pass separately. The 168-call alpha probe improves from 152 to 168 exact byte matches, with all pixel comparisons passing. A 36-input lossless probe matches bytes, modes and pixels through both public APIs, for 72 calls. Before the header fix, all 72 differed only in the opaque-alpha hint; that diagnostic observation did not alter canonical expectations. The independently built pinned native reference matches Pillow in twelve alpha and thirty-six lossless calls. Native traces identify eight inputs whose winning palette order is modified Zeng.

Coverage MCP reports two encoder gap groups, both at the bounded-palette cardinality check in the method-six wrapper. The selected run observes all 32 branch outcomes in modified-Zeng ordering and all 28 in each public writer instantiation. No guard or coverage total is removed. The predictor retains three gap groups and backward-reference selection retains eight. Unchanged WebP modules show no newly observed or lost outcomes against the prior selected report; the two changed modules are excluded from coordinate comparison. The importer still labels source identity unverified and per-test attribution unknown; separate hashes bind 129 runtime/build files and validation inputs. These selected observations do not establish a new full-suite percentage. Selected report: .coverage-mcp/local-evidence/selected/20261101T183246.230908Z-ebd4865f55d249d7b68fddc2e7a83961/coverage.json.

Performance remains unfinished. The unchanged eleven-control benchmark retains 132 ABBA samples across three cycles on the shared Apple M3 Pro ARM64 host. Both builds first match live Pillow in all controls. The method-six raw-alpha control regresses from 0.285 ms to 5.490 ms, a 19.25x latency ratio; all three cycles confirm the regression. The other ten median changes range from -1.39% to +1.22%, with none exceeding the 3% review threshold in two cycles. Sampling the complete public call places the largest costs in predictor entropy and histogram clustering during the expanded search. The profile is diagnostic, not a timing rank. Faithful search pruning and entropy/scratch optimization still need measurement; this checkpoint has not passed performance acceptance.

The timing boundary includes public encoding, output materialization and drop; input reading and image construction are outside it. Cases that fail the old build remain correctness evidence, outside paired performance comparisons. Uniform-RGB alpha controls measure alpha/overhead behavior and are excluded from codec throughput ranking. No world ranking or x86 runtime speed claim follows.

Strict default/all-feature/release/coverage Clippy, fixture/documentation guards, native WebP/all-feature contracts, WASM WebP Clippy/rustdoc, WASI all-feature Clippy and SSE2/AVX2 compile checks pass. No unit tests, unsafe code, dependencies, fault hooks, safety-check removals or coverage exclusions are added. Optional tokens, filters, metadata and unused search alternatives retain absence meanings; the optional earlier-method alpha path retains its complete checked fallback.

Work-in-progress checkpoint: .coverage-mcp/local-evidence/parity/webp-alpha-crunch-20261101/. It retains source and artifact identities, intermediate negative results, native traces, parity references, coverage reports, validation receipts and every timing sample. The broader coverage and performance goal remains active. All changes remain local and uncommitted on develop in /Users/lazytrot/work/image-slash-star; no additional branch or worktree is used.

WebP alpha entropy and exact prediction — 2026-11-01

Seventeen new input-driven parity rows cover method-dependent alpha entropy selection, a vertical ramp, discontinuous palettes with and without zero, transparent predictor row edges, and a single-row nonzero palette. Five new complete RGBA PNG sources extend the existing input-only generator. Pinned Pillow independently supplies encoded-byte and decoded-pixel references; ordinary and fresh-token public encoding must both match. All 3,377 prior matrix rows and 930 prior WebP canonical JSON rows remain unchanged. The whole matrix now contains 6,734 canonical JSON rows.

Internal ALPH images store the alpha plane in green with A/R/B zero. Their predictor must preserve that green data even though the internal alpha channel is zero. A private predictor configuration now carries this exactness choice; ordinary lossless encoding retains its existing transparent-RGB cleanup. Non-palette ALPH candidates share the complete VP8L writer while omitting the standalone frame header. A three-histogram alpha entropy analysis preserves native cost, hash, predictor bias and tie order without building four-channel histograms. Method-zero palettes also retain the native implicit final zero entry when there are more than seventeen colors. This fixes the corresponding ordinary lossless palette case as well. The pinned libwebp 1.6.0 sources are the alpha encoder, lossless encoder, alpha dispatch, predictor and palette ordering.

All 482 active WebP parity rows pass: 266 decode and 216 encode rows, 878 public encode calls and zero panics. Five existing target-only fault contracts pass separately. The source-bound 168-call alpha probe improves from 96 to 152 exact byte matches, with no previously exact result lost; all 168 pixel comparisons pass. Two further ordinary lossless method-zero calls become byte-exact. Sixteen ordinary-input method-six calls still differ in ALPH bytes and remain open parity failures. Complete native method-six transform/palette-order crunching and cache selection remain pending.

Coverage MCP leaves two gap groups in the native encoder, both in the existing Huffman writer. LLVM observes both arms of every branch in all sixteen selected alpha-helper function instantiations. The predictor retains three gap groups, including constant-generic alternatives; no guard or coverage total is removed. A same-source comparison before entropy-cost optimization shows ten newly observed outcomes and none lost after adding the four palette/predictor edge rows. Relative to the preceding accepted WebP selection, unchanged modules show one newly observed outcome and none lost. The three changed modules are excluded from that coordinate comparison. These are selected-lane observations, without per-test attribution or a new full-suite percentage or 100% claim. The importer still marks source identity unverified; separate local hashes bind 129 runtime/build files and the fixture/test setup before and after validation. Selected report: .coverage-mcp/local-evidence/selected/20261101T175729.088752Z-d79ca607efdd4f35b6791ea79d45dc69/coverage.json.

The first complete candidate caused a repeated 14.80% slowdown on the small method-six raw-alpha control. Profiling identified entropy cost evaluation in backward-reference selection. Bounded lookup tables replace repeated logarithms with the same rounded fixed-point values; the existing population streak walk now accumulates totals and evaluates repeated counts once. All 168 probe output hashes remain identical across these optimizations. The initial and intermediate measurements, including the regression, remain retained.

On the shared Apple M3 Pro ARM64 host, the final 132 ABBA samples across three cycles and eleven live-Pillow-gated, unchanged-output controls show median changes from -23.09% to +1.04%. No control exceeds the 3% regression review threshold in two cycles. The ordinary lossless RGB-noise, RGBA-predictor and method-five RGBA controls measure -7.51%, -23.09% and -18.03% respectively. Input reading and image construction remain outside timing; public encode, output materialization and drop are timed. Uniform-RGB alpha controls measure alpha/overhead behavior and are excluded from codec throughput ranking. Fixed cases that fail the baseline are excluded from timing comparisons. No world ranking or x86 runtime speed claim follows.

Strict default/all-feature/release/coverage Clippy, fixture/documentation guards, native WebP/all-feature contracts, WASM WebP Clippy/rustdoc, WASI all-feature Clippy and SSE2/AVX2 compile checks pass. x86 runtime execution remains unavailable on this host. No unit tests, unsafe code, dependencies, fault hooks, safety-check removals or coverage exclusions are added. The private optional non-palette result selects the complete checked palette fallback; optional filters, tokens and preceding rows retain documented absence meanings.

Checkpoint: .coverage-mcp/local-evidence/parity/webp-alpha-entropy-20261101/. The verified inventory retains the final source, earlier variants, live probes, canonical references, selected-report identities, validation receipts and all benchmark samples. Changes remain local on develop in /Users/lazytrot/work/image-slash-star.

WebP low-effort alpha parity — 2026-11-01

Eight new ordinary-input encode rows cover alpha palettes at the 16/17-color filter boundary, horizontal and combined ramps, and a deterministic noisy alpha plane at clipped 17x19 geometry. Their generator constructs five complete RGBA PNG inputs without consulting an encoder. Pinned Pillow independently generates exact encoded-byte and decoded-pixel references. The shared public runner checks ordinary and fresh-token encoding. All 3,369 prior matrix rows and 914 prior WebP canonical JSON rows remain unchanged; the current whole matrix has 6,700 canonical JSON rows.

The lossy caller previously discarded its selected method before encoding alpha. The correction carries the method through private helpers and applies libwebp's method-zero palette order and low-effort reference/hash-chain policy, method-dependent quality for methods zero through three, and the FAST filter candidate policy. Methods zero through three skip the unfiltered trial when the estimated filter is non-NONE and there are at most 192 alpha values. NONE-first ties remain stable whenever both candidates are tried. The pinned primary sources are libwebp 1.6.0's alpha encoder and lossless encoder. Only two runtime modules change relative to the preceding method-two checkpoint. The existing default/high-effort single-configuration alpha settings remain pending complete entropy/transform and cruncher parity.

All 465 active WebP parity rows pass: 266 decode and 199 encode rows, 793 public encode calls and zero panics. Five existing target-only fault contracts pass separately. A source-bound live probe across six alpha distributions, all seven methods, qualities zero/eighty and both public encode entry points improves from 80/168 to 96/168 exact byte matches, with no previously exact call lost. All 168 decoded pixel comparisons pass. The 16 newly exact calls use method zero. The remaining 72 ordinary-input failures differ only in ALPH; they remain open parity failures and are never counted as fault-contract successes.

Coverage MCP reports two remaining branch-gap groups in the native encoder, both in the existing Huffman writer. LLVM observations cover both arms of every branch in all nine alpha-helper function instantiations. Unchanged WebP modules show 0 newly observed and 0 previously observed outcomes absent relative to the preceding complete WebP selection. Changed modules are excluded from coordinate comparisons. This is selected-lane evidence; no new full-suite percentage, managed aggregate gain or 100% claim follows. The importer labels source identity unverified and test attribution unknown; separate local hashes bind 129 runtime/build files and the fixtures/test setup before and after. Selected report: .coverage-mcp/local-evidence/selected/20261101T170626.125051Z-447babf52aab4da69eef68e94c940192/coverage.json.

On the shared Apple M3 Pro ARM64 host, 96 ABBA samples across three cycles and eight unchanged-output, live-Pillow-gated controls show median changes from -41.91% to +1.33%. No control exceeds the 3% regression review threshold in two cycles. Input reading and image construction remain outside timing; public encode, output materialization and drop are timed. Uniform-RGB alpha controls measure bounded alpha/overhead behavior and are excluded from codec throughput ranking. Fixed method-zero cases fail the baseline and are excluded from timing comparisons. A candidate that expanded histogram work and raised high-effort quality was rejected after repeated default/high-effort regressions; an independently rejected cache-cap change lost twenty previously exact calls. Both experiments and their failures remain retained. No world-ranking or x86 runtime speed claim is made.

Strict default/all-feature/release/coverage Clippy, fixture/documentation guards, native WebP/all-feature contracts, WASM WebP Clippy/rustdoc, WASI all-feature Clippy and SSE2/AVX2 compile checks pass. x86 runtime execution remains unavailable on this host. No unit tests, unsafe code, dependencies, new fault hooks, safety-check removals or coverage exclusions are added. The new private Option categories mean an absent filter or a deliberately omitted filter candidate; fallible work continues to return Result with its existing failure cause.

Retained checkpoint: .coverage-mcp/local-evidence/parity/webp-low-effort-alpha-20261101/. It binds sources, inputs, references, binaries, commands, coverage observations, rejected experiments and timing receipts. All changes remain local on develop in /Users/lazytrot/work/image-slash-star. The complete alpha parity, 100% coverage and fastest encoder/decoder goals remain unfinished.

WebP method-two encoder parity — 2026-11-01

Six new ordinary-input encode rows cover neutral 16x16, clipped neutral 17x19 and sparse 64x64 RGB sources at qualities zero and eighty. Their PNG generator constructs only input samples and complete stored-DEFLATE files; pinned Pillow independently generates exact encoded-byte and decoded-pixel references. Both ordinary and fresh-token public encode paths match. All 6,672 prior canonical JSON rows and 3,363 prior matrix rows remain unchanged.

The inputs exposed two implementation errors: method two incorrectly used rate-distortion mode selection, and its single-segment statistics path finalized skip probabilities when libwebp retains defaults. The correction uses prediction distortion, fixed I4/I16/chroma mode penalties, the flat-border I16 rule and the macroblock header limit. Existing methods keep their original scoring work. The version-matched sources are libwebp 1.6.0's mode refinement and statistics pass. Only four WebP runtime modules change relative to the preceding accepted monochrome-canvas checkpoint. No unit tests, unsafe code, dependencies, fault hooks, safety-check removals or coverage exclusions are added.

All 457 active WebP parity rows pass: 266 decode and 191 encode rows, 753 public encode calls and zero panics. Five existing target-only fault contracts pass separately. Thirty-two additional live comparisons on thin horizontal/vertical, textured and interior-flat RGB inputs also match pinned Pillow at qualities zero, forty, eighty and one hundred. Measured sources, fixtures and test setup remain unchanged during the final complete WebP selection.

Coverage MCP confirms that both token-aware skip-signaling true arms now execute. The ordinary path already observed these source branches in the prior full report: unchanged-source globally merged outcomes show zero new outcomes and 24 full-suite observations absent from this narrower WebP selection. This is path-specific evidence, not a managed aggregate gain or a new full-suite percentage. The shared I4 selection has zero missing branch groups in this selection; rejected specialization variants and their constant-branch gaps are retained separately. Current selected report: .coverage-mcp/local-evidence/selected/20261101T163848.787996Z-5f51d9245caf4bf4a83fda6abf3a1035/coverage.json.

On a shared Apple M3 Pro ARM64 host, 144 ABBA samples across three cycles and twelve byte-parity-backed controls give median latency changes from -4.05% to +0.85%. No control exceeds the 3% regression review threshold in two cycles. Inputs and construction stay outside timing; each public encode call, output materialization and drop are timed. Uniform controls are correctness/overhead checks and are not throughput-ranking evidence. The baseline fails the new method-two cases, so those cases are excluded from performance comparisons. Earlier candidates with small consistent legacy-method slowdowns or a repeated method-six regression were rejected and retained. No world-ranking or x86 speed claim follows from these ARM64 measurements.

Strict default/all-feature/release/coverage Clippy, fixture/documentation guards, native WebP/all-feature contracts, WASM WebP Clippy/rustdoc, WASI all-feature Clippy and SSE2/AVX2 compile checks pass. x86 runtime execution remains unavailable on this host. Ordinary RGBA method-two probes still differ in their ALPH chunks at qualities zero/eighty, while their VP8/VP8X chunks and decoded pixels match; these are retained open parity failures, never fault-contract passes.

Retained checkpoint: .coverage-mcp/local-evidence/parity/webp-method-two-parity-20261101/. Its manifest binds sources, inputs, references, binaries, failures, commands, coverage observations and timing receipts. The full 100% coverage and fastest encoder/decoder goals remain open.

AVIF monochrome canvas allocation — 2026-11-01

The shared block walker now leaves normatively absent monochrome chroma planes and their coverage masks unallocated. It retains the coded/visible geometry, fallible luma allocation, overlap checks, completeness validation and all existing profile/tool limits. Color canvas callers explicitly retain all three planes. Only entropy.rs, frame.rs and raster.rs change among 129 runtime/build files; no unit tests, fault hooks, dependencies, unsafe Rust, safety-check removals or coverage exclusions are introduced.

An independent external malloc/calloc/realloc observer measures 4–24 fewer allocation events and 4,352–417,792 fewer requested bytes per complete public decode call across seven monochrome workloads. Three color controls have identical allocation traffic. A padded 256x256 monochrome tile omits 69,632 requested bytes and four allocation events. Slopes across 100/200 iterations cancel fixed setup and warmups. These are requested allocation traffic counts, not peak/live/RSS memory; instrumented timings are excluded from latency results.

Both source-bound release binaries match every live pinned Pillow frame on ten declared timing inputs. Across 120 ABBA samples in three cycles on a shared Apple M3 Pro ARM64 host, median changes range from -1.88% to +0.81%; none triggers the repeated 3% regression review threshold. The 12-bit 256x256 mixed sequence improves in all three cycles, with a 1.88% lower overall median. The partial-edge counterpart improves 1.04% overall with mixed cycle results. Other modes, native x86/SIMD speed and world ranking are not inferred.

All 978 active AVIF parity rows pass: 973 decode and five encode rejection rows, six public encode calls and zero panics. Measured sources, fixtures and setup remain unchanged during execution. The new constructor branch is observed both ways. Unique branch outcomes in unchanged AVIF modules have no additions or losses; changed entropy/frame/raster coordinates are excluded from that comparison. Coverage MCP CLI queries retain the remaining gaps. Four existing malformed track-container cases fail in the earlier sample parser, before the inspector's repeated guards; those guards remain counted. Imports remain source-unverified with unknown test attribution, with separate local hashes binding measured files. This is selected evidence, not a full aggregate, managed numeric coverage gain or 100% claim.

Strict stable/default/all-feature/release/nightly-coverage Clippy, native AVIF/all-feature contracts, WASM Clippy/rustdoc, WASI Clippy and SSE2/AVX2 compile checks pass. Fixture/docs/whitespace checks and the source-unit-test guard pass. Sources, before/after release binaries, active AVIF inputs and references, raw resource/timing observations, selected reports and validation receipts are retained locally under .coverage-mcp/local-evidence/parity/avif-monochrome-canvas-20261101/.

AVIF monochrome multi-superblock parity — 2026-11-01

Twenty-one complete monochrome sequences add 8/10/12-bit parity across 256x256 frames and 132x128, 128x132, 252x256 and 256x252 partial-edge frames. The six previously unsupported high-depth inputs are reused byte for byte. Every new complete input returns Unsupported before this change and matches all live pinned Pillow frames afterward. Repeated native encodes reproduce both planar source and complete-input pins; construction reads no expected pixels and executes no Rust.

The neutral single-tile lossy profile now admits frame axes through 256 pixels. It uses the existing checked multi-superblock walker, dynamic tile state and frame canvas; block/transform extents remain independently bounded. Grain, active post-filter and multi-tile admission retain their 128-pixel limits. The shared base helper takes the explicit dimension limit, preserving its other geometry, quantization, filter and tool checks. Existing block and safety checks remain; no unit tests, fault hooks or coverage exclusions are introduced. Only entropy.rs changes among 129 runtime/build files.

All 978 active AVIF parity rows pass: 973 decode rows and five encode rejection rows, with six public encode calls and zero panics. All 6,630 preceding canonical reference rows preserve their public outcomes; only 257 loop-index receipt digests change when appending the new observations. There are now 6,672 canonical input/output rows, 303 native loop cases and 278 validated sequence references.

The selected native LLVM comparison observes no additional or missing unique branch outcomes in unchanged AVIF modules. Changed entropy.rs is excluded from that coordinate comparison; duplicate generic observations are merged by OR. These cases expand the supported public input space; they are not claimed as an unchanged-source numeric coverage gain. Coverage MCP CLI queries retain the remaining entropy, reconstruction, raster and frame gaps. Imports remain source-unverified with unknown test attribution, and separate local hashes bind the measured sources, fixtures and setup. This is selected evidence, not a full aggregate, managed incremental gain or 100% claim.

Ten previously supported workloads match live Pillow before timing. Across 120 ABBA measurements in three cycles, median latency changes range from -0.85% to +1.27%; none triggers the repeated 3% regression review threshold. The newly supported inputs are excluded from equivalent-work timing because the baseline rejects them. These shared Apple M3 Pro ARM64 measurements are a latency guard, not evidence of a speedup or a world ranking.

Strict stable/default/all-feature/release/nightly-coverage Clippy, native AVIF-only and all-feature contract tests, strict WASM Clippy/rustdoc, WASI Clippy and SSE2/AVX2 compile checks pass. Native x86 execution and speed are not inferred from cross-compilation. Complete sources, before/after public outcomes, selected reports and validation receipts are retained locally under .coverage-mcp/local-evidence/parity/avif-monochrome-wide-20261101/.

AVIF wide color OBMC parity — 2026-11-01

Thirty complete 256x256 sequences add gray and colored 8-bit I420/I422 controls and fractional-sample 10/12-bit I420/I422/I444 controls. The sinusoid, checker and localized-change recipes vary transform selection and retained frames. Repeated pinned Pillow/native encodes reproduce every complete input. The input-only generator reads no expected pixels and executes no Rust.

Three 12-bit checker sequences exposed incorrect pixels in presented frame 3. The mismatch was already present in reconstructed YUV. Native scalar/NEON outputs agreed, and parsed motion vectors and references matched. The wide color path parsed OBMC but replaced its context with None. Passing the parsed context to the existing subsampling-aware predictor fixes all three complete-file regressions. Every frame now matches live pinned Pillow exactly. The other 128 runtime/build source files are unchanged; diagnostic edits are restored. No guards, unit tests, fault hooks or coverage exclusions are added.

All 957 active AVIF parity rows pass: 952 decode rows and five encode rejection rows, with six public encode calls and zero panics. All 6,570 preceding canonical reference rows preserve their public outcomes; only 227 loop-index receipt digests change when appending the independent native observations. There are now 6,630 canonical input/output rows and 282 native loop cases. At this checkpoint, six exploratory 256x256 high-depth monochrome inputs returned Unsupported despite successful Pillow decoding. The later monochrome multi-superblock checkpoint above resolves these exact inputs.

The selected native LLVM report observes eight additional unique branch outcomes in unchanged block.rs, with no prior outcome missing in unchanged AVIF modules. The coordinate comparison excludes changed entropy.rs and merges duplicate generic observations by OR. Coverage MCP CLI gap queries are retained for entropy, reconstruction and motion compensation. Imports remain source-unverified with unknown test attribution; separate local source hashes bind the executed campaign. This is selected evidence, not a refreshed full aggregate, managed incremental gain or 100% claim.

Strict stable/default/all-feature/release/nightly-coverage Clippy and SSE2/AVX2 compile checks pass. AVIF-only and all-feature native contract tests, strict AVIF/all-feature WASM Clippy and rustdoc, and all-target/all-feature WASI Clippy pass. Compile checks establish no native x86 runtime or speed result. A latency guard runs nine previously correct public workloads with 108 ABBA samples over three cycles on Apple M3 Pro ARM64. Both binaries match live Pillow for each timed workload. Median changes range from -0.06% to +2.24%; none triggers the predeclared repeated 3% regression rule. Incorrect pre-fix inputs are excluded from equivalent-work timings. These shared-host controls do not establish a universal performance bound or an optimization gain. The source-bound probes, failed diagnostic attempts, complete inputs, exact frames, source snapshots, selected reports and validation receipts are retained locally under .coverage-mcp/local-evidence/parity/avif-wide-obmc-20261101/.

AVIF short reference signaling — 2026-11-01

Twenty-four complete 64x64 I444 sequences add public lossless/lossy parity for short reference signaling. Two-frame cases cover aliased and distinct slots, tied order hints, the seven-bit half-range boundary and wraparound. Three-frame cases retain different key/inter images and reorder their hints. The input generator preserves every tile byte, sample extent and file length; it never consults expected pixels. Each pinned source encode is repeated.

All 927 active AVIF parity rows pass: 922 decode rows and five encode rejection rows, with six public encode calls and zero panics. Live pinned Pillow supplies all new frame pixels; repeated native libavif observations supply loop counts. All 6,522 preceding canonical reference rows preserve their public outcomes. Only 203 existing loop-index receipts change when the 24 native observations are appended. There are now 6,570 canonical input/output rows.

The selected native LLVM report observes 39 additional unique AVIF branch outcomes against the preceding 903-row selection: 24 in frame.rs, 13 in entropy.rs and two in block.rs. Runtime/build source hashes match across all 129 files, LLVM schemas and static outcome keys match, and duplicate generic observations are merged with OR. No previously observed AVIF outcome is absent. Coverage MCP identified the short-reference gap and retains the follow-up queries; imports remain source-unverified with unknown test attribution. This is selected evidence, not a refreshed full aggregate or 100%.

Strict stable/default/all-feature/release/nightly-coverage Clippy, fixture and documentation checks, and the source-unit-test guard pass. All 8,853 measured source, fixture and setup hashes remain stable during coverage. Subsequent cleanup removes trailing spaces on 25 already-dirty manifest description lines; the measured manifest is retained and parsed YAML equality is verified. Current receipt/count updates retain historical coverage evidence. Matching runtime hashes reuse the preceding SSE2/AVX2 compile, AVIF feature and WASM checks; this fixture addition makes no new performance or native x86 claim. There are no new unit tests, Rust source changes, fault hooks or exclusions.

Evidence is retained in .coverage-mcp/local-evidence/parity/avif-short-reference-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T142647.085234Z-fb13a823232b4cfabd8871fe97a93215/coverage.json.

AVIF equiprobable entropy refill — 2026-11-01

The private range decoder now keeps window refill out of the equiprobable-bit reader's hot path. General symbol readers retain their original refill policy. A const parameter selects the policy at compilation; range arithmetic, CDF updates, overread checks, cancellation, error behavior and coverage observers are preserved. The native release equiprobable reader shrinks from 63 to 29 instructions. General symbol code has identical relocation-normalized instructions; its placement and latency are still checked independently. Untimed native sampling observes the changed reader and outlined refill.

Both source-bound release binaries match live pinned Pillow pixels, dimensions, modes and frame counts on nine declared public still/sequence workloads. Three ABBA cycles pass the initial and five-times-longer confirmation cohorts, with 108 process samples each. In the longer cohort, three grain workloads show 3.05%–3.25% lower latency and lossless monochrome shows 4.41% lower latency than the preceding Rust decoder. The other controls span 2.89% lower to 0.60% higher latency. No control exceeds the declared 3% overall plus two-of-three- cycle regression rule. These are shared-host Apple M3 Pro observations, not native x86 performance, a SIMD acceleration ratio or a world ranking.

Four earlier candidates are rejected and retained with their exact source, binaries, plans, live parity gates and 432 timing samples. The broad refill outline regressed wide lossy animation by 5.43%; restricting the policy to equiprobable bits passes that control. No rejected CDF arithmetic remains.

All 903 active AVIF parity rows pass: 898 decode rows and five encode rejection rows, with six public encode calls and zero panics. Strict stable/default/ all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile checks, 68 AVIF feature contracts, AVIF-only WASM Clippy/rustdoc and fixture/documentation checks pass. All 8,293 measured source, fixture and setup hashes stay unchanged during the coverage run. Only src/codecs/avif/av1/entropy.rs differs among the 129 runtime/build files from the preceding grain checkpoint. There are no new parity rows, codec unit tests, fault hooks, dependencies, unsafe code, coverage exclusions or Option categories.

Retained evidence is in .coverage-mcp/local-evidence/parity/avif-range-refill-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T135603.559569Z-b04775a09fe441d799923389e4ed451d/coverage.json. Coverage MCP CLI queries retain the remaining entropy gaps. Imports remain source-unverified with unknown test attribution; local hashes provide separate provenance. This selected run does not refresh the full aggregate or establish 100% coverage. Work remains uncommitted on develop in the single checkout at /Users/lazytrot/work/image-slash-star; the broader goal remains open.

AVIF film-grain depth and inactive-plane parity — 2026-11-01

Thirty-four new complete 64×64 AVIF manifest inputs cover 10/12-bit monochrome, I420, I422 and I444 film-grain displays, overlap with restricted clipping, and 8/10/12-bit U-only, V-only and zero-active-point controls. Deterministic full-range Y4M sources include saturated endpoints and fractional scaling indices. Repeated pinned native encodes are byte-stable; all header rewrites preserve their lossless tile bytes and sample/file extents. Every input matches live pinned Pillow pixels through the public Rust decoder. All 6,454 preceding JSON reference rows across 32 documents remain unchanged.

The selected campaign passes all 898 active AVIF decode parity rows, with 8,293 source, fixture and setup hashes unchanged across execution. Strict stable/default/all-feature/release/nightly-coverage Clippy, fixture and documentation checks, and the source unit-test guard pass. The new generator has an encoder-free read-only check; the existing color-grain writer now accepts valid chroma-only updates and accurately labels checked inputs. All 129 runtime/build hashes match the preceding JPEG FDCT checkpoint, so its matching-source SSE2/AVX2 compile checks and performance evidence remain reusable. No runtime arithmetic, dispatch, dependencies, unsafe code, codec unit tests, fault hooks, coverage exclusions or Option categories changed.

A local LLVM review identifies 21 AV1 branch outcomes absent from the preceding full native baseline: sixteen in grain synthesis and five in entropy admission. Both files retain identical source hashes and static branch identities. Selected grain coverage is 174/224 branches (77.6786%), versus 159/224 (70.9821%) in the preceding full baseline. One previously observed grain outcome and 223 entropy outcomes are absent from this narrower selection; these are not established regressions. This comparison is not an updated full aggregate or a managed incremental coverage claim. Defensive checks and the remaining gaps stay in the denominator.

Retained source, complete inputs, oracle outputs, byte-stability and tile receipts, actual Coverage MCP CLI queries, and acceptance logs are in .coverage-mcp/local-evidence/parity/avif-high-depth-grain-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T131048.532671Z-3a6057d0b01044b8afc7b23987d363c4/coverage.json. Coverage MCP imports remain source-unverified and test attribution unknown, with summary/detail reconciliation limits; source hashes provide separate local provenance. The runtime is unchanged, so no new speed claim or native x86 runtime result is inferred. Work remains local and uncommitted on develop in /Users/lazytrot/work/image-slash-star, with one registered checkout. The broader coverage and performance goal remains open.

JPEG FDCT constant-vector broadcasts — 2026-11-01

The private SIMD vector trait now const-evaluates complete fixed broadcasts. FDCT arithmetic, scaling, rounding, layouts, and dispatch are preserved. Both native release four-block kernels contain zero memory-fill call sites, down from forty each; untimed native sampling observes the affected FDCT in both binaries. Fixed vector construction remains safe Rust.

Twelve new ordinary public encode parity cases cover minimum/maximum samples, saturated checkerboards and stripes, aligned block batches and tails, all three grayscale/RGB/CMYK modes, baseline Q100, and progressive Q1. Both release binaries and live pinned Pillow produce identical bytes for all twelve. All 6,430 preceding JSON reference rows across 32 documents remain unchanged. The affected selection passes 715 JPEG parity rows (570 decode, 145 encode), including 699 public encode calls with zero panics, plus thirteen existing target-only fault contracts counted separately.

All fifteen predeclared full-encode workloads pass baseline/candidate/live Pillow byte gates and the unchanged 3% overall plus two-of-three-cycle regression review rule. Their 180 ABBA samples span RGB 4:4:4/4:2:2/4:2:0, 128/512-pixel square inputs, baseline/progressive, quality endpoints, optimized/restart, grayscale, CMYK, and small-image controls. Observed latency is 6.82%–51.63% lower than the preceding Rust implementation. These are local shared-host Apple M3 Pro observations; native x86 performance and a world ranking remain unmeasured.

Formatting, strict stable/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile checks, JPEG-only WebAssembly Clippy/rustdoc, and all 68 JPEG-feature integration contracts pass. Source receipts bind the same 129 runtime/build files. Fixture/documentation checks and the source unit-test guard pass. No codec unit tests, fault hooks, dependencies, unsafe code, coverage exclusions, or Option categories were added. The defensive default descale arm remains visible and unexecuted in the selected coverage report.

Complete inputs, outputs, binaries, source snapshots, rejected preparation attempts, profiles, disassembly, commands, timing samples, and Coverage MCP CLI queries are retained in .coverage-mcp/local-evidence/parity/jpeg-fdct-const-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T124941.097512Z-7b83de8eec4249999654a67cdb1725e2/coverage.json. Imports remain source-unverified and test attribution unknown, with summary/detail reconciliation limits. The full baseline below predates this encoder change; no updated full aggregate, incremental gain, or per-file 100% claim is inferred. Work remains local, uncommitted and unpushed on develop in /Users/lazytrot/work/image-slash-star, with one registered checkout. The broader coverage and performance goal remains open.

Full native baseline after JPEG dequantization — 2026-11-01

The full native campaign passes all 139 checks in six executables (4, 1, 57, 7, 1, and 69). All 8,195 source, fixture, and test-setup hashes remain unchanged across execution. Native LLVM reports 100,033/141,130 lines (70.8800%), 20,056/31,738 branches (63.1924%), 5,580/9,083 functions (61.4334%), and 152,576/218,929 regions (69.6920%). Release floors pass without exclusions.

This is the local pre-FDCT-constant optimization baseline, based on develop 69a79d4c4 with uncommitted changes. It does not extend to later source or new fixtures and does not replace the historical managed claim ledger. Coverage MCP CLI imports remain source-unverified and test attribution unknown. Source snapshots and before/after hashes supply separate local provenance; function-group gaps are not unique LLVM branch totals.

The largest missing branch totals remain in AV1 entropy and block reconstruction. The retained full report and actual CLI query commands are in .coverage-mcp/local-evidence/full/20261101-dequant-final/.

JPEG signed-word dequantization and IDCT parity — 2026-11-01

Native JPEG reconstruction now retains low signed-word dequantized products and the upstream butterfly's signed-word pre-additions. Sequential DC storage narrows to the signed 16-bit JCOEF boundary while the predictor retains full precision. Complete const evaluation of SIMD broadcasts avoids release memory-fill calls; fixed eight-element transforms avoid out-of-line array mapping. The final kernel uses the complete native-word arithmetic throughout, without the experimental bounded-column admission or a new fallback category.

Fifty-eight complete grayscale JPEG manifest inputs cover 35 preceding-target pixel bugs and 23 preserved controls. They include sequential and progressive scans, 8×8 and partial 17×9 blocks, positive and negative coefficients, wide quantizers, both horizontal halves, and dense coefficient patterns. All 528 exploratory inputs now match pinned Pillow: 226 previously mismatched and 302 were already exact. All 99 preceding public probes were rerun successfully. Official instrumented libjpeg-turbo 3.1.4.1 independently reproduces all 528 Pillow outputs; every native C command exits zero. These diagnostics are not additional canonical parity rows. All 6,314 preceding JSON reference rows across 32 documents remain unchanged.

The final affected selection passes 703 JPEG parity rows (570 decode and 133 encode), including 639 public encode calls with zero panics, plus thirteen existing target-only fault contracts reported separately. Formatting, strict stable/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile checks, JPEG-only WebAssembly Clippy and rustdoc, and all 68 JPEG-feature integration contracts pass. Source receipts bind the same 129 runtime/build files. Fixture/documentation checks and the source unit-test guard pass. No codec unit tests, fault hooks, dependencies, unsafe code, source exclusions, or Option categories were added. The existing checked-dequantization admission and its complete checked fallback remain visible.

All failed arithmetic and code-generation experiments and their measurements remain retained. The first final-kernel short campaign triggered review at 6.43% higher latency on one progressive RGB control while cycles varied and background workloads were active. The follow-up repeats every one of the ten exact baseline/candidate/live-Pillow controls with the same binary and input identities and fivefold samples. Every control clears the unchanged 3% overall plus two-of-three-cycle rule. Observed latency ranges from 1.28% higher to 0.66% lower; the DC-only control is 0.19% higher. Both campaigns remain bound to the review. These shared-host Apple M3 Pro observations establish neither zero overhead nor native x86 speed or a world ranking.

Coverage MCP CLI branch queries and their selected report are retained. Imports remain source-unverified and test-attribution unknown, with summary/detail reconciliation limits. Static arithmetic review is not execution coverage. No full-repository refresh, per-file 100% claim, or incremental aggregate gain is inferred.

Retained evidence is in .coverage-mcp/local-evidence/parity/jpeg-dequant-width-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T121938.974472Z-a03c2a3184144f7c8a2dbec9d5a26d93/coverage.json. All work remains local, uncommitted and unpushed on develop in /Users/lazytrot/work/image-slash-star. No new branch or worktree was created. The broader coverage and performance goal remains open.

Empty progressive JPEG scans with declared restart intervals — 2026-11-01

Empty progressive scans now reach the existing padded-bit reader even when a restart interval is declared. Previously an empty DC scan before a comment marker was dropped, preserving coefficients that pinned Pillow replaces. The nonempty restart-segment extractor and defensive empty-list check remain. The optional extracted-segment value describes the absence of extraction; its alternate path is the complete existing reader. No fallible operation was changed to return Option.

Twenty complete 17×9 grayscale manifest inputs cover positive and negative coefficients, DC and AC scans, intervals 1 and 65,535, absent DRI, and following comment, scan, and EOI markers. Four reproduce incorrect preceding-target pixels; sixteen are preserved controls. All twenty now match live pinned Pillow, and all 79 preceding public probes were rerun successfully. The native official libjpeg-turbo diagnostic also reproduces all twenty Pillow outputs; its warning exit status is 2, recorded separately from canonical parity. All 6,274 preceding JSON reference rows across 32 documents remain unchanged.

The affected selection passes 645 JPEG parity rows (512 decode, 133 encode), including 639 public encode calls with zero panics, plus thirteen existing target-only fault contracts reported separately. Formatting and strict stable/default/all-feature/release/nightly-coverage Clippy pass. SSE2/AVX2 Clippy compile checks, JPEG-only WebAssembly Clippy and rustdoc, and all 68 JPEG-feature integration contracts pass. The receipts bind the same 129 runtime/build source hashes. Fixture/documentation checks and the source unit test guard pass; no codec unit tests, fault hooks, dependencies, unsafe code, or source exclusions were added.

Eight exact baseline/candidate/live-Pillow full-decode controls clear the unchanged 3% overall plus two-of-three-cycle regression review rule. They include ordinary progressive images with actual restart markers. Observed latency ranges from 0.46% higher to 10.57% lower; paired cycles vary, and the DC-only control is 0.38% higher. These local Apple M3 Pro observations establish neither zero overhead nor a native x86 or world-speed result.

Coverage MCP CLI branch queries retain no missing IDCT function groups and three progressive groups. The empty-scan investigation found real parity bugs, while the defensive empty-segment-list observation remains uncovered. A parser-invariant review explains why that state appears unreachable after the fix. The zero-denominator and checked-dequantization guards also remain visible. Imports are source-unverified, test attribution is unknown, and summary/detail reconciliation limits apply. No full-repository coverage refresh, per-file 100% claim, or incremental aggregate gain is inferred.

Retained evidence is in .coverage-mcp/local-evidence/parity/jpeg-empty-progressive-scans-20261101/. The selected report is .coverage-mcp/local-evidence/selected/20261101T112711.504752Z-7c5199cace634205ae08c7fae2e8f5f2/coverage.json. All work remains local, uncommitted and unpushed on develop in /Users/lazytrot/work/image-slash-star. No new branch or worktree was created. The broader coverage and performance goal remains open.

Progressive JPEG partial smoothing and general workspace boundary — 2026-11-01

The decoder now follows the precision of the first AC bands when estimating unknown zero coefficients. Accurate zeros and received nonzero coefficients are preserved; positive precision limits the prediction magnitude. DC-only interpolation retains any coefficients received in higher bands and follows upstream's current-iMCU row selection, including padded neighbors at a partial final MCU. Unknown DC or a zero first-ten quantizer disables optional smoothing. Missing tables still reach the existing checked reconstruction error.

The diagnostic smoothing phase matched all 60 retained upstream coefficient inputs but still differed on twelve final images. The next observed boundary was the general first-pass workspace: upstream stored -4629 where the preceding target retained 60907. The native general transform now narrows that workspace with NEON truncation or SSE2/AVX2 signed saturation. The existing zero-vertical-AC correction remains. This is a correction of the observed boundary, not a claim that every arithmetic state or target has been exhaustively verified.

Thirty-one new complete-input manifest cases cover 27 actual pixel regressions and four nearby controls. All 79 public probes match pinned Pillow: the 60 coefficient probes now all pass, eighteen smoothing/scan controls pass, and a complete AC-only file with no DC scan exercises disabled smoothing. All 52 previously matching probes remain exact. The twelve mismatches from the preceding checkpoint are resolved. Existing 6,212 JSON reference rows across 32 documents remain unchanged; all 6,272 rows present before the final AC-only addition also remain unchanged. No codec unit tests, fault hooks, dependencies, unsafe code, or coverage exclusions were introduced.

The final affected selection passes 625 JPEG parity rows (492 decode and 133 encode), including 639 public encode calls with zero panics, plus thirteen existing target-only fault contracts reported separately. Strict formatting, default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, and all 68 JPEG-feature integration contracts pass. These receipts share 129 runtime/build source hashes; fixture integrity, documentation, and the source-unit-test guard pass.

Every timed full decode first matched baseline/candidate/live pinned Pillow pixels. Initial width-correct candidates regressed progressive RGB controls; outlining alone and a packed-workspace experiment were rejected. Contiguous natural-order coefficient reconstruction and short-circuit sparsity checks recovered the common-path cost. A separate DC-only control caught a 22.14% regression. Inlining neighbor lookup reduced it to 6.91%; avoiding copies of known-zero AC storage and narrowing only newly synthesized coefficients reduced the final observed cost to 2.72%. Every trial remains retained.

The final ordinary-production-link A-B-B-A campaign clears the unchanged 3% overall plus two-of-three-cycle review rule on eleven exact-output controls. Progressive RGB 4:4:4 latency is 5.44% lower locally; the other ordinary-image controls range from 0.71% higher to 2.49% lower. Some paired cycles vary in sign. The DC-only cost remains explicit. These Apple M3 Pro results establish neither zero overhead, native x86 speed, nor a world ranking.

Coverage MCP CLI branch queries on the final selected report list no missing IDCT observations and three progressive function groups. The AC-only input closes the unknown-DC observation. Remaining observations concern empty entropy segment lists, a zero smoothing denominator, and the checked dequantization fallback and its caller. The empty-segment path needs complete-input investigation; the arithmetic guards remain visible with a static reachability review. Imports remain source-unverified and test-attribution unknown, with summary/detail reconciliation limits. No fresh full-repository total, per-file 100% claim, or aggregate incremental coverage gain is inferred.

Retained evidence is in .coverage-mcp/local-evidence/parity/jpeg-partial-smoothing-20261101/. The final selected report is .coverage-mcp/local-evidence/selected/20261101T110957.120180Z-f5066647d1754d289bcebccc9907b245/coverage.json. The preceding immutable checkpoint's 764 files were reverified before reusing its official libjpeg-turbo 3.1.4.1 source, native trace executable, and pinned Pillow reproduction. Diagnostic phases retain their distinct source identities. All changes remain local, uncommitted and unpushed on develop in /Users/lazytrot/work/image-slash-star; no new branch or worktree was created. Native SSE2/AVX2 execution, complete coverage, and the broader speed goal remain open.

JPEG zero-vertical-AC workspace boundary — 2026-11-01

This preceding checkpoint is retained below; the partial-smoothing section above records the subsequent correction of its twelve remaining probes.

The native IDCT now preserves the signed 16-bit workspace of upstream's zero-vertical-AC shortcut when its first-pass result overflows that width. The common transform first checks the scaled DC range; the bitmap check and workspace correction are outlined. Neon admits four columns at a time; SSE2 and AVX2 require zero vertical AC across all eight. Raw coefficients select the shortcut, so a zero quantizer cannot change admission. No general transform, defensive fallback, dependency, feature, or unsafe policy changed.

An instrumented build from the official libjpeg-turbo 3.1.4.1 source archive reproduces default pinned Pillow 12.2.0 on all 60 retained complete coefficient probes. Bounded traces show the first storage difference for coefficient 8192 and quantizer one: upstream stores -32768 after its word-sized shift, while the preceding target stores 32768. Feeding the observed reference coefficient block to the preceding transform reproduces the public target's wrong pixels. The Neon shortcut and SSE2 shortcut are retained with the original archive, trace patch, executable, and hashes. Only initialized workspace cells are traced; no tracing enters production.

The correction fixes 29 probe mismatches and preserves all 19 previously matching files. Twelve multi-block first-scan files remained mismatched at that checkpoint. Their reference traces insert partial-smoothing coefficients that the current decoder omits: for example, natural-order positions 2, 8, and 16 become 352, 6880, and -1920. The current smoothing path handles DC-only scans, while upstream also estimates zero coefficients whose precision is incomplete. Precision-aware partial smoothing and the general transform's intermediate widths were the next work. The current section above resolves these files; they were not counted as passing parity in the preceding checkpoint.

Forty-two new input-only manifest cases add the 29 regressions and thirteen nearby controls; six earlier coefficient guards are reused. Selected execution passes all 594 JPEG parity rows (461 decode and 133 encode), including 639 public encode calls and zero panics, plus thirteen existing target-only fault contracts reported separately. All 6,128 prior reference rows remain unchanged. No codec unit tests, fault hooks, or coverage exclusions were added.

Strict formatting/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contracts, fixture integrity, documentation, and the no-source-unit-test guard pass. After the cold-hint experiment was reverted, all 129 runtime/build source hashes exactly matched the checked outlined version, so its unchanged-source receipts are reused. This batch has affected selected LLVM evidence; it does not refresh full-repository totals or establish an aggregate incremental coverage gain. Coverage MCP imports remain source-unverified with summary/detail reconciliation limitations. Its IDCT query lists two missing branch observations for the same remaining path: an overflowing column group with nonzero vertical AC makes the helper decline the shortcut and the caller retain the general transform. These are kept visible while the general transform's width behavior is investigated.

Every timed full decode first matched baseline/candidate/live Pillow pixels. The eager bitmap implementation was 10.63–16.35% slower on three progressive RGB controls and was rejected. Outlining put nine of ten overall controls within 2.6% of baseline; CMYK progressive was 3.63% slower overall, with only one paired cycle beyond 3%. A cold compiler hint then regressed progressive RGB controls 7.13–13.50% and was reverted. All three cohorts and exact executables remain retained. Five-cycle diagnostics with tenfold iterations on four concerning controls measured RGB progressive 4:2:0 and 4:2:2 latencies 0.78% and 0.62% higher, baseline RGB 4:4:4 2.01% higher, and CMYK progressive 2.57% lower. Both cohorts are retained; CMYK results vary between them. The restored candidate clears the declared 3% review trigger on these controls, without changing that threshold. The small observed costs remain explicit: no zero-overhead, native x86 speed, or global ranking claim follows.

Retained evidence is in .coverage-mcp/local-evidence/parity/jpeg-idct-workspace-20261101/. The restored candidate's selected report is .coverage-mcp/local-evidence/selected/20261101T100532.208699Z-e777a791754743a694aede511138a6f7/coverage.json; the cold-hint report is separately retained with that rejected experiment. All work remains local, uncommitted and unpushed on develop in /Users/lazytrot/work/image-slash-star. Native SSE2/AVX2 execution, complete coverage, and the broader performance goal remain open. The current section above resolves the twelve smoothing cases.

Progressive JPEG coefficient storage — 2026-11-01

Progressive coefficient blocks now store signed 16-bit JCOEF values directly, reducing their payload from 256 to 128 bytes per block. DC predictors, smoothing, dequantization, and IDCT arithmetic retain their wider types. First-scan writes still narrow explicitly; refinement uses equivalent 16-bit wrapping arithmetic. No defensive branch, overflow fallback, dependency, feature, or unsafe code was added or removed. The pinned coefficient definition and progressive decoder sources are retained with hashes.

Six new complete public Pillow parity fixtures cover signed coefficient writes at category 15 / Al 12 and both signs through all twelve DC/AC refinement stages. The affected selection passed 552 JPEG parity rows (419 decode and 133 encode), including 639 public encode calls and zero panics, plus 13 pre-existing target-only fault contracts reported separately. All 6,116 prior reference rows remain unchanged. No unit tests, new fault hooks, coverage exclusions, or regenerated canonical results for mismatching inputs were used.

Strict formatting/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contracts, fixture integrity, documentation, and the no-source-unit-test guard passed. Build, lint, target, and selected coverage receipts identify the same 129 source/build files. The full native report in the JFIF section below is the preceding baseline; the current coefficient representation and six new fixtures have affected selected coverage evidence, not refreshed full-repository totals. Coverage MCP remains source-unverified with summary/detail reconciliation limitations, so no aggregate incremental-gain claim is made.

With ordinary production linking, a three-cycle A-B-B-A campaign compared ten complete public decode workloads against the preceding Adobe-marker baseline. Every timed input first matched full baseline/candidate/live Pillow pixels. Overall latency medians stayed within 1.4% of baseline. A five-cycle diagnostic with tenfold iterations measured RGB 128×128 progressive 4:2:0, 4:2:2, and 4:4:4 latencies 2.16%, 2.87%, and 2.15% lower; grayscale was 1.57% higher. Both cohorts are retained. The combined JFIF fix and coefficient change clear the declared 3% regression review trigger on these controls. These local Apple M3 Pro measurements establish neither zero overhead nor native x86 SIMD speed.

A separate historical 60-input coefficient-boundary probe found identical baseline and candidate pixels for every file. Only 19 matched default pinned Pillow; the other 41 exposed pre-existing IDCT differences at that checkpoint. The workspace correction above resolves 29, and the latest partial-smoothing checkpoint resolves the remaining twelve. Six matching guards were added to the matrix without counting the mismatches as parity. A diagnostic Pillow process with SIMD disabled changed 52/60 oracle outputs and matched the target on only eight, so it is not substituted for the default oracle. The full inputs and all observed pixels remain available for tracing the first arithmetic divergence.

Retained source, executables, all timing cohorts, 60 probes, six fixture references, verification logs, coverage receipts, and checksums are in .coverage-mcp/local-evidence/performance/jpeg-progressive-i16-20261101/. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261101T093923.951210Z-21c71ef685a4454089d80e56743a0915/coverage.json. An earlier diagnostic forced equal progressive function placement and changed the timing gaps, supporting placement sensitivity as a contributor; it is retained separately under performance/jpeg-progressive-placement-20261101/. An outlined Huffman fallback was slower and reverted; its evidence is retained with this batch. No production linker flags changed. The workspace checkpoint above records progress on the 41 IDCT differences. Native SSE2/AVX2 execution, complete coverage, and a global performance ranking remain open. Work remains local on develop, uncommitted and unpushed.

JPEG JFIF payload boundaries — 2026-11-01

Historical minimal-fix checkpoint: correctness passed; performance was open. The combined source is evaluated in the coefficient-storage section above. The minimal parser/inspector fix rejects recognized pre-scan JFIF payloads that omit either mandatory version byte. It preserves Pillow's acceptance of missing density/thumbnail fields, a missing NUL after JFIF, unrecognized APP0 signatures, and short APP0 metadata after the scans. The pinned installed Pillow 12.2.0 JPEG handler and its hash are retained with the reproductions.

Thirty new input-only public parity rows cover baseline and progressive RGB JPEGs, payload lengths 0, 4–8, and 11–14, signature variations, and three short post-scan payloads. The original implementation matched 24 and incorrectly accepted six malformed headers. The minimal fix matches all 30 complete files and all 90 direct detection/inspection/decode outcomes against live pinned Pillow. The affected campaign passed all 546 JPEG parity rows (413 decode and 133 encode), 639 public encode calls with zero panics, and all 13 existing target-only fault contracts reported separately. All 6,056 prior reference rows remain unchanged. No unit tests, fault contracts, hooks, or exclusions were added.

The fresh full native coverage run passed 139 integration checks across six binaries, with all 7,881 source, fixture, and setup file hashes unchanged during the run. Native LLVM reports lines 99,965/141,061 (70.87%), branches 20,027/31,708 (63.16%), functions 5,564/9,067 (61.37%), and regions 152,467/218,819 (69.68%); the release floors pass. The unchanged JFIF payload length condition's false arm increased from zero to 36 hits, and the Coverage MCP parser query lists four missing-branch groups instead of five. These are bounded observations, not an aggregate incremental-gain claim: imports remain source-unverified and the summary/detail reconciliation limitation remains.

Strict formatting/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contracts, fixture integrity, documentation, and the no-source-unit-test guard passed on the recorded minimal source. After the optimization experiments were reverted, all 129 recorded runtime, Cargo, and benchmark source hashes matched that checked source exactly, so the unchanged-source test evidence is reused.

The minimal fix's three-cycle, ten-workload local A-B-B-A campaign flagged progressive controls: RGB 128×128 4:2:0 was 9.39% slower, 4:2:2 was 12.04% slower, 4:4:4 was 5.06% slower, and grayscale was 6.38% slower. Timed inputs first passed exact baseline/candidate/live Pillow pixel comparisons. Profiling places most CPU time in progressive entropy decoding; baseline and candidate progressive reconstruction have the same instruction count and mnemonic counts, with relocation differences. This does not establish the regression's cause. Validator/refinement call boundaries, bounded counter increments, and four-byte/full-word refill experiments did not resolve the concern and were reverted. Both saved executables rebuilt byte-identically. Five-cycle diagnostics with tenfold iterations confirmed RGB medians 9.30%, 11.76%, and 5.74% slower; grayscale was 3.00% slower overall with mixed cycle results. Both campaigns remain retained, and the original 3% review threshold was not widened. Diagnostic-only optimization trials do not constitute parity or accepted optimization evidence. The x86-64 runtime availability probe on this host failed with Bad CPU type in executable; SSE2/AVX2 evidence remains compile-only. No SIMD speedup, zero-overhead, native x86 runtime, 100% coverage, or global ranking claim follows from this batch.

Retained evidence is in .coverage-mcp/local-evidence/parity/jpeg-jfif-boundaries-20261101/, including the open performance status, immutable executables, exact source snapshots, rejected experiments, profiles, coverage receipts, and artifact hashes. The full native report remains at .coverage-mcp/local-evidence/full/20261101-jfif-final/coverage.json. All work remains in /Users/lazytrot/work/image-slash-star on local develop, uncommitted and unpushed. The performance concern described here applies to this saved minimal-fix checkpoint; its measurements remain retained.

JPEG Adobe marker precedence and color defaults — 2026-11-01

JPEG color interpretation now follows the last valid Adobe APP14 marker before the first scan. Later markers remain retained metadata and cannot change the header's color choice. Previously the parser kept the first recognized marker, and a first marker after the scans could incorrectly reinterpret unmarked CMYK. Four-component JPEGs also follow libjpeg's YCCK default for unsupported nonzero Adobe transforms. The parser normalizes those values once when it captures the header interpretation; the raw APP14 payloads remain intact. Baseline and progressive reconstruction source files are identical to the preceding batch. The pinned marker reader and header color defaults are retained with source hashes alongside the live Pillow observations.

Forty new ordinary public decode rows cover both RGB and CMYK, baseline and progressive scans, conflicting and matching duplicate markers, first and conflicting post-scan markers, eleven-byte Adobe payloads, unrecognized APP14 signatures, and unsupported transform values. The original source matched 26/40 complete inputs and returned different pixels for the other 14. The first 32-row matrix reproduction passed 22 rows and failed 10; the eight additional live probes exposed four more mismatches. The final campaign passed all 516 JPEG parity rows (383 decode and 133 encode), including 639 public encode calls and zero panics, plus all 13 existing JPEG fault contracts reported separately. Live pinned Pillow comparisons passed all 126 public decode executions across 112 unique complete inputs. All 5,976 pre-existing reference rows remain unchanged. No unit tests, fault contracts, hooks, or source exclusions were added.

Performance review rejected an initial reconstruction-predicate variant after three controls crossed the predeclared 3% regression review threshold. A saved baseline rebuilt byte-identically. The final fix changes only parser source and retains the existing reconstruction checks. Ten local Apple M3 Pro controls used three A-B-B-A cycles, 100 warmups per process, Rust 1.96.1, and complete public decode calls through output destruction. Every timed input first passed full baseline/candidate/live Pillow pixel equality. The short-process medians ranged from 6.59% faster to 3.10% slower, triggering review of one workload. Five-cycle diagnostic runs with tenfold process iterations on the three previously affected workloads measured medians from 1.32% faster to 1.32% slower; none had a majority-cycle regression beyond 3%. Both campaigns and the rejected implementation are retained. This bounds local regression risk; variable timings do not establish a speedup or zero overhead.

Strict formatting/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contracts, fixture integrity, documentation, and the no-source-unit-test guard passed. Coverage-origin inventory remains 267 guards across 36 files. The Coverage MCP CLI parser query still lists five missing-branch groups; this batch closes observed behavior gaps without claiming an aggregate coverage gain. Imports remain source-unverified and the summary/detail reconciliation limitation remains. The preceding full native baseline predates the RGB row-assembly and Adobe-marker batches; the current receipt is the affected JPEG selection. Native x86 parity/performance, 100% coverage, and a global codec speed ranking remain unproven.

Retained local evidence:

  • .coverage-mcp/local-evidence/parity/jpeg-adobe-precedence-20261101/: complete reproductions, pinned generators and inputs, source identities and focused patch, immutable executables, byte-identical baseline rebuild, reference-preservation receipts, both timing campaigns and rejected variants, acceptance logs, primary sources, Coverage MCP queries, and artifact hashes.
  • The final selected report path and SHA-256 are recorded in that directory's selected-report.json; it remains separately retained outside target/.

RGB JPEG color semantics and progressive row assembly — 2026-11-01

Raw RGB JPEG components now bypass YCbCr conversion in baseline and progressive decoding. The parser captures three-component color interpretation at the first SOS marker: JFIF implies YCbCr, Adobe transform zero selects RGB, and unmarked R/G/B component identifiers select RGB. The new cases check JFIF precedence, an explicit Adobe YCbCr override, missing Adobe metadata, and a conflicting Adobe marker after the scan, which cannot change the header-time color choice. Previously, those RGB inputs returned different pixels from pinned Pillow 12.2.0.

Both decode paths also match libjpeg's replication rule when horizontally subsampled chroma is only one or two samples wide. The full-plane dispatcher now uses the same threshold as the row dispatcher. Direct baseline 4:2:2 and 4:2:0 paths delegate these tiny widths to the general reconstruction path; raw RGB also uses the checked component assembler. Ordinary direct YCbCr paths remain eligible for larger widths.

Progressive three-component output now uses reusable image-width scratch rows instead of cropping and expanding two complete chroma planes. Full-resolution rows are borrowed directly. Each component retains its own stride, visible extent, and sampling ratios, and output/scratch reservations are fallible. YCbCr rows still use the existing safe SIMD color converter; raw RGB rows are interleaved directly. The baseline YCbCr full-plane fallback and its existing fault contracts remain exercised.

Twenty-two new public decode parity rows cover tiny chroma widths, the three-sample transition, minimal/odd/aligned RGB dimensions, both scan modes, and the marker cases above. The original source passed only 6/22 of these rows. The final selected campaign passed all 476 JPEG parity rows (343 decode and 133 encode), including 639 public encode calls and zero panics, plus all 13 existing JPEG fault contracts reported separately. The 64-case size/sampling probe and 22 fixture probes also passed all 86 public decode executions, representing 74 unique complete JPEGs. All 5,932 pre-existing input/output reference rows are unchanged. No unit tests, fault contracts, coverage hooks, or source exclusions were added.

Local Apple M3 Pro release measurements used Rust 1.96.1, an immutable saved baseline executable, and the recorded dirty source identities. Three A-B-B-A cycles measured complete public decode calls through owned output destruction after 100 warmups per process. Input generation, file I/O, builds, and exact comparisons were outside timing. All eight timed inputs passed full baseline, candidate, and live Pillow pixel comparisons before timing. Incorrect raw RGB and tiny-width baseline outputs were excluded from speed comparisons.

Progressive RGB input, Q85 Baseline median (ms) Candidate median (ms) Latency reduction
128×128, 4:2:0 0.219729 0.203938 7.19%
512×512, 4:2:0 5.491146 5.192146 5.45%
128×128, 4:2:2 0.323688 0.286584 11.46%
128×128, 4:4:4 0.504000 0.474375 5.88%

Every progressive RGB cycle improved. The baseline RGB, progressive grayscale, and progressive CMYK controls ranged from 0.25% slower to 1.00% faster. These are bounded local observations, not an x86 runtime result or a global codec ranking.

Formatting, strict default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contracts, and fixture integrity passed. The selected coverage receipt represents the affected JPEG cases and existing fault lane; it does not replace the preceding full native baseline. Coverage MCP imports remain source-unverified and the summary/detail reconciliation limitation below still prevents an aggregate incremental-gain claim. The 100% goal and native SSE2/AVX2 parity/performance validation remain unfinished. All ongoing work stays in the primary checkout on local develop.

Retained local evidence:

  • .coverage-mcp/local-evidence/performance/jpeg-progressive-rows-20261101/: before/after cases and probes, immutable executables, exact paired controls, source identities and focused patch, reference-preservation receipts, check logs, Coverage MCP gap queries, and artifact hashes.
  • .coverage-mcp/local-evidence/selected/20261101T074525.204567Z-fb03c801e1bf479d87e88b27bfc881ba/: final 476-row JPEG and 13-fault-contract LLVM report, local receipt, and log.

Fractional JPEG sampling rejection parity — 2026-11-01

The decoder now rejects fractional component sampling ratios before pixel reconstruction can truncate them through integer division. Previously, eight baseline/progressive CMYK and YCbCr inputs with horizontal or vertical 3:2 ratios incorrectly decoded successfully; pinned Pillow 12.2.0 rejects their pixel loads. Detection, header inspection, and verification remain successful, matching Pillow. Valid integer 3:1 layouts still decode exactly.

Sixteen public decode parity rows pair those eight malformed inputs with eight successful integer-ratio controls. Each complete 8×8 file has explicit quantization/Huffman tables, zero-coefficient entropy, and EOI. SOF2 controls contain an interleaved DC-first scan. Every MCU has at most ten blocks, so the fractional cases isolate ratio acceptance rather than exceeding libjpeg's interleaved MCU limit. The pinned generator generate_jpeg_sampling_ratio_fixtures.py --check verifies complete file hashes, header verification, successful pixels, and Pillow's fractional-load errors. All 5,900 pre-existing input/output reference rows remain unchanged. No unit tests, fault contracts, coverage hooks, or source exclusions were added.

The parser bounds component factors to 1 through 4. Maxima of one or two therefore guarantee integer ratios; only larger layouts call the outlined validator. A first inline guard and an unconditional outlined guard measured 10.84% and 9.21% higher RGB progressive decode medians respectively and were rejected. Their sources, executables, and raw samples are retained. Rebuilding the saved baseline produced a byte-identical benchmark executable.

Final local Apple M3 Pro controls used Rust 1.96.1 and three A-B-B-A cycles, measuring complete public decode calls through output destruction after 100 warmups per process. Each of four 128×128 Q85 controls passed full baseline, candidate, and live Pillow pixel comparisons before timing. The final controls ranged from 0.14% lower to 1.29% higher median latency; RGB progressive decode was 0.205750 ms versus 0.208396 ms. This bounds the local regression check, without establishing zero overhead or a general speedup. Incorrect fractional baseline outputs are excluded from timing comparisons.

The final full native all-feature coverage run passed 139 checks across six integration binaries, with source and fixture identities unchanged throughout execution. Native LLVM summary totals are 70.859518% lines, 63.117498% branches, 61.354098% functions, and 69.671003% regions. These are current local totals, not a Coverage MCP incremental gain: imported reports remain source-unverified, and the summary/detail reconciliation limitation described below remains. Formatting, strict default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy and rustdoc, all 68 JPEG-feature integration contract checks, fixture integrity, documentation checks, and the no-source-unit-test guard passed. Coverage-origin inventory remains 267 exact guards across 36 files. Native x86 parity/performance and the 100% coverage goal remain unfinished.

Retained local evidence:

  • .coverage-mcp/local-evidence/parity/jpeg-fractional-sampling-20261101/: original eight-failure reproduction, 16-case before/after probes, reference preservation receipts, final paired controls, rejected attempts, byte-identical baseline rebuild, source identities, focused patch, check logs, raw sampling guard observations, Coverage MCP gap query, and artifact hashes.
  • .coverage-mcp/local-evidence/full/20261101-fractional-sampling-final/coverage.json: final complete LLVM report. The preceding inline-guard report remains at .coverage-mcp/local-evidence/full/20261101-fractional-sampling/coverage.json and does not represent the final runtime source.

Explicit CMYK JPEG subsampling parity — 2026-11-01

Explicit CMYK 4:2:2 and 4:2:0 encoding now matches pinned Pillow 12.2.0 instead of silently writing 4:4:4. The first C component retains full resolution; M, Y, and K use the requested sampling factors and the existing downsampling filter. Unspecified CMYK sampling still defaults to 4:4:4. The public sampling option documentation now explains that distinction.

The encoder fix exposed a second discrepancy: baseline and progressive CMYK decoding replicated sampled components instead of applying IJG interpolation. Both paths now share a checked, fallibly allocated output assembler. Sampled images use four image-width scratch rows; unsampled images read borrowed component rows directly. Horizontal 2:1 interpolation uses replication when the component width is one or two samples, following the dispatch conditions in the pinned libjpeg-turbo source. This narrow-width rule also applies to the existing shared YCCK row helper.

Nineteen ordinary encode parity cases cover both sampling layouts, optimized and progressive output, restart rows, odd dimensions, partial MCU boundaries, and single- and two-sample component widths. Three pinned lossless CMYK TIFF sources provide varied K values, which the existing JPEG sources lack. generate_jpeg_cmyk_subsampling_fixture.py --check verifies their complete file and decoded-pixel hashes through the fixture-integrity target. All 5,862 pre-existing input/output reference rows remain unchanged. No unit tests or target-only fault contracts were added.

The final selected campaign passed all 438 JPEG parity rows: 305 decode and 133 encode, exercising 639 public encode calls with zero panics. A separate 42-input public probe passed full-byte encode and decoded-pixel comparisons against live Pillow for seven tiny dimensions, all three sampling layouts, and baseline/progressive output. Retained intermediate failures distinguish the original sampling discrepancy, the decoder interpolation discrepancy, and the narrow-width dispatch discrepancy.

Local release controls compare the immutable preceding progressive-buffer candidate with this candidate on the Apple M3 Pro, Rust 1.96.1. All four 128×128 Q85 RGB/CMYK baseline/progressive sources passed complete baseline, candidate, and Pillow comparisons for both encoding and decoding before timing. Three A-B-B-A cycles measured whole public calls through owned output destruction after 100 warmups per process. Progressive CMYK 4:4:4 decoding changed from 1.008667 ms to 0.876979 ms median latency (13.06% lower); all three paired cycles improved. Encoding control medians ranged from 0.24% faster to 1.11% slower, and baseline CMYK decoding was 0.37% slower. The retained report contains all eight controls, including RGB progressive decoding, which also improved despite not being the targeted path. These observations do not establish a universal speedup, an x86 runtime result, or a codec ranking. Incorrect subsampled baseline outputs are excluded from timing comparisons.

Formatting, strict native/default/all-feature/release/nightly-coverage Clippy, SSE2/AVX2 compile-only Clippy, JPEG-only WebAssembly Clippy, strict JPEG-only rustdoc, all 68 existing JPEG-feature integration contract checks, and complete fixture-integrity verification passed. The coverage-origin inventory remains 267 exact guards across 36 files, with no source exclusions. Coverage MCP's selected encoder/decoder branch queries still identify gaps and are source-unverified imported evidence; the summary/detail reconciliation limitation below prevents an aggregate coverage-gain claim. The 100% goal and SSE2/AVX2 runtime parity and performance validation remain unfinished.

Retained local evidence:

  • .coverage-mcp/local-evidence/performance/cmyk-subsampling-20261101/: paired controls, exact probes, reproduction and intermediate failure logs, source identities, immutable probe/benchmark executables, focused runtime patch, fixture/reference preservation receipts, check logs, and artifact hashes.
  • .coverage-mcp/local-evidence/selected/20261101T070138.839597Z-0e1aa073fe53490980d38c946812cedd/: final 438-row LLVM report, local receipt, and captured output.

Progressive JPEG buffers and partial MCU parity — 2026-11-01

Progressive AC refinement now uses fixed 64-entry coefficient and correction buffers instead of allocating temporary vectors for each block. A separate correctness fix makes interleaved DC scans without restart markers retain partial-MCU dummy blocks. These repeat the preceding DC value, contributing a zero initial difference and its low refinement bit. The old path skipped them; the varied 63×65 input produced 3,670 bytes versus Pillow's 3,675 bytes and different decoded pixels. The corrected output matches Pillow byte for byte.

Three public encode parity rows cover bottom, right, and combined partial MCU edges: enc_progressive_bottom_partial_mcu_420, enc_progressive_right_partial_mcu_420, and enc_progressive_partial_mcu_420. The first two use pinned deterministic RGB PNG sources at 63×65 and 65×63; the third reuses the existing 33×33 JPEG. Existing input/output reference rows are unchanged. All 114 JPEG encoder matrix rows passed, exercising 544 public encode calls with zero panics. The new rows are ordinary Pillow parity cases; no unit tests or target-only fault contracts were added.

Local paired release measurements used the Apple M3 Pro, Rust 1.96.1, the same dirty workspace snapshot, and an immutable saved baseline binary. Only src/codecs/jpeg/encode/mod.rs differs in the recorded runtime source identities. Each of three A-B-B-A cycles measured complete public encode calls through owned output destruction, after 100 warmups. Input generation, builds, and file I/O were outside timing. Every timed baseline and candidate output matched pinned Pillow 12.2.0 exactly before timing.

Progressive workload Baseline median (ms) Candidate median (ms) Latency reduction
RGB 128×128 Q85, 4:2:0 0.680 0.545 19.76%
RGB 512×512 Q85, 4:2:0 12.187 10.515 13.72%
RGB 128×128 Q10, 4:2:0 0.256 0.218 14.78%
RGB 128×128 Q100, 4:2:0 0.770 0.581 24.58%
Grayscale 128×128 Q85 0.524 0.393 24.92%
CMYK 128×128 Q85, 4:4:4 2.518 2.084 17.24%
RGB 128×128 Q85, 4:2:0, restart every MCU row 0.682 0.539 20.90%

Every progressive cycle improved; the unchanged baseline-encoding control moved 0.52%. The odd-size correctness case is excluded from timing claims because the original output failed Pillow parity. An initial random CMYK 4:2:0 comparison also differs from Pillow in both original and optimized binaries; it was a pending compatibility gap at that measurement point, excluded from ranking and subsequently resolved by the CMYK work above. The final CMYK timing uses the existing production workload's 4:4:4 sampling. The rejected first buffer variant, including its Q10 regression, remains in the retained attempt report. These are local observations, not a published ranking, an x86 speed claim, or evidence for the world's fastest codec.

Formatting, strict native/default/all-feature/release/coverage Clippy, SSE2/AVX2 cross-compile Clippy, JPEG-only WebAssembly Clippy, fixture integrity, and all 68 existing JPEG-feature integration contract checks passed. Compile checks do not establish SSE2/AVX2 runtime parity or speed. Coverage MCP's full baseline query still lists encoder gaps, and raw baseline observations already cover both partial-MCU guard outcomes: the new parity cases catch a correctness gap that a branch percentage alone missed. The summary/detail reconciliation limitation described below remains; no aggregate coverage gain is claimed.

Retained local evidence:

  • .coverage-mcp/local-evidence/performance/jpeg-progressive-buffers-20261101/: final and attempted reports, paired runner, source identities, focused patch, native sample profile, raw samples, and local artifact hashes.
  • .coverage-mcp/local-evidence/selected/20261101T063448.953572Z-6aec4f56094745b2988315c7bc49618b/: the 114-row LLVM report, local receipt, log, and raw DC branch observations.

Coverage cache isolation and full native baseline — 2026-11-01

cargo-llvm-cov 0.8.7 collects executables from both host and explicit-target output trees. The previous shared cache retained old host executables when selected runs cleaned only their explicit target. Repeating the same four PNG parity rows in a fresh cache kept every covered count and all 112 source paths identical, while removing stale mappings from the reported denominators:

Metric Shared-cache denominator Fresh-cache denominator Covered in both selections
Lines 155,778 140,930 1,095
Branches 41,441 31,632 114
Functions 10,107 9,043 109
Regions 239,846 218,582 1,462

Both selections have identical source manifests. This is a correction to the measurement inventory, not a codec coverage gain. The original reports and cache contents remain intact. make coverage now uses target/cargo-llvm-cov/full; make coverage-selected and direct selected script calls default to target/cargo-llvm-cov/selected. Their parent and each individual cache can be overridden as documented in Testing. The selected receipt records its resolved CARGO_TARGET_DIR.

The changed default selected command passed 4/4 parity rows and reproduced the fresh control's exact totals. A new full native all-feature run passed all six integration binaries (139 checks), including the complete matrix harness, with unchanged source and fixture hashes during execution. Its input inventory contains 2,372 active decode rows, 556 active encode rows, and 167 target-only fault contracts; fault contracts remain separate from Pillow parity. All four alpha floors passed:

Metric Covered / total Percent
Lines 99,860 / 140,930 70.857873%
Branches 19,958 / 31,632 63.094335%
Functions 5,546 / 9,043 61.329205%
Regions 152,261 / 218,582 69.658526%

The clean full and selected runs have matching denominators for all four metrics. These are local LLVM producer totals, not managed Coverage MCP measurements or a replacement for the retained historical claim ledger.

Cache isolation does not resolve LLVM summary/detail reconciliation. A fresh JSON self-comparison is still incomparable in Coverage MCP. A native LCOV export from the same profile has the same producer totals, but its detail has 136,242 line records versus LF=140,930 and 31,616 branch records versus BRF=31,632. Its limited line-coordinate comparison is therefore not an exact whole-report percentage. Neither export is rewritten or trimmed to force a combined coverage claim. No production Rust code or unit tests were added.

Retained local evidence:

  • .coverage-mcp/local-evidence/diagnostics/coverage-cache-isolation-20261101.json
  • .coverage-mcp/local-evidence/full/20261101-cache-isolation/coverage.json, coverage.log, coverage.local-evidence.json, and coverage-compare-selected.json
  • .coverage-mcp/local-evidence/selected/20261101T061649.456759Z-0ee9625ff3e9477c826bad9ea97e9683/coverage.json
  • .coverage-mcp/local-evidence/selected/20261101T061040.532913Z-c1e316eade284c778e6dff3c2fcf0977/coverage.json and coverage.lcov retain the fresh-control exports.

PNG zlib header and DEFLATE repeat rejection parity — 2026-11-01

Four ordinary PNG inputs retain the complete one-pixel RGB container, valid chunk CRCs, and IEND. Pinned Pillow 12.2.0 accepts detection, inspection, and structural verification, then rejects both still and sequence decoding:

Public parity row Input SHA-256
decode:png:error_zlib_window_size_above_limit 85f3908b8187264634018450f6a3f7b75b82e62fee6f073b01141d78607f731b
decode:png:error_zlib_header_checksum_mismatch e19795bb1425702730cfa038b17e2a2ed52556b63e3d01ceb054942aa2c0fb0c
decode:png:error_zlib_preset_dictionary 8bd1ca9a90c24d35a1048cc4fbfc90c0e397cbe42c1105370268c31699d84969
decode:png:error_zlib_dynamic_repeat_without_previous 499e28c39f5b6528ee9af60f0b4d953d7cbd14f4f7e3927074982114ba96c044

The window case keeps CM=8 and valid FCHECK while requesting a 64 KiB window. The checksum case changes only FCHECK within IDAT and recomputes the PNG CRC. The dictionary case contains a complete zlib stream that inflates to the source raster when supplied its dictionary, which PNG forbids. The dynamic-tree case uses a complete code-length alphabet but emits repeat symbol 16 before any prior length. The dictionary case retains Pillow's image file is truncated (0 bytes not processed) error; the other three retain its broken-stream error. All four public rows passed their generated operation and structured-error contracts in the selected Rust run (4/4, zero fault-contract rows).

Coverage MCP identified the unobserved header and repeat paths in the retained full baseline. Raw LLVM branches at unchanged deflate.rs spans confirm the following previously unobserved outcomes, each observed three times in the new selection: excessive window (line 92, true), incorrect checksum (lines 93–97, true), preset dictionary (line 98, true), and missing previous code length (line 424, false). Both reports' local receipts match the current DEFLATE source hash; zero-count duplicate mappings remain in the original reports. These are selected-run observations, without managed source/test attribution or a new whole-repository percentage. Coverage MCP's incremental branch comparison returned incomparable because the baseline details do not reconcile with its reported totals; the four raw branch observations above are retained separately from that aggregate result.

scripts/generate_png_deflate_header_edges.py --check verifies all four deterministic inputs through make verify; --verify-pillow also validates the pinned oracle. Reference regeneration additionally repaired a stale generator allow-list for four existing CDEF fault points already supported by the runner. No production Rust source or unit tests were changed for these cases.

Reports under .coverage-mcp/local-evidence/selected/20261101T060537.075590Z-48ac44e2e03043638c4f1de3053c643a/:

  • coverage.json and coverage.local-evidence.json
  • deflate-branch-observations.json, retaining the source and report hashes
  • coverage-compare-deflate.json, retaining Coverage MCP's comparison result

AVIF CDEF and Wiener stripe boundary parity — 2026-11-01

decode:avif:coverage_i420_intra_cdef_restoration_10bit_16x64 is an ordinary 10-bit I420 key frame combining active luma CDEF with Wiener restoration. Its 64-row height crosses the first 56-row restoration stripe boundary. This checks the handoff between post-CDEF samples inside a stripe and saved deblocked rows in its halo, with CDEF disabled for the chroma planes.

Pinned libavif 1.4.1/libaom 3.13.2 encodes are repeated and required to match. The source SHA-256 is 7d30b4c3eb9b0157a01e54afa6b011dfb54701ebfd919a5ddc52f047474e3bc6, the AVIF SHA-256 is ccf7cb2dc6c81749955e09853587f7b1047e3c89b17f2832a4196303d8302727, and the 3,072-byte Pillow 12.2.0 RGB reference SHA-256 is a6535b59e9da0eb66ee1bf768e080739bc8d88b2afc9554388b7620849900f1e. The generator pins CDEF damping 5, Y strength 47, UV strength 0, and one Wiener luma restoration unit; no deblocking or super-resolution is enabled.

The exact selected public parity row passed 1/1. Its LLVM report records three calls to restore_striped_plane, six stripe iterations, and both saved halo paths. No production decoder behavior or unit test was changed. This selected run does not replace the complete baseline; Coverage MCP marks the local report source as unverified and test attribution as unknown.

Coverage MCP's incremental region comparison with the earlier full baseline returned incomparable: its detailed baseline regions do not reconcile with the reported totals. The comparison is retained without a coverage-gain claim; the selected parity result and observed stripe execution remain separate evidence.

Reports:

  • .coverage-mcp/local-evidence/selected/20261101T055203.084075Z-b6be961d1182457284ae5e61ab17af7d/coverage.json
  • .coverage-mcp/local-evidence/selected/20261101T055203.084075Z-b6be961d1182457284ae5e61ab17af7d/coverage.local-evidence.json
  • .coverage-mcp/local-evidence/selected/20261101T055203.084075Z-b6be961d1182457284ae5e61ab17af7d/coverage-compare-restoration.json

CDEF output reuse benchmark rejected — 2026-11-01

A candidate removed the second CDEF plane clone and wrote filtered blocks into the consumed canvas. Two A-B-B-A sequences compared immutable release executables on an Apple M3 Pro with Rust 1.96.1 and all features. The timed boundary was decode_sequence through output drop, excluding file I/O. Each cohort used 200 warmups and 4,000 samples for color inputs or 1,000 samples for the larger monochrome control. Source, binary, input, and reference hashes are retained with every command and raw sample file.

Median changes across the four cohorts for each executable were:

Fixture Candidate latency change
I420 CDEF 16x16 +3.46%
I420 CDEF 9x16 +0.34%
I422 CDEF 16x16 +3.24%
I420 CDEF/restoration 16x16 -0.99%
I420 restoration without CDEF, control +2.64%
Monochrome CDEF 128x64, control +0.46%

Positive changes mean slower calls. The candidate did not establish a repeatable latency gain, and untouched controls also drifted. Its source change was reverted exactly. Candidate parity was not run after the timing rejection; these measurements are a rejected local experiment, not a verified speed improvement or an SSE2/AVX2 result.

Report: .coverage-mcp/local-evidence/performance/cdef-output-reuse-20261101/report.json.

AVIF redundant-frame-header guard parity — 2026-11-01

Added four cases from animated_lossless_inter_420_derived_skip_refs_b32x32_64x64.avif. The size-preserving decode:avif:error_animated_redundant_frame_header_with_pending mutation replaces the first OBU_FRAME with an OBU_FRAME_HEADER, its matching OBU_REDUNDANT_FRAME_HEADER, and OBU_PADDING, leaving a pending frame without tile data. The decode:avif:error_animated_redundant_frame_header_without_pending mutation replaces it with OBU_REDUNDANT_FRAME_HEADER and OBU_PADDING without an original frame header. Their fixture SHA-256 values are 46c2a6f033820f828209f9a81ef8da4318c5f3255cee99d866321ce4635a86d5 and 9c29fa97ff57041eb15a7b49a067b2fb2f6f141f003a835d7a786089d1c2dee8. The decode:avif:error_animated_frame_header_before_tiles case repeats the ordinary frame header before tile data; the decode:avif:error_animated_redundant_frame_header_mismatch case changes the redundant header's order_hint. Their fixture hashes are 380c025386ee770a6573d88fa1bdf12adbe345149026c46a3aee78c922f06c78 and 4e004fa44966ae7fc63f2ce5214283e4138e8cc6658e12fcf7b38fbd0b9897b0.

Pinned Pillow 12.2.0 rejects frame 0 for all four cases, and the selected public Rust parity rows passed 4/4 with the same malformed outcome. The combined six-case selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T224014.242315Z-28db627af2da40cba9d691d9eccd2fc7/coverage.json (SHA-256 2bd95f92f0796bcc7e855995cd55363a6550a81c6342120e8ad96fbc7c4f5068); its local receipt SHA-256 is 0bbf85abbbc3ba5adac6974ce2cdbae31b14bbcd0f344e25161ad2d4644c40b7. The selected mapping records the Some/None paths at line 1230 as 6/3, the matching/mismatched header paths at line 1248 as 3/3, and the pending/not-pending paths at line 1253 as 3/15. It also records temporal-layer comparison outcomes at line 1387 as 3/9 and spatial-layer comparison outcomes at line 1388 as 3/6; the mismatch rejection at line 1390 ran 6 times. LLVM emits duplicate zero-count mappings for these branches. Coverage MCP was unavailable, so this is local selected evidence without managed attribution or an aggregate coverage claim. No unit tests or production Rust changes were added.

AVIF tile-group layer identity parity — 2026-11-01

Added decode:avif:error_animated_tile_group_temporal_id_mismatch and decode:avif:error_animated_tile_group_spatial_id_mismatch from animated_opidc_0x101.avif (SHA-256 25b79a856ea2767e02e5a509f72e7af3f9563202301779be65b0745724ab23be). Each mutation expands the first operating-point IDC to admit two layer identities, then splits the first OBU_FRAME into an OBU_FRAME_HEADER and a tile group whose temporal or spatial ID differs from the pending frame. Both preserve the AVIF and sample lengths. Their fixture hashes are 0c23f3e5db7b1d9d7150144f5204044c2bee0804edd6eb022148fc7a4ef4a1d9 and 2c23b60cc7f4e5951b24ba1309aa7ec1afda18fd97b74d66b54e982899a6963d.

Pinned Pillow 12.2.0 rejects both at frame 0 with its color-plane decode error. Both public rows passed in the combined six-case selection above (6/6 total). That selection covers the temporal comparison at frame.rs:1387 in both directions and the spatial mismatch at line 1388. The preexisting full report showed only matching layer identities at these comparisons; this selected report is kept separate and is not presented as a merged aggregate. Coverage MCP returned Transport closed, so this remains local LLVM evidence without managed attribution. No unit tests or production Rust changes were added.

AVIF sequence-header UVLC limit parity — 2026-10-31

Added decode:avif:error_animated_equal_picture_interval_uvlc_32_leading_zeroes to exercise the public AV1 uvlc() boundary with a complete animated AVIF. The deterministic mutation sets the first equal-picture interval value to 32 leading zeroes while preserving the BMFF sample layout. The fixture SHA-256 is 842854d4e586bf3b84607f45c85479cb37c3357a78296b7bf39da5ad71ad74e8. Pinned Pillow 12.2.0 opens the five-frame container and fails loading frame 0 with RuntimeError: Failed to decode frame 0: Decoding of color planes failed; the selected Rust parity row passed 1/1 with the matching malformed outcome.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T211948.321091Z-d295b971f2584401b7b0fcd54827a080/coverage.json (SHA-256 1649e225367edcec6c54eee8060d0dad1ea399ecbeb7b5f02a915c85f3b79356); its local receipt SHA-256 is 78aaedd311fd848818990485f6345bdf7b72a5c228558e380b025e0f96db5ba0. At src/codecs/avif/av1/bit_reader.rs:243, the report records the true arm three times in one LLVM mapping and a second zero-count mapping for the same branch. These are selected-run counts, not whole-repository totals. Coverage MCP returned Transport closed for this report, so the result is local evidence without managed attribution or an aggregate coverage claim. No unit tests or production Rust changes were added for this case.

AVIF nonuniform tile-grid parity — 2026-10-31

Added decode:avif:error_nonuniform_tile_grid_tile_group_mismatch and decode:avif:error_nonuniform_tile_grid_ns_threshold_false from the pinned uniform_tile_rows_monochrome_256.avif input (SHA-256 782568b37a63b44e632aee68896bcee3c59c5492081c7ac2ac6a31fc0ca1df37). The first fixture clears uniform_tile_spacing_flag, making the header describe a nonuniform 2×4 grid while the encoded tile group retains its 1×4 layout. The second also sets the first ns(3) prefix bit, selecting the extended-value arm and a 2×3 grid. Their fixture hashes are 31f9bc09f7a52b56a9059a51d96c464bad715135557bfbf649c38501f55d6411 and b7a9dc5b14f8115b21f131700351a26cb679f6c23ded975a47489291e074f9fa.

Pinned Pillow 12.2.0 opens both files and fails loading frame 0 with RuntimeError: Failed to decode frame 0: Decoding of color planes failed. The public Rust parity selection passed 2/2 with matching malformed outcomes. Its LLVM report is .coverage-mcp/local-evidence/selected/20261031T213419.047311Z-a534b74bb4ce4fedbcbf26de1b348cfb/coverage.json (SHA-256 2865aceb69ac8180336bea8ed0207f93d8788fe8f97c32a775386dae26325f21); the local receipt SHA-256 is 092f1f576cec2a52837c7b2ff25fd15f37b44df803c9b5c0944d95e8910ae037 and records no source or fixture changes during the run. At src/codecs/avif/av1/bit_reader.rs:143, the count <= 1 outcome remains unobserved while the other side ran 27 times. At line 149, both ns() threshold outcomes ran (24 true, 3 false). Coverage MCP returned Transport closed for a selected-report query during this session, so these remain local selected-run counts without managed attribution or a whole-repository coverage claim. No unit tests were added.

AV1 global-motion subexponential endpoint parity — 2026-11-01

Added decode:avif:animated_lossy_global_subexp_endpoint_i444_b128x128, a deterministic same-length mutation of the existing four-frame RotZoom AVIF. The frame-2 global-motion parameter reaches the terminal ns() arm in BitReader::subexp while preserving the AV1 frame-header and tile-data boundaries. Pinned Pillow 12.2.0 decodes all four exact RGB frames; the separate pinned libavif 1.4.1 observation also decodes all four and records the existing infinite-repetition behavior. The selected public parity run passed 1/1.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T214641.701534Z-11d75f008d7d4eef85e8011ae0410890/coverage.json (SHA-256 471112a0d0d31d215b0a481f89dc90d46d941f2cb1fde13f32e70c8869871c3f); its local evidence receipt SHA-256 is b67bf5a0167277d1bdd2846bb7fdaaaadd56f5f57ba51c42495ea2edeb33d003. At src/codecs/avif/av1/bit_reader.rs:191, the selected report records the previously unobserved terminal outcome once (106 non-terminal outcomes in that mapping). This is selected-run evidence, not a full-suite coverage result. Coverage MCP returned Transport closed for the report query, so no managed attribution or aggregate coverage claim is made. No production Rust code or unit tests were added.

AV1 frame-before-sequence-header parity — 2026-11-01

Added decode:avif:error_animated_frame_before_sequence_header. The deterministic generator changes the first frame sample's sequence-header OBU to same-length OBU_PADDING, leaving the following frame OBU before any AV1 sequence state. Pinned Pillow 12.2.0 rejects frame 0 with its existing RuntimeError: Failed to decode frame 0: Decoding of color planes failed contract; the selected public parity row passed 1/1.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T215751.068273Z-7a83c84d5c2348a69f4578f4835febf7/coverage.json (SHA-256 56160ed9d4dfd4f67099b23fb0260e55fc3645771de2300ad25c7a281d451746); its local receipt SHA-256 is 11caa264eb9f113243f1598fbb06cfeebe677b035bf17641f91d115ac7095df2. The selected report records the missing-sequence error arm at src/codecs/avif/av1/frame.rs:937 three times. A retained earlier full local report also showed hits for that arm, but it has no source/build receipt that binds it to this selected run, so no aggregate coverage increase is claimed. The deeper begin_frame guard at line 1226 remains unreachable through this public input: the OBU-admission check rejects it first. Coverage MCP returned Transport closed; these counts are local-only. No production Rust code or unit tests were added.

Coverage gap triage — 2026-10-31

The source-matched public parity report .coverage-mcp/local-evidence/selected/20261031T114852.863923Z-addc0604926f4f39a298fa98bc588d3e/coverage.json ran 2,891 active rows (2,345 decode and 546 encode); all passed. Its source manifest hash matches the current checkout at 1e2a75755c7341b6d14d426996680a9c8e1a000e586825241e4d86b089a3889e. The remaining active row, decode:avif:alpha_item_icc_profile_ignored, passed in its own selected run above with the same source manifest and target. A local coordinate union adds two branch outcomes, from 18,749/32,492 to 18,751/32,492. This union is local evidence, not a Coverage MCP measurement or a single full-matrix run.

Coverage MCP returned Transport closed for the current gap query. Local inspection found defensive branches in the AVIF container's second parsing pass that have no distinct public outcome: the existing parity cases error_iinf_child_not_infe, error_ispe_zero_width, error_ispe_zero_height, error_animated_duplicate_minf, and error_animated_duplicate_stbl are rejected during the earlier sample validation pass, before the second pass can reach those guards. No case was added solely to execute those private branches. The 100% coverage goal remains open; other gaps still need triage.

The existing TIFF parity row decode:tiff:error_lzw_invalid_first_token_checkpoint was also run by itself and passed 1/1. Its source-matched report records the invalid initial-code outcome at decode.rs:3562 and :3655; the separate already-full-output outcome remains unobserved. No distinct Pillow-visible input for that guard was established, so no duplicate case was added. The report is .coverage-mcp/local-evidence/selected/20261031T122220.769882Z-1ac0025535144f09bdab10c3b765f3df/coverage.json (SHA-256 23a4d36d8d5f53e45bee5e2ecd7158d789ff4464afc9f4fe7456b5fd85fc206b); its local receipt SHA-256 is b009851d7efbb013c38275e6dff8c6567429686b4d679d5694a84225d3d4bf16.

Added decode:jpeg:ycck_fractional_vertical_3x2_sampling after the full report showed no true outcome for the vertical YCCK sampling-ratio check at src/codecs/jpeg/decode/decode.rs:1134. Its deterministic complete-file JPEG uses 2:3 luma/black and 1:2 chroma sampling. Pinned Pillow 12.2.0 rejects pixel loading with OSError: broken data stream when reading image file; the selected public parity row passed 1/1 with the matching malformed error category. The fixture SHA-256 is a2bbff78c082139a2760232d613216f6a3f799b5770a30bc7f51bccd0da960b1.

The selected report is .coverage-mcp/local-evidence/selected/20261031T123218.880013Z-8dd1d2deef3a4dd7baa8cd912b9d36ef/coverage.json (SHA-256 89836811921dc7bab7b11b8e6c2bc12b05f47b5301907a269bb4e59f3574f6d2); its receipt SHA-256 is 77841d4c7e2c200775bdd57b959fd31f946eeaea3cd9e5b9b37dcb7ad0a79455. Its report records both branch outcomes at line 1134 (3 true, 3 false); the earlier full public report records 0 true and 183 false there. Both reports have the same source-manifest hash, Rust source-file hashes, target, instrumentation, features, target-directory identity, and 32,492-branch denominator. Full-report totals are 93,451/144,616 lines, 18,749/32,492 branches, 5,054/9,327 functions, and 142,425/224,412 regions. The one-row selected report covers 1,545/144,616 lines, 189/32,492 branches, 129/9,327 functions, and 2,154/224,412 regions; these are selected-run totals, not a full-suite result. Coverage MCP returned Transport closed for the gap query and the first incremental comparison attempt. I then reran the parity row with the baseline's absolute target-directory identity; MCP has not returned a comparison for that aligned report. This remains local source-matched evidence without MCP attribution or a managed aggregate union. No unit tests ran.

Added encode:webp:enc_lossy_rgba_alpha_zero_palette_gap_token for a transparent 121-value alpha palette with both small and large palette deltas. The deterministic 512×512 PNG fixture has SHA-256 0d5a554fec44c2de7f6e04f7c03f7c4fa9da67fb5acbc6cbd392a91cedd3d168; its pixel bytes hash is 7c8bee506bf44fffd787780a3324fe9090a06062e486d4552246cb0680752dd2. Pillow 12.2.0 produces a 650-byte WebP reference with SHA-256 f28f4b210e224dbdc8cdfc8b7def089847ae19b029b58fc40b98b9a0088f57e8. The selected public encode parity case passed 1/1 and exercised the ordinary, sink, and token-aware encode paths.

Its LLVM report is .coverage-mcp/local-evidence/selected/20261031T124737.010668Z-be682779a72d4fbda61117b7b88a6a18/coverage.json (SHA-256 b99e4d4ea9cf1309df3af129039ec38c3f209700c4d0f4e0f9bb9cae1eaa7577); the local evidence receipt SHA-256 is 472b0307f77a48d98c2afeca8a6fb6e7cb29eb9022ade18a0edda0d7ffa8be2e. Against the matching full public report, the first true outcome for palette_values[0] == 0 at src/codecs/webp/native/encoder.rs:3431 is recorded four times, and the true outcome of the 64-candidate checkpoint at line 3452 is recorded 57 times. The full report had no true outcome for either branch; source-manifest and encoder-file hashes, target, toolchain, target-directory identity, and branch denominator match. Coverage MCP returned a Transport closed error for both the gap query and incremental comparison, so this is source-matched local evidence without managed attribution or an aggregate coverage claim. No unit tests ran.

Added encode:gif:enc_rgb_low_color_token_checkpoint for a token-aware 33×33 two-color RGB image. The selected public GIF parity case passed 1/1, including exact Pillow bytes and re-decoded pixel parity. Its local LLVM report records both outcomes of the token checkpoint conditions at src/codecs/gif/encode.rs lines 1311 and 1343, with the checkpoint arm taken once in each loop at pixel 1024. The earlier local all-public-parity report .coverage-mcp/local-evidence/full/20261031-current-all-public-parity/coverage.json (SHA-256 086f373d8dfa08b309e027832922b421b60eae7ff6c7e0326fc093d3a8996f1d) records no taken checkpoint outcome at either location; its GIF encoder source hash matches this selected report. Their local source-file coordinate union adds two observed branch outcomes, without establishing current whole-matrix coverage. The fixture SHA-256 is fa3e4abe97d4e9ad76d9326571fe279878f9d4dc7a53d6e7507df07f90ea48cd. The report is .coverage-mcp/local-evidence/selected/20261031T134635.726253Z-7202311c8f19489aad1b1ccb3d19a98c/coverage.json (SHA-256 a7eff4da144f24e452be81b8efb9756672111b7bfd8417af2b51bd2f4dab6213); its local receipt SHA-256 is 20b565e28b272673ca687d2dac3efb167f6a02744e94474a4c1feb10380cee93. Coverage MCP again returned Transport closed, so this is local selected-case evidence only; it is not a managed measurement or aggregate coverage claim. No unit tests ran.

Added encode:gif:enc_rgba_single_color_token_partition_base for a 33×33 single-color RGBA input. Its selected public parity case passed exact Pillow GIF-byte and re-decoded pixel comparisons. The local report records the true outcome of left_length <= 1 at src/codecs/gif/encode.rs:2547 once; the prior local all-public-parity report recorded zero true and 28 false outcomes. The GIF encoder source hash matches across those reports, so the local source-file-coordinate union adds one branch outcome. Fixture SHA-256: cbd18abee6ca2801675d763c078349b173d8f4148f8ab60f56f98f5cae65bd58. Selected report: .coverage-mcp/local-evidence/selected/20261031T135715.020282Z-40a3b6ccb0484151be3a29394c647132/coverage.json (SHA-256 a8f2c13e5aaadc4bff342467b32ad4ae5b44a42c9162ec2bc028b18c3f5728f1); local receipt SHA-256: 82dcfd207d3375832e92c7bfef1b54d45a1c908f76844b5e5a6b4fa5a5a98267. Coverage MCP returned Transport closed; this remains local selected-case evidence without an aggregate coverage claim. No unit tests ran.

Ran all 162 active target-side fault-contract rows (AVIF 101, TIFF 33, JPEG 13, BMP 5, PNG 5, WebP 5); all passed. The BMP allocation contracts include the public error and successful Pillow-parity retry. The selected LLVM report records the previously missing true outcomes at src/codecs/bmp/decode.rs:164 and :720 once each; the source-matched public report recorded 0 true / 100 false and 0 true / 61 false respectively.

A local coordinate union restricted to 97 source files whose SHA-256 matches both receipts and the current checkout adds 400 covered branch outcomes, from 17,572/30,148 to 17,972/30,148. The wider source-manifest hashes differ, so this is not a whole-matrix coverage union. Coverage MCP returned Transport closed for the incremental comparison; no managed attribution or aggregate coverage claim is made.

Selected report: .coverage-mcp/local-evidence/selected/20261031T140947.812054Z-ea50004fb5044154940050080a07e054/coverage.json (SHA-256 097eb8c5f3cd01e81bf94635351cea3eb3069e564552327f6b1893f98bd692e6); local receipt SHA-256: 59d4f6da1a8efd13e256ed71279ce55326e907cb6a38f3769bcb134910ce916a. No unit tests ran.

AV1 color multi-tile super-resolution parity — 2026-10-31

Added active parity row decode:avif:coverage_color_multitile_superres_8bit_256x64 for an 8-bit full-range I420 still with two tile columns and AV1 super-resolution from coded width 228 to output width 256. The AVIF fixture SHA-256 is 5a1c05d8f225ef1c73f73010089ab0d5ddf7e495620f117673321a248e71b044; its exact 49,152-byte RGB reference SHA-256 is 42703be2059382a9c3dce70c4795ea5e085fcd87e30ca361d9bfc443213273f3.

The selected public parity row passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261031-avif-color-multitile-superres-padded/coverage.json (SHA-256 70359916c47ea228f261e4ceb0ffd8ca26be3313b294809e09d8cdefaebce388); its local receipt SHA-256 is 517f6d29373f35ec83356c6fe5f0a15217128e2939b31723d05e615c72c54ab6. The receipt records unchanged source and fixture identities during the run. The selected report records the true outcome of pending.header.superres_enabled at src/codecs/avif/av1/frame.rs:1682 three times.

This case exposed a multi-tile reconstruction defect: assembly cropped each tile to visible width before super-resolution, while the resize filter can read the padded coded tail. Color tile assembly now retains each tile's padded source extent through filtering and resizing. The new case and the existing multitile_color_split_groups and multitile_skipped_cdef_color_alpha rows passed together, 3/3, with exact pixel parity. The regression report is .coverage-mcp/local-evidence/selected/20261031-avif-color-multitile-superres-regressions/coverage.json (SHA-256 a58d2514bf14ecaf91af6f4f90053193f22fb2acedc16d58372a139215c4c945); its local receipt SHA-256 is 6b176fb5af01cd6a2f8ae375f9b1f5b236fa0769e02287c491eac0229932cd96.

A fresh all-feature LLVM coverage run passed and is retained at .coverage-mcp/local-evidence/full-20261031-unknown-top-level-box/coverage.json (SHA-256 c2e7f97488df2b4e7db6a17e1f6eb729a85bac5c7ac347b81a1f8e8d5781c20d). It records 99,469/140,549 lines (70.7718%), 19,860/31,520 branches (63.0076%), 5,528/9,017 functions (61.3064%), and 151,708/218,036 regions (69.5793%). Coverage MCP returned Transport closed; this is local LLVM evidence without managed source attribution. The 100% goal remains open. No codec unit tests were added.

AVIF unknown top-level box parity — 2026-10-31

Added active row decode:avif:unknown_top_level_box_ignored. Its deterministic 379-byte fixture appends a bounded 12-byte zunk box after the complete 8×8 lossless I420 still. Pillow 12.2.0 preserves the exact 192 RGB bytes. Fixture SHA-256: ebd1e037026559f6a2f7dc12271c94a7440b2c06c79843eed5380afb92072d64; RGB reference SHA-256: 8099fa1157400c228f24ce0e41a6f9c59cc73c8be02953024a92761dba0db709.

The selected public parity run passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261031-avif-unknown-top-level-box/coverage.json (SHA-256 25ef24f3682d3e8650e3c9e0d784e2b52ca6f0f950d54b9e1d3e140a4e1e55f0); its local receipt SHA-256 is 87137c0030806c4f9e6ce3223e195c056359ebda73499e3b9f27c14c3cb0fb7e. The selected report records the unknown-box fall-through at src/codecs/avif/samples.rs:2915 four times. The case adds a public input witness for this box form; it does not change the full report's aggregate coverage totals.

Auxiliary-item ICC metadata parity — 2026-10-31

Added active public parity row decode:avif:alpha_item_icc_profile_ignored. The fixture associates the pinned prof ICC property from icc_profile.avif with only the auxiliary alpha item in alpha.avif; the AV1 payloads are unchanged and both file-backed item extents are relocated. Pillow 12.2.0 accepts the full 6,476-byte AVIF and returns the same 16,384 RGBA bytes as the source image. Fixture SHA-256: 4dfa9e87d65e9365b3e38ab13e67bdceadd9b8eb5ddef273da03eb3057b553d3; decoded pixel SHA-256: 7b62ff36a098d8bdea49e0b72c834b6fd3e4e04f70d884eee274fc69ed869ddd.

make coverage-selected COVERAGE_CASES='decode:avif:alpha_item_icc_profile_ignored' passed 1/1 active parity rows, with no fault-contract rows selected. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T115701.863084Z-64a314be74a24678a7a1b3857cbadd0c/coverage.json (SHA-256 bf5c6f91f25ff11ebbb6d1207655c090da1b0892ac70a537a25d39798c05b47f); its local evidence receipt is SHA-256 2a39ef48184bbe15f4c1b22d395b5afd682b8e2437a0f93b7e83f98eb2254d57. A local comparison with the prior full public run (2,891 active rows) has matching Rust source identity, target, and 32,492-branch denominator. It finds two newly covered branch outcomes: non-empty non-primary ICC projection at src/codecs/avif/container.rs:1123 and descriptor propagation at src/codecs/avif/decode.rs:116. Their union is 18,751/32,492 branches, up from 18,749/32,492. Coverage MCP returned Transport closed; this is local selected evidence and does not claim a managed snapshot or a fresh full-suite run.

10-bit I422 intra CDEF and restoration parity — 2026-10-31

Added active parity row decode:avif:coverage_i422_intra_cdef_restoration_10bit_16x16 for a valid 16×16 10-bit I422 key frame with one CDEF strength set and Wiener restoration on luma. The pinned normal libaom encoder emits both filters without the fixture-only patch used by the separate I420 SGR case. Pillow 12.2.0/libavif 1.4.1 decodes 768 exact RGB bytes. AVIF SHA-256: aa368cf810ef5d48ce300f3582f9574744a1929beeb5525497675176b6b8beac; RGB reference SHA-256: afb7a71a8c86bf53df63a3735752e299ced6712e8b718cf4725fb3a2b61eaec6.

The selected public parity run passed 1/1 with exact 768-byte RGB8 parity. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T114414.774704Z-90300a4cf42540e8801bbdc45efce653/coverage.json (SHA-256 feb1523b659857bb0843b099bb451465290f36e2dfe74f651187869855c929eb); the execution receipt is .coverage-mcp/local-evidence/selected/20261031T114414.774704Z-90300a4cf42540e8801bbdc45efce653/coverage.local-evidence.json (SHA-256 85a86eac52f692d521ba84b16b5ade88a92347f00bf16ac0e8a01134095599ad). The selected report records the intra side of the I422 CDEF || restoration admission at entropy.rs:10851 three times; the earlier full public-parity report, which predates this case, records only the other side there (1,976 hits). Both local receipts report the same entropy.rs source hash. This is a source-matched local coordinate union, not a full-suite or Coverage MCP measurement. Coverage MCP returned Transport closed; no unit tests ran.

AV1 screen-content sequence-flag parity — 2026-10-31

Added active parity rows decode:avif:animated_screen_content_tools_disabled and decode:avif:animated_integer_mv_disabled for the missing selector outcomes in sequence.rs. The first fixture fixes screen-content tools off and removes the now-absent per-frame flag while preserving tile payloads; the second retains selectable screen tools and sets the explicit integer-MV value to zero. The fixtures are SHA-256 d0c88a39ca31c30f56afa5540505d7e20892ed0d9d5339ff843cdf6d9040a357 and 47b3767081913f190e0473842a466a9a81ae4acce5e5099c323c9793187cdcce. Pillow 12.2.0 decodes both with the same five exact frames and 33 ms timing as the source; the independent pinned native observer reports infinite repetition.

The selected public parity run passed 2/2. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T103842.788936Z-e076f8b34a45491a86231c593c1b451f/coverage.json (SHA-256 48035173c8c951419b1ad0a789011a2b033cf6225dd2882f33383ea021ce504c); the execution receipt is .coverage-mcp/local-evidence/selected/20261031T103842.788936Z-e076f8b34a45491a86231c593c1b451f/coverage.local-evidence.json (SHA-256 011343789803c2ad8443f24ac11e54196eae3c548169ef3f1771ced087301cf2). In the selected report, sequence.rs:270 and :275 each record both outcomes, and :276 records the false selector outcome twice. Coverage MCP returned Transport closed for the gap query, so these are local selected-run results, not MCP attribution or a full-repository coverage measurement. No unit tests ran.

AV1 short sequence-header payload parity — 2026-10-31

Added active parity row decode:avif:error_animated_sequence_header_short_payload. Its generator shortens the first sequence OBU by two bytes and uses those bytes for a zero-length OBU_PADDING, preserving the sample length and BMFF offsets. The second sequence header remains intact. Fixture SHA-256: 801608c817468a05bbf62f04ebee2cf5fbe324296c48e98560e7f74350357197. Pillow 12.2.0 fails while loading frame 0 with Failed to decode frame 0: Decoding of color planes failed; the Rust public decode path returns the typed malformed AVIF result after a bounded read past the shortened sequence payload.

The selected public parity run passed 1/1. Its LLVM report records both outcomes at src/codecs/avif/av1/bit_reader.rs:105, including three reads that exceed the OBU payload. The report is .coverage-mcp/local-evidence/selected/20261031T110054.971190Z-f9abe410a4a14c90ae1a0f31e578b01e/coverage.json (SHA-256 aae8efa20a839ec6d73b9d4a3ac35ce14cf1721ae3515f63766dddd488ffd178); its receipt SHA-256 is e2cea0a5f68ddc5533010e44ad9eda7c9e45836cb3e5d2673118ef54af1e6afe. Coverage MCP returned Transport closed for the focused branch query, so this is local selected-run evidence without MCP attribution or a full-suite coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 BT.709 transfer-characteristic parity — 2026-10-31

Added active public parity row decode:avif:animated_transfer_characteristics_bt709. Its deterministic five-frame 64×64 RGB AVIF carries CICP values 1/1/6: BT.709 primaries and transfer characteristics with the BT.601 matrix. The sequence header remains an ordinary 8-bit 4:2:0 AV1 header. Fixture SHA-256: 8b7c981b052241b55112e6ae3ce64b00681c101a25c7d9bd9c9091d727417af2. Pillow 12.2.0 and pinned libavif 1.4.1 decode all five exact RGB frames at 33 ms; the independent native observer reports infinite repetition.

The selected public parity run passed 1/1. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T095637.229277Z-94cba16d6ab042808ecd28a357c4dda7/coverage.json (SHA-256 1dd7df9cd507c60a7b98925856c322e9111cb2fe3c9be406247fdf42b652dfd7); the execution receipt is .coverage-mcp/local-evidence/selected/20261031T095637.229277Z-94cba16d6ab042808ecd28a357c4dda7/coverage.local-evidence.json (SHA-256 d528800b599a9e555c0564e3d28ed8830f8ce36a149064ff8f657bdf2f53f468). Both report inputs remained stable during execution. The selected report shows the false side of the transfer_characteristics == 13 check at sequence.rs:325 three times; the retained 835-case AVIF report has 1,293 true-side hits and no false-side hits at that coordinate. Across seven source-matched local reports, the sequence parser's branch-outcome union is 97/106, leaving nine outcomes uncovered. Coverage MCP returned Transport closed for the gap query and incremental comparison, so these are local measurements, not MCP attribution. No unit tests ran.

AV1 order-hint-disabled public parity — 2026-10-31

Added the active public parity row decode:avif:animated_order_hint_disabled. Its deterministic five-frame, 64×64 RGB AVIF uses ordinary AV1 sequence headers with enable_order_hint=0; the generator clears only BMFF creation/modification timestamps. Fixture SHA-256: 565363788fd1a30cc51b2f3f3d4852a447292646de0b37ab81589590a93e706d. Pillow 12.2.0 and pinned libavif 1.4.1 both decode all five 33 ms frames; the independently compiled libavif observer reports infinite repetition.

The selected public parity run passed 1/1 and retained exact RGB references. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T094727.789608Z-cb2ab3e25ef943ada7b483dd5d2b9f3c/coverage.json (SHA-256 3bd0ca3c0a4e5ea57c27e5754aaad84cb120dff19d4437b75504976add88a0a9); the local execution receipt is .coverage-mcp/local-evidence/selected/20261031T094727.789608Z-cb2ab3e25ef943ada7b483dd5d2b9f3c/coverage.local-evidence.json (SHA-256 a1c063d7b7de2e820c697abb2f14de787eb71032389de43344d048c4b578d714). The receipt records stable source and fixture inputs during execution. In the selected report, sequence.rs has 31/106 covered branch records; lines 268 and 269 take the enable_order_hint false side three times each. The retained 835-case AVIF report had only the true side at those coordinates (450 hits, zero false hits), so this is a new parity-reachable branch outcome. These are selected-run figures, not full-repository coverage. Coverage MCP returned Transport closed for both the gap query and incremental comparison; this is local evidence, not MCP attribution. No unit tests ran.

AVIF encoder option-rejection parity — 2026-10-31

Promoted four Pillow-backed public error cases to active parity: invalid subsampling, the rejected 444 alias, invalid range, and the decoder-only dav1d codec. All four pass through the public AVIF option parser with the expected structured parameter errors before the unimplemented valid encoder path. The selected integration parity run passed 4/4 rows with four public encode calls and no panics. AVIF now has five active encode parity rows and 27 planned encoder rows; this does not establish valid AVIF encoding support.

The local selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T083615.570074Z-46e71977acec41069cdcc45849b07f1f/coverage.json (SHA-256 b270554b7d70455a2a15c1aaff4541d437d5cc633bc71a74066d9ed4569bb491); its receipt is .coverage-mcp/local-evidence/selected/20261031T083615.570074Z-46e71977acec41069cdcc45849b07f1f/coverage.local-evidence.json (SHA-256 0b29aa74101eda5c512dfbe21835b1064ac6efd05323ffe057a28fe7a2a0b0bc). Coverage MCP returned Transport closed for this report, so these results are local selected-run evidence only, not MCP attribution or a full-repository coverage measurement. No unit tests ran.

The complete active AVIF matrix then passed 835/835 rows: 830 decode rows and five encode-error rows. Compared with the previous 831-row AVIF selection, the four newly active option cases added 26 covered source lines, 24 regions, and one function; the selected branch count did not change. Its report is .coverage-mcp/local-evidence/selected/20261031T084427.545666Z-485e0356e2dd4e5eaef3b2d8b5402dfc/coverage.json (SHA-256 4e1804aaa6b54fde293b894e2ed7098e059c44a9704d552a25bc0a95da3f371f), with receipt .coverage-mcp/local-evidence/selected/20261031T084427.545666Z-485e0356e2dd4e5eaef3b2d8b5402dfc/coverage.local-evidence.json (SHA-256 aa48ecaaae3541af54784040cf2645e2cffe850e79cb21cb858cd32360eee0d4). The receipt confirms the matrix and source were stable during execution.

AVIF still-mux native parity — 2026-10-31

The exact integration parity case avif_mux::still_mux_matches_complete_independent_native_files passed 1/1 and checked all 28 complete native mux cases against the Rust still-container writer, including repeat writes and output-size limits. In this selected test only, src/codecs/avif/encode/container.rs covered 451/501 lines, 99/142 branches, 28/49 functions, and 860/1,064 regions. The local report is .coverage-mcp/local-evidence/selected/avif-mux-native-parity-20261031083949Z.json (SHA-256 6d5c95e112ab80ab470a80d0c906a4d91572791f9eb3499db9a97da13aa17d53). These figures are a focused report for that parity test, not full-suite coverage or proof that public AVIF encoding is implemented.

AVIF ICC full-range 4:4:4 pixel parity — 2026-10-31

The complete active AVIF parity selection exposed five ICC and mastering- display fixtures that the portable decoder rejected. Their container CICP is 2/2/6: primaries and transfer are unspecified, while matrix coefficients select BT.601. Added admission for this observed 8-bit, full-range, 4:4:4, no-alpha class in portable_color_conversion; it reuses the existing BT.601 converter, with no change to the per-pixel loop. The five rows icc_profile, icc_ricc_type, icc_mdcv, icc_mdcv_trailing, and duplicate_mdcv_first_wins each passed exact 48-byte RGB parity.

The complete selected AVIF run passed all 831 active rows: 830 decode rows and the active invalid-quality encode row. The local LLVM report is .coverage-mcp/local-evidence/selected/20261031T082030.433884Z-19ab5338b2bd45adbdebab9746728498/coverage.json (SHA-256 0695f404c223aaf6a38e33af9a6aabeeb266beefa2899e50023f888a5bed15f); its receipt is .coverage-mcp/local-evidence/selected/20261031T082030.433884Z-19ab5338b2bd45adbdebab9746728498/coverage.local-evidence.json (SHA-256 25a502c1e74789fa6375b1414e230d99742c1a18412dfd44f8948eeb35ae48a1). The receipt reports stable source and fixture state during the run. Coverage MCP returned Transport closed, so this remains local selected-run evidence, not MCP attribution or a full-repository coverage result. No unit tests ran.

AV1 sequence-header syntax-error parity — 2026-10-31

Added active parity rows decode:avif:error_animated_reduced_header_nonstill, decode:avif:error_animated_invalid_operating_point_idc, and decode:avif:error_animated_initial_display_delay_over_10. Each fixture changes the first sequence header of the five-sample animated_decoder_model_parameters_change.avif. The first sets reduced_still_picture_header while still_picture remains clear (SHA-256 61d55ddcaafde6347e60cc7b9ffe4e2c18ac448f85e14c8d3b6a9a2f0056ff6f); the second changes operating_point_idc from zero to temporal-only value 1 (SHA-256 d5553ed290d398d26ef3e731c98e4bee6b2d8d06b8a00dd4c876d851c61196c0); the third sets initial display delay to 11 (SHA-256 5b1c2097577d75e116016f0760f6c589c12e1304fb42e7ef9a2c982f020b555a). Pinned Pillow 12.2.0 opens each AVIF and fails loading frame 0 with Failed to decode frame 0: Decoding of color planes failed. Rust public decode and decode_sequence return the typed malformed AVIF contract. The selected public parity run passed 3/3.

The local LLVM report is .coverage-mcp/local-evidence/selected/20261031T074426.293493Z-aaa6dabc6484430482a45f6a9a45631e/coverage.json (SHA-256 d34c3037aa56b776e3695fdf9932eb7ba981712459e86e08d745f9b8e6ceb9b6), with its adjacent coverage.local-evidence.json receipt. It records execution at the AV1 sequence-parser conditions sequence.rs:127, :195, and :212; the receipt reports no source or fixture changes during the run. Coverage MCP again returned Transport closed for gap discovery and incremental comparison, so this is local evidence without MCP attribution or an aggregate coverage gain claim. The generator is scripts/generate_avif_sequence_header_errors.py. No decoder source changes or unit tests were added.

A focused follow-up re-ran those three public parity rows and passed 3/3. The selected local LLVM report is .coverage-mcp/local-evidence/selected/20261031T105108.549888Z-f413b92a289a4061ab325c8f5c25f613/coverage.json (SHA-256 b4d672b86a50d8fc6203232720508754025e2c21d493470e6ec15b85be48b81a); its receipt is .coverage-mcp/local-evidence/selected/20261031T105108.549888Z-f413b92a289a4061ab325c8f5c25f613/coverage.local-evidence.json (SHA-256 0d08d18804417ab3d65ae64866001c696e28dab1d4a662692cca608ab95c33bc). Across 16 local reports with matching source manifest and sequence.rs hashes, the branch-outcome union is 102/108 across 54 coordinates. The six absent outcomes are the two sides of three zero-count records at sequence.rs:347 columns 8–32 and 36–67, and sequence.rs:352 columns 31–42. Two ranges extend beyond their current source lines; the existing malformed cases return before the final sequence fields. No additional reachable parity case is indicated. Clearing the trailing marker in a candidate AVIF does reach the Rust public error AV1 trailing marker bit is not set, but Pillow 12.2.0 recognizes its five frames and decodes frame 0. That candidate was not promoted because it would assert behavior that differs from the reference decoder. Coverage MCP returned Transport closed for the focused report as well, so this remains local evidence without MCP attribution. No unit tests ran.

Repeated AV1 sequence-header color-primaries parity — 2026-10-31

Added active parity row decode:avif:error_animated_sequence_color_primaries_change. The fixture changes only color_primaries from 1 to 9 in the second AV1 sequence header of a two-frame AVIF. Its SHA-256 is 3a4039604a7bf10739a7bcdf5a32c406c3ed5b772b9fdad58a88e73bc6571588. Pinned Pillow 12.2.0 opens the first frame and reports Failed to decode frame 1: Decoding of color planes failed; the Rust public sequence decoder returns the Malformed contract. The selected parity case passed 1/1 with exact 67,500-byte RGB8 parity for frame 0 and the expected sequence error.

Before this row was added, the full active public parity selection passed 2,866 cases (2,324 decode and 542 encode). Its local LLVM report is .coverage-mcp/local-evidence/full/20261031-current-all-public-parity/coverage.json; the adjacent coverage.local-evidence.json is its local receipt. The new selected report is .coverage-mcp/local-evidence/selected/20261031T072616.189147Z-05c9273289c9438784a950f05ae1f8be/coverage.json; its adjacent receipt records the src/codecs/avif/av1/frame.rs sequence-header mismatch branch as executed. Coverage MCP returned Transport closed for the gap and comparison queries, so these are local LLVM observations without MCP source/build attribution. This is not a full-coverage claim. No Rust decoder source change or unit test was added.

AV1 frame-ID wrap reference-slot parity — 2026-10-31

Added active parity row decode:avif:animated_frame_id_wrap_contiguous. This valid two-frame sequence changes the IDs from 4,626 and 4,627 to 32,760 and 10, with all seven reference deltas updated from 1 to 18. The IDs wrap in the 15-bit range while preserving the decoded reference. Its AVIF SHA-256 is 8a53bf96c97b66d07b849ec6e4a6dcf18f37ab9db5b3edb045f2b357bd59e35e. Pillow 12.2.0 and the pinned native libavif observer preserve both exact 16x16 RGB frames; the selected Rust parity case passed 1/1 with exact 768-byte output.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T065142.055821Z-aee60d3386414efb9e57745ca09fac8c/coverage.json (SHA-256 419acd20d6901b9105cf3b658ce42bd8985e4b52721a464fc1c6a7a6204481ee); its local receipt is .coverage-mcp/local-evidence/selected/20261031T065142.055821Z-aee60d3386414efb9e57745ca09fac8c/coverage.local-evidence.json (SHA-256 4875ac0a4575dd7d07bfed568a87c4edb97475b478c15ff10256fc1634ae6f77). The frame.rs source hash is 2fac0b2d4395417b17ca45b9a0dcfa432d3dc44601e762628c935bcff6229549 in both this report and the retained full-active report. At line 840, invalidate_reference_slots records 8/0 for the wrapped reference comparison; the full-active baseline records 0/8. A second zero-count instrumented crate instance remains. Coverage MCP again returned Transport closed for both the filtered gap query and incremental comparison, so this is local same-source evidence only, not MCP attribution or full-suite coverage. Source and fixture hashes remained stable during the selected run. No unit tests or decoder-source changes were added.

The current fixture matrix contains 2,915 total rows: 2,342 decode / inspect / verify rows and 573 encode rows. Of those, 2,342 decode rows and 546 encode rows are active; 27 encode rows are planned. AVIF has 842 active decode rows.

High AV1 frame-ID reference-slot parity — 2026-10-31

Added active parity row decode:avif:animated_frame_id_high_contiguous. The deterministic fixture advances the source sequence's frame IDs from 4,626 and 4,627 to 20,000 and 20,001, preserving the one-step reference delta while crossing the 14-bit delta range. Its AVIF SHA-256 is 25c5e52ca0759816ce94f4aa5d2be42ed99353a004da85e1cf80e8006925eecf. Pillow 12.2.0 preserves both exact 16x16 RGB frames; the pinned native libavif observer decodes both frames and confirms the infinite-loop count. The selected Rust parity case passed 1/1 with exact 768-byte pixel output.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T064556.796593Z-81144245b41744e08257b6a4ff49d114/coverage.json (SHA-256 1f480551f013385ea93f95f76d3591209be466360dbc977f4930c3984eba1acd); its local receipt is .coverage-mcp/local-evidence/selected/20261031T064556.796593Z-81144245b41744e08257b6a4ff49d114/coverage.local-evidence.json (SHA-256 be8b31dbf69d1251a25b14edd9de04a33f5876c231300a0555d7c638800e9ef9). The source hash for src/codecs/avif/av1/frame.rs is 2fac0b2d4395417b17ca45b9a0dcfa432d3dc44601e762628c935bcff6229549 in both the selected report and the retained full-active report. At line 836, invalidate_reference_slots records 8/0 for the high-ID comparison in this selected run; the full-active baseline records 0/8. A second zero-count instrumented crate instance remains in the selected report. Coverage MCP returned Transport closed for both the filtered gap query and the incremental comparison, so these counts remain local same-source evidence, not MCP attribution or a complete-coverage claim. Source and fixture hashes remained stable during the selected run. No unit tests or decoder-source changes were added.

One-pixel AV1 super-resolution edge-tile fallback parity — 2026-10-31

Added active parity row decode:avif:portable_lossless_monochrome_multitile_superres_narrow_edge_145x64 for a 145x64 all-lossless monochrome frame coded at width 129 with two tile columns. The final coded tile contains one visible pixel; denominator-9 super-resolution restores the display width to 145. The deterministic narrow-edge-tile generator profile double-encodes and pins the AV1 seed, checks the two-column geometry, and verifies Pillow's exact 27,840-byte RGB reference (1a3a18cc362bf40b0001563429b6446baca238f80a7a23adb6fbb54a3d12fd55). The 8,491-byte AVIF SHA-256 is aa73cdf640627b55ea1cc7a35af26a42f92bce39c504911c0e0fee6124905320. Selected parity passed 1/1. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T063147.868326Z-5fdf2f844d654d97b5436b743e691c46/coverage.json (SHA-256 54c407b9e67c3391072f91c256b359d409a67af7d782ac76b8866d25fa7e0b11); the receipt is .coverage-mcp/local-evidence/selected/20261031T063147.868326Z-5fdf2f844d654d97b5436b743e691c46/coverage.local-evidence.json (SHA-256 ffc1485c57dadff1d49278b2fc2cb6c7bebf3361118fbca0dc87dac0d294f8ad).

Compared with the retained 2,847-case full-active report at .coverage-mcp/local-evidence/selected/20261031-full-active-parity-current/coverage.json (SHA-256 1381ecc6baa8789346d4b32ce36ca365457515050eef7f5dabca96f601794d2e), whose frame.rs (2fac0b2d4395417b17ca45b9a0dcfa432d3dc44601e762628c935bcff6229549) and entropy.rs (17895a0a44369f11eb95a4d34923a295e2f8868eabeb0492cf587f0d10720399) source hashes match this selected receipt, this input newly covers two branch spans in src/codecs/avif/av1/frame.rs and 66 in src/codecs/avif/av1/entropy.rs. At the targeted frame fallback spans :3157 and :3158, one LLVM observation records 3/0 and another remains 0/0. This is a local same-source coordinate comparison, not Coverage MCP attribution; Coverage MCP returned Transport closed for the filtered branch query. The source did not change during the selected run, and the receipt binds the row to the fixture and Pillow reference. No Rust unit tests or decoder source changes were added.

After adding the high-frame-ID parity row, the fixture matrix contained 2,894 total rows: 2,321 decode / inspect / verify rows and 573 encode rows. Of those, 2,321 decode rows and 542 encode rows were active; 31 encode rows were planned. AVIF had 821 active decode rows.

Lossless multi-tile AV1 super-resolution parity — 2026-10-31

Added active parity row decode:avif:portable_lossless_monochrome_multitile_superres_256x64 for a 256x64 all-lossless monochrome frame coded at width 228 with two tile columns and denominator-9 super-resolution. Its deterministic generator double-encodes the pinned seed, validates the patched AV1 and AVIF headers, and pins a 49,152-byte Pillow RGB reference (bc51fcf2f5bfe8ddd2d500f0ac1ef8fface82095da5127792ca79461518553a3). The 14,762-byte AVIF SHA-256 is 47d5096e64a5d61a6247575f645490813a55ba2ddd4c77379987c1a37ea6dd91. Selected parity passed 1/1. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T062505.670607Z-f98aef99a4354c728c51ad3edf237fdd/coverage.json (SHA-256 4d2f3ec78f1df5c4359b3791eda31c53c6cab8980d1fc1a8561da6c6831e0510); the local receipt is .coverage-mcp/local-evidence/selected/20261031T062505.670607Z-f98aef99a4354c728c51ad3edf237fdd/coverage.local-evidence.json (SHA-256 e303517212bde0049082d0f44d218728cdb1e7dfdcd64ca21b73af94652de36d). Compared with the retained 2,847-case full-active report .coverage-mcp/local-evidence/selected/20261031-full-active-parity-current/coverage.json (SHA-256 1381ecc6baa8789346d4b32ce36ca365457515050eef7f5dabca96f601794d2e), this selected run newly covers the multi-tile guard branch at src/codecs/avif/av1/entropy.rs:18123 (0/0 to 12/0). The source file SHA-256 is identical in both reports (17895a0a44369f11eb95a4d34923a295e2f8868eabeb0492cf587f0d10720399). This is a local same-source branch comparison, not Coverage MCP attribution. The full-width input leaves the frame fallback at src/codecs/avif/av1/frame.rs:3157 unhit (0/0); the one-pixel edge parity case above now covers it. Coverage MCP returned Transport closed for the branch query, so no MCP source attribution or full-suite coverage claim is made.

At the time this full-width parity row was added, the fixture matrix contained 2,892 total rows: 2,319 decode / inspect / verify rows and 573 encode rows. Of those, 2,319 decode rows and 542 encode rows were active; 31 encode rows were planned. AVIF had 819 active decode rows. No Rust unit tests or decoder source changes were added.

AV1 lossless monochrome super-resolution branch parity — 2026-10-31

Added active parity row decode:avif:portable_lossless_monochrome_superres_clamped_3x3 for a 3x3 all-lossless monochrome key frame that enables super-resolution at the minimum-width clamp. The deterministic generator validates the AV1 syntax, pins the asset, and verifies Pillow's exact 27-byte RGB reference (d3032e6d59449568a19027d012277ab23dc9843f5293220df001c16217a6e35f). The selected parity run passed 1/1. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T060823.106357Z-6f30555f91514a92bfc0001557e86c6c/coverage.json (SHA-256 53509c58f49232f85e4c163e688c045a09f0797e672f6674089e9e24b2e4d870); the local receipt is .coverage-mcp/local-evidence/selected/20261031T060823.106357Z-6f30555f91514a92bfc0001557e86c6c/coverage.local-evidence.json (SHA-256 14f5039902259448ecf48efd133fc724e9ea62e72d4e9b192032170a51dd6f9b). At src/codecs/avif/av1/frame.rs:3139, one exported branch observation has counts 3/0 and a second observation at the same span has counts 0/0. The report thus records the true edge in one instance; it does not establish coverage of every instance. The receipt records the selected case and that source did not change during the run. Coverage MCP returned Transport closed for the branch query, so this remains local selected-coordinate evidence without MCP attribution or a full-suite coverage claim.

At the time the clamped 3x3 parity row was added, the fixture matrix contained 2,891 total rows: 2,318 decode / inspect / verify rows and 573 encode rows. Of those, 2,318 decode rows and 542 encode rows were active; 31 encode rows were planned. AVIF had 818 active decode rows. No Rust unit tests or decoder source changes were added.

AV1 monochrome super-resolution sequence parity — 2026-10-31

Added active parity row decode:avif:animated_monochrome_superres_sequence_17x16 for a two-frame, 8-bit monochrome sequence with super-resolution and SGR restoration. The deterministic generator validates the AV1 profile and pins Pillow 12.2.0 frame bytes. Selected parity passed 1/1 with exact 816-byte RGB output per frame. The local LLVM report is .coverage-mcp/local-evidence/selected/20261031T054246.676014Z-eee15edc148f45e496c4333669768089/coverage.json (SHA-256 6d9a7967449a7bd234d01223f4154b094dea352a1581e723013bcdf2c373febe). It does not record hits on the intended AV1 frame fallback branch at frame.rs:3139; Coverage MCP closed the connection, so no MCP attribution is claimed. This parity case does not close that coverage gap. At the time this sequence row was added, the public fixture matrix contained 2,890 total rows: 2,317 decode / inspect / verify rows and 573 encode rows. Of those, 2,317 decode rows and 542 encode rows were active; 31 encode rows were planned. AVIF had 817 active decode rows. No Rust unit tests or decoder source changes were added.

Full coverage refresh and JPEG fast-path trial — 2026-10-25

At cf4ff290adf7ffd3296a9aea16be1884f458b644 (the merged PR #87 revision), make coverage passed the all-feature matrix and the configured release floors: 93,692/139,473 lines (67.175726%), 18,575/32,068 branches (57.923787%), 5,213/8,917 functions (58.461366%), and 143,029/216,455 regions (66.077938%). The local LLVM report is retained at .coverage-mcp/local-evidence/full-20261025-pr87-main-refresh/coverage.json with SHA-256 b91003d65bc8581a6d69f1e63a39493a0a0ecf1943dd16e9db7c0b23a1cce431. The report has no Coverage MCP source/build receipt. A branch-gap query against it failed because the local Coverage MCP daemon did not become healthy, so no MCP gap groups or test attribution are claimed from this refresh. Raw LLVM data still contains repeated AV1 monomorphization observations; inspect each source path and establish a valid public input before adding parity rows. The 100% coverage objective remains open.

AV1 mixed-lossless B32 specialization probes — 2026-10-25

The existing public rows decode:avif:animated_mixed_lossless_inter_b32_i420_64x64 and decode:avif:animated_mixed_lossless_inter_b32_i420_residual_64x64 each passed their selected Pillow pixel-parity run (1/1, 12,288 output bytes). The second fixture changes every pixel in its qindex-zero B32 ROI between frames, so it also tests nonzero residual data. Their selected LLVM reports are retained at .coverage-mcp/local-evidence/selected/20261025T073910.795480Z-8a6d417b1768484fa50917b63d8c5b26/coverage.json and .coverage-mcp/local-evidence/selected/20261025T074319.862204Z-46ea5372d9c04f43ace4546c46a5da66/coverage.json. Both local receipts record that source did not change during execution.

Neither selected report records branch hits at block.rs:48152 or block.rs:48160 in the active decode_inter_translation_impl instances. The residual case reaches the mixed 8-bit lossless geometry admission path in entropy.rs, but it does not exercise the decoder specialization behind those branches. These are useful parity controls, not coverage gains; no additional fixture was added from them. Coverage MCP reports the selected reports as source-unverified with test attribution unknown, so the local branch data is coordinate-only and makes no aggregate coverage claim. Find a public input that reaches the decoder specialization before adding a parity row.

A temporary JPEG 4:2:0 encoder fast path passed a constant all-present mask to the DC predictor for complete MCUs. Seven release A–B–B–A rounds on the Apple M3 Pro measured the public 1024×1024 RGB, quality-85, 4:2:0 encode. The candidate's median paired ratio was 1.016× the baseline (about 1.6% slower), with host load averages between 6.3 and 7.5. Both builds emitted 793,139 bytes with FNV-1a d748543a168ce6aa in every measured call. The candidate was discarded; this experiment did not run the Pillow parity lane and establishes no speedup.

10-bit I420/I422 intra filter parity — 2026-10-31

Coverage MCP identified the missing positive arm of bounded_i420_intra_restoration at src/codecs/avif/av1/entropy.rs:10827. Added active parity row decode:avif:coverage_i420_intra_restoration_10bit_16x16. The deterministic generator creates a 10-bit I420 source, repeats the pinned libavif/libaom encode, validates the AV1 OBU syntax, and checks the exact Pillow 12.2.0 RGB reference. AVIF SHA-256: c508ed4754d696d6b3240ca552dd61a1481c062c9537904183c4657b13bc5f7f. Selected parity passed 1/1 with exact 768-byte Rgb8 output. Its LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-i420-intra-restoration-10bit/coverage.json (SHA-256 1dcffa5b2cc25b6aed718a141105fe7617d4c90b3237a028d5333a5dbd1a4317). Coverage MCP finds no remaining branch gap at the I420 admission branch in the parent validator at entropy.rs:10827. The positive Some(quantization) path is covered in complete_bounded_i420_restoration_intra_reconstruction_context; its no-quantization early-return branch at entropy.rs:14353 remains uncovered.

Added the active parity row decode:avif:coverage_i422_intra_restoration_10bit_16x16 for a 10-bit I422 still frame with Wiener luma restoration and no CDEF. Its selected parity run passed 1/1 with exact 768-byte Rgb8 output. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-i422-intra-restoration-10bit/coverage.json (SHA-256 5a4fc31f6ea948cc086c21c2876029b24ebd1be5c7cc60e6ca9a79e810dd9d91). On the final full report, Coverage MCP shows the I422 restoration admission path covered: the parent branch at entropy.rs:10821 has no remaining gap, and the Some(quantization) path is covered in complete_bounded_i422_restoration_intra_reconstruction_context. Its no-quantization early-return branch at entropy.rs:14209 remains uncovered.

Added active parity row decode:avif:coverage_i420_intra_cdef_10bit_16x16 for a 10-bit I420 key frame with CDEF enabled and restoration disabled. Its generator repeats the pinned libavif/libaom encode, checks the AV1 OBU profile and CDEF strengths, and pins the Pillow 12.2.0 RGB bytes. The AVIF SHA-256 is 3407c458add1348d2e0f0a73f8aaaa862fd435a18eb7c563b8461d89541656d2. Selected parity passed 1/1 with exact 768-byte Rgb8 output. Its LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-i420-intra-cdef-10bit/coverage.json (SHA-256 edb903e6a41bb879b332b9bf6eaf5b7f1d88d45174d109aa41f6b2803f13e84e). Coverage MCP finds no remaining branch gap at the parent CDEF admission at entropy.rs:10832; the positive quantization path is covered. The no-quantization early return at entropy.rs:14504 remains uncovered.

Added the matching 10-bit I422 case, decode:avif:coverage_i422_intra_cdef_10bit_16x16, with CDEF enabled and restoration disabled. It passed selected parity 1/1 with exact 768-byte Rgb8 output. Its AVIF SHA-256 is 40e0090f85088bdef2e7cf08910002dd2dc48e95637c976173e71a9326a22352; its selected LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-i422-intra-cdef-10bit/coverage.json (SHA-256 ef3a7ab7a8ae3162749be88f052dcc65174dedadbc819bce34d86146b43aedff). Coverage MCP finds no remaining branch gap at the parent I422 CDEF admission at entropy.rs:10837; the positive quantization path is covered. Its no-quantization early return at entropy.rs:14596 remains uncovered.

The refreshed full all-feature coverage run passed, including all 57 coverage-matrix tests and 69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full/20261031-av1-intra-filters-i420-i422-current/coverage.json (SHA-256 283711e7dd2539c825642c64d2ec5bdef7a68b965a0fb3e89a8ec10b214a079a). It records 98,559/140,221 lines (70.288331%), 19,640/31,498 branches (62.353165%), 5,458/8,998 functions (60.657924%), and 150,308/217,537 regions (69.095372%); all configured floors pass. Relative to the preceding full report, this run adds 11 covered lines, 9 branches, 1 function, and 10 regions. Coverage MCP still reports 139 missed branch observations in validate_complete_lossy_420_partition, 11 in bounded I422 CDEF/restoration inter admission, and 6 in monochrome multi-tile CDEF admission. The report has unverified source identity and unknown test attribution, so it does not establish named-test attribution or a regression comparison. The matrix now contains 2,875 rows, including 2,302 active decode rows and 802 active AVIF decode rows. No Rust unit tests were added.

AV1 monochrome multi-tile filter parity — 2026-10-31

Added active parity row decode:avif:coverage_monochrome_multitile_cdef_8bit_128x64 for an 8-bit monochrome key frame with two tile columns, CDEF, and no loop filtering or restoration. Its AVIF SHA-256 is ea6c16c86c07414bfa3f71f1132af6494c4d7f6cb5015d5b98bfc94e09e5d73b; the 24,576-byte Pillow RGB reference SHA-256 is 0d9fa687322831cf61ae6cd8b2cba87ee78bbb071641aada0f2879667bebd3b8. Selected parity passed 1/1. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-multitile-cdef/coverage.json (SHA-256 7451ba741cee29590e5704b18cd51a832e0c3ec665aff251494e095386937e1a).

Added the combined-filter row decode:avif:coverage_monochrome_multitile_loop_cdef_8bit_128x64. It uses the same source and tile layout with nonzero luma deblocking and CDEF syntax. Its AVIF SHA-256 is f81ad82e033b3d36cd1c92ab97e296a1b4c3ea5308cd12c919e748a8304ce282; the 24,576-byte Pillow RGB reference SHA-256 is 2b228a77b35dad05b440b250ee3eee71d858a8561dde92a71634e8cccfffbb57. The pinned generator checks both profiles using libavif 1.4.1, libaom 3.13.2, and Pillow 12.2.0. Selected parity passed 1/1 with exact RGB output. Its retained LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-multitile-loop-cdef-receipted/coverage.json (SHA-256 d0b90f4c16d0366192fde9d5970f57201f6cdc10dad8cdd9d75416b21043d325); the local evidence receipt SHA-256 is a378aa4b622ad8661457ef117331849ec1f33bec2dbcaa78ad9933684afa29b7.

Added the active-strength case decode:avif:coverage_monochrome_multitile_loop_cdef_active_8bit_128x64. It uses the same source and tile layout with CDEF strength 44, luma deblocking level 56, and no restoration. Its AVIF SHA-256 is 229af13b8ae6f1e69ce316e74c42d2d225d3ce479bececd45c5ff2059502d763; the 24,576-byte Pillow RGB reference SHA-256 is 04fe662bfb299b49c6f8117c02278c3b94a80c18f388ca2c5f7370732af460e5. Selected parity passed 1/1 with exact RGB output. Its retained LLVM report is .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-multitile-loop-cdef-active/coverage.json (SHA-256 28daed932a725a3604f4db32d33a6b40d6fbca35d8ee73b0c132d9e29047265e); the local evidence receipt SHA-256 is f9ed0ca51d21a0fb58b892d70c0263ffe73e61ad2f7aaf7cf7d3e2182689eab7. Coverage MCP's selected comparison against the zero-strength combined-filter case reports 15 newly observed branch outcomes: 8 in direction_for_block, 3 in constrain, 2 in adjust_primary_strength, and 2 in finish_monochrome_with_cdef. It reports no added branch universe. Source identity is unverified and test attribution is unknown, so these are report coordinate observations rather than verified source or named-test attribution.

The refreshed all-feature coverage run passed all 57 coverage-matrix tests and 69 feature-gate tests. The latest report is .coverage-mcp/local-evidence/full/20261031-av1-monochrome-multitile-active-loop-cdef-current/coverage.json (SHA-256 6fdb2012499226fda522ba3be73e678ad2a3244241a19d43b6cd55f728879e68). It records 98,559/140,221 lines (70.288331%), 19,641/31,498 branches (62.356340%), 5,458/8,998 functions (60.657924%), and 150,308/217,537 regions (69.095372%); all configured floors pass. Its aggregate totals match the preceding full report. Coverage MCP's full comparison reports no changed branch observations; source/build identity is unverified and test attribution is unknown, so this does not establish a verified regression or named-test attribution. The latest report still has 18 missed branch observations in complete_monochrome_multitile_loop_cdef_reconstruction_context; in src/codecs/avif/av1/cdef.rs, the largest reported groups are 11 in filter_block_into, 5 in direction_for_block, 2 in sample_at, and 1 in maximum_sample. The matrix now contains 2,878 rows, including 2,305 active decode rows and 805 active AVIF decode rows. No Rust unit tests, decoder source changes, or SIMD benchmarks were added in this parity slice.

AVIF reordered meta handler parity — 2026-10-31

Coverage MCP identified the unobserved first-child handler rejection in the container projection parser. Added active parity row decode:avif:error_meta_reordered_handler, derived from baseline.avif by moving its valid picture hdlr child after pitm while preserving file size and all AV1 media bytes. Fixture SHA-256: 75d67ac340bfec40e5bce5e0f5d19d769053ec5fe774989fd56cb90b32392516. Pillow 12.2.0 rejects the complete input at open. The first parity run showed that inspection rejected the file but full decode accepted it. The sample parser now enforces the required first-child handler for both paths, and the container projection no longer repeats that check. Selected parity passed 3/3 with the new case and the two existing metadata-handler error controls. Its LLVM report is .coverage-mcp/local-evidence/selected/20261030T195351.283475Z-c5a2286e179e40aa9ff2938157a1d568/coverage.json (SHA-256 a5be17a1d858e08d1dbb5d23d52fdfb8d3d4b593190e3a412cdd49d00b5398c2). Coverage MCP reports no remaining branch gaps at samples.rs:522 or in container::parse_meta for that full run's inventory.

The refreshed full all-feature LLVM run passed. Its report is .coverage-mcp/local-evidence/full/20261031-meta-handler-order-parity/coverage.json (SHA-256 6c7809dfece5341bed6a054bb0ea66e29bc9e75784d13e4499b910dace2a5502). It records 98,506/140,282 lines (70.219985%), 19,945/32,086 branches (62.161067%), 5,435/8,981 functions (60.516646%), and 150,307/217,737 regions (69.031446%); all configured floors pass. The report has unverified source identity and unknown test attribution, so it is not used to claim a regression or a percentage-point gain against managed historical measurements.

The current public fixture matrix contains 2,882 total rows: 2,309 decode / inspect / verify rows and 573 encode rows. Of those, 2,309 decode rows and 542 encode rows are active; 31 planned encode rows remain. AVIF has 809 active decode rows. No Rust unit tests were added.

AVIS movie without a picture track parity — 2026-10-31

Coverage MCP identified the uncovered empty-track rejection in samples::parse_movie at samples.rs:2136. Added the active parity row decode:avif:error_avis_moov_without_trak. Its full-file fixture derives from animated.avif by removing the sole moov/trak while retaining ftyp, meta, moov/mvhd, and the complete mdat media payload. Pillow 12.2.0 rejects the file at open. Fixture SHA-256: b7bad81724df0c975c0ba70935f07ade291f5aa55f9b539b230bbb7bfe00562f. The deterministic generator validates the box layout, preserved media bytes, fixture hash, and Pillow rejection. Selected parity passed 1/1; the selected LLVM report is .coverage-mcp/local-evidence/selected/20261030T193551.913677Z-700fd071206e458cbcf56d745ee61d1c/coverage.json (SHA-256 486111d1262c13a7f38e9efe108cfbc925b3bbb6269968be7e5d69b06f8d4ee1).

The refreshed full all-feature LLVM run passed, including 57/57 coverage-matrix tests and 69/69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full/20261031-avis-moov-track-parity/coverage.json (SHA-256 76b5ec93f1fea8010fa0fde49c736159b3684b51f4f0d8663a8e4c08b6853460). It records 98,508/140,282 lines (70.221411%), 19,947/32,086 branches (62.167300%), 5,436/8,981 functions (60.527781%), and 150,315/217,736 regions (69.035437%); all configured floors pass. Coverage MCP no longer reports the missing branch at samples.rs:2136; the separate container projection parser still has an uncovered empty-track guard at container.rs:1525. The local report has unverified source identity and unknown test attribution, so it is not used to claim a regression or a percentage-point gain against managed historical measurements.

The current public fixture matrix contains 2,868 total rows: 2,296 decode / inspect / verify rows and 572 encode rows. Of those, 2,296 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 796 active decode rows. No Rust unit tests were added.

AVIF primary item missing spatial extent parity — 2026-10-31

Coverage MCP's retained full report left one missing branch in container::inspect_inner_with_grid. Added the active public parity row decode:avif:error_primary_item_missing_ispe. Its full-file input derives from baseline.avif by clearing the primary AV1 item's ispe association; box sizes and encoded AV1 media bytes remain unchanged. Fixture SHA-256: 475d45c0c712b011983d6d946a2e3ce4512d7968664853b0a6953fa7da0c06f7. Pillow 12.2.0 rejects the complete file at open. The first Rust parity run accepted its pixels, exposing a decoder validation gap. The decoder now rejects an av01 primary item without spatial dimensions, while inspection still reaches the container's missing-details rejection. The focused parity run passed 3/3: this row, the unsupported-primary-type error control, and the AVIF baseline pixel control.

Its selected LLVM report is .coverage-mcp/local-evidence/selected/20261030T192341.164267Z-3d05e558fab94ebd9f9ce2ad37f3f7c3/coverage.json. The fresh full all-feature LLVM run passed, including 57/57 coverage-matrix tests and 69/69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full/20261031-primary-ispe-parity-final/coverage.json (SHA-256 b821c8af1f464dfde0e0cdac95204d6a44aba5fd51e241724c4773aacd825d67). It records 98,507/140,282 lines (70.220698%), 19,946/32,086 branches (62.164184%), 5,436/8,981 functions (60.527781%), and 150,314/217,736 regions (69.034978%); all configured floors pass. Coverage MCP's filtered branch queries return no missing groups for samples::parse_ftyp or container::inspect_inner_with_grid. Other AVIF parser and container gaps remain. The local report has unverified source identity and unknown test attribution, so it is not used to claim a regression or a percentage-point gain against managed historical measurements.

The current public fixture matrix contains 2,867 total rows: 2,295 decode / inspect / verify rows and 572 encode rows. Of those, 2,295 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 795 active decode rows. No Rust unit tests were added.

AVIF lossless 4:2:0 grayscale texture parity — 2026-10-30

Added the active public parity row decode:avif:portable_lossless_420_gray_texture_8x8 for an 8x8 full-range, all-lossless I420 image with nonzero luma residuals and neutral chroma. The deterministic generator verifies the pinned Pillow/libavif versions, AV1 headers, repeated encoded bytes, and exact 192-byte RGB output. The fixture SHA-256 is 4d4caeb830d6775b0c82172b60cacae07b0945a419cecb44680394f4337eef65; the expected RGB SHA-256 is 6596205a5d46da184e167b8f3b5eb0aa586091b0e83f7368b79f3992a4786242. Selected public parity passed 1/1. Its LLVM report is .coverage-mcp/local-evidence/selected/20261030T174112.238658Z-a451598c3be04a80998eb593288d9435/coverage.json (SHA-256 ab47bff39c7630e59c956bdeb7e99b4c17031dd18b91bfdb2a31173eec1e4f4a). The report is selected-scope evidence with unverified source identity and unknown test attribution. Coverage MCP confirms this input does not execute the previously targeted decode_syntax_with_cdef_with_lossless_square64_arena branch at block.rs:21001; no branch-gain claim is made for that location. No Rust unit tests were added.

AVIF lossless 4:2:0 color texture parity — 2026-10-30

Added the active public parity row decode:avif:portable_lossless_420_color_texture_8x8 for an 8x8 full-range, all-lossless I420 image whose 2x2 cells cycle through red, green, blue, and yellow. The pinned Pillow/libavif generator checks repeatable AVIF bytes, sequence/frame headers, and exact 192-byte RGB output. Fixture SHA-256: eba2565967dbab65b88d58c6855ee920d06f69ef39ed610306cff3e322beb0a2; expected RGB SHA-256: 8099fa1157400c228f24ce0e41a6f9c59cc73c8be02953024a92761dba0db709. Selected public parity passed 1/1. Its LLVM report is .coverage-mcp/local-evidence/selected/20261030-color-texture-8x8-r1/coverage.json (SHA-256 1f5cc7617d2f5af967998fb3a218c8bcd9e690d35990d387cab965e1f8bb8bfe).

The selected report records zero invocations of decode_dc_coefficients and the targeted lossless 4:2:0 leaf decoders. Coverage MCP still reports the branch group at block.rs:21001 and the conditional at block.rs:8753 as unobserved. A selected run of the existing 16x16 lossless I420 case also passed 1/1 without invoking those decoders. Its report is .coverage-mcp/local-evidence/selected/20261030-existing-lossless-square-16x16-r1/coverage.json (SHA-256 0b8d2afd6a2f70204c4d7163bb8cfc91e9164570fa153fb4624325a5154f04de). The incremental comparison with the retained full report is incomparable because its branch detail is incomplete; this fixture is useful parity coverage, but no coverage gain is claimed. The public fixture matrix now contains 2,866 total rows: 2,294 decode / inspect / verify rows and 572 encode rows. Of those, 2,294 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 794 active decode rows. No Rust unit tests were added.

AVIF still duplicate top-level metadata after mdat parity — 2026-10-31

Coverage MCP's retained full report grouped missing branches in samples::extract_inner_with_metadata at samples.rs:2857. The existing animated duplicate-metadata row uses the avis brand and takes the earlier sequence-specific branch at samples.rs:2852. Added the active public parity row decode:avif:still_duplicate_top_level_meta_after_mdat, derived from grid.avif by appending its complete top-level meta box after mdat while preserving every original byte. The fixture SHA-256 is 2279761c577c985f0c3ccfbe19a02a89f05c5fa16fb3dc1516bd5ebeb3c6702d. Pillow 12.2.0 preserves the original RGBA 80x80 metadata and exact 25,600 pixel bytes; selected public parity passed 1/1. The expected pixel SHA-256 is 4ede0d909351b9b09c7e3e9475bfd3baf458141dbdd08f08aee19c11d2ec2983.

The selected report is .coverage-mcp/local-evidence/selected/20261031-still-meta-after-mdat-r1/coverage.json (SHA-256 b0970b5aaf9ac4b2b8481b94357beb47dafbed1292dcd8f0f0836e3abe628220). Its local receipt binds the run to source manifest hash e66ba336597b9c6ee8e58f9e57e74f41160adeb0bd716cbb4ef1145e931d197a, records the selected row passing, and confirms source files did not change during the run. Raw LLVM branches record four true-outcome hits at samples.rs:2857 in the lazy and bounded item-extent parser instantiations. Coverage MCP still lists missing observations in other monomorphizations and reports source identity unverified and test attribution unknown. The incremental comparison against the retained selected report is incomparable because its branch detail is incomplete; no aggregate coverage gain is claimed. The matrix now contains 2,866 rows, including 794 AVIF decode rows. No Rust unit tests were added.

AVIF unsupported primary item type — 2026-10-30

Coverage MCP reports had grouped missing observations in samples::item_ids. Source inspection identified an unsupported primary-item kind as a public edge case. Added the active parity row decode:avif:error_unsupported_primary_item_type. Its full-file input derives from grid.avif by changing only the primary item's declared type from grid to Exif; all box sizes and AV1 payloads are unchanged. The fixture SHA-256 is 9285db1aa6df2d36c4d02fa8f2efedeac2f3ca48fc5f6aec64488893c3e3b9b8. Pillow 12.2.0 rejects it with Failed to decode image: Missing or empty image item, and selected Rust parity passed 1/1 with the same rejection. The input passes through both supported-kind comparisons and reaches the unsupported-kind fallback.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261030T151646.164961Z-db210ab045ec49339a6588488b31700a/coverage.json (SHA-256 42644ebe7948b11f74deae21718c07137a088645bef6f987f4da374068a36ba7). Its raw branch records at samples.rs:1984 and samples.rs:1985 each show six visits to the false arm. Coverage MCP returns duplicate groups and marks source identity unverified and test attribution unknown, so this is targeted path evidence rather than an aggregate coverage-gain claim. An incremental comparison was incomparable because the saved full report lacks complete branch detail. The current public evidence matrix contains 2,864 total rows: 2,292 decode / inspect / verify rows and 572 encode rows. Of those, 2,292 decode rows and 541 encode rows are active. AVIF has 792 active decode rows. No Rust unit tests were added.

AVIF duplicate container empty-grid guard — 2026-10-30

A fresh full make coverage run passed all six integration executables, including 57/57 coverage-matrix cases. It measured 98,483/140,287 lines (70.2011%), 19,936/32,104 branches (62.0982%), 5,434/8,983 functions (60.4920%), and 150,318/217,777 regions (69.0238%), above the configured floors but below the 100% goal. The retained report is .coverage-mcp/local-evidence/full/20261030-after-unsupported-primary-item-type/coverage.json (SHA-256 f560d1ae113c094d87a1719ae6e86bd178db6d1568ef5c107f19128bc0b89ec3). Coverage MCP returned no missing branch groups for samples::item_ids; its source identity is unverified and test attribution is unknown.

The same report marked the empty-list error arm in container::Meta::grid_item_ids as unobserved. Public inspection first creates an InspectedAvif in the sample parser, whose still_payload rejects a grid without dimg children. The container projection then reparses the same references, so its empty-list error duplicated that earlier public-input check. Removed the second guard while retaining the existing Pillow-compatible error at the sample-parser boundary. After the change, decode:avif:error_grid_without_dimg_references passed 1/1; strict make lint and make lint-x86-simd passed, including SSE2 and AVX2 cross-target Clippy. The full report predates this source edit. No Rust unit tests were added.

AVIF grid alpha sample-count mismatch — 2026-10-30

Coverage MCP's full report identified the alpha/color tile-count guard in still_payload at src/codecs/avif/samples.rs:2036. Added the active public parity row decode:avif:error_grid_alpha_sample_count_mismatch. Its complete input is derived from grid.avif by repointing the second alpha cell's auxl reference from color tile 3 to tile 2, leaving tile 3 without alpha. Box sizes and AV1 payloads are unchanged. The fixture SHA-256 is e63f9dfda938353e27c05834e4b736fd855bbdb273d9b8c2d661348e710e3e50. Pillow 12.2.0 rejects the file with Failed to decode image: Invalid image grid; the selected Rust parity row passed 1/1 with matching rejection.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261030T145636.990698Z-d9d2e3894f364d68a67de334889f662b/coverage.json (SHA-256 347cd1c8e516a0973d8f46a7a1c83ea18b7a3ffd0ad069be830f5e993bd8db9e). At the guard span, its raw branch records include counts (6, 0) and a duplicate zero-count record. Coverage MCP returns two groups at that same span and reports the false arm missing in selected scope; it marks source identity unverified and test attribution unknown. This confirms the selected input reaches the mismatch outcome, but does not establish an aggregate coverage gain. The full coverage report has not been refreshed. The matrix now contains 2,861 rows: 2,289 decode / inspect / verify rows and 572 encode rows, with 2,289 active decode rows and 541 active encode rows. AVIF has 789 active decode rows. No Rust unit tests were added.

AVIF grid non-AV1 color tile — 2026-10-30

Coverage MCP's full AVIF report marked the non-AV1 item-type arm in item_sample as uncovered. Added the active public parity row decode:avif:error_grid_non_av1_color_tile. Its complete input derives from grid.avif by changing only item 2's declared type from av01 to Exif; all box sizes and AV1 media payloads remain unchanged. The fixture SHA-256 is 1721f82f4ea1f128a97041d867fc1a1c1c0a69663ef9e12d26b02e90b5285803. Pillow 12.2.0 rejects it with Failed to decode image: Invalid image grid, and the selected Rust parity row passed 1/1 with matching rejection.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261030T150957.740166Z-68654b770b70401f82f493352a7e45ab/coverage.json (SHA-256 eacd42a6a577b96f165f9bc2fbbd17555a5ebadee2a6083977ccdeb26b1b20be). Its raw LLVM record at samples.rs:1968 has branch counts (6, 0), showing the non-AV1 rejection arm was reached six times. Coverage MCP returns duplicate groups at the branch span and marks source identity unverified and test attribution unknown. This is targeted branch evidence, not an aggregate coverage-gain claim; the full report has not been refreshed. No Rust unit tests were added.

AVIF duplicate empty-grid guard — 2026-10-30

Coverage MCP's full AVIF report marked the empty-child arm in Meta::grid_item_ids at samples.rs:1714 as uncovered. Source order showed that this guard duplicates an earlier public-input check: extract_inner_with_metadata validates still_payload(meta) before constructing the grid metadata, and still_payload calls item_ids, which rejects an empty dimg list using the same Meta::dimg_children projection. Removed the later empty-list check while keeping the existing Pillow-compatible error at the earlier check.

The existing public parity row decode:avif:error_grid_without_dimg_references passed 1/1 after the change and was rejected as Pillow rejects it. Selected report: .coverage-mcp/local-evidence/selected/20261030T150350.831696Z-ca1ca5b3b0e940b98332608ef28da1f2/coverage.json (SHA-256 be08cacec24612ca56c9d8ee56146c3788c81e3ee355d917483797b06e655862). Its raw LLVM record for the earlier item_ids check at samples.rs:1987 has counts (6, 0). Coverage MCP returns duplicate groups at that span, while the report also retains a zero-count record at the removed source coordinate; source identity is unverified and test attribution is unknown. This targeted run confirms the public error path only, not an aggregate coverage gain. The full coverage report was not refreshed. No matrix row or Rust unit test was added.

AVIS trailing metadata after track media — 2026-10-30

Coverage investigation found that Meta::details_with_grid had no public AVIS input for its missing-primary-item result. Added the parity fixture animated_sequence_only_trailing_meta_after_mdat: it appends a valid, handler-only top-level meta box after the complete mdat of animated_sequence_only_no_meta. Its input SHA-256 is a58d67aaece0bd6502b9f3bb63467e22de4452d4d99d9fb21d088d371f0e0c1f. Pillow 12.2.0 and pinned libavif 1.4.1/dav1d 1.5.3 decode the same five RGB frames, 33 ms timing, and one total play. Rust now ignores this trailing AVIS metadata after track media has been seen and uses the existing sequence-track details. The selected public parity row passed 1/1 with all 67,500 RGB bytes matching Pillow.

The selected LLVM report records five visits to the missing-primary outcome at container.rs:1071 (raw branch counts (0, 5)): .coverage-mcp/local-evidence/selected/20261030T144143.942794Z-290ee03a075947edb4768cfb3280385f/coverage.json (SHA-256 fb191116e7cc16ab092d59c46bfbad99876d9fa1bfb7ae5060cf291731be7084). Coverage MCP returned no grouped branch at that coordinate and marks source identity unverified and test attribution unknown. This is targeted local evidence, not an aggregate coverage-gain claim; the full coverage report has not been refreshed. The public matrix now has 2,861 rows, including 2,289 decode rows. No Rust unit tests were added.

AVIF IREF and inspection invariants — 2026-10-30

Coverage MCP identified zero-ID and trailing-payload branches in the container's second-pass parse_iref projection. The sample parser already rejects those inputs before it constructs InspectedAvif, so the projection checks were redundant. Removed the duplicate validation while retaining bounds-checked reads and budget accounting. The existing Pillow parity rows error_iref_zero_from_id, error_iref_zero_to_id, error_iref_trailing_payload, and iref_version_1_alpha_auxl passed together (4/4). Selected report: .coverage-mcp/local-evidence/selected/20261030T132610.180464Z-2258eed75b3c4b9cbecbe3d511e4837e/coverage.json (SHA-256 6a5dda680d9a8305d8106c1af4f392943d5b8eee7898c8685f3b8b8fe686736f).

Added the active target-only fault-contract row fault-contract:avif:avif_container_inspection_invariant_guards. It calls the container projection below its private InspectedAvif wrapper with synthetic non-ftyp, incomplete, missing-structure, and detail-free inputs, asserting structured inspection errors. The clean retry uses the active AVIF baseline and checks its Pillow inspection metadata. Its oracle status is not_applicable; these internal probes are not counted as Pillow parity. The selected contract passed 1/1. Report: .coverage-mcp/local-evidence/selected/20261030T134518.040498Z-5370b4d65f254e93967497c12dc1a267/coverage.json (SHA-256 d12c5527151515d89993d6a2106e238bee732cb3d9a189e0dc00165e65444971).

Added fault-contract:avif:avif_container_meta_full_box_version_rejected for the container parser's duplicate FullBox-version guard. A normal malformed file is rejected earlier by the sample parser, so this target-only contract passes a nonzero version to a coverage-only parser hook, checks the structured inspection error, and then checks that inspection of the Pillow baseline still succeeds. Its not_applicable oracle status keeps the internal probe separate from Pillow parity. The selected contract passed 1/1. Report: .coverage-mcp/local-evidence/selected/20261031T193102.285636Z-a5e675b53f094ae4ae7879b7b202ec7a/coverage.json (SHA-256 fa885359894c1b249f499c0f64470296df815619b1f5b8788ef41c5ecc6e6ada).

The refreshed full make coverage run passed every test executable and the configured floors: lines 98,479/140,288 (70.1977%), branches 19,928/32,100 (62.0810%), functions 5,434/8,983 (60.4920%), and regions 150,314/217,778 (69.0217%). Report: .coverage-mcp/local-evidence/full/20261030-after-avif-inspection-invariant-contract/coverage.json (SHA-256 4fbbec56faf48c865dec6fdd97ed8c3f94bed8a763c68c8274ffebd37bb65870). Coverage MCP found no missing branch group for parse_iref, the duplicate auxiliary AV1C property readers, or inspect_inner_with_grid in this report. MCP marks source/build identity unverified and test attribution unknown, so these are local run measurements; no verified aggregate-gain claim is made. The project remains below 100% on all four metrics.

The same full report left the media_data_seen = true outcome uncovered at samples.rs:2855 for the bounded-item, metadata-omitting specialization of extract_inner_with_metadata. Extended the existing active Pillow parity row animated_duplicate_top_level_meta_after_mdat to repeat decode with a 1,265-byte metadata limit, the exact bound consumed by this valid fixture. The focused selected-coverage parity run passed 1/1 and preserved all 67,500 RGB bytes. Its LLVM function record changed the target branch from true=0, false=1 in the prior full report to true=1, false=0 in the selected run. Report: .coverage-mcp/local-evidence/selected/20261030T140240.399161Z-29ab42c338c742719c853dbb32c6a99e/coverage.json (SHA-256 46fc412d612c742467a1c3dcc7b537a82869edf275fb03bdc91eeadb40373ad4). This confirms the targeted policy outcome only; the full aggregate has not been refreshed for this added path, other generic instantiations remain separate, and MCP still marks source/build identity unverified and test attribution unknown.

AVIF duplicate auxiliary codec-property parity — 2026-10-30

Coverage MCP's AVIF container report identified duplicate associated av1C branches in both container inspection and sample parsing. Added decode:avif:duplicate_non_primary_av1c_first_wins, using a deterministic second auxiliary-item av1C property declaring 10-bit depth after the original 8-bit configuration. The fixture SHA-256 is 5c06b67ebc29379bc0dd58c61865dd28927ab3669d59d75a08afcdeb7bcd832f. Pillow 12.2.0 accepts the complete file and produces the same 64×64 RGBA mode, all 16,384 pixel bytes, image information, and EXIF bytes as the source. Both Rust metadata readers and the independent bitstream inspector now retain the first associated codec declaration. The decode path selects that first configuration without allocating or parsing later duplicate payloads.

The selected parity run passed all three auxiliary first-wins rows: duplicate_non_primary_ispe_first_wins, duplicate_non_primary_pixi_first_wins, and duplicate_non_primary_av1c_first_wins. Report: .coverage-mcp/local-evidence/selected/20261030T131308.980041Z-877af55aeff5447a948ea23ab7d01c3e/coverage.json (SHA-256 d184c504191d53db0a08f34abe3ec3b317dba924c9b78441d5df5f7874397658). Coverage MCP reports source/build identity as unverified and test attribution as unknown for this selected report; it supports targeted branch investigation, not an aggregate coverage-gain claim. The public fixture matrix now contains 2,861 total rows: 2,289 decode / inspect / verify rows and 572 encode rows. Of those, 2,289 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 789 active decode rows. No Rust unit tests were added.

AVIF empty XMP item parity — 2026-10-30

Coverage MCP's prior full report identified the unobserved empty-extent path in Meta::metadata. Added the Pillow parity row decode:avif:empty_xmp_metadata_item_extent. Its deterministic mutation adds an XMP MIME item with no iloc extents to baseline.avif and rebases the primary item's unchanged AV1 payload. The fixture hash is 98c1a14618e4577354d82b758a8840d079990364b10ce94b6ef49debc87c1642. Pillow 12.2.0 returns the same 49,152 RGB bytes and image information as the baseline and does not expose the empty XMP item. Rust now skips metadata items with no extents; the parity row also asserts that no opaque metadata is retained. The focused parity run passed 1/1.

Coverage MCP still reports duplicate branch coordinates at samples.rs:1277 for the selected report. The raw LLVM record has an eight-count hit on the true arm at the current source location, matching this fixture, plus a zero-count duplicate record. Source/build identity is unverified and test attribution is unknown, so this is targeted evidence only and no aggregate coverage gain is claimed. Report: .coverage-mcp/local-evidence/selected/20261030T114102.606404Z-864b4044914349bda1c0b8aae114d0b0/coverage.json (SHA-256 adf6bb2a4f91e3f29eb63a4f402c0e11920f4b9ed84c86ebbb40c77c2083e827). The fixture matrix now contains 2,851 rows, including 2,279 active decode rows; AVIF has 779 active decode rows. No Rust unit tests were added.

AVIF duplicate mastering-display property parity — 2026-10-30

Coverage MCP identified the second-associated-mdcv path in Meta::source_color. Added the Pillow-backed parity row decode:avif:duplicate_mdcv_first_wins and a deterministic generator that appends a conflicting second property, updates its association, and rebases the file-backed item extent. The fixture keeps the AV1 payload unchanged and has SHA-256 a81d3f13b2412488464d461f9c81ab496ce5758bfba3f5f94de237b37b77faa8. Pillow 12.2.0 accepts it and returns the same 48 RGB bytes and ICC profile as the one-property control. Pillow does not expose mdcv in Image.info, so the row checks the first property against the existing specification-backed metadata assertion.

The decoder now projects the first associated mastering-display property with find_map, matching the existing inspection path and avoiding a duplicate scan/error branch. The baseline, one-property control, and duplicate-property parity rows passed together (3/3). Coverage MCP reports no missing branch group at the current samples.rs:1362 condition. It also lists two zero-count branch locations at line 1364 in the same report; source/build identity is unverified, so that coordinate mismatch is unresolved and no aggregate coverage gain is claimed. Report: .coverage-mcp/local-evidence/selected/20261030T113105.734184Z-0ac4dd27a0e74a9fb58dc7723b9b3f50/coverage.json (SHA-256 aac455a966a27986fb9d254ad48eb97e251b84a6e17fb2d3dd8062d46981e502). The fixture matrix now contains 2,850 rows, including 2,278 active decode rows; AVIF has 778 active decode rows. No Rust unit tests were added.

AVIF duplicate alpha-reference parity — 2026-10-30

Coverage MCP identified the unobserved duplicate-match outcome in Meta::alpha_targeting at samples.rs:1462 and container.rs:1538. Added the active Pillow parity row decode:avif:duplicate_alpha_auxl_reference_first_wins. Its generated complete-file fixture changes the auxl relationship count from one to two, repeats the same destination ID, relocates both file-backed iloc extents, and verifies both AV1 payloads remain byte-identical to alpha.avif. Fixture SHA-256: 680204d0a9bb9dd0f058b2539e0ccb527c265f6b2ee5e863f2f3674fbe9d03a6.

Pillow 12.2.0 accepts the duplicate relationship and returns the same 16,384 RGBA bytes as alpha.avif. Both metadata paths now select the first matching alpha relationship, matching Pillow and stopping the iterator at that match. Metadata retention and sample-payload validation also use named static policies instead of boolean mode switches. This preserves inspection/decode validation behavior without a per-sample runtime branch. The focused parity run passed 1/1. Coverage MCP reports no missing branch locations for Meta::alpha_targeting in the selected report .coverage-mcp/local-evidence/selected/20261030T110325.340701Z-dcfc222d93864dbd94f4daaaa42637c7/coverage.json (SHA-256 d09893977c2507ff63093857928e62f2117e53557cbaec321e67ff739b712f52). The report has unverified source/build identity and unknown test attribution. Its incremental comparison is incomparable because the retained baseline detail does not match its reported totals, so no aggregate coverage gain is claimed. A subsequent full make coverage run passed all test executables and cleared the configured floors: 98,479/140,308 lines (70.1877%), 19,930/32,122 branches (62.0447%), 5,429/8,979 functions (60.4633%), and 150,314/217,800 regions (69.0147%). Coverage MCP found no missing branch group for Meta::alpha_targeting in .coverage-mcp/local-evidence/full/20261030-after-static-policy-dispatch/coverage.json (SHA-256 bc3392905e14e2c9f1f604fcea201611cb38c66b5fff81b290da6b54a27618d2); it still marks source/build identity unverified and test attribution unknown, so these are local full-run totals rather than a verified aggregate gain. make lint, make lint-x86-simd, documentation lint, AVIF fixture generation checks, and fixture-integrity verification all passed. Coverage remains below 100%; no Rust unit tests were added.

AVIF metadata parity and preceding full coverage baseline — 2026-10-30

Added four public AVIF error cases. error_avif_missing_meta retains complete ftyp/mdat boxes but omits meta. error_avis_missing_moov retains the sequence's complete ftyp/mdat, omits meta/moov, and rewrites the compatible avif brand to avis so the missing-movie condition is reached. error_pitm_zero_item_id changes only the complete version-zero meta/pitm identifier; Pillow rejects it with Failed to decode image: Missing or empty image item. error_iinf_duplicate_item_id duplicates the primary infe entry; Pillow opens it and fails while decoding frame zero. The generator pins hashes, checks box layouts and unchanged AV1 media bytes, and verifies each Pillow result.

The missing-container cases plus baseline passed 3/3; the zero-primary-ID case plus baseline passed 2/2. Coverage MCP observed the true movie.is_none() arm at samples.rs:2857. For parse_pitm at samples.rs:596, selected raw LLVM data records both outcomes in one instrumented entry; MCP still lists zero-count duplicate coordinates, and the incremental comparison is incomparable. Both selected reports have unverified source identity and unknown test attribution, so they are targeted evidence, not verified aggregate gains: .coverage-mcp/local-evidence/selected/20261030T052822.034279Z-16278491ae83412c8e031271d5cbe54d/coverage.json (SHA-256 604353a08a121a6a11459186388e4b639a761ad95e10e2a0927ae76a08981247) and .coverage-mcp/local-evidence/selected/20261030T053751.057822Z-eb90df0082fe4d6686fc73ea0ad1fb68/coverage.json (SHA-256 93a268406c922328fc4708717b6153ba8592b62d146f130347e8b9d4d14d4b99).

The existing AV1 translation-sample-depth fault-contract expectation was corrected to the decoder's public AVIF sequence rendering has no completed color surface error; its focused run passed 1/1. The full report after the duplicate-item parity change clears every configured floor: lines 98,444/140,278 (70.178%), branches 19,934/32,132 (62.038%), functions 5,426/8,974 (60.464%), and regions 150,266/217,755 (69.007%). Its SHA-256 is 178c937a2427cf81cccea2239d9860d7044d90478c67fa9ac25bd13083171123 at .coverage-mcp/local-evidence/full/20261030-current-full-parity-refresh-with-duplicate-iinf/coverage.json. Compared with the preceding zero-primary-ID full report, the totals rise from 19,931/32,130 to 19,934/32,132 branches. Coverage MCP marks the comparison limited because source/build identity is unverified and test attribution is unknown, so this is not a verified aggregate gain. The earlier comparison against the required-container baseline observed the true parse_pitm arm at samples.rs:596, also with limited identity. Coverage remains below 100%, and no Rust unit tests were added.

The public fixture matrix now contains 2,857 total rows: 2,285 decode / inspect / verify rows and 572 encode rows. Of those, 2,285 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 785 active decode rows.

AVIF duplicate item-info ID parity — 2026-10-30

Coverage MCP's full-report gaps included the duplicate-item branch in samples::parse_iinf. Added decode:avif:error_iinf_duplicate_item_id, generated by duplicating the baseline's primary infe under iinf while preserving both entries' ID and all AV1 media bytes. Pillow 12.2.0 opens the file, then rejects frame decoding with Failed to decode frame 0: Decoding of color planes failed.

The first selected run exposed a public timing mismatch: Pillow inspection retains the first item entry, while Rust rejected during inspection. Lazy inspection now retains that first entry; bounded decode validation still rejects the duplicate before reading sample payloads. The parser policy uses static dispatch; the error handler is called only for duplicate IDs. The duplicate case and baseline passed 2/2. Coverage MCP's selected report still has unverified source identity and unknown test attribution; use it as targeted evidence only, not as an aggregate coverage claim. Report: .coverage-mcp/local-evidence/selected/20261030T091738.193673Z-2e6c43a4f64346f2ba50222099d6b1ed/coverage.json (SHA-256 0fb7036b039d9292df9677434aa941920c88a2d0be688bbf6251a673a07fb5b2).

AVIF XMP pixi-only metadata parity — 2026-10-30

Coverage MCP's full report had one missing branch in container::Meta::non_primary_item_plane_properties: the true arm of bit_depth.is_some() when the item has no dimensions. Added decode:avif:xmp_metadata_item_pixi_only, which associates the existing pixi property with an empty XMP metadata item without an ispe or data extent. Pillow 12.2.0 accepts it and preserves the base AVIF's mode, size, pixels, and metadata. The generator pins both fixture hashes and verifies Pillow's full observation; the case passed selected pixel parity (1/1).

The refreshed all-feature LLVM report passes all configured coverage floors: 98,473/140,296 lines (70.189457%), 19,926/32,112 branches (62.051570%), 5,430/8,979 functions (60.474440%), and 150,302/217,781 regions (69.015203%). Coverage MCP reports no remaining gaps in the plane-property projection and observes the targeted branch as newly covered. Its comparison is limited because source/build identity is unverified and test attribution is unknown; the totals are report evidence, not a verified aggregate gain. Full report: .coverage-mcp/local-evidence/full/20261030-after-xmp-metadata-pixi-only/coverage.json (SHA-256 eeeaf8c034adbb24b5514d508a8253f6e96b4d897b9872f08e329c487545126a). No Rust unit tests were added.

AVIF trailing box size-form parity — 2026-10-30

Coverage MCP identified unobserved extended-size, oversized-size, and header-length outcomes in the top-level AVIF box parser. Added four Pillow parity rows: an open-ended UUID box, a well-formed extended-size UUID box, a UUID declaring a 4 GiB size with only its header present, and a free box declaring size 4 despite its 8-byte header. Pillow 12.2.0 opens and fully decodes all four with the baseline RGB mode, dimensions, pixels, and metadata. Each selected row passed pixel parity (1/1). The incomplete trailing-box reference enrichment now ignores a final size-below-header box after a complete mdat, matching its existing policy for incomplete trailing headers/payloads.

The selected LLVM report for the size-4 case observes the true size < header_size branch in container::next_box; the UUID size variants exercise the UUID, zero-size, extended-size, and over-32-bit declarations. Full coverage passes all configured floors: 98,468/140,288 lines (70.189895%), 19,927/32,110 branches (62.058549%), 5,430/8,979 functions (60.474440%), and 150,302/217,778 regions (69.016154%). Coverage MCP reports no remaining branch gaps in container::next_box. Removing its nested size-zero guard was safe because only sample-parser-validated InspectedAvif values reach this projection; the malformed nested case still rejects during sample parsing. The report has unverified source/build identity and unknown test attribution, so its comparison with earlier totals is limited. Report: .coverage-mcp/local-evidence/full/20261030-after-container-next-box-projection/coverage.json (SHA-256 2cf99a661be75d59e69d5e15f445a47a123ffae906fa5ec30ba33f35523b27b7). No Rust unit tests were added.

AVIF 12-bit 4:2:0 alpha extent mismatch parity — 2026-10-30

Added the Pillow parity case decode:avif:error_12bit420_alpha_ispe_extent_mismatch. Its complete-file fixture changes only the auxiliary item's ispe from 17x9 to 16x9; the generator pins both file hashes, rebases item extents, and verifies the encoded AV1 item bytes are unchanged. Pillow 12.2.0 opens the file as 17x9 RGBA and fails on load with Failed to decode frame 0: Decoding of alpha plane failed.

The first selected Rust run exposed a parity bug: Rust decoded the file as 17x9 RGBA despite the auxiliary extent. The decoder now checks paired still color/alpha item extents before AV1 reconstruction, while inspection and verification retain their lazy metadata behavior. The malformed case and its matching 12-bit 4:2:0 and 4:4:4 alpha controls passed together (3/3) through make coverage-selected. Coverage MCP reports no missing branch groups at decode.rs:24 in the selected report (2,241/48,483 branch observations); the report has unverified source identity and unknown test attribution, so this is selected evidence only, not a verified aggregate coverage gain. No Rust unit tests were added. Report: .coverage-mcp/local-evidence/selected/20261030T050243.598352Z-797d832dcb604acab0a8c34b2ea29f9a/coverage.json (SHA-256 9f620a5780f9ebcc1d07c463cbb343cccb43411ce1fa2ece16c03760b3ff6f93).

AVIF odd-size color plane-placement parity — 2026-10-30

Coverage MCP's all-active report showed an unobserved height-alignment outcome in decode_portable_inner at decode.rs:578. Added two deterministic public Pillow parity rows: portable_lossless_i420_odd_17x17 exercises odd width and height, while portable_lossless_i420_aligned_width_odd_height_16x17 keeps the width aligned and exercises an odd height. Both fixtures are 8-bit full-range lossless I420 key frames, generated and checked by scripts/generate_avif_portable_color_odd_fixture.py.

The selected run with both new rows and the existing aligned 16x8 parity control passed 3/3 exact RGB pixel comparisons. Its raw LLVM report records nonzero counts for both arms of the width and height alignment decisions at decode.rs:578 in the executed function. Coverage MCP still lists missing coordinates for that line from a zero-count symbol variant; the measurement has no verified source/build identity and reports test attribution as unknown. Treat the local counters as selected evidence only; no managed aggregate coverage gain or full-coverage claim is made. No Rust unit tests were added. Report: .coverage-mcp/local-evidence/selected/20261030T022158.847718Z-43b5764300e84bf6aef82920dc19c0a4/coverage.json (SHA-256 3ac9b56100dafb1759e0394447d1133ecd90ebd8a5f17000bebe5063935f27fd).

AV1 lossless I444 first-partition fallback coverage — 2026-10-30

Coverage MCP identified the missing true outcome of the admission branch in validate_first_partition. Added target-only contract fault-contract:avif:av1_lossless_i444_first_partition_fallback_matches_parity using the active high_bitdepth_still_10bit_444_lossless Pillow parity input (SHA-256 c49589983c8492a12c3920123f9535c887b8715bf5cbdb25b57dfdad0d8c3c7e). The coverage-only fault makes the streamed decoder yield to the existing first-partition fallback. The contract requires its pixels to match the stored Pillow reference and a clean retry to return the same image.

make coverage-selected COVERAGE_CASES='fault-contract:avif:av1_lossless_i444_first_partition_fallback_matches_parity' passed 1/1. Coverage MCP queried branch outcomes at entropy.rs:21787; only the false arm remains missing in this selection, so the true arm was observed. This is selected-test evidence, not a full-suite or aggregate coverage result. Coverage MCP reports source identity unverified and test attribution unknown; the local receipt records the exact selector and passing process. Report: .coverage-mcp/local-evidence/selected/20261030T011438.699850Z-66a7ea3318a44327b80c6d9c5ec9c667/coverage.json (SHA-256 85d0e117982a607921a34ab6eb2dfcd469c14f513d52d0dfe9276304718ea020).

AV1 distance-compound parity — 2026-10-30

Added the public parity row decode:avif:animated_lossy_interinter_distance_i420_b16x16_64x64 for a three-frame 8-bit I420 AVIF whose final frame uses distance-weighted compound prediction. The fixture is deterministic and has SHA-256 7abfec6d36ae819aaea9a9dc814c33c538488ba87362cd174b5cd62dfcaaab13. Its generator checks that AV1 order hints and joint compound are enabled, masked and warped motion are disabled, and the final frame exposes both references. The focused selected-coverage parity run passed 1/1 with exact RGB pixel parity. All four generated Pillow pixel references matched the retained files byte-for-byte, and native loop evidence verifies all 173 AVIF sequence references against the refreshed loop index.

Coverage MCP queried the selected branch report for distance_weight. The helper executed 16 times and covered the d0 > d1 path, including both outcomes of its threshold comparison. Four of its eight branch outcomes remain uncovered: the false arm of d0 > d1, the true arm of d0 <= d1, and both outcomes of the d0_c0 > d1_c1 comparison. The selected report measures 3,480/32,118 branches (10.835%); this is selected-test diagnostic evidence, not a full-suite coverage result. Coverage MCP marks source identity unverified and test attribution unknown, so no verified aggregate gain or 100% coverage claim is made. Report: .coverage-mcp/local-evidence/selected/avif-distance-compound-nowarp-20261030/coverage.json (SHA-256 31b724e9a89f9ca3f4519c2bd976b5bb69169b47cc600ede14574e9630acd11c).

AVIF auxiliary-item plane-property parity — 2026-10-30

Coverage MCP identified missing outcomes for duplicate ispe and pixi associations and for bit-depth-only plane metadata. Pillow accepts conflicting duplicate item properties and keeps the first declaration: the second ispe declares 32×64 after 64×64, and the second pixi declares 16-bit after 8-bit. Pillow still returns 64×64 RGBA for both. It rejects an alpha auxiliary item without ispe. Added the successful parity rows decode:avif:duplicate_non_primary_ispe_first_wins and decode:avif:duplicate_non_primary_pixi_first_wins, plus the malformed row decode:avif:error_alpha_auxiliary_missing_ispe. Their deterministic full-file fixtures are generated by scripts/generate_avif_non_primary_property_duplicate_fixtures.py and scripts/generate_avif_alpha_missing_auxiliary_ispe_fixture.py. Both AVIF metadata paths now retain the first ispe and pixi declaration and reject alpha auxiliary items without spatial extents. The selected all-feature parity run, including the existing with_alpha control, passed 4/4.

The earlier selected Coverage MCP query reported no missing outcomes for the first-property guards in the selected samples.rs projection. It still listed the no-plane-properties arm at samples.rs:1643 and the separate container.rs projection as unobserved. That query used the earlier selected report .coverage-mcp/local-evidence/selected/20261029T211615.021967Z-2152aafc6e34456194145d69e42e72ff/coverage.json (SHA-256 ba8c0ea9be2331bc2edcc906bb11107191955ae8baa3f0d6a0979dc562e2b947).

After strengthening the duplicate fixtures to contain conflicting property values, the final selected all-feature parity run passed 4/4. Its report is .coverage-mcp/local-evidence/selected/20261029T212255.276233Z-bc20dba5e3d942c595ae720afc223750/coverage.json (SHA-256 fd9af142f52b41d28d758578283b779d20707fc5d26a0adffa4434ebac9bdbf6). Coverage MCP could not analyze this report because its local daemon did not become healthy. The local receipt marks source identity unverified and test attribution unknown; no aggregate coverage gain is claimed.

AVIF edit-box and edit-list parity — 2026-10-30

Coverage MCP identified missing outcomes in parse_edit_box and parse_edit_list_box. Added four public malformed-input rows for a missing elst, duplicate elst, entry_count != 1, and zero segment_duration. Their deterministic full-file fixtures are generated by scripts/generate_avif_track_box_parity_fixtures.py. The combined selected all-feature parity run passed 4/4; pinned Pillow rejects every input at open. No Rust unit tests were added.

Coverage MCP finds no missing branch outcomes at samples.rs:2187, :2188, or :2209 in the selected report, and lists only the false arm as missing at :2217. This is consistent with the four new cases exercising both parse_edit_box outcomes, both entry_count outcomes, and the zero-duration error arm. Source identity and test attribution are unverified. Incremental comparison with target/coverage-all-active-parity-20261030.json was incomparable because the baseline's detailed observations are incomplete; no aggregate coverage gain is claimed. Report:

.coverage-mcp/local-evidence/selected/20261029T205301.665320Z-edaa68f597c844e6a96d16cb2e2eb25d/coverage.json (SHA-256 ca3e23fc9b3a04d58684e2600b4905ba79814b669e2d213675b09809b89382a5).

AVIF irot edge parity — 2026-10-29

Coverage MCP identified an uncovered trailing-payload outcome in the two AVIF parse_irot paths. Pillow accepts a trailing property byte and uses the leading rotation value, so both parsers now preserve that behavior. Added the active success row decode:avif:primary_item_irot_trailing_payload and the active malformed-input row decode:avif:error_primary_item_irot_invalid_value; the pinned Pillow oracle accepts the former and rejects the latter. The exact selected parity run passed 2/2. No Rust unit tests were added.

The fixture generator pins both input hashes and verifies that AV1 media bytes remain unchanged. It runs from make verify-fixture-integrity. Coverage MCP was queried on the selected report for parse_irot, but its returned branch spans still point to the removed trailing-byte guards; the current source has the compatibility comments at those lines. The local LLVM JSON retains zero-count objects with the old branches, and its receipt reports source identity unverified and test attribution unknown. Those spans are stale coordinate evidence, not a current coverage gap or an aggregate coverage gain. Report: .coverage-mcp/local-evidence/selected/20261029-avif-irot-edge-parity/coverage.json (SHA-256 520f80b2ddeb7fa7c51e6759db98882213fa49f1020912580c33be3bfa3b8bc3).

The current fixture matrix contains 2,842 total rows: 2,270 decode / inspect / verify rows and 572 encode rows. Of those, 2,270 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 770 active decode rows.

TIFF YCbCr rational inspection bounds contract — 2026-10-29

Coverage MCP found the unobserved out-of-range arm in Directory::rational. Normal inspection validates the YCbCr rational field count before reading each value, so this internal bounds failure is not reachable through the ordinary Pillow input. Added the target-only fault-contract:tiff:tiff_ycbcr_rational_index_out_of_range row using the active ycbcr_custom_coefficients_reference_black_white_lzw_2x2 parity input. Its coverage-only fault selects the count as the requested index; inspection returns TIFF YCbCr tag 529 is truncated, and retry succeeds. The selected run passed 1/1; the fault row is not_applicable to the Pillow oracle and is not counted as parity. No private unit tests were added.

Coverage MCP reports no remaining missing branch groups for Directory::rational in the selected report. Source identity is unverified and test attribution is unknown, so this target-only result is not a verified aggregate coverage gain or a 100% coverage claim. Report: .coverage-mcp/local-evidence/selected/20261029T012251.792502Z-41e34f0c0d55446e8d785ad565f45ddd/coverage.json (SHA-256 49fc1d0ac576c20a8a4dddcc6d331197cd53091d71fb8fe74412ed96d71e8c4d).

TIFF YCbCr floating-value inspection bounds contract — 2026-10-29

Normal TIFF inspection validates the YCbCr FLOAT field count before requesting each indexed value, so this out-of-range index is not reachable from the ordinary parsed input. Added the target-only fault-contract:tiff:tiff_ycbcr_floating_index_out_of_range row using the active Pillow parity input ycbcr_coefficients_float_type_lzw_2x2. Its coverage-only injection selects the entry count as the index; inspection returns TIFF YCbCr tag 529 is truncated, and retry succeeds. The selected fault-contract run passed 1/1; the injected failure is not_applicable to the Pillow oracle and is not counted as parity. No private unit tests were added.

Coverage MCP reports no remaining missing branch groups in Directory::floating_value for the selected report. Source identity is unverified and test attribution is unknown, so this is selected diagnostic and coverage evidence, not a verified aggregate coverage gain or a 100% coverage claim. Report: .coverage-mcp/local-evidence/selected/20261029T012809.747931Z-2e1c5071175a476e94e012f54496fc3a/coverage.json (SHA-256 75db412ee621a48ae0d81915e40a58a77196d71844c21a83981e6f12d3d6d544).

TIFF numeric-value inspection guard contracts — 2026-10-29

Coverage MCP found missing branches in Directory::numeric_values_are_nonempty_and_uniform. Valid parsed TIFF fields derive byte length from a nonzero type width and count, so zero-width and non-divisible-width states cannot come from ordinary inputs. Added three target-only inspection contracts using the active decode:tiff:multi_page Pillow parity input: tiff_directory_numeric_value_width_invalid, tiff_directory_numeric_value_width_remainder, and tiff_directory_numeric_value_remainder_nonempty. The injections reach the zero-width, non-divisible byte-length, and trailing-byte guards. Each inspection reports an incomplete IFD chain; a clean retry matches the two-page parity metadata. All are oracle_status: not_applicable, not Pillow parity. The zero-width and trailing-byte selection passed 2/2, and the non-divisible-width selection passed 1/1. No private unit tests were added.

The hooks are compiled only with cfg(coverage), leaving release behavior and runtime performance unchanged. The selected reports are .coverage-mcp/local-evidence/selected/20261029T014540.437831Z-870bd3f41656416a924b05b9e4de6cd8/coverage.json (SHA-256 1c65cc01d268098135c1c035b30b5fc47516d2d9ce48776dde2ac93d0863e206) and .coverage-mcp/local-evidence/selected/20261029T020254.583462Z-f94019da788c4fa0931e13a6e0c5934c/coverage.json (SHA-256 3e74bc2186283846a552f727296fdf9c3c5212a59f2bbcab0815d9dd8de3a2e9).

The all-feature coverage run after the TIFF contracts passed its six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,329/140,033 lines (68.076096%), 19,032/32,092 branches (59.304500%), 5,286/8,958 functions (59.008707%), and 145,448/217,391 regions (66.906174%), above the configured floors. Coverage MCP reports no remaining missing branch groups for this helper. It reports 13,060 missing branches overall, led by AV1 decode_inter_translation_impl (largest group: 1,574 missing outcomes). Source identity is unverified and test attribution is unknown, so these measurements do not prove per-case attribution or a verified aggregate gain. The 100% objective remains open. Report: .coverage-mcp/local-evidence/full/20261029-current-after-tiff-directory-numeric-width-remainder-final/coverage.json (SHA-256 57c20d8c32857a967c6a62836af3c65bbdb8a096a221d4fa5172ad46d2339fea).

AV1 inter-translation sample-depth fault contract — 2026-10-29

Coverage MCP identified the quantization sample-depth equality branch in Lossy420Decoder::decode_inter_translation_impl among the largest remaining AV1 gaps. Ordinary validated sequence data keeps decoder tools and quantization at the same depth, so the opposite outcome requires a target-only fault contract. Added fault-contract:avif:av1_inter_translation_sample_depth_mismatch using the active animated_lossy_inter_420_b16x64_mode_select_64x64 parity input. The coverage-only injection supplies 10-bit quantization to the 8-bit source; the public sequence API returns decode sequence: AVIF sequence validation failed: AVIF sequence rendering has no completed color surface. The clean retry succeeds and restores the source row's parity result. The fault is oracle_status: not_applicable, not Pillow parity. The selected run passed 1/1; no private unit tests were added.

The injection is behind cfg(coverage). A non-generic helper isolates the coverage branch from decoder monomorphizations, while the non-coverage helper is an inline identity. This preserves release-path work without claiming a measured speedup. Coverage MCP still lists seven specialization-specific groups at the sample-depth predicate's source line in the selected report, so this case exercises one mismatch path without closing the broader generic function gap. The selected report is .coverage-mcp/local-evidence/selected/20261029T021950.482913Z-6f8d13ad1e394fcfb0dc7690591eb7d3/coverage.json (SHA-256 4bda2fecf7e541d749598654e15d2ef14ff60f949f8c1db75c59752d5976b4ef).

The latest all-feature coverage campaign passed six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,339/140,043 lines (68.078376%), 19,034/32,094 branches (59.307036%), 5,287/8,959 functions (59.013283%), and 145,455/217,398 regions (66.907239%), above the configured floors. Coverage MCP still reports 13,060 missing branches overall; the leading AV1 decode_inter_translation_impl group has 1,574 missing outcomes. Source identity is unverified and test attribution is unknown, so these measurements do not prove per-case attribution or a verified aggregate gain. Report: .coverage-mcp/local-evidence/full/20261029-current-after-av1-inter-translation-depth-contract-final/coverage.json (SHA-256 d9a44e2d346b04e47f22240e993918b21de62b394f997f8c01f799595ea7848e). The 100% coverage objective remains open.

AVIF item-location extent policies and inspection fault contracts — 2026-10-29

Coverage MCP showed that the const-Boolean branches in parse_iloc had an unreachable opposite arm in each monomorphization. Extent validation now uses statically selected BoundedItemExtentPolicy and LazyItemExtentPolicy implementations, preserving decode and inspection bounds behavior without a runtime policy branch. The calls remain monomorphized and inline; this change does not claim a measured speedup.

Added two target-only inspection fault contracts for item-location table and extent-span reservation failures. Both reuse the baseline AVIF input, require the public inspection error, and retry successfully; they are marked not_applicable to the Pillow oracle. The selected run passed 2/2 fault contracts. Four adjacent public Pillow parity rows for baseline, split idat extents, a zero-length file extent, and ignored trailing iloc payload passed 4/4. No private unit tests were added.

The fresh all-feature coverage campaign passed six integration executables (4, 1, 57, 7, 1, and 69 cases). It measured 95,297/140,013 lines (68.062966%), 19,017/32,082 branches (59.276230%), 5,284/8,958 functions (58.986381%), and 145,407/217,363 regions (66.895930%), above the configured floors. Coverage MCP reports zero missing branch groups for samples::parse_iloc. Its report marks source identity unverified and test attribution unknown, so these results do not establish per-case attribution or a verified aggregate coverage gain. The 100% objective remains open. Report: .coverage-mcp/local-evidence/full/20261029-after-avif-iloc-inspection-reservation-contracts/coverage.json (SHA-256 5fcd25437cf23df00dc7eb351efeeb1ae400f29705021e2b318a5f01e24a5a28).

AVIF I422 TX_MODE_SELECT direct-grid parity — 2026-10-29

Added two exact Pillow parity rows for 8-bit I422 transform-select sequences. The 64x64 row covers a single-reference positive-qindex profile. The 128x64 row has two 64x64 regions and its final frame repeats the right source region while blending the left. Both generated inputs retain pinned Pillow pixels and independent libavif loop observations. The selected run passed 2/2 rows:

make coverage-selected COVERAGE_CASES='decode:avif:animated_lossy_inter_422_mode_select_b64x64 decode:avif:animated_lossy_inter_422_direct_grid_mode_select_mixed_b128x64'

Coverage MCP queried the selected report at src/codecs/avif/av1/block.rs:48518. The 128x64 case produced one true-arm hit in the mode-select direct-grid validation; the full report still has 15 missing outcomes across eight function groups at that location. An incremental comparison with the earlier full report is incomparable because the baseline lacks exact branch detail. The selected report is .coverage-mcp/local-evidence/selected/20261029T004640.007954Z-5e5a1daea18644f794461fafd464854e/coverage.json (SHA-256 ee4e41405c6d24417958dec89bc251c140e79a1eea538766c63946163d81f436).

The refreshed all-feature coverage campaign passed its six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,291/140,009 lines (68.060625%), 19,019/32,086 branches (59.275073%), 5,280/8,954 functions (58.968059%), and 145,387/217,351 regions (66.890421%), above the configured floors. Its report is .coverage-mcp/local-evidence/full/20261029-after-avif-i422-mode-select-parity-final/coverage.json (SHA-256 46548b2c0f810b4f3beef506a98644469c8679a023ea045bf44c00e98dd10590). Coverage MCP marks source identity unverified and test attribution unknown, so these measurements are not a verified aggregate gain or proof of 100% coverage. No Rust implementation changes or private unit tests were added; the 100% objective remains open. The current fixture matrix contains 2,790 total rows: 2,218 decode / inspect / verify rows and 572 encode rows. Of those, 2,218 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 718 active decode rows.

AVIF 12-bit 4:2:0 alpha converter guard contracts — 2026-10-29

Coverage MCP found five uncovered rejection outcomes in convert_subsampled_420_12bit_alpha: zero width, luma length not divisible by width, zero height, and short U or V planes. Ordinary validated AVIF input cannot reach these internal states, so five typed target-only fault rows reuse the active high_bitdepth_still_12bit_420_alpha_odd_edge_17x9 Pillow parity input. Together with the existing alpha-count mismatch contract, the selected run passed all six fault contracts (oracle not_applicable); the adjacent ordinary parity row passed 1/1 with exact RGBA8 pixel parity. All injected failures produced the public unsupported-subset result, and retry without the fault matched the fixture. No private unit tests were added.

The selected report is .coverage-mcp/local-evidence/selected/20261029T001949.649666Z-7052f79d302b4cb39943e18a4d527a8a/coverage.json (SHA-256 948dde93ad264e2725ba8d9abb43f5a03562c100f5024b9fbccb68c573e8fc05). The fresh all-feature campaign passed all six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,134/140,009 lines (67.948489%), 18,987/32,086 branches (59.175341%), 5,272/8,954 functions (58.878713%), and 145,174/217,351 regions (66.792423%), above the configured floors. The report is .coverage-mcp/local-evidence/full/20261029-after-avif-i420-12bit-alpha-faults/coverage.json (SHA-256 47f3150cb8dcaf6be09aa5ac5cd98a48a038a63685c793ffcd6ecff302a1ed2a). Coverage MCP now reports zero missing branch groups in convert_subsampled_420_12bit_alpha. It still reports 1,599 missing branch groups overall, led by AV1 decode_inter_translation_impl (largest group: 1,574 missing outcomes). The report has unverified source identity and unknown test attribution; the measurements are not proof of per-case attribution or a verified aggregate coverage gain. The 100% objective remains open.

AVIF 8-bit 4:2:0 RGB lane conversion — 2026-10-29

decode_portable_inner now converts eligible 8-bit 4:2:0 RGB output in eight-pixel lanes using the existing safe wide fixed-point conversion. The lane path applies when the image has no alpha and its width is at least eight and divisible by eight; alpha, odd-width, 4:2:2, and other conversion paths retain their existing handling. The interleave writes the same RGB24 byte order. make lint-x86-simd passed its SSE2-baseline and AVX2 Clippy builds; this host is ARM64, so those checks do not establish x86 runtime performance.

The focused AVIF parity selection passed 10/10 rows, including ordinary 4:2:0 inputs and the 2048×128 temporal sequence. Its report is .coverage-mcp/local-evidence/selected/avif420-rgb-vector-arm64-20261029/coverage.json (SHA-256 036dda3846262580a524299e9b1ff4356821f2394df801a6c12156c1da059f30). The full all-feature coverage campaign passed all six integration executables (4, 1, 57, 7, 1, and 69 cases). The report measured 95,076/139,954 lines (67.933750%), 18,957/32,066 branches (59.118693%), 5,272/8,954 functions (58.878713%), and 145,080/217,258 regions (66.777748%), above the configured floors. Its report is .coverage-mcp/local-evidence/full/20261029-after-avif-420-rgb-vector/coverage.json (SHA-256 f8ba86b378b9a711c2256115062d62cc061fcdefe274dcd2453c8873078a7e11). Coverage MCP marks source identity unverified and test attribution unknown; these reports document passing parity and observed coverage, not verified per-case attribution or a 100% coverage result.

An A-B-B-A probe used five cycles of 100 public decode_sequence calls per run on animated_motion_temporal_mv_range_2048x128.avif (SHA-256 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a). On macOS 15.7.7 ARM64 with rustc 1.96.1, the median of run medians changed from 14,085,312.5 ns to 13,578,187.5 ns per decode, a 3.60% reduction. The full timing samples and binary hashes are retained at .coverage-mcp/local-evidence/performance/avif-420-rgb-arm64-20261029/arm64-420-rgb-abba-final-routing.json (SHA-256 b705734f4102e1cd8f552b3622a839aa625927767d10b6a5a091e53ef8a82d00). This is one workload on one ARM64 host; it does not establish a general codec ranking or an SSE2/AVX2 runtime gain. cargo fmt --all -- --check, make lint, make lint-x86-simd, and the full make coverage campaign passed.

AVIF reconstructed Y-plane length fault contract — 2026-10-29

Coverage MCP identified the uncovered true outcome of the reconstructed-plane length guard in decode_portable_inner. Added fault-contract:avif:avif_portable_y_plane_length_mismatch, using the existing decode:avif:baseline Pillow parity input. Its coverage-only injection shortens the reconstructed Y plane after canvas assembly. The public decoder returns the unsupported-subset error; retry without the fault matches the existing Pillow pixels. The selected run passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261028T235124.724344Z-2b00bfb7e8bf44e3a1fd5ca6a77534e3/coverage.json (SHA-256 226611031fef4a21d7a671ab6649fc51624d3abf80a204c02771e085bb63a94d). The coverage-only hook is absent from release builds; no private unit test was added, and this target-only result is not Pillow parity.

The fresh full all-feature coverage campaign passed all six integration executables (4, 1, 57, 7, 1, and 69 cases). It measured 95,085/139,963 lines (67.935812%), 18,960/32,068 branches (59.124361%), 5,272/8,954 functions (58.878713%), and 145,090/217,268 regions (66.779277%), above the configured floors. The report is .coverage-mcp/local-evidence/full/20261029-after-avif-portable-plane-fault/coverage.json (SHA-256 bcaf3b8f0eedb29d18a11b13ddea5ac39d898dd976aa38f2c2ffb4a59a97f56d). Coverage MCP no longer lists the Y-plane mismatch outcome among this function's missing branches. Its full-report comparison remains limited because source identity is unverified and test attribution is unknown, so no verified aggregate coverage gain is claimed. The 100% coverage goal remains open.

AVIF portable-plane and routing fault contracts — 2026-10-29

Coverage MCP's refreshed report still showed missing U-, V-, and alpha-plane length outcomes in decode_portable_inner, plus an unsupported identity-color conversion outcome for subsampled planes. Added target-only rows fault-contract:avif:avif_portable_u_plane_length_mismatch, fault-contract:avif:avif_portable_v_plane_length_mismatch, fault-contract:avif:avif_portable_alpha_plane_length_mismatch, and fault-contract:avif:avif_subsampled_identity_conversion_rejected. Each coverage-only injection checks the stable unsupported-subset error and then retries the active Pillow parity input successfully. The three plane-shape rows passed 3/3; the identity-conversion row and an existing 10-bit 4:2:2 alpha parity row passed 2/2. The target-only rows have oracle status not_applicable; no private unit tests were added.

The full-resolution route now uses the already validated subsampled result and horizontal-subsampling flag to distinguish 4:4:4 from 4:2:2. The final all-feature campaign passed all six integration executables (4, 1, 57, 7, 1, and 69 cases). Coverage MCP reports no remaining branch gaps in decode_portable_inner. The full report measured 95,109/139,986 lines (67.941794%), 18,972/32,076 branches (59.147026%), 5,272/8,954 functions (58.878713%), and 145,121/217,300 regions (66.783709%), above the configured floors. It is .coverage-mcp/local-evidence/full/20261029-after-avif-portable-routing/coverage.json (SHA-256 9d26004cd2993069516ef1ab0bd9e0824f49109a44afd9b53c1385ef1fe86676). Source identity is unverified and test attribution is unknown, so these observations do not establish a verified aggregate coverage gain.

The 100% objective remains open. A function-filtered query still reports 40 monomorphized groups in av1::block::decode_inter_translation_impl, with the largest group missing 1,574 branch outcomes, and five remaining branch gaps in convert_subsampled_420_12bit_alpha.

AVIF container projection trusts validated metadata — 2026-10-29

Coverage MCP's preceding full report showed five uncovered branch outcomes in container::parse_iloc and five in container::parse_ipma. These guards duplicated validation already performed by the sample parser before it can construct the sealed InspectedAvif passed to container inspection. The projection now relies on that validated-input boundary and retains its own record-budget, bounded-read, and checked-offset handling. No parity behavior changed, and no unit tests were added.

Ten existing public AVIF parity rows passed: malformed version, width, item-ID, construction-method, and association cases remain rejected like Pillow, while valid version-two, indexed-extent, and optional-association inputs preserve exact pixels. The selected LLVM report is .coverage-mcp/local-evidence/selected/avif-container-projection-invariants-20261029/coverage.json (SHA-256 b233cd35a981bb57373beb013f8641d8e4490b4aca159d52de568cdf6933ebb6). Coverage MCP reports no missing branch outcomes in either container projection parser in the refreshed full report. The full all-feature run passed all six integration executables (4, 1, 57, 7, 1, and 69 tests) and measured 95,044/139,931 lines (67.922047%), 18,936/32,058 branches (59.067939%), 5,271/8,953 functions (58.874120%), and 145,000/217,186 regions (66.763051%), above the configured floors. Its report is .coverage-mcp/local-evidence/full/20261029-after-container-projection-invariants/coverage.json (SHA-256 04ee7c25fa33a91924ce0594f27c505f8e13530987cdd32e19d3546d46f81f76). Compared with the preceding report, ten missing branch outcomes were removed with the redundant guards; this is a denominator reduction, not ten newly covered outcomes. Coverage MCP marks source/build identity unverified and test attribution unknown. Formatting, strict Clippy (including release and coverage-hook lanes), and the native/WASI/WASM feature matrix passed. The configured 100% coverage goal remains open.

AVIF size-zero top-level skip parity — 2026-10-29

Added active public row decode:avif:size_zero_top_level_skip. Its complete input appends a size-zero top-level skip box and trailing payload to baseline.avif; the pinned Pillow oracle verifies and decodes it to the same 128×128 RGB pixels (49,152 bytes, SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf). The input SHA-256 is 02a2791f3c182f175019224d62d658ed1c5b7654bb15eed98840b38628e81584.

The preceding full-report Coverage MCP query listed the kind == b"skip" true arm in samples::extract_inner_with_metadata::<false> at samples.rs:2793 as missing. The selected public parity row passed 1/1, and its LLVM report records that arm in both metadata-bound specializations. The report is .coverage-mcp/local-evidence/selected/avif-top-level-skip-20261029/coverage.json (SHA-256 a1e10dd474934020c431d53fb7641b6edebc2496e86b7b9d379717402ce56ff2). Its local receipt records no source changes during collection; Coverage MCP still marks source/build identity unverified and test attribution unknown, so this is a focused parity and branch observation, not an aggregate coverage gain claim. No unit tests were added.

A fresh full all-feature coverage run passed all six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,044/139,931 lines (67.922047%), 18,936/32,058 branches (59.067939%), 5,271/8,953 functions (58.874120%), and 145,000/217,186 regions (66.763051%), unchanged from the preceding full report. Coverage MCP no longer lists the skip true arm as missing; its full-report coordinate comparison reports one newly observed branch location and no removed locations. Both reports lack verified source/build identity, and MCP does not confirm named-test attribution, so this remains limited coordinate evidence rather than a verified aggregate coverage gain. The full report is .coverage-mcp/local-evidence/full/20261029-after-top-level-skip/coverage.json (SHA-256 35d987c8f13e29531412954fff6472b5e589409dccec36d1a4d801d6bbc62864).

AVIS truncated top-level header after a complete movie — 2026-10-29

Coverage MCP's preceding full report identified missing outcomes in the brands.has_avif and brands.has_avis checks at samples.rs:2816. Added the active parity row decode:avif:error_animated_sequence_only_stsz_common_size_short_samples_truncated_tail. It derives from the existing malformed five-frame AVIS fixture (fe2666ad9cf9fe32d6b4a35d64f1b9f1a101ae9a65e8055fab6cd62bc63e827c) and appends the four-byte incomplete top-level size field 00 00 00 10. Pillow verification succeeds; pixel loading still fails with Failed to decode frame 0: Decoding of color planes failed.

The selected all-feature parity run passed 1/1. Its LLVM report records the brands.has_avif == false and brands.has_avis == true outcomes at line 2816 in both metadata-bound specializations. The fixture SHA-256 is 704aa89ebb2866a5c6b457a28bd2e85317c0b5bb77bf40e151f7e9ab0618bda2; the selected report is .coverage-mcp/local-evidence/selected/avif-sequence-truncated-tail-20261029/coverage.json (SHA-256 23dc24bbf1e97e487c5e09232d9af7e46be7a8cfa6f899b0405d0a32eb8af230). Its local receipt records that fixture and source files did not change during collection. A fresh full make coverage run passed the six integration executables (4, 1, 57, 7, 1, and 69 tests) and measured 95,044/139,931 lines (67.922047%), 18,940/32,058 branches (59.080417%), 5,271/8,953 functions (58.874120%), and 145,005/217,186 regions (66.765353%), above the configured floors. Coverage MCP now reports no missing outcomes at samples.rs:2816; its full-report coordinate comparison shows four newly observed branch outcomes and no removed locations. The full report is .coverage-mcp/local-evidence/full/20261029-after-avif-tail-parity/coverage.json (SHA-256 97a191d4e95590b5e870ad86439d3db24038087b57bb70418b6fa231147f1fdb). Both reports lack verified source/build identity, and MCP marks test attribution unknown, so this is limited coordinate evidence rather than a verified aggregate gain. No unit tests were added.

AVIF stsd parser parity and ignored hint-track entry — 2026-10-29

Coverage MCP identified missing samples::parse_stsd error outcomes for an unsupported FullBox version, an unknown sample-entry type, and an undersized av01 entry. Added three malformed-input parity rows plus a successful trailing-payload row. All four fixtures derive from the pinned five-frame AVIS-only source animated_sequence_only_no_meta.avif (SHA-256 c861761e45518018150dc52302da7ff5015d1f259ff2c1309eea94eaf8176fdb). The successful mutation appends one byte after its declared stsd entry, rebases stco, preserves file samples, and yields the same five 67,500-byte RGB frames in Pillow 12.2.0 and pinned libavif 1.4.1. The native loop oracle records one total play. Pillow rejects each of the other three complete files at open.

Fixture SHA-256 values are 153ead664b729f1854c738ddd2e771e18c7488457f7716d8516df626eb2543ef for animated_stsd_trailing_payload.avif, aeace2695e5ce994805cc52b298cbed8f4354f025ff58431da591b83956a790b for error_animated_stsd_nonzero_version.avif, 48318a79ccba0b03ec54fb991dc9125d6a79a2fba64a34fb710d97c36343c402 for error_animated_stsd_unknown_sample_entry.avif, and 2fd1bb9882767e930ab717a2e8c970de48643788b11546af73cf91a09582af91 for error_animated_stsd_short_av01_entry.avif.

Added animated_unknown_sample_entry_ignored_hint_track.avif as an accepted public parity case. It adds a hint track with one bounded sample pointing at existing media data and an unknown sample-entry type. The pinned Pillow and libavif observers preserve the original five frames and one-play result; its SHA-256 is dcc55d191d0f5e9cbabcd1dfbc9119b2f8e712ec1cea33880873739ed9987a49.

The selected parity run passed 4/4 rows. It first exposed the trailing-byte mismatch in samples::parse_stsd, then in the parallel container::parse_stsd; both parsers now stop after the declared entries and ignore bounded trailing bytes. The separate ignored-hint-track parity row passed 1/1 with exact 67,500-byte frame parity and exercises the container parser's non-av01 entry path. The unsupported-version check in that second parser was redundant: its sealed InspectedAvif input can only be constructed after the public sample parser accepts versions zero or one. The reference bitstream inspector likewise parses exactly the declared entry count. No unit tests were added.

The selected LLVM report is .coverage-mcp/local-evidence/selected/avif-stsd-parity-green-20261029/coverage.json (SHA-256 a1d7b2cab9ab99ed1bd118793b34d43f6de674cfef747e37c688b005d7139d64). The new row's selected LLVM report is .coverage-mcp/local-evidence/selected/avif-ignored-hint-track-stsd-20261029-v2/coverage.json (SHA-256 1b805730291e4254099311c4a9df9538cc73f99979915cbb266a7b371e755185). Coverage MCP reports no missing branch outcome in container::parse_stsd for this selection. A fresh full all-feature run then passed all six integration executables (4, 1, 57, 7, 1, and 69 tests). Coverage measured 95,075/139,969 lines (67.925755%), 18,944/32,076 branches (59.059733%), 5,273/8,955 functions (58.883305%), and 145,034/217,228 regions (66.765794%), passing the configured floors. The report is .coverage-mcp/local-evidence/full/20261029-after-missing-leading-ftyp/coverage.json (SHA-256 0152da4b31764fae4ce0a2bc0c051bd71d3dbc72eed3503bcefb7702e5411874). These totals match the preceding full report; the extra malformed signature row adds parity protection but does not increase covered coordinates. Both full reports have unverified source/build identity and unknown test attribution in Coverage MCP, so they do not support a verified aggregate coverage-gain claim. Formatting and strict all-target, all-feature Clippy passed on the earlier source state; this latest change is fixture-only.

The selected report records no missing branch outcomes in container::parse_stsd after the non-av01 path is reached by the ignored hint track. The report does not establish a complete-suite coverage regression comparison or test attribution. No SIMD or benchmark change was made; 100% remains open.

Added error_animated_missing_leading_ftyp.avif as a full-file Pillow parity case that changes only the leading box type from ftyp to free. The selected parity row passed. Coverage MCP shows the first-box branch remains unobserved for this selection. Code inspection shows public dispatch rejects the missing signature before samples::extract_inner_with_metadata runs, so this protects format detection but does not cover the parser's defensive first-box check. The selected LLVM report is .coverage-mcp/local-evidence/selected/avif-missing-leading-ftyp-20261029/coverage.json (SHA-256 a00c65408d7d017a2cb157e7fc48f107726a32cc2077b2eb11085ce7605eb66a).

The current fixture matrix contains 2,774 total rows: 2,203 decode / inspect / verify rows and 571 encode rows. Of those, 2,203 decode rows and 540 encode rows are active; 31 planned encode rows remain. AVIF has 699 decode rows.

AVIF ipma and iref parser parity — 2026-10-29

Coverage MCP identified uncovered parse_ipma item-ID validation branches. Added parity cases for a zero item ID and a repeated, non-increasing item ID; both selected cases pass and match Pillow's open-time rejection. A separate trailing-payload case reproduced a mismatch: Pillow inspects and decodes the image while Rust rejected the bounded trailing ipma byte. The parser now ignores bytes after its declared association records, and the selected pixel parity case passes (49,152 bytes, Rgb8). The reference metadata inspector was adjusted to read the declared associations while ignoring the same tail. The selected reports are .coverage-mcp/local-evidence/selected/avif-ipma-invalid-item-ids-20261029/coverage.json and .coverage-mcp/local-evidence/selected/avif-ipma-trailing-payload-20261029-confirmed/coverage.json. Coverage MCP then identified three uncovered parse_iref rejection branches. Added zero source-ID, zero target-ID, and trailing-reference-payload fixtures; all three selected parity rows pass and match Pillow's open-time rejection. The trailing-byte mutation shifts the alpha file extents by one byte while preserving the referenced AV1 payloads. Its selected report is .coverage-mcp/local-evidence/selected/avif-iref-item-id-errors-20261029/coverage.json. The refreshed full all-feature report is .coverage-mcp/local-evidence/full/20261029-after-avif-iref-parity/coverage.json (SHA-256 5d69ddbf50fc288a91fb77c766813b064edd65b5d1f3a10971a0de365d2d9cd3). All integration tests passed and the configured floors passed at 95,046/139,928 lines (67.9249%), 18,944/32,056 branches (59.0966%), 5,271/8,953 functions (58.8741%), and 145,007/217,183 regions (66.7672%). Coverage MCP reports no missing branch observation at samples.rs:979 or samples.rs:1037 in this report. Its comparison with the preceding local full report identifies three newly observed samples::parse_iref branch arms, but source/build identity is unverified, so this is coordinate evidence rather than a verified aggregate gain. Three defensive true arms remain in container::parse_iref; public AVIF inspection first constructs InspectedAvif through samples::inspected, so the malformed references are rejected before this second parser runs. The parity-only matrix cannot reach those duplicate checks. The 100% goal remains open.

AV1 compound tall lossless I420 parity — 2026-10-28

Added the active public parity row decode:avif:animated_lossless_compound_vertical_i420_b64x128 for a three-frame, 128x128, all-lossless 8-bit I420 sequence. The final frame is the exact per-sample average of its two references; a fixture-only pinned libaom patch forces the inter root into two vertical B64x128 leaves. Pillow 12.2.0 frame hashes are 8d5970545b72ff383366ee05a687ef5c1b2ad9c077423325499abca2d36207ca, c046f748dfe1bd899697d6cde047f11239987ec1cf83782334a2c5aa5e5de2e0, and 64c3d0552abe271f84a6f59d0d179877485829b79e48fbafabf8daf4cafbe028; independent pinned libavif loop evidence reports three frames and infinite repetition (-1). The selected public parity run passed 1/1 rows (49,152 output bytes per frame). No unit tests were added.

The selected LLVM report is .coverage-mcp/local-evidence/selected/current-lossless-compound-tall-i420-20261028/coverage.json (SHA-256 6aab7acb128f5e171a7a3066ea5451ac111032e36fa95b325a95276c0c63869d). A fresh full make coverage run passed all six integration executables (4, 1, 57, 7, 1, and 69 tests) and measured 95,065/139,980 lines (67.913273%), 18,936/32,088 branches (59.012715%), 5,272/8,955 functions (58.872138%), and 145,020/217,240 regions (66.755662%), passing configured floors. The report is .coverage-mcp/local-evidence/full/current-final-after-compound-tall-lossless-20261028/coverage.json (SHA-256 b12fbc40994d3cf94b6d730e7517e9d2209d7a89d4559f416c82bf97861b362f). Coverage MCP observed the luma_height > 64 true arm at src/codecs/avif/av1/block.rs:48440 compared with the previous full report. The report totals are unchanged, and source/build identity and test attribution are unverified, so this is coordinate evidence rather than a verified aggregate coverage gain. A subsequent gap query still reported missing branch outcomes at this predicate across six generic decoder specializations. The matrix contains 2,746 rows: 2,175 active decode rows and 540 active encode rows, with 31 planned encode rows.

AV1 compound wide lossless I420 parity — 2026-10-28

Added the active public parity row decode:avif:animated_lossless_compound_wide_i420_b128x128 for a deterministic three-frame, 128x128-superblock, all-lossless 8-bit I420 AVIF sequence. Pillow 12.2.0 exact RGB hashes and independent pinned libavif loop evidence cover all three frames. The selected public parity run passed 1/1 rows (49,152 output bytes per frame). No unit tests were added.

The retained selected LLVM report is .coverage-mcp/local-evidence/selected/current-lossless-compound-wide-i420-20261028/coverage.json. Its branch counter observes the wide lossless arm in decode_inter_compound_translation_lossless_grid; Coverage MCP marks source and build identity unverified, so this is targeted local evidence rather than a verified aggregate coverage gain. The current fixture matrix contains 2,746 total rows: 2,175 decode / inspect / verify rows and 571 encode rows. Of those, 2,175 decode rows and 540 encode rows are active; 31 planned encode rows remain. A refreshed full make coverage run passed all six integration executables (4, 1, 57, 7, 1, and 69 tests). It measured 95,065/139,980 lines (67.913273%), 18,936/32,088 branches (59.012715%), 5,272/8,955 functions (58.872138%), and 145,020/217,240 regions (66.755662%), passing the configured floors. The report is .coverage-mcp/local-evidence/full/current-final-after-compound-wide-lossless-20261028/coverage.json (SHA-256 48ffd4f369fa78923af2b32752411e7974536999aae2fd05a97a60a3fe119c87). Coverage MCP found nine newly observed branch coordinates against the previous full report, including the luma_width > 64 arm at src/codecs/avif/av1/block.rs:48440; the separate luma_height > 64 arm was not observed by that run. MCP marks source/build identity unverified and tests unknown, so no verified aggregate coverage gain is claimed.

JPEG RGB 4:2:0 SSE2/AVX2 runtime comparison — 2026-10-26

The merged PR #106 added a 16-pixel RGB 4:2:0 conversion path for AVX2, while retaining the existing SSE2 packet path. Its x86 benchmark run completed five rounds for each of 40 JPEG encode/decode workloads on one AVX2-capable Ubuntu host. The SSE2 lane ran before the AVX2 lane. All 40 Rust output lengths and hashes matched across the two builds.

For RGB Q85 4:2:0 encoding, the recorded median was 159,989 ns under SSE2 and 123,933 ns under AVX2 at 128x128 (1.291x), 3,340,953 ns and 2,830,304 ns at 512x512 (1.181x), and 13,394,850 ns and 11,414,454 ns at 1024x1024 (1.174x). In the same artifact, AVX2 Rust medians were 1.417x, 1.684x, and 1.729x the TurboJPEG 3.2.0 medians for those workloads. These hosted sequential runs show an AVX2-over-SSE2 improvement for the sampled workload, while leaving a clear gap to the oracle; they do not support a fastest-in-the-world or project-wide claim. The retained benchmark artifact has SHA-256 fecb3cf22f5f92a1da9c825a05ae010bf5be21af02f50a4e3b3c836d0ee44aeb.

AVIF I420 chroma reuse — 2026-10-28

The public decode_sequence profile for animated_motion_temporal_mv_range_2048x128.avif showed substantial time in the scalar 4:2:0 chroma filter. The decoder now advances row and column coordinates without per-pixel division, shares U/V filter geometry, and reuses each vertically filtered chroma sample across its adjacent output columns. The fixed-point weights, pre-filter high-depth shift, edge replication, and single final rounding operation are preserved. No unsafe code or unit tests were added.

On an Apple M3 Pro running macOS 15.7.7 with Rust 1.96.1, paired A–B–B–A runs timed the complete public sequence decode and output destruction 42 times per run in locked release builds (--no-default-features --features avif). The checkout was based on 69a79d4c4, with locked dependencies and matching release settings; the only codec-source change between the A/B builds was src/codecs/avif/decode.rs. The fixture SHA-256 is 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a, and the decoded output totals 2,359,296 RGB bytes. Baseline medians were 14.953 ms and 14.865 ms; the optimized medians were 12.238 ms and 12.194 ms. Averaging the two run medians gives an 18.06% latency reduction. This is one AVIF decode workload, not an encoder result or an x86 runtime result. A portable eight-lane RGB conversion experiment passed parity but did not improve the paired end-to-end result, so it was removed. make lint-x86-simd confirms the retained source still compiles under SSE2 and AVX2 flags; it does not measure runtime speed on those CPUs.

The final selected parity run passed seven public rows spanning 4:2:0 and 4:2:2, odd dimensions, 10-bit and 12-bit samples, alpha, and the timed animation. Coverage MCP found no missing branch coordinates in the new vertical-geometry or cached-sampling helpers for that run. The report is .coverage-mcp/local-evidence/selected/avif-420-filter-cache-final-20261028/coverage.json (SHA-256 406fa5e215d8b347b4a1b2b7f1cf86533f7e18ae47b366b7d5f70bc55fb20896). Its source/build identity and test attribution are unverified by Coverage MCP, so this is selected coordinate evidence, not an aggregate coverage claim. Timing logs are retained under .coverage-mcp/local-evidence/perf/avif-sequence-2048x128-arm64/.

WebP vertical dimension-limit parity — 2026-10-28

Added four active public encode parity rows for the WebP encoder's vertical dimension boundary: lossless and lossy success at 1x16,383, followed by the matching Pillow errors at 1x16,384. The selected parity run passed all four rows against Pillow 12.2.0. The cases extend the existing horizontal boundary fixtures and bring the matrix to 2,710 rows, with 540 active encode rows.

The refreshed full make coverage run passed all six integration test executables (4, 1, 57, 7, 1, and 69 tests; zero failures). It measured 94,615/140,050 lines (67.5580%), 18,816/32,142 branches (58.5402%), 5,259/8,957 functions (58.7139%), and 144,357/217,340 regions (66.4199%). The report is .coverage-mcp/local-evidence/full/webp-vertical-dimension-edges-20261028/coverage.json (SHA-256 d96b0ec4b0144942778dcf0c5cf53384670b6a1b7864e37aff463b4766ca8e11). Coverage MCP compared it with the previous full report and returned two newly observed branch coordinates, including the height-limit outcome in validate_dimensions at src/codecs/webp/encode/vp8/encoder.rs:119. The reports have unverified source/build identity and unknown test attribution, so this is coordinate evidence and not a verified aggregate coverage gain. The selected report is .coverage-mcp/local-evidence/selected/webp-vertical-dimensions-20261028/coverage.json (SHA-256 642b26ff047f1572b0cf71e08083406ff18e4c6824d32421e38b326d982e5a41). No production codec changes, Rust unit tests, or performance claims were added.

AV1 wide I420 compound parity — 2026-10-28

Added two active animated AVIF parity rows generated by scripts/generate_avif_lossy_compound_wide_i420.py. The mixed-residual case changes pixels in each 128x128 region of the final frame; the unsplit case uses the exact average of its two reference frames. Both compare all three 196,608-byte RGB frames against Pillow 12.2.0. The selected parity runs passed 1/1 each.

Coverage MCP's selected comparison found five additional branch outcomes for the unsplit case relative to the existing wide-I420 parity case. The reports have unverified source/build identity and unknown test attribution, so this is bounded selected evidence; no aggregate full-coverage increase is claimed. The refreshed full make coverage run passed all six test executables (4, 1, 57, 7, 1, and 69 tests). It measured 94,615/140,050 lines (67.5580%), 18,814/32,142 branches (58.5340%), 5,259/8,957 functions (58.7139%), and 144,357/217,340 regions (66.4199%). The report is retained at .coverage-mcp/local-evidence/full/avif-compound-wide-parity-20261028/coverage.json. Coverage MCP reports seven newly observed branch coordinates against the previous full report, but both reports have unverified source/build identity and unknown test attribution; no verified aggregate gain is claimed. Selected reports are retained under .coverage-mcp/local-evidence/selected/avif-compound-wide-parity-fixed-20261028/ and .coverage-mcp/local-evidence/selected/avif-compound-wide-unsplit-fixed-20261028/. No decoder implementation or Rust unit tests were added.

AVIF lossless B128 inter-grid parity — 2026-10-28

Coverage MCP's latest full report identified missing outcomes at src/codecs/avif/av1/block.rs:48440 in the lossless wide-grid predicate. Added two active public Pillow parity rows: the existing wide-grid witness and a new vertical B64x128 witness. The vertical fixture uses a fixture-only pinned libaom partition override to split the 128x128 inter I420 root into two valid B64x128 leaves; runtime code is unchanged by the encoder patch.

The selected parity run passed both rows (2/2), comparing 49,152 RGB bytes per frame with Pillow 12.2.0. Its LLVM counters show the tall predicate luma_height > 64 true twice in one decoder specialization. Coverage MCP still reports other branch outcomes at this source line across generic specializations. The selected/full incremental comparison is incomparable because the baseline branch detail does not match its reported totals; both reports also have unverified source identity and unknown test attribution, so no aggregate coverage gain is claimed. The selected report is .coverage-mcp/local-evidence/imported-worktree/selected-b128-both-20261028/coverage.json.

The last full coverage report before this selected run measured 94,404/140,013 lines (67.4252%), 18,766/32,158 branches (58.3556%), 5,252/8,953 functions (58.6619%), and 144,120/217,320 regions (66.3170%). It is retained at .coverage-mcp/local-evidence/imported-worktree/full-coverage-next-edge-20261028/coverage.json; the four-metric 100% gate remains open. make verify, make lint, and make lint-x86-simd passed. No Rust unit tests or SIMD implementation were added.

AVIF required sample-table parity — 2026-10-28

Coverage MCP identified the missing-offset, missing-stsc, and missing-stsd outcomes in samples::parse_stbl. Added three public AVIF parity rows whose fixtures replace exactly one required table with a same-size free box. The pinned Pillow oracle rejects each full file with UnidentifiedImageError: cannot identify image file <bytes>. The selected run passed all three rows, and the fixture generator is part of make verify-fixture-integrity.

The refreshed full make coverage run passed all six integration test executables (4, 1, 57, 7, 1, and 69 tests; zero failures) and the configured coverage floors: 94,102/139,678 lines (67.3707%), 18,712/32,056 branches (58.3728%), 5,246/8,947 functions (58.6342%), and 143,642/216,753 regions (66.2699%). Its report is .coverage-mcp/local-evidence/imported-worktree/full-avif-required-sample-tables-20261028/coverage.json (SHA-256 9578878af400a9200a1564101c73d28417ddcfab3dd92e5dfe17647cce2cce13). The Coverage MCP comparison reports three newly observed branch coordinates in samples::parse_stbl at samples.rs:2360; its remaining two branch outcomes are in container::parse_stbl. Both reports lack matching source/build receipts and MCP marks test attribution unknown, so the comparison is limited coordinate evidence. Public AVIF inspection parses the sample tables before the container tables, making those remaining missing-stsz/stsd container branches unreachable through the current public parity path. No Rust unit tests or production-code changes were added.

AVIF duplicate media-box parity — 2026-10-28

Added an animated AVIF success row combining repeated mdhd, hdlr, stts, stsz, stss, and stsd boxes with an unknown free child. Pinned Pillow accepts it with five RGB frames matching the source pixels. Pillow also accepts the missing-hdlr variant with matching pixels. Duplicate minf, duplicate stco, duplicate sample-size, missing-mdhd, and missing-minf error fixtures match Pillow's rejection behavior. The selected parity run passed all seven rows. The focused cases are generated and checked by scripts/generate_avif_media_box_edges.py; its checks rebase and verify the container offsets.

The fresh full make coverage run passed all six existing integration test executables (4, 1, 57, 7, 1, and 69 tests; zero failures) and the configured coverage floors: 94,102/139,678 lines (67.3707%), 18,709/32,056 branches (58.3635%), 5,246/8,947 functions (58.6342%), and 143,642/216,753 regions (66.2699%). Its report is .coverage-mcp/local-evidence/imported-worktree/full-avif-media-box-edges-20261028/coverage.json (SHA-256 1bc3c1d6fd16b78f4715e04d5fb3b009adea880b97de872429d4339b70e5e240). Coverage MCP marks report source identity unverified and test attribution unknown. Its coordinate queries list additional outcomes in AVIF parse_mdia, parse_stbl, and sequence_payload; these require source and test inspection before they can be treated as verified gaps. No SIMD path or performance claim was added, and no Rust unit tests were added. make lint, make lint-x86-simd, and make test-feature-matrix passed, including strict Clippy for debug, release, coverage, SSE2, and AVX2 targets, plus the native, WASI, and WASM feature lanes.

The current fixture matrix contains 2,714 total rows: 2,143 decode / inspect / verify rows and 571 encode rows. Of those, 2,143 decode rows and 540 encode rows are active; 31 encode rows remain planned. The roadmap and generated capability counts now reflect this matrix.

AVIF top-level duplicate-box parity — 2026-10-28

Added four active parity rows for duplicate top-level AVIF boxes around mdat. Pillow 12.2.0 ignores duplicate meta and moov boxes after media data, preserving the original five-frame metadata and pixels. Before mdat, a duplicate meta fails at image open; a duplicate moov opens and verifies but fails when Pillow decodes frame zero. The selected public parity run passed all four rows. Its report is .coverage-mcp/local-evidence/selected/avif-top-level-duplicate-order-20261028-final/coverage.json (SHA-256 2c5595219ddce35a70b8787e9d500841e226d59d7fbbcaa4021f8197fed22000).

Coverage MCP's selected comparison with the earlier after-mdat-only selection reports two newly observed branch coordinates in the extract_inner_with_metadata specializations at src/codecs/avif/samples.rs:2765. Source/build identity is unverified and test attribution is unknown, so this is bounded coordinate evidence rather than a verified aggregate coverage gain. The duplicate-mutation generator pins all four fixture hashes and checks each Pillow observation. No Rust unit tests, SIMD changes, or performance claims were added.

AVIF iloc payload-span parity — 2026-10-28

Coverage MCP's earlier full report listed unobserved outcomes in pixel_payload_bytes at src/codecs/avif/samples.rs:2939, :2943, and :2961. Added active parity row decode:avif:iloc_idat_disjoint_extents, whose two iloc extents have an eight-byte unreferenced gap in idat while reconstructing the exact original AV1 payload. The fixture hash is 999b5f5f5fabcc4b8ab75a8fbd85b4997cf5b2a4aa96861038a27e534db5d6e6. Its selected parity run passed with all 49,152 RGB bytes matching Pillow.

Added error parity row decode:avif:error_iloc_zero_length_file_extent for an empty file extent. Pillow rejects the empty image item, and the selected public Rust decode run matched that error with the exact metadata preflight limit of 3,077 bytes. The fixture hash is e97d452d82637dce3b2a03a514098486d185f03623c3f940c02730a2728c3818. The disjoint-extent case uses a 3,131-byte metadata limit to reach span collection while preserving the full pixel payload.

The refreshed full make coverage run passed all six test executables (4, 1, 57, 7, 1, and 69 tests; zero failures) and all configured coverage floors: 94,056/139,653 lines (67.3498%), 18,709/32,072 branches (58.3344%), 5,235/8,937 functions (58.5767%), and 143,593/216,726 regions (66.2555%). Its report is .coverage-mcp/local-evidence/imported-worktree/full-avif-payload-span-parity-20261028/coverage.json (SHA-256 493b02dfebd5a1568e881abe25bf1079a053e7a067560e8b6d0b4c61a8bc1ef5). The Coverage MCP comparison reported newly observed outcomes for all three target branches in pixel_payload_bytes. Both reports lack matching source/build receipts, and MCP marks test attribution unknown, so this remains coordinate evidence rather than a verified coverage gain. The matrix now has 2,680 rows, including 2,124 active decode rows and 624 active AVIF decode rows. No production decoder change, performance/SIMD claim, or Rust unit test was added.

PNG chunk iterator failed-state contract — 2026-10-27

The ordinary PNG decode path returns on its first chunk parse error, so no public input can call the private iterator again after that error and reach its failed short-circuit. Added the target-only row fault-contract:png:png_chunk_iterator_failure_stops_iteration, marked not_applicable for the Pillow oracle, to inject a deterministic parse failure under cfg(coverage) and verify that the following iterator call stops. The case checks the public malformed-input error and that a retry succeeds. Paired it with public parity row decode:png:pillow_tolerated_malformed_missing_iend, which covers the neighboring end-of-input branch and matched all 49,152 RGB bytes.

The combined selected run passed both rows (parity 1/1, fault contract 1/1). Its report is .coverage-mcp/local-evidence/selected/png-chunk-iterator-failure-20261027/coverage.json (SHA-256 865e434eb6638fcf2d8ff8e727246e63b4c3f46664a72f939643fe1f6ddbeb57). Coverage MCP returned no missing branch observations for src/codecs/png/decode.rs:2056 in this selected report. The report's source identity is unverified and its test attribution is unknown, so this is selected-coordinate evidence only. A subsequent full make coverage run passed all six test executables (4, 1, 57, 7, 1, and 69 tests; zero failures) and reported 93,981/139,644 lines (67.3004%), 18,683/32,072 branches (58.2533%), 5,230/8,934 functions (58.5404%), and 143,498/216,707 regions (66.2175%). Its report is .coverage-mcp/local-evidence/full-png-chunk-iterator-20261027/coverage.json (SHA-256 2b01d51753c01d2cee7d5e691457469440fcef9b4eda0cafda33b6b28cf8832b). Coverage MCP found no missing branch group at line 2056 in that full report. The raw report has no MCP source/build receipt, so these totals are a local baseline, not a verified aggregate gain; the remaining global gaps need source inspection. No performance gain, source coverage exclusion, or Rust unit test is claimed.

WebP method-zero 32-color palette parity — 2026-10-27

Coverage MCP's filtered older full report listed missing branch outcomes in apply_palette. Its source/build identity and test attribution were unknown, so the report was used to choose a candidate, not to claim a current suite gap. Added active parity row encode:webp:enc_lossless_method_0_palette32 using the existing 32-color WebP input. The method-zero path exercises the palette size-over-17 encoding branch and its one-index-per-byte packing case.

The selected parity run passed 1/1: Pillow and Rust encoded the input to the same 126 bytes, token and ordinary Rust encodes matched, and re-decoding matched all 64x64 RGB pixels. Its selected LLVM report is .coverage-mcp/local-evidence/selected/webp-method0-palette32-20261027/coverage.json (SHA-256 66f592f30727490741d38b0b5a543e214444bdbcb26aa4524581b0fdb3e6b84d). The Coverage MCP selected-report comparison against the existing 16-color case returned limited, with six newly observed and six not-observed outcomes across the token and ordinary apply_palette paths. The report records the true outcome for palette.len() > 17 and the false outcome for the transparent tail check at src/codecs/webp/native/encoder.rs:2315. Because MCP source/build identity and test attribution are unverified for these local reports, this is selected-row coordinate evidence, not a verified full-suite coverage gain. No production codec code or Rust unit tests were added, and no aggregate coverage or performance claim is made.

AVIF decoder-model parameter parity — 2026-10-27

Coverage MCP's imported full baseline identified the true arms in SequenceHeader::consistent_with at src/codecs/avif/av1/sequence.rs:87 and :96 as missing. Added active row decode:avif:animated_decoder_model_parameters_change and a deterministic mutation of the pinned animated AVIF that changes the decoder-buffer delay in a repeated sequence header. Pillow 12.2.0 and Rust matched all five frames; the selected parity run passed 1/1 with 67,500 RGB bytes matching.

The selected local LLVM report is .coverage-mcp/local-evidence/selected/avif-decoder-model-parameter-20261027/coverage.json (SHA-256 1b4056a457fb9eec1c4901f00a84349ad0cf33a3d69c0681bc8863be4b9f8422). It records one hit on each true arm at lines 87 and 96. Coverage MCP cannot read reports in this managed worktree, so the selected result has no MCP source/build attribution or MCP incremental comparison. The full coverage suite was not rerun. No production codec change or Rust unit test was added.

WebP VP8 sharpness-4 parity — 2026-10-27

Added active row decode:webp:lossy_vp8_filter_variants_lossy_strong_sharp4, generated with pinned libwebp 1.6.0 strong filtering and sharpness 4. Pillow 12.2.0 expects a 128x128 RGB result; the selected parity run passed 1/1 with all 49,152 bytes matching.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261027T035807.061420Z-4b00478634e347d2ac4abf91f352db84/coverage.json (SHA-256 22d39a55d0400d2cd2e565187ab27aba13478723df12f79678a88a697cc46b7d). It records 192 visits to the nonzero sharpness path and 192 false outcomes for sharpness_level > 4 at src/codecs/webp/native/vp8.rs:1926. The previous full report recorded no false outcomes there, and Coverage MCP's baseline gap lookup identified that missing arm. Its incremental comparison was incomparable because the baseline lacked complete exact branch detail; source identity and test attribution remain unverified, so no aggregate coverage gain is claimed. No production code or Rust unit tests were added.

WebP hash-chain index guard contract — 2026-10-27

Added the target-only contract fault-contract:webp:webp_hash_chain_index_overflow_rejected for the private VP8L hash-chain index bound. Public WebP encoding caps each axis at 16,384 pixels, so a Pillow parity input cannot exceed the i32 sample-index range. The cfg(coverage) fault point drives this defensive guard through the public encoder while leaving release builds without fault controls.

The case first decodes the active Pillow lossless_vp8l input, injects the failure, and checks the structured WebP Dimensions error. An uninjected retry must match the existing enc_lossless Pillow byte reference, produce the same bytes as a fresh retry, and decode to the Pillow RGB reference. The range check now runs once before the low-effort/high-effort const-generic split. In the focused run, both outcomes of the i32 conversion check were observed; Coverage MCP reports no missing branch at that guard. The selected run passed 1/1. Its report is .coverage-mcp/local-evidence/selected/webp-hash-chain-index-overflow-20261027-attempt-3/coverage.json (SHA-256 42919ee848aeab78d179ec885552704279c8a6eb3acde2855b779a84505165bb).

The refreshed full make coverage run passed, including 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its current report is .coverage-mcp/local-evidence/full-20261027-webp-alpha-raw-token/coverage.json (SHA-256 379e6fe31021fce03cf965be6aa903938c93d70df50e226e549b80fc56c98ba3). Totals are 93,817/139,562 lines (67.2225%), 18,626/32,042 branches (58.1300%), 5,224/8,928 functions (58.5125%), and 143,267/216,612 regions (66.1399%). The raw full-report branch counters now record one true and 14 false outcomes at the token-aware raw-alpha choice (encoder.rs:2959); line, branch, and function totals did not increase, while covered regions increased by one. Coverage MCP cannot open this managed-worktree report, so no verified aggregate gain or regression is claimed. This is target-only fault-contract evidence, not a Pillow parity pass. The coverage-only fault hook is absent from release builds; no performance speedup is claimed, and no Rust unit tests were added.

WebP RIFF sink header fault contracts — 2026-10-27

Coverage MCP's imported full report marked the true arms of write_riff_to_sink's short-header, RIFF signature, and WEBP form-type checks as missing. That baseline has no source/build receipt, so the gaps were treated as candidates and confirmed against the current encoder before adding tests.

Added target-only cases fault-contract:webp:webp_riff_header_too_short_rejected, fault-contract:webp:webp_riff_signature_mismatch_rejected, and fault-contract:webp:webp_form_type_mismatch_rejected. Each references the active encode:webp:enc_lossless parity row and checks the structured Malformed/StillEncode result, preservation of caller sink contents, and a clean retry against exact Pillow bytes and decoded RGB pixels. All three selected cases passed. Their local LLVM report is .coverage-mcp/local-evidence/selected/webp-riff-sink-headers-20261027-attempt-4/coverage.json (SHA-256 777f29b2f7b95157fbc83818328c001991e6842fb7426a6ff7659a0f349b390b). It records one true and respectively 8, 7, and 6 false-arm hits at src/codecs/webp/encode/mod.rs:189, :194, and :199; every decision arm in the new fault hook also has nonzero true and false counters. The managed-worktree report is local-only; Coverage MCP cannot verify its source/build identity or attribute its test run. No aggregate coverage increase is claimed. Fault mutation is compiled only for coverage builds; its three guards are recorded as defensive_model in the coverage-origin inventory. No Rust unit tests were added.

WebP RIFF declared-size fault contract — 2026-10-31

Added target-only case fault-contract:webp:webp_riff_declared_size_mismatch_rejected for the declared-size validation in write_riff_to_sink. It uses the existing encode:webp:enc_lossless Pillow parity row, flips one bit in the generated RIFF size field only in coverage builds, and checks the public inconsistent-size error, unchanged caller sink, and exact-byte/pixel parity on retry.

The four selected WebP RIFF fault contracts passed 4/4. Their local LLVM report is .coverage-mcp/local-evidence/selected/20261031T133341.469954Z-246b71b216ef4e648f27548b77a48617/coverage.json (SHA-256 de72c855db8284ff307c99c33038c60b2b47401e69d6bc9ee7ee872f2403e767). It records one true and 11 false-arm hits at src/codecs/webp/encode/mod.rs:191, one true and 10 false at :196, one true and 9 false at :201, and one true and 8 false at :208. The source hash before and after this selected run was 98abc70a153da4be50d9b63d27545c55ef735a8839a414550a9f48d486e2852d. Coverage MCP returned Transport closed, so this is local-only evidence and claims no managed aggregate coverage gain or regression. The fault result is target-only, not a Pillow parity pass. The fault point and enum exist only in coverage builds; no release-path or performance change is claimed.

WebP token-aware raw-alpha parity — 2026-10-27

Added active parity row encode:webp:enc_lossy_rgba_alpha_raw_token, reusing the seeded high-entropy alpha input from enc_lossy_rgba_alpha_raw and adding the public cancellation-token encode path. The pinned Pillow 12.2.0 reference is 4,210 encoded bytes (SHA-256 c3fed186ee97cc2418fd1815880646118e73fdaa3fed896bf977118972b13e4d); decoding the result matched all 16,384 RGBA bytes. The selected parity run passed 1/1.

The selected LLVM report is .coverage-mcp/local-evidence/selected/webp-alpha-raw-token-20261027/coverage.json (SHA-256 22bd017a9a5aad3a041ac86326483301ed97ec255b1bc94e2e3a70b319dac0a7). Its raw branch counters record the previously unobserved true arm of encode_alpha_stream at src/codecs/webp/native/encoder.rs:2959 once in the TokenBitWriterCheckpoint specialization; the earlier full report recorded zero true-arm hits at that coordinate. Coverage MCP could not open reports from the managed worktree, so this remains selected LLVM evidence with no verified aggregate gain. No production code changed, and no Rust unit tests were added.

AVIF qindex-zero non-lossless inter parity — 2026-10-27

Added active rows decode:avif:animated_lossy_inter_420_b16x64_qindex0_mode_select_64x64 and decode:avif:animated_lossy_inter_monochrome_b16x64_qindex0_mode_select_64x64. Both deterministic 64×64 sequences use a lossless key frame and a non-lossless qindex-zero TX_MODE_SELECT inter frame. The I420 inter frame has chroma quantizer deltas of 2; the monochrome inter frame has a luma DC delta of 2. Their pinned generators verify repeatable timestamp-normalized AVIF output, frame headers, and exact Pillow RGB frame hashes.

The decoder now passes the segment qindex to inter transform-type decoding. Qindex zero selects the default DCT transform even when quantizer deltas make the segment non-lossless. This avoids consuming a transform-type symbol that these inputs do not signal. The focused public parity run passed 2/2, with 12,288 RGB bytes matching Pillow for each case. The full make test run also passed, including the complete matrix suite and native, WASI, and WASM feature lanes. The local LLVM report is .coverage-mcp/local-evidence/selected/avif-q0-final-coverage-20261027/coverage.json (SHA-256 72010b8a5d9436661980a8d941c26b2b7f12382109386d40287c3c4236cfc4d0). Its selected counters record seven hits on the new qindex-zero DCT path, two hits on the I420 qindex-zero single-terminal guard, and three on the monochrome guard. Other generic instantiations remain unobserved in this selected run.

Coverage MCP's saved full report identified missing transform-type branch observations, but has no source/build receipt and reports source identity as unverified and test attribution as unknown. It cannot read the refreshed report from this managed worktree, so the local counters are selected-scope evidence only; no full-suite or marginal coverage gain is claimed. No Rust unit tests were added.

AVIF narrow qindex zero inter parity — 2026-11-03

Added active row decode:avif:animated_lossy_inter_420_b4x8_qindex0_mode_select_64x64. The deterministic 64×64 8-bit I420 sequence has a lossless key frame followed by a TX_MODE_SELECT inter frame with base qindex zero and chroma quantizer deltas of 2. Its narrow B4×8 transform geometry exposed an intra-coded block where generic intra transform selection checked segment_lossless but not the base qindex. Passing the segment qindex preserves the implicit DCT_DCT choice and keeps coefficient decoding aligned.

The selected public parity run passed 1/1 with all 12,288 RGB bytes matching Pillow. The pinned fixture generator check also passed. Its selected report is .coverage-mcp/local-evidence/selected/20261103T155915.218400Z-e016d2ff385040159ad7c0daa314d31e/coverage.json. Its SHA-256 is d9cf5279002d0d3da1f61b6f11278305b1c0732c40c27552db8e5f3e48befa67. This is selected-scope evidence, not an aggregate coverage claim. No SIMD performance measurement was part of this correctness fix, and no Rust unit tests were added.

I444 compound split parity — 2026-10-26

Added active row decode:avif:animated_lossy_inter_i444_compound_split_b16x32_mode2. The deterministic 1,457-byte fixture pins its normalized AVIF hash and all three Pillow RGB frame hashes. The final frame header permits compound selection and exposes both earlier frame references. The pinned native loop observer reports three decoded frames and infinite repetition.

The selected parity/coverage run passed 1/1 with exact RGB output. Its LLVM report is .coverage-mcp/local-evidence/selected/i444-compound-probe-20261026/coverage.json (SHA-256 07edc4ef031fafcc623a061136ca8023157be78ed6d489a391419f138a992b37). At src/codecs/avif/av1/block.rs:48314, the target decode_inter_compound_translation specialization recorded two true-arm hits; the saved full report recorded zero true-arm and 67 false-arm hits for that specialization. This is branch-specific evidence, not an aggregate coverage union. The saved full and selected reports lack Coverage MCP source/build receipts; MCP therefore marks source identity unverified and test attribution unknown. Its incremental comparison is incomparable because baseline branch detail is incomplete. Other generic specializations at this location remain uncovered. No production Rust code or unit tests were added.

AV1 temporal motion-vector range parity — 2026-10-26

Added active rows decode:avif:animated_motion_temporal_mv_range_2048x128, decode:avif:animated_motion_temporal_mv_range_positive_x_2048x128, decode:avif:animated_motion_temporal_mv_range_negative_y_128x2048, and decode:avif:animated_motion_temporal_mv_range_positive_y_128x2048. The four A/B/A sequences use 16-pixel texture runs or bands and translate 600 pixels in each signed axis direction. The deterministic generator pins complete AVIF hashes and all exact Pillow RGB frame hashes; the independent native observer records infinite repetition for each sequence.

The combined selected parity run passed 4/4, with every 786,432-byte RGB frame matching its Pillow reference. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261026T143900.923631Z-bec51189f9e34b9aa76a14cd518a81bb/coverage.json (SHA-256 6dc06570ffd077bfd47027fe31154e937cd43a2d78071bdf462f085a78a5039b). Raw branch counters at src/codecs/avif/av1/tile_state.rs:995 record all four signed motion-vector boundary false arms: 2,304 hits for y > -4096, 2,083 for y < 4096, 2,560 for x > -4096, and 2,336 for x < 4096.

Coverage MCP's line-specific branch lookup returned no gap at line 995. The report had to be copied temporarily from the managed worktree because the MCP cannot read that worktree directly; it therefore marked source identity unverified and test status unknown. The incremental comparison with the prior full AVIF selection was incomparable because the provider lacked complete branch detail, so no marginal coverage gain is claimed. In this selected run, the spatial_block absence and ineligible-reference outcomes in temporal_entry_at remain unobserved and are pending public-parity discovery. No Rust source or unit tests were added.

AVIF tall TX_MODE_LARGEST parity — 2026-10-26

Added active row decode:avif:animated_lossy_inter_420_mode_largest_16x64. Its pinned generator verifies a two-frame 16x64 8-bit I420 sequence, an inter frame signaling TX_MODE_LARGEST with positive base qindex, and exact Pillow RGB frame hashes. Native libavif evidence records two decoded frames, infinite repetition, and 100 ms frame durations.

The selected parity run passed 1/1 with 3,072-byte RGB output. Its report is .coverage-mcp/local-evidence/selected/20261026-avif-i420-mode-largest-16x64.json. Coverage MCP's baseline lacked the false arm of the 16x16 reference-height guard at src/codecs/avif/av1/entropy.rs:14344; the selected report records that arm for one generic instantiation. A coordinate-level comparison found seven new false-arm observations across related 16x16 guards, while other generic instantiations remain uncovered. Coverage MCP marks source identity unverified and named-test attribution unknown, so this is selected evidence, not a verified aggregate gain. This earlier case did not reach the candidate wide_lossy_single path; the fixture claims the signaled transform mode, not a particular transform size. No Rust code or unit tests were added.

AVIF coded B64x16 inter parity — 2026-10-26

Added active rows decode:avif:animated_lossy_inter_420_b64x16_mode_largest_64x64, decode:avif:animated_lossy_inter_420_b64x16_mode_select_64x64, decode:avif:animated_lossy_inter_420_b64x16_10bit_mode_select_64x64, and decode:avif:animated_lossy_inter_420_b64x16_12bit_mode_select_64x64. The fixture-only encoder forces PARTITION_HORZ_4 at the 64x64 inter-frame root, creating four coded B64x16 leaves with positive qindex. The 8-bit pair signals TX_MODE_LARGEST and TX_MODE_SELECT; the 10-bit profile-0 and 12-bit profile-2 companions preserve the select-mode pattern at high bit depths. The generator requires deterministic timestamp-normalized encodes, exact Pillow 12.2.0 RGB frames, and the pinned AV1 frame-header profile. An independent pinned dav1d trace confirms the inter-frame root partition for the 8-bit pair.

The combined selected public parity run passed 4/4 with exact RGB output. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261026-avif-i420-b64x16-depth-coverage-r2.json (SHA-256 efc1a82884be25317b04465bf151728161006500a8d15a4db59ba120b62c5c63). Across the selected binary it observes 3,829 of 32,078 branch outcomes, 294 more than the earlier 8-bit-pair-only selected report; this is selected-scope evidence, not a full-suite union. At src/codecs/avif/av1/block.rs:48406, one of eight generic branch records has four true-outcome hits and three false-outcome hits; the other seven records have no hits. The mode-select cases reach the false outcome at 8, 10, and 12 bits. The positive-qindex outcome at line 48407 is observed three times; its qindex-zero alternative remains uncovered. Coverage MCP cannot read this report from the managed worktree. Its saved full baseline reports 13,447 of 32,078 branches missing, with source identity unverified and test attribution unknown, so this selected run does not establish an aggregate gain. No Rust source or unit tests were added.

AVIF thin B16x64 lossy TX_MODE_SELECT parity — 2026-10-26

Added active row decode:avif:animated_lossy_inter_420_b16x64_mode_select_64x64. Its fixture-only pinned libaom patch forces PARTITION_VERT_4 at the 64x64 inter root, producing four B16x64 leaves. The first leaf has a low-frequency residual; the other leaves retain texture so the frame signals TX_MODE_SELECT. The deterministic generator verifies the pinned Pillow 12.2.0 RGB frames and AV1 headers. A temporary decoder trace confirmed the first inter leaf is 16x64 at qindex 76 and selects the wide single transform; both public Rust frame outputs match Pillow exactly. The pinned native loop observer records both frames and infinite repetition.

The one-row selected parity run passed 1/1. Its LLVM report is .coverage-mcp/local-evidence/selected/20261026T124731.508781Z-b6bb2feb74784ffca8ae467eac027ce1/coverage.json (SHA-256 dcd5fd136ea83db1da78563e4758f1098fdc9f31e8c689b2fbdafb0d57bb724f). The full active AVIF decode selection then passed 607/607; its retained report is .coverage-mcp/local-evidence/selected/20261026T125143.028760Z-27bd0323559441969424d44b79b1ec82/coverage.json (SHA-256 0961e684dee04a06af1e1f2314866711d218571a45503933eeda12dc801d010f). The selected report records the thin-block and positive-qindex outcomes at src/codecs/avif/av1/block.rs:48418 and :48420. Coverage MCP reports source identity unverified and test attribution unknown for the selected evidence; the full report lookup timed out. No aggregate or marginal coverage gain is claimed. This case remains a distinct B16x64 regression witness. No Rust unit tests were added.

JPEG trailing DHT segment-boundary parity — 2026-10-26

Added active decode rows decode:jpeg:baseline_444_single_scan_trailing_dht_short_length_with_tail_counts and decode:jpeg:baseline_444_single_scan_trailing_dht_short_length_with_tail_value. The first declares only one DHT count byte and places the remaining count bytes outside the segment; the second declares one symbol and places its value byte outside the segment. Both complete JPEG inputs pass Pillow structure verification, while Pillow 12.2.0 rejects pixel decoding with OSError: broken data stream when reading image file; the Rust public decoder matches the malformed-input result.

The two selected parity cases passed 2/2. Their retained LLVM report is .coverage-mcp/local-evidence/selected/20261026T014941.848086Z-38eb7f1cd96f4921ae3377a017f4025c/coverage.json (SHA-256 49be79c7021c13ad6d18c4d8667fb86355d166bf232164a37e7110a006eac206). Raw branch counters observed the DHT count-table and symbol-value boundary guards in src/codecs/jpeg/decode/decode.rs. Coverage MCP marked source identity unverified and test attribution unknown, so this is selected local evidence, not a verified aggregate coverage gain. No Rust source changed and no unit tests were added.

The current fixture matrix contains 2,639 total rows: 2,111 decode / inspect / verify rows and 528 encode rows. Of those, 2,111 decode rows and 497 encode rows are active; 31 planned encode rows remain.

JPEG duplicate grayscale SOS selector parity — 2026-10-26

Added the active decode row decode:jpeg:baseline_grayscale_duplicate_sos_component. Its deterministic fixture duplicates the sole grayscale component record within one baseline SOS and updates the segment length while preserving the entropy-coded scan. Pinned Pillow accepts inspection and verification but rejects pixel decoding; the Rust decoder matches its malformed-input outcome. This case covers the equal component-index boundary in validate_scan_component_order, distinct from an out-of-order selector.

The focused selected parity run passed 1/1. Its retained LLVM report is .coverage-mcp/local-evidence/selected/jpeg-duplicate-sos-component-20261026/coverage.json (SHA-256 8508f00520443c50f370fe471049afbb5be832c4d91ffbcbe0bc1856db174f3b), with an unchanged source and fixture set during execution. It does not cover the previously observed scan.components.as_slice() else arm at src/codecs/jpeg/decode/decode.rs:2669: decode rejects duplicate scan indexes in validate_scan_component_order before reaching the grayscale fast path, and the parser rejects an empty SOS. No ordinary one-component JPEG scan can reach that arm, so no parity input or unit test was added for the private state. Coverage MCP was unhealthy during the gap query; its local receipt is not a verified source/build receipt and records test attribution as unknown.

JPEG duplicate grayscale scan parity — 2026-10-26

Added the active decode row decode:jpeg:baseline_grayscale_duplicate_component_scan. Its deterministic fixture duplicates the sole full baseline scan in the pinned grayscale source and passes Pillow's container verification, while Pillow pixel loading rejects the repeated scan. The JPEG grayscale direct-safe path now rejects a repeated single-component scan as malformed; color multi-scan duplicate-component behavior remains covered by its existing parity row.

The four-row selected parity batch passed 4/4, including the malformed input, baseline grayscale, progressive grayscale, and color multi-scan regression cases. Raw LLVM branch counters observed both outcomes at reconstruct_single_scan_grayscale_direct_safe; Coverage MCP marked the report unverified and did not attribute those outcomes to tests, so this is selected local branch evidence only. The retained selected report SHA-256 is 5845b9223258a5771661bcf65196ce88cf366203e2727d6e417145292098c4df.

The subsequent full all-feature LLVM run passed the complete integration suite and retained .coverage-mcp/local-evidence/full-20261026-gray-multiscan/coverage.json (SHA-256 de5ee2500bf23f4d6002f6405607250cf225e2db66456bca01730cbcb5557917). It measured 93,857/139,522 lines (67.2704%), 18,638/32,078 branches (58.1021%), 5,225/8,928 functions (58.5237%), and 143,367/216,563 regions (66.2011%), above the configured floors. Coverage MCP read an imported copy with source unverified and test attribution unknown; its branch gaps are leads, not verified test attribution or regression claims. The four-metric 100% goal remains open.

The current fixture matrix contains 2,618 total rows: 2,091 decode / inspect / verify rows and 527 encode rows. Of those, 2,091 decode rows and 496 encode rows are active; 31 encode rows remain planned.

JPEG baseline 4:4:4 unaligned-width parity — 2026-10-25

Added active encoder parity row encode:jpeg:enc_sub_444_unaligned_large_width_fallback, reusing the 33×33 RGB JPEG source. Its area (1,089 pixels) passes the baseline row-streaming threshold, while width 33 fails the 8-pixel alignment guard at src/codecs/jpeg/encode/mod.rs:683 and selects the generic fallback. The pinned Pillow reference is 1,470 encoded bytes with SHA-256 2e3477bd6c8e471005723e5a7c86a3aa2e6ba060a8fae116eae11a86eb4a71f8; the decoded 3,267-byte RGB reference has SHA-256 1c215933edf3484516304582490a95e0d64d38ae506d992b5fe7ed6ac548cb63.

The exact selected parity run passed 1/1, matched all encoded bytes, and re-decoded to 33×33 RGB pixel parity. Its report is .coverage-mcp/local-evidence/selected/jpeg-444-wide-20261025/coverage.json (SHA-256 e2eccb6e0f1143a1b542a936b09f094b3687576aa11798277d61d7846a5baa94). Coverage MCP reports the true arm of the width guard as still missing in this selection, consistent with this unaligned input covering the false edge. MCP marks source/build identity unverified and test attribution unknown; the local receipt records source revision f916e810ed7d435e0e1fc4493da3a881d9e2b469, no source change during execution, and an unchanged fixture snapshot. The report is selected-case evidence only, not a project-wide coverage claim. No Rust source changed and no unit tests were added.

The current matrix contains 2,616 total rows: 2,089 decode / inspect / verify rows and 527 encode rows. Of those, 2,089 decode rows and 496 encode rows are active; 31 encode rows remain planned.

AVIF B32 lossless coverage follow-up — 2026-10-25

Kept the 32x32 10-bit I420 all-lossless sequence with a translated 31x31 texture patch as a public parity case. The finalized five-row selection passed 5/5 exact Pillow pixel comparisons; its two-row control selection passed 2/2. Coverage MCP's selected comparison observed 71 additional branch coordinates across 32 function groups, with the same 32,056-branch denominator. Its result is limited because source/build identity is unverified and test attribution is unknown. The local receipts for both selections record the same source-manifest SHA-256 c06ebd6afe7cc9dcc5dda317bb59c2b606bba236d52b95646d1e0bf9f3399c5c, no source change during either run, and all selected parity rows passing.

The five-row report is .coverage-mcp/local-evidence/selected-from-worktree/av1-final-five/coverage.json (SHA-256 df5052e93991f4dad8fb5be78211f4651fab05912fc9d01cb41f796ac5afd5eb); the controls are in .coverage-mcp/local-evidence/selected-from-worktree/av1-final-controls/coverage.json. The five-row LLVM data records both outcomes of the partial-grid geometry check at block.rs:47999 (one true, six false); controls recorded three false outcomes. The combined selection does not isolate which clipped case produced the true outcome, and selected evidence does not establish full-suite or release coverage. No Rust unit tests were added; all selected cases use the public Pillow parity matrix.

The current matrix contains 2,609 total rows: 2,083 decode / inspect / verify rows and 526 encode rows. Of those, 2,083 decode rows and 495 encode rows are active; 31 encode rows remain planned.

AVIF 10-bit I420 lossless input variants — 2026-10-25

Retained two distinct two-frame 16x16 all-lossless AVIF parity inputs: a near-full-frame texture shifted by one pixel and a moving 4x4 luma patch. Both have exact Pillow RGB frame references and independent native infinite-loop observations. The exact selected parity run passed 2/2 cases. Its LLVM report is .coverage-mcp/local-evidence/selected/20261025T155900.516310Z-a23aa3bbec5b4d718a3af53a981d7a71/coverage.json (SHA-256 f9370f8dd76b8fc308283d017c27b985ef6e2518d1e969bb1ce5b72ce9782145).

Coverage MCP's selected-test comparison with the earlier small-patch selection observed 39 additional branch locations and no missing observations. Its receipt leaves source/build identity unverified and test attribution unknown, so this is selection-level evidence rather than a verified aggregate coverage gain. At that source revision, the branch at src/codecs/avif/av1/block.rs:48152 remained uncovered; the fixtures did not assert a particular encoder leaf geometry. No Rust unit tests were added. At that checkpoint, the matrix contained 2,608 total rows: 2,082 decode / inspect / verify rows and 526 encode rows. Of those, 2,082 decode rows and 495 encode rows were active; 31 encode rows remained planned.

TIFF later-IFD BitsPerSample parity — 2026-10-25

Added public sequence-decode parity rows for a second TIFF directory with empty or nonuniform BitsPerSample. Both fixtures derive from the pinned multipage.tiff source; the generator checks source and output digests, first page pixels, and Pillow 12.2.0's sequence error. TIFF inspection now marks a sequence count incomplete when a later directory has empty or nonuniform sample depths, while the normal decoder retains the matching malformed-data error.

The seven-row selection covering these cases and existing multipage controls passed 7/7. The LLVM report is .coverage-mcp/local-evidence/selected/20261025T132428.639043Z-6c94ed7ecadd415b95c0894d8a57d1f2/coverage.json (SHA-256 aebd9cbeec4296e7e330293e9ec26400aea3a7c8597f39d483d523398e936457). Its branch counters show both outcomes for the two BitsPerSample checks at decode_ifd:201. Coverage MCP still labels this selected report's source as unverified and test attribution as unknown, and reports four missing branch observations at that line; this is local selected-run evidence, not an aggregate coverage or regression claim. No Rust unit tests were added.

AVIF variable-luma loop-filter parity — 2026-10-25

Added the active animated_lossy_i420_mode2_variable_tx_loopfilter_b128x128 row, a deterministic two-frame 256x256 I420 AVIF whose inter frame exercises variable luma transforms with nonzero loop-filter levels. The pinned Pillow 12.2.0 references match both decoded RGB frames, and the native libavif loop evidence parses successfully.

The exact selected parity run passed 1/1 case. Its LLVM report is .coverage-mcp/local-evidence/selected-from-worktree/av1-variable-luma-loopfilter-final-2026-10-25/coverage.json (SHA-256 26bac7919731c1c27d8a16e0f35de3a617af63de874fdb17557a4d27b47d8565). At filter.rs:247, the report has one build_masks instance with both branch counters observed and a separately mangled zero-count copy. Coverage MCP lists the true and false observations as gaps; it labels source identity unverified and test attribution unknown. Direct LLVM records at the same source revision show the active function's true counter moving from 0 in the full baseline to 1 in the selected run (with 7 false-edge hits); the zero-count copy remains. Coverage MCP's incremental comparison is incomparable because the baseline's branch detail is incomplete. This is a precise local edge observation, not an MCP-verified aggregate coverage gain. No Rust unit tests were added.

The current matrix contains 2,606 total rows: 2,080 decode / inspect / verify rows and 526 encode rows. Of those, 2,080 decode rows and 495 encode rows are active; 31 encode rows remain planned.

WebP color-transform size-field truncation parity — 2026-10-25

Added a malformed VP8L stream that completes a subtract-green transform and leaves only two of the following transform's three size bits. Pinned Pillow accepts it in verify and reports OSError: failed to read next frame during decode. The independent VP8L parser classifies the failure as a truncated transform header at bit offset 46. The selected public parity case passed 1/1. The current matrix contains 2,605 total rows: 2,079 decode / inspect / verify rows and 526 encode rows. Of those, 2,079 decode rows and 495 encode rows are active; 31 encode rows remain planned.

WebP lossy-alpha filter parity — 2026-10-25

Added seven active public encode rows for horizontal, vertical, and gradient alpha prediction, nonzero palette gaps, palette wraparound, and the token-aware horizontal-filter path. The alpha encoder now compares the unfiltered and estimated-filter candidates and emits the exact pinned Pillow WebP bytes. The selected alpha set passed 28/28 rows, including 124 public encode calls with no panics. No Rust unit tests were added.

make fmt, strict make lint, make lint-x86-simd, make verify PYTHON=.oracle-venv/bin/python, and make test-feature-matrix passed. The full coverage matrix passed all 57 matrix tests, 69 feature-gate tests, and four animation-loop checks. Configured coverage floors passed at 93,688/139,473 lines (67.172858%), 18,573/32,068 branches (57.917550%), 5,213/8,917 functions (58.461366%), and 143,021/216,455 regions (66.074242%). Strict make coverage-complete still fails its 100% requirement. The retained local report is .coverage-mcp/local-evidence/full-20261025-webp-alpha-filter-option-final/coverage.json. Coverage MCP reports no missing branches in the new filter estimator or filter-plane helpers in that report. Its source identity is unverified and test attribution is unknown; the largest remaining WebP groups include fill_hash_chain_impl, write_huffman_tree, write_token_stream, and apply_palette. Inspect their source paths before adding parity rows because some gaps belong to mutually exclusive generic token/no-token paths.

A six-input A–B–B–A comparison against pinned Pillow confirmed exact encoded bytes for every input. The Rust/Pillow speed ratio ranged from 0.35× to 0.81×; this records an open encoder-performance gap and is not a speedup claim. The x86 SSE2 and AVX2 builds pass strict cross-target lint, but runtime timing on x86 hardware remains outstanding.

Full local coverage snapshot — 2026-10-25

make COVERAGE_REPORT='.coverage-mcp/local-evidence/full-20261025-jpeg-even-upsampling/coverage.json' coverage passed the full matrix and configured floors. The retained report is .coverage-mcp/local-evidence/full-20261025-jpeg-even-upsampling/coverage.json: 93,362/139,140 lines (67.099324%), 18,508/32,020 branches (57.801374%), 5,201/8,903 functions (58.418511%), and 142,637/216,056 regions (66.018532%). All 2,070 active decode rows, 486 active encode rows, 93 target-only fault contracts, four animation-loop checks, and 69 feature-gate tests passed. Coverage MCP reports no branch gap in the packed-tile row copier, either bit-order implementation, the 2-by-2 converter, or the custom-coefficient 1-by-2 converter. It also reports no remaining branch gaps at the even-width YCCK h2v1 and h2v2 final-sample checks in src/codecs/jpeg/decode/upsample.rs:494 and :541. It still reports the defensive zero-subsampling guard in the general converter at src/codecs/tiff/decode.rs:2434; public TIFF validation rejects unsupported pairs at src/codecs/tiff/decode.rs:307 before this helper is called. That private guard remains a documented coverage limitation, not a target-only test target. Other TIFF gaps remain, including decode_ifd. The report source identity is unverified and test attribution is unknown. The overall 100% coverage objective remains open. The report's fixture snapshot contained 2,587 total rows: 2,070 decode / inspect / verify rows and 517 encode rows. Of those, 2,070 decode rows and 486 encode rows were active; 31 encode rows remained planned. Typed target-only fault contracts are tracked separately from Pillow parity rows.

AVIF mixed-lossless B32 residual parity — 2026-10-25

Added active parity row decode:avif:animated_mixed_lossless_inter_b32_i420_residual_64x64. Its deterministic 64×64 two-frame AVIF has a full-visible unsplit qindex-zero inter B32 ROI whose 1,024 RGB pixels all change between frames. The fixture SHA-256 is 58552db6049a5220936acccbb483fd0366224744e7a2f81058a099b4016d5d36; pinned Pillow frame hashes are 90ce523631e9fd385bcae414317ca29e655e9fa26a022e09d50795e71b32d634 and f99f8c1c96218f4dde446f18003ec53ae2c35e57a4f1e1b46ce406a2dbe6ef61. The native loop evidence confirms two frames and infinite repetition, normalized to loop count zero. The exact selected parity row passed 1/1.

Coverage MCP still reports missing branch arms at src/codecs/avif/av1/block.rs:48152. The selected report did not observe either arm for this row, so it does not close that gap and no aggregate coverage gain is claimed. MCP marks source identity unverified and test attribution unknown. The current matrix contains 2,592 total rows: 2,074 decode / inspect / verify rows and 518 encode rows. Of those, 2,074 decode rows and 487 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 102 cases.

TIFF compressed FillOrder 2 parity — 2026-10-25

Added three 17×13 grayscale TIFF parity rows covering Deflate, LZW, and PackBits with FillOrder=2. Their complete fixture SHA-256 values are 359ce018950a1959a1fc1f621e2313177817772bc42545346cd191b744d1e851, 688b5355bd642d870c6d8450fb943ad189d9dbd7b9df834127bdbbc3f060dae7, and 68b28cdf7af702becd02ccb328da7680593873563b51c14844c4305feef54924. All three decode to the same 221-byte grayscale payload with SHA-256 b03d7423b9aaf79161be9a0f1a119cd3a814f4d81815f10b80aad8bdc2f5c4f4; the selected Pillow parity run passed 3/3.

The decoder now reverses bits in compressed FillOrder 2 block bytes before decompression, using cancellation-aware chunks and fallible allocation. The FillOrder 1 path continues to borrow the encoded input. The focused 23-row FillOrder selection passed 23/23. Local LLVM recorded both outcomes of the compression == COMPRESSION_NONE branch at src/codecs/tiff/decode.rs:254 (51 true and 12 false observations). Coverage MCP returned no remaining missing location for that line in the selected report at .coverage-mcp/local-evidence/selected-tiff-fillorder2-20261025/coverage.json. The complete TIFF decode selection passed 431/431 rows. Coverage MCP then identified two remaining decode_ifd allocation-failure arms at lines 802 and 923; the corresponding existing target-only fault contracts passed 2/2, and MCP returned no missing locations for those lines in .coverage-mcp/local-evidence/selected-tiff-fault-contracts-20261025/coverage.json. The 431-row report is .coverage-mcp/local-evidence/selected-tiff-parity-431-20261025/coverage.json. Comparison with the retained full report is incomparable because branch detail is incomplete and the reported branch totals differ (32,020 versus 32,040). The selected reports have unverified source identity and unknown test attribution, so no aggregate coverage gain or full-suite closure is claimed.

The current matrix contains 2,592 total rows: 2,074 decode / inspect / verify rows and 518 encode rows. TIFF has 431 decode rows. Of the total, 2,074 decode rows and 487 encode rows are active; 31 encode rows remain planned.

Focused AVIF monochrome and WebP token parity — 2026-10-25

After synchronizing the preserved AVIF work with merged main, the selected run at .coverage-mcp/local-evidence/selected/20261024T225938.861678Z-7396731e19e64c819484d6e32561f3a7/coverage.json passed all 17 cases: four Pillow pixel-parity controls for portable AVIF monochrome conversion, four WebP encode-parity rows using a fresh cancellation token, and nine target-only AVIF fault contracts. The WebP rows produced exact Pillow bytes; the new transparent-alpha case emitted 2,282 bytes and re-decoded to the expected 128×128 RGBA pixels. The selected encoder made 20 public calls with no panics. The nine fault rows returned the expected unsupported-subset result and succeeded on an uninjected retry; they remain not_applicable to the Pillow oracle and outside parity counts.

The current fixture matrix contains 2,588 total rows: 2,070 decode / inspect / verify rows and 518 encode rows. Of those, 2,070 decode rows and 487 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 102 cases.

Coverage MCP reports missing branch coordinates in decode_monochrome_portable and the test-only inject_monochrome_portable_fault guard. The local receipt confirms 17 selected cases passed and that sources stayed unchanged during the run, but MCP marks source identity unverified and test attribution unknown. The coordinates are leads rather than source-verified closure; no aggregate coverage gain is claimed. The broader 100% objective remains open.

TIFF LZW cancellable decode parity — 2026-10-25

Enabled the existing cancellable decode API for the TIFF LZW parity fixtures. This runs the same Pillow-backed inputs through both decode and decode_with_token; it adds no Rust unit tests or duplicate fixtures. The focused run passed 3/3 selected rows, and the latest retained full report passed all 2,070 active decode rows, 486 active encode rows, 93 fault contracts, four animation-loop checks, and 69 feature-gate tests. Aggregate coverage totals are unchanged by the LZW token rows, so no gain is attributed to that API check.

Coverage MCP still reports the true arm of the output.len() >= expected operand in decode_lzw and decode_lzw_with_token at src/codecs/tiff/decode.rs:3449 and :3542. A public TIFF cannot provide a zero-row strip for this branch: image geometry is validated as positive, and the decoder skips surplus strips with zero rows at src/codecs/tiff/decode.rs:958. This remains a defensive private-path limitation rather than a parity case target. Coverage MCP source identity remains unverified and test attribution unknown.

TIFF packed-tile bit-order dispatch — 2026-10-25

Coverage MCP previously reported opposite unobserved arms for if LSB_FIRST inside the two boolean-const-generic packed-row specializations. A valid TIFF input could select one specialization, but could never take the other specialization's impossible arm. Replaced those conditionals with statically dispatched PackedTileBitOrder implementations for most-significant-first and least-significant-first samples. Their optimized per-sample methods are marked inline(always) so orientation dispatch does not add calls to the inner loop. The optimized AArch64 release assembly contains no emitted symbols for those methods. This checks code generation for that target; it is not an end-to-end benchmark or SSE2/AVX2 performance result.

The existing 14 Pillow parity rows for packed TIFF tiles passed, covering both fill orders, aligned and unaligned copies, compressed tiles, and rejected inputs. The selected report is .coverage-mcp/local-evidence/selected/20261024T194637.006124Z-b901994420c34603a3d1d2278d50e3fb/coverage.json. The full report above passes all 2,070 active decode rows, 486 active encode rows, 93 fault contracts, four animation-loop checks, and 69 feature-gate tests. Coverage MCP reports zero remaining branch groups for copy_packed_tile_row. MCP source identity remains unverified and test attribution unknown; no aggregate gain is attributed to these rows.

TIFF custom-coefficient 2-by-2 odd-edge parity — 2026-10-25

Added active parity row decode:tiff:ycbcr_custom_coefficients_lzw_2x2_checkpoint_33x33_odd_edges. Its complete 2,453-byte input clips the final 2-by-2 YCbCr clump on both axes and processes more than 1,024 pixels in the custom-coefficient converter. Pinned Pillow 12.2.0 verifies the TIFF and returns 3,267 RGB bytes (SHA-256 d6f82880d7c317dc0dab9a3a5c76fa388ac55fddafaabcf57e7a16419567902e). The input SHA-256 is 9bf19211ac287e1d586cc0e2d037caff2dacfbfa6076bbe4e867bb64eda437f8. The deterministic generator validates those tags and pixels; the selected public parity case passed 1/1.

The full report above adds no aggregate branch count, but Coverage MCP no longer lists a missing branch group for the custom-coefficient 2-by-2 converter specialization. Its full-report source identity remains unverified and test attribution unknown, so this is recorded as a covered specialization rather than an aggregate percentage gain. The report retains the full suite's configured floors and includes the new row.

TIFF custom-coefficient 1-by-2 checkpoint parity — 2026-10-25

Added active parity row decode:tiff:ycbcr_custom_coefficients_lzw_1x2_checkpoint_33x33_odd_edges. The 33×33 TIFF uses custom Rec. 709 coefficients, clips the odd final row, and reaches the converter's 1,024-pixel cancellation checkpoint. Pinned Pillow 12.2.0 returns 3,267 RGB bytes (SHA-256 4dbccd036ff2c6e28e6986c751ea075a6ba4d29345109390a131cbf325730100). The input SHA-256 is fa1f4ca256be97295b75647cd992f879778b41b30651203518ad5d093812a872. The exact selected parity row passed 1/1. Coverage MCP reports zero remaining branch groups for convert_ycbcr_subsampled_1x2_with in the retained full report. Aggregate coverage totals are unchanged; no percentage gain is claimed.

Coverage MCP still reports the general converter's zero-subsampling guard at src/codecs/tiff/decode.rs:2434 for the default and custom monomorphizations. The public decoder rejects unsupported subsampling pairs before calling the converter, and the existing zero-pair Pillow case verifies that public error. Per the parity policy, no extra case was added solely to reach this private defensive guard. The report's source identity is unverified and test attribution is unknown.

TIFF custom-table YCbCr fault contracts — 2026-10-25

Added four target-only fault rows for clump-length mismatch and RGB output reservation failure in the custom general and custom 1-by-2 converter paths. They reuse the active Pillow inputs decode:tiff:ycbcr_custom_coefficients_lzw_4x2 and decode:tiff:ycbcr_custom_coefficients_lzw_1x2_odd_height. The selected run at .coverage-mcp/local-evidence/selected/20261024T201532.328967Z-cbfbf8bca61a4755bd61969194807191/coverage.json reported 4 selected, 4 executed, 4 passed, 0 failed, with oracle=not_applicable. These contracts verify stable public errors and retry success; they remain separate from Pillow parity counts. An incremental comparison to the previous full report was incomparable because its branch detail did not reconcile with its totals, so no aggregate coverage gain is attributed to these fault rows.

AVIF 12-bit I420 alpha sample-count fault contract — 2026-10-25

Added target-only row fault-contract:avif:avif_12bit_i420_alpha_sample_count_mismatch, reusing the active odd-edge 17×9 Pillow parity input. The coverage-only injection shortens the reconstructed alpha slice before the specialized 12-bit I420 converter; the public decoder returns the existing unsupported-subset error and a retry without the fault succeeds with the Pillow reference. The selected run passed 1/1. Coverage MCP no longer lists the alpha-length mismatch arm at src/codecs/avif/decode.rs:950; zero-width and remainder guards in that condition remain uncovered. The injection is excluded from release builds, so this coverage change does not add a production-path branch. The full report above includes the new contract. MCP source identity remains unverified and test attribution unknown.

The exact fault-contract selection was rerun on 2026-10-28 and passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261028T162733.149537Z-e8b91d4448be45bb8fa8265ea2c14bfa/coverage.json. Raw LLVM counters at the current mismatch condition in src/codecs/avif/decode.rs:1071 show one mismatch and two matching samples in the exercised specialization. The zero-width and remainder guards were false in that run, and another specialization was not invoked. Coverage MCP's incremental comparison with the retained full report was incomparable because its branch detail did not reconcile with the totals; no aggregate gain is claimed.

A selected refresh on 2026-11-09 ran the normal 17x9 Pillow parity row together with the six 12-bit I420 alpha fault contracts for sample-count mismatch, zero width, nondivisible luma length, zero height, and U/V plane-length mismatches. All seven rows passed (one parity row and six target-only fault rows; fault rows report oracle=not_applicable). Coverage MCP found no missing branch groups in convert_subsampled_420_12bit_alpha for this selected report. The selected instrumented crate totals were 13,998/142,863 lines (9.7982%), 2,171/32,126 branches (6.7578%), 1,001/9,180 functions (10.9041%), and 18,863/221,254 regions (8.5255%); these totals describe only the selected cohort, not full project coverage. The receipt records revision ea9fea6d7931fc128cb39889198e71eea0ce91a9 and no source or fixture changes during execution. Coverage MCP still marks source identity unverified and test attribution unknown.

Report: .coverage-mcp/local-evidence/selected/20261109T202357.806967Z-1af440b998034a89bdf13a7d2aebffce/coverage.json (SHA-256 2d65c2c3f57b898a1c2f2eb8ee07a5189f61451f499f67582b75e0850b942052; local receipt SHA-256 6abd183dccfb8055971fa2c25e631d4a9c0f46936527487b49ca7c3a3d4b32ad).

TIFF surplus-strip parity — 2026-10-25

Added active parity row decode:tiff:ycbcr_subsampled_lzw_2x2_unaligned_rows_per_strip_3_predictor_2_extra_strip. The complete TIFF declares three LZW strips for 4x4 image geometry that needs two; the third entry points to a valid duplicate strip. Pillow 12.2.0 opens, verifies, and decodes the image to the same 48-byte RGB output as the two-strip control (ee406bf055bf628b9b0a3b6d3ea29a5f32d97e963d3eb4964d5942c37f04881a). The exact selected parity row passed 1/1. Its selected LLVM report contains positive true/false counters for strip_rows == 0; the full report has no remaining Coverage MCP branch gap at that source line. The selected-only MCP query still grouped an unexecuted decoder instantiation at the same location, so the full report is the evidence that closes the grouped gap. The incremental comparison against the prior report was incomparable because its branch detail did not reconcile with the reported totals; no marginal gain is claimed from that comparison.

The unaligned subsampled-strip assembler receives only compressed YcbcrSubsampled8 layouts; uncompressed YCbCr uses Ycbcr8. The redundant compression == COMPRESSION_NONE decode arm was removed, with no change to the compressed path. Runtime benchmark evidence was not collected, so no speedup is claimed. Coverage MCP marks the full report's source identity unverified and test attribution unknown.

TIFF unaligned strip error parity — 2026-10-25

Added active parity row decode:tiff:ycbcr_subsampled_lzw_2x2_unaligned_rows_per_strip_3_predictor_2_zero_first_byte_count for a zero first StripByteCounts entry. Pillow opens and verifies the metadata, then reports OSError("decoder error -2") during pixel loading. The target previously decoded this file, so the unaligned compressed-strip path now rejects the explicitly zero count; the separate fallback for a missing count array is unchanged. The selected parity row passed 1/1.

Added active parity row decode:tiff:ycbcr_subsampled_uncompressed_2x2_unaligned_rows_per_strip_3 for odd-height uncompressed 2-by-2 YCbCr strips with a three-row strip boundary. Pillow verifies metadata and rejects pixel loading with OSError("image file is truncated (4 bytes not processed)"); the target matches the error contract. Its selected parity row passed 1/1. The case adds a distinct malformed-input contract but did not change aggregate coverage counts.

Added active parity row decode:tiff:ycbcr_subsampled_lzw_2x2_unaligned_rows_per_strip_3_predictor_2_oob_first_offset with the first strip offset set beyond the complete input. Pillow opens and verifies the metadata, then reports OSError("decoder error -2") during pixel loading; the selected parity row passed 1/1. The updated full report no longer has a branch gap at src/codecs/tiff/decode.rs:817. Its aggregate increased by one branch, four lines, and two regions, although Coverage MCP cannot attribute those observations to a named test. The false arm at line 804 remains open.

The compression != COMPRESSION_NONE test in the unaligned YCbCr assembly loop was redundant: inspect.rs only supplies subsampling parameters when compression is enabled, and maps uncompressed YCbCr to Ycbcr8. Removing that impossible arm reduces two branch edges and one covered edge without changing the reachable TIFF contract; the zero-count rejection and offset-boundary parity cases still pass. Coverage MCP now reports no branch gaps at lines 804 or 817.

TIFF predictor edge parity — 2026-10-24

Added active parity rows decode:tiff:ycbcr_subsampled_uncompressed_predictor_3 and decode:tiff:ycbcr_subsampled_predictor_2_jpeg_compression_error. The first pins Pillow's 2x2 raw YCbCr interpretation for an uncompressed Predictor=3 directory (input SHA-256 601a3c6a6ce74cbfdd92c442efc0901f8d77f6a13f2a926e3aa261a53621d6a6; pixel SHA-256 b122cbf873524577a50522805777fb18d2fa2434b53a8bb6c0c0236ec118e80f). The second changes the compression tag of the LZW Predictor=2 control to TIFF JPEG compression tag 7 (input SHA-256 c692b5925e26200fe58d9679b6b176313560f602939c749d9ad10ec790c4499c). Metadata inspection and verification succeed, while decode rejects the unsupported compression/predictor combination as Pillow does. The two-row selected parity run passed 2/2; the full coverage run also passed the complete 2,578-row public matrix and all configured floors. The TIFF predictor guard at line 337 has no remaining missing branch observations in the refreshed full report.

TIFF compressed tile byte-count omission — 2026-10-24

Added active parity row decode:tiff:tiled_deflate_without_byte_counts for a complete Deflate-tiled RGB16 TIFF whose directory omits TileByteCounts. Pillow opens and verifies the header, then returns OSError("decoder error -2") when loading pixels. Input SHA-256: ed0b0e058f8fb8a7113c498f8a7a063d7f2ff28f9e45aa4bb33b63019cf86a7f. TIFF inspection now accepts this metadata shape; decode rejects the missing compressed tile lengths. The selected parity row passed 1/1 at .coverage-mcp/local-evidence/selected/tiff-compressed-tile-missing-counts-20261024/coverage.json. The refreshed full report includes this case and passes the configured coverage floors. Coverage MCP's full-report comparison identified one newly observed branch at src/codecs/tiff/decode.rs:398; source/build identity is unverified, so that coordinate change does not establish an aggregate gain or regression.

JPEG even-width YCCK upsample parity — 2026-10-25

Added active Pillow parity rows decode:jpeg:ycck_h2v1_even_width_18x9 and decode:jpeg:ycck_h2v2_even_upsample_edges_18x10. Each starts from a complete, pinned 17×9 libjpeg-turbo YCCK input and changes only the SOF dimensions to expose the padded final MCU samples at an even output edge. Pillow 12.2.0 verifies and decodes both inputs as CMYK. The 18×9 h2v1 input SHA-256 is 3aa91b3831f8b82d66d978cc217ac4a00953c5b40e9c51d46eb93fdad9feb922, with pixel SHA-256 cfd5480dc9878c522f1fad89048331ff773c45d871a893223d743d3b909c9f45. The 18×10 h2v2 input SHA-256 is ad0e70ac2a81695d5a41379d8b9931d1333330514b0a1a930c0e835b9aa5a8c8, with pixel SHA-256 e580c178a9dee525ef95849529c3f4ca0a7e1238cc77027d4133732fe78ea2a6. The focused parity run passed 2/2, and the refreshed full report passed all 2,070 active decode rows.

Coverage MCP's full-report comparison reports two newly observed branch coordinates at the final-sample checks in src/codecs/jpeg/decode/upsample.rs:494 and :541; targeted gap queries now return no missing observations at either line. The report totals increased by two branches, two lines, and four regions with unchanged denominators. MCP marks source identity unverified and test attribution unknown, so the coordinate comparison is not a source-verified or named-test attribution.

JPEG reserved post-scan marker parity — 2026-10-24

Added active parity row decode:jpeg:baseline_444_single_scan_reserved_jpg0 for an 810-byte complete JPEG with a reserved JPG0 segment after a valid trailing DQT. The pinned input SHA-256 is 8cac78f1ec5ba03d629ac828e27d12eb579084476639c90155069457d2728c55; its standalone generator also checks the Pillow lifecycle. Pillow inspection and structural verification succeed, while decode and sequence decode return the broken data stream when reading image file error. The selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/20261024T163312.730669Z-9747674b11f040a28c6ac17ecb02fbae/coverage.json. Its LLVM report records both outcomes at src/codecs/jpeg/decode/decode.rs:2890 (true: 3, false: 3). Coverage MCP's selected-report gap lookup still lists both arms; source identity is unverified and test attribution is unknown, so no aggregate or marginal coverage gain is claimed. The full coverage snapshot above includes this row; named-test attribution remains unavailable.

AVIF clipped derived-skip compound parity — 2026-10-24

Added active parity row decode:avif:animated_lossless_inter_420_derived_skip_refs_clipped_b32x32_56x64 for a deterministic five-frame, 56x64 lossless 8-bit 4:2:0 sequence. The fixed-B32 sample has a clipped 24x32 right-edge grid; its pinned input SHA-256 is b801ab1e84328dfe552543858fad84a59c7edeb7ac7497972c2499b0736d6eb5. Pillow 12.2.0 frame references and independent loop evidence from libavif 6543b22b5bc706c53f038a16fe515f921556d9b3 were generated and validated. The exact selected parity case passed 1/1, including all five frames' pixels, at .coverage-mcp/local-evidence/selected/20261024T160814.722483Z-fb991bd6146846538984b6647018796f/coverage.json.

That raw LLVM report records three calls through decode_inter_compound_translation_lossless_grid; the compound specialization records both outcomes of the lossless_partial_grid predicate at src/codecs/avif/av1/block.rs:48160 (true: 1, false: 2). Coverage MCP still reports uncovered generic instantiations at the same source coordinate. Its incremental comparison with target/release-evidence/coverage.json was incomparable because the baseline lacks compatible exact branch detail; its source identity is unverified and test attribution is unknown. No aggregate coverage gain is claimed from that comparison.

The public fixture matrix now contains 2,576 total rows: 2,059 decode / inspect / verify rows and 517 encode rows. Of those, 2,059 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 88 cases.

TIFF subsampled YCbCr Predictor=2 parity — 2026-10-24

Added twelve active parity rows for Predictor=2 with LZW, Deflate, and Adobe Deflate compression over 2-by-1, 4-by-1, 4-by-2, and 4-by-4 YCbCr clumps. Pillow 12.2.0 decodes each fixture to an exact 192-byte RGB reference. The rows are decode:tiff:ycbcr_subsampled_lzw_2x1_predictor_2, decode:tiff:ycbcr_subsampled_lzw_4x1_predictor_2, decode:tiff:ycbcr_subsampled_lzw_4x2_predictor_2, and decode:tiff:ycbcr_subsampled_lzw_4x4_predictor_2, decode:tiff:ycbcr_subsampled_deflate_2x1_predictor_2, decode:tiff:ycbcr_subsampled_deflate_4x1_predictor_2, decode:tiff:ycbcr_subsampled_deflate_4x2_predictor_2, decode:tiff:ycbcr_subsampled_deflate_4x4_predictor_2, decode:tiff:ycbcr_subsampled_adobe_deflate_2x1_predictor_2, decode:tiff:ycbcr_subsampled_adobe_deflate_4x1_predictor_2, decode:tiff:ycbcr_subsampled_adobe_deflate_4x2_predictor_2, and decode:tiff:ycbcr_subsampled_adobe_deflate_4x4_predictor_2. Before the decoder change, the four new LZW rows failed with unsupported TIFF subsampled YCbCr storage layout. The decoder now accepts Pillow-supported predictor/compression combinations and follows libtiff's complete three-sample accumulator groups. The LZW selected run passed 4/4 at .coverage-mcp/local-evidence/selected/tiff-ycbcr-predictor2-final-20261024/coverage.json; the eight Deflate and Adobe Deflate rows passed 8/8 at .coverage-mcp/local-evidence/selected/tiff-ycbcr-deflate-predictor2-20261024/coverage.json. The cases cover scanline strides both divisible and not divisible by three. The refreshed full report includes all twelve rows and passed the configured coverage floors. Coverage MCP returned unverified source identity and unknown test attribution for the selected reports, so no per-case aggregate gain is claimed.

TIFF RGB16 ExtraSamples rejection parity — 2026-10-24

Added active parity row decode:tiff:error_rgb16_extra_sample_without_fourth_channel for a complete 188-byte big-endian RGB16 TIFF declaring one ExtraSamples value with only three samples per pixel. Pillow 12.2.0 rejects it during opening. Fixture SHA-256: 086d099af708225e89e39ab59ab2e62576636da3e3083f3bb606bdffd4a2975a. It passed with the mixed and signed SampleFormat rejection cases and unsigned RGB16 controls in a 7/7 selected parity run at .coverage-mcp/local-evidence/selected/tiff-rgb16-layout-edges-20261024/coverage.json.

The public fixture matrix now contains 2,562 total rows: 2,045 decode / inspect / verify rows and 517 encode rows. Of those, 2,045 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 88 cases.

TIFF RGB16 contiguous tiled Deflate parity — 2026-10-24

Added active parity row decode:tiff:rgb16_contiguous_tiled_deflate_edges for a 17x17 RGB16 TIFF in four contiguous Deflate tiles, including clipped right and bottom edges. Pillow 12.2.0 returns the exact 867 RGB bytes. The 2,015-byte fixture is pinned at SHA-256 3b29709ca7a616ada00ca7ca800378fed328f7353d6574ecb8c30181145d2031. The target now admits contiguous Deflate tiles through its existing tile decoder; the selected case and planar-tile/strip controls passed 4/4 at .coverage-mcp/local-evidence/selected/tiff-rgb16-contiguous-tiled-deflate-20261024/coverage.json.

The public fixture matrix now contains 2,561 total rows: 2,044 decode / inspect / verify rows and 517 encode rows. Of those, 2,044 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 88 cases.

TIFF RGB16 mixed SampleFormat rejection parity — 2026-10-24

Added active parity row decode:tiff:error_rgb16_mixed_sample_format for a complete 188-byte big-endian RGB16 TIFF whose SampleFormat values are [1, 2, 1]. Pillow 12.2.0 rejects this file during opening. Fixture SHA-256: e6c535b10127e845fa911f375f7e88bfefa4a39a0dd9f1bff6dcfb95b3649b55. The new row, the all-signed rejection case, and two unsigned RGB16 controls passed 4/4 at .coverage-mcp/local-evidence/selected/tiff-mixed-sampleformat-20261024/coverage.json. This exercises the mixed-channel rejection in layout_and_palette; selected coverage does not establish aggregate gains.

The public fixture matrix now contains 2,560 total rows: 2,043 decode / inspect / verify rows and 517 encode rows. Of those, 2,043 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 88 cases.

TIFF RGB16 uncompressed Predictor 3 parity — 2026-10-24

Added active parity row decode:tiff:rgb16_le_uncompressed_predictor3_strips for a deterministic 180-byte little-endian RGB16 TIFF. Pillow 12.2.0 ignores Predictor 3 with uncompressed strips and returns the exact expected 12 RGB bytes. Fixture SHA-256: 1528a4d7a519f6a2f1b24c0f88cdee98b566d813533621cdf6971fd8f4aedec9. The selected run passed five TIFF parity rows and three separate JPEG target-only fault contracts (8/8 total) at .coverage-mcp/local-evidence/selected/tiff-predictor3-jpeg-fault-20261024/coverage.json. The three fault contracts remain outside Pillow parity counts. Coverage MCP reports only selected-run coordinates; its source identity is unverified and test attribution is unknown, so no aggregate coverage gain is claimed.

Uncompressed TIFF decoding now ignores Predictor values as Pillow does; compressed inputs retain the existing supported Predictor 1 and 2 checks.

The public fixture matrix now contains 2,559 total rows: 2,042 decode / inspect / verify rows and 517 encode rows. Of those, 2,042 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 88 cases.

TIFF RGB16 Deflate FillOrder 2 rejection parity — 2026-10-24

Added active parity row decode:tiff:error_rgb16_deflate_fill_order_2 for a complete 196-byte RGB16 Deflate TIFF with FillOrder=2. Pillow 12.2.0 rejects it during opening. Fixture SHA-256: 36a010a79dfeacec61408c2535b19eb7bdedbca460057604c407c2929d35dcbb. The new case and the FillOrder 1 RGB16 Deflate control passed together (2/2) at .coverage-mcp/local-evidence/selected/tiff-rgb16-fill-order2-20261024/coverage.json. Raw LLVM records both outcomes at layout_and_palette line 391. Coverage MCP's selected-to-full comparison is incomparable because exact branch detail is incomplete; its source identity is unverified and test attribution is unknown. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,557 total rows: 2,040 decode / inspect / verify rows and 517 encode rows. Of those, 2,040 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

TIFF RGB16 Deflate horizontal-predictor parity — 2026-10-24

Added active parity row decode:tiff:rgb16_le_deflate_predictor2_contiguous_strips. Its deterministic 196-byte TIFF uses two contiguous Deflate strips with 16-bit RGB horizontal differencing (Predictor 2); Pillow 12.2.0 decodes the exact expected 12 RGB bytes. Fixture SHA-256: 37fc7bcedd0f550626fab36b6cfa772f925aa33e1b1bebb4c4f3e832fe4c978e. The new case and the Predictor 1 control passed together (2/2) at .coverage-mcp/local-evidence/selected/tiff-rgb16-deflate-predictor2-20261024/coverage.json. Coverage MCP still reports unobserved groups in layout_and_palette; source identity is unverified and test attribution is unknown, so this selected run does not establish an aggregate coverage gain.

The decoder now admits Predictor 2 for Deflate-compressed RGB16 strips. It uses the existing horizontal-predictor reversal path; no per-sample conversion loop was added.

The public fixture matrix now contains 2,556 total rows: 2,039 decode / inspect / verify rows and 517 encode rows. Of those, 2,039 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

TIFF signed RGB16 SampleFormat parity — 2026-10-24

Added active parity row decode:tiff:error_rgb16_signed_sample_format for a complete 188-byte RGB16 TIFF whose SampleFormat tags declare signed samples. The fixture is pinned at SHA-256 acf7ac21e19739826a6f4783d36150ff139dd70a632b6223f55cee23f3fac142; the fixture generator verifies that Pillow 12.2.0 rejects it while opening. The new row and the unsigned RGB16 control passed the selected parity run 2/2 at .coverage-mcp/local-evidence/selected/20261024T141450.184628Z-861a69d552174765889f4646202f9212/coverage.json. Coverage MCP returned no missing groups for the selected layout_and_palette query. The report contains 173/32,010 observed branches; source identity is unverified and test attribution is unknown, so it does not support an aggregate coverage claim.

The TIFF YCbCr rational limit check now follows the parser's unsigned u32 denominator contract and widens values before comparing them. Five existing YCbCr boundary and SampleFormat parity rows passed after this change.

The public fixture matrix now contains 2,555 total rows: 2,038 decode / inspect / verify rows and 517 encode rows. Of those, 2,038 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF nonzero auxC FullBox version parity — 2026-10-24

Added active parity row decode:avif:error_auxc_nonzero_version. The deterministic fixture changes only the meta/iprp/ipco/auxC FullBox version in alpha.avif, preserving its complete AV1 payload and 6,441-byte file size. Pinned Pillow 12.2.0 rejects the complete input at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>. The fixture SHA-256 is 2357cdc2bc511390a97c6f84cdf1bbf03b0debe3b7bda4090b397d7bd20c3822.

The focused public parity and coverage command passed 1/1 at .coverage-mcp/local-evidence/selected/avif-auxc-nonzero-version-20261024/coverage.json. Raw LLVM records six visits to the nonzero-version arm in src/codecs/avif/samples.rs::parse_property at line 734. The full report before this row recorded zero visits to that arm and 340 visits to the version-zero arm; the refreshed full report records six and 340 visits, respectively. Coverage MCP confirms no remaining gap at line 734. Its full comparison reports one newly observed branch coordinate but remains limited because report source/build identities and test attribution are unverified. No aggregate gain is claimed from that comparison.

The refreshed full parity coverage is 93,218/139,046 lines (67.0411%), 18,488/32,028 branches (57.7245%), 5,189/8,891 functions (58.3624%), and 142,454/215,942 regions (65.9686%).

The public fixture matrix now contains 2,554 total rows: 2,037 decode / inspect / verify rows and 517 encode rows. Of those, 2,037 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF nonzero pixi FullBox version parity — 2026-10-24

Added active parity row decode:avif:error_pixi_nonzero_version. The deterministic fixture changes only the baseline still's pixi FullBox version from zero to one, preserving the complete AV1 payload and 3,077-byte file size. Pinned Pillow 12.2.0 rejects the complete input at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>. The fixture SHA-256 is a50bd4126788de5efdeefa05ec6583267311fe021af9168928850589d9fd5689.

The focused public parity and coverage command passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pixi-nonzero-version-20261024/coverage.json. Raw LLVM records six visits to the nonzero-version arm in src/codecs/avif/samples.rs::parse_property at line 699. The full report before this row recorded zero visits to that arm and 243,967 visits to the version-zero arm; the refreshed full report records six and 243,967 visits, respectively. Coverage MCP confirmed the arm is now covered in the refreshed report. Its incremental comparison is incomparable because the baseline's exact branch detail is incomplete and report source/test receipts are unverified. No aggregate gain is claimed from that comparison.

The refreshed full parity coverage is 93,217/139,046 lines (67.0404%), 18,487/32,028 branches (57.7214%), 5,189/8,891 functions (58.3624%), and 142,453/215,942 regions (65.9682%).

The public fixture matrix now contains 2,553 total rows: 2,036 decode / inspect / verify rows and 517 encode rows. Of those, 2,036 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF zero-plane pixi parity — 2026-10-24

Added active parity row decode:avif:error_pixi_zero_planes. The deterministic fixture changes only the baseline still's pixi plane count from three to zero, preserving the complete AV1 payload and 3,077-byte file size. Pillow 12.2.0 reports builtins.RuntimeError: Failed to decode image: Not implemented; the public parity runner confirms Rust and Pillow both reject the input as malformed. The fixture SHA-256 is b29a15defd39037aebaa7dffdd878c828201d1d9adc852302e8c76b123036431.

The focused parity and coverage run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pixi-zero-planes-20261024/coverage.json. Raw LLVM records six visits to the invalid plane-count outcome in src/codecs/avif/samples.rs::parse_property at line 703; the saved full report recorded zero visits to that outcome and 243,955 visits to the valid plane-count outcome. Coverage MCP returned incomparable for the incremental comparison because the baseline's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,552 total rows: 2,035 decode / inspect / verify rows and 517 encode rows. Of those, 2,035 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF over-16 pixi depth parity — 2026-10-24

Added active parity row decode:avif:error_pixi_depth_above_16. The deterministic fixture changes only the baseline still's first pixi channel depth from eight to 17, preserving the complete AV1 payload and 3,077-byte file size. Pillow 12.2.0 reports builtins.RuntimeError: Failed to decode image: Not implemented; the public parity runner confirms Rust and Pillow both reject the input as malformed. The fixture SHA-256 is bdf5ecf32956f1c05ed93c9b3e5a9fb2381f5429c1996ccb6b5701201fdbd34d.

The focused parity and coverage run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pixi-depth-above-16-20261024/coverage.json. Raw LLVM records six visits to the over-limit depth outcome in src/codecs/avif/samples.rs::parse_property at line 707. The refreshed full baseline recorded zero visits to that outcome and 243,949 visits to the in-range depth outcome. Coverage MCP returned incomparable for the incremental comparison because the baseline's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,551 total rows: 2,034 decode / inspect / verify rows and 517 encode rows. Of those, 2,034 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF mismatched pixi channel-depth parity — 2026-10-24

Added active parity row decode:avif:error_pixi_channel_depth_mismatch. The deterministic fixture changes only the second of three channel-depth entries in the baseline still's pixi property, preserving the complete AV1 payload and 3,077-byte file size. Pillow 12.2.0 reports builtins.RuntimeError: Failed to decode image: Not implemented; the public parity runner confirms Rust and Pillow both reject the input as malformed. The fixture SHA-256 is 420568bd6387e4262a2b3076a466b0d39efe35f9c01c99a66364352389b92242.

The focused parity and coverage run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pixi-channel-depth-mismatch-20261024/coverage.json. Raw LLVM records six visits to the mismatched-channel outcome in src/codecs/avif/samples.rs::parse_property at line 711. The refreshed full baseline recorded zero visits to that outcome and 487,078 visits to the matching channel-depth outcome. Coverage MCP returned incomparable for the incremental comparison because the baseline's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,550 total rows: 2,033 decode / inspect / verify rows and 517 encode rows. Of those, 2,033 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF zero-depth pixi parity — 2026-10-24

Added active parity row decode:avif:error_pixi_zero_depth. The deterministic fixture sets only the first channel depth in the baseline still's pixi property to zero, preserving the complete AV1 payload and 3,077-byte file size. Pillow 12.2.0 rejects the full input at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>. Its fixture SHA-256 is 7c815a023acc909df7a21d80d11aa1ca92aaae6ce0748bfc989288cae91d3c5f.

The focused parity and coverage run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pixi-zero-depth-20261024/coverage.json. Raw LLVM records six visits to the invalid-depth outcome in src/codecs/avif/samples.rs::parse_property at line 707. The saved full report recorded zero visits to that outcome and 3,511 visits to the valid-depth outcome; its source/build receipt is unverified. Coverage MCP therefore returned incomparable for the incremental comparison because the baseline's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,549 total rows: 2,032 decode / inspect / verify rows and 517 encode rows. Of those, 2,032 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF handler rejection parity — 2026-10-24

Added active parity rows decode:avif:error_meta_hdlr_nonzero_version and decode:avif:error_meta_hdlr_nonzero_predefined. Each fixture mutates only one field in the baseline meta/hdlr box and preserves the complete AV1 payload and 3,077-byte file size. Pillow 12.2.0 rejects both complete inputs at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>. Their fixture SHA-256 values are e5d7f45c33cc3aec2868d57bddaad27b62df23210326822382f81e2cb344dc62 and b9119779779df0addfdfcd92927ae06127109846796ca6806c1a0bc20ce7391d.

The focused parity and coverage run passed 2/2 rows at .coverage-mcp/local-evidence/selected/avif-handler-errors-20261024/coverage.json. Its raw LLVM records six visits to each rejection outcome in src/codecs/avif/samples.rs::parse_handler at line 542. The saved full report .coverage-mcp/local-evidence/parity-full-20261024-after-iloc-reserved/coverage.json records 4,051 visits to each corresponding normal outcome, but its source/build receipt is unverified. Coverage MCP therefore returned incomparable for the incremental comparison because the baseline's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,548 total rows: 2,031 decode / inspect / verify rows and 517 encode rows. Of those, 2,031 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF duplicate idat parity — 2026-10-24

Added active parity row decode:avif:error_meta_duplicate_idat. The deterministic generator appends an empty second idat box to the pinned indexed-idat still, growing the complete file from 5,906 to 5,914 bytes while preserving the original AV1 payload. The fixture SHA-256 is 466e3ecd6e89e4cbd2dba8084642fc2ddbda83e196e005819a31aa54cc3c960b. Pillow 12.2.0 rejects the complete input at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>.

The selected parity coverage command passed 1/1 at .coverage-mcp/local-evidence/selected/avif-duplicate-idat-20261024/coverage.json. Raw LLVM records four and two visits to the idat.is_some() true arm at src/codecs/avif/samples.rs:522 across parse_meta::<false> and parse_meta::<true>. Coverage MCP's incremental comparison is incomparable because the full baseline's exact branch detail is incomplete; no aggregate coverage gain is claimed.

The public fixture matrix now contains 2,546 total rows: 2,029 decode / inspect / verify rows and 517 encode rows. Of those, 2,029 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF version-two infe zero item identifier parity — 2026-10-24

Added active parity row decode:avif:error_infe_zero_item_id. The deterministic generator sets the baseline still's version-two infe item identifier to zero inside meta/iinf, preserving the 3,077-byte file and complete AV1 media payload. The fixture SHA-256 is 9cd1623b8c3cf615b708968e90f6b9bb0fb081dbda2185348ebf087db82e7e7f. Pinned Pillow 12.2.0 rejects it at open with PIL.UnidentifiedImageError: cannot identify image file <bytes>.

The selected parity coverage command passed 1/1 at .coverage-mcp/local-evidence/selected/avif-infe-zero-item-id-20261024/coverage.json. Coverage investigation isolated the zero-ID rejection in src/codecs/avif/samples.rs:617; raw LLVM records six visits to the taken arm for this selected case. The prior full-parity report has the same source hash for samples.rs and recorded zero hits to that arm. Coverage MCP's incremental comparison is incomparable because exact branch detail is incomplete, so no aggregate coverage gain is claimed.

The public fixture matrix now contains 2,546 total rows: 2,029 decode / inspect / verify rows and 517 encode rows. Of those, 2,029 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF version-one pitm wide item identifier parity — 2026-10-24

Added active parity row decode:avif:pitm_version_1_wide_item_id. The deterministic generator upgrades the pinned indexed-idat still's pitm primary item field from version zero's 16-bit form to version one's 32-bit form, retaining item ID 1. The file grows by two bytes while preserving the full encoded media payload; its SHA-256 is 985e27b0dbaa32a2835d940ac0729db4b43addf80d207f4598b11d518719874c. Pinned Pillow 12.2.0 output is unchanged at 49,152 bytes of RGB pixel parity.

The selected parity row passed 1/1 at .coverage-mcp/local-evidence/selected/avif-pitm-v1-wide-item-id-20261024/coverage.json. Raw LLVM at src/codecs/avif/samples.rs:554 shows eight visits to the version-one 32-bit branch in parse_pitm. Coverage MCP had identified that arm as uncovered in the full parity report. Its local reports have unverified source/build identity and unknown test attribution; incremental comparison is incomparable because the full report's exact branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,544 total rows: 2,027 decode / inspect / verify rows and 517 encode rows. Of those, 2,027 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF reserved iloc construction-method bit parity — 2026-10-24

Added active parity row decode:avif:error_iloc_reserved_construction_method_bits. The deterministic generator sets one reserved bit in the iloc construction method of the pinned indexed-idat still. The 5,906-byte file size and complete encoded media payload are preserved; the fixture SHA-256 is 14045959d327207b120b345879a1c83a6a0cb252526ce9c9a06101244cc60c2f. Pinned Pillow 12.2.0 rejects inspection, verification, and decode with UnidentifiedImageError("cannot identify image file <bytes>").

The selected parity row passed 1/1 at .coverage-mcp/local-evidence/selected/avif-iloc-reserved-construction-method-bits-20261024/coverage.json. Raw LLVM records at src/codecs/avif/samples.rs:1124 show four and two visits to the reserved-bit rejection arm across the two parser instantiations. The full parity-only report at .coverage-mcp/local-evidence/parity-full-20261024/coverage.json had this arm uncovered before the case. Coverage MCP marks local report source/build identity unverified and test attribution unknown; no aggregate coverage gain is claimed.

The public fixture matrix now contains 2,543 total rows: 2,026 decode / inspect / verify rows and 517 encode rows. Of those, 2,026 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF duplicate item identifier parity — 2026-10-24

Added active parity row decode:avif:error_iloc_duplicate_item_id. The deterministic generator duplicates the complete sole record in the pinned file-backed iloc table, retaining the same item ID and AV1 media payload. The fixture grows by 14 bytes to encode both records; its SHA-256 is 37b723c1e183488bbf0ddf7c0cad7ae271f54dfe912b040c4721e0af7e1d48fd. Pinned Pillow 12.2.0 rejects inspection, verification, and decode with UnidentifiedImageError("cannot identify image file <bytes>").

The exact selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-iloc-duplicate-item-id-20261024/coverage.json. The raw LLVM records at src/codecs/avif/samples.rs:1115 show 4/4 and 2/2 outcomes across the two parser instantiations. Coverage MCP marks the selected report's source/build identity unverified and test attribution unknown; its incremental comparison with the saved full report is incomparable because the baseline branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,542 total rows: 2,025 decode / inspect / verify rows and 517 encode rows. Of those, 2,025 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF zero item identifier parity — 2026-10-24

Added active parity row decode:avif:error_iloc_zero_item_id. The deterministic generator changes the sole item ID in the pinned file-backed iloc table from one to zero while preserving the file size and AV1 media payload. The fixture SHA-256 is 6628085ef24f7bb3a62eb656950f609d585ebcb5e27b3fd1c2f9d04ad50c06fa. Pinned Pillow 12.2.0 rejects inspection, verification, and decode with UnidentifiedImageError("cannot identify image file <bytes>").

The exact selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-iloc-zero-item-id-20261024/coverage.json. The raw LLVM branch records at src/codecs/avif/samples.rs:1114 show the zero-ID rejection arm with counters 4/0 and 2/0 across the two parser instantiations. Coverage MCP marks the selected report's source/build identity unverified and test attribution unknown; its incremental comparison with the saved full report is incomparable because the baseline branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,541 total rows: 2,024 decode / inspect / verify rows and 517 encode rows. Of those, 2,024 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF overlong grid descriptor extent parity — 2026-10-24

Added active parity row decode:avif:error_grid_descriptor_overlong_extent. The deterministic generator changes the primary grid item's declared extent from eight bytes to nine while preserving the file size and encoded AV1 media payload. The fixture SHA-256 is e0ef3f8597d7ae703cd5ccf7ee8eb24293a857ea4c1e86c8828a899508e54e4f. Pinned Pillow 12.2.0 rejects inspection, verification, and decode with UnidentifiedImageError("cannot identify image file <bytes>").

The exact selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-grid-overlong-descriptor-20261024/coverage.json. The raw LLVM branch record for src/codecs/avif/samples.rs:1746 has outcome counters 6/0, exercising the exact-extent rejection. Coverage MCP marks the selected report's source/build identity unverified and test attribution unknown; its incremental comparison with the saved full report is incomparable because the baseline branch detail is incomplete. No aggregate coverage gain is claimed.

The public fixture matrix now contains 2,540 total rows: 2,023 decode / inspect / verify rows and 517 encode rows. Of those, 2,023 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF short grid descriptor extent parity — 2026-10-24

Added active parity row decode:avif:error_grid_descriptor_short_extent. Its deterministic generator changes the primary grid item's declared descriptor extent from eight bytes to three while preserving the file length and media payload. The fixture SHA-256 is 95670f2861407e944391adfdd75bbc97e6ebd010aedda7850dd65a7286cb49e5. Pinned Pillow 12.2.0 rejects inspection, verification, and decode with UnidentifiedImageError("cannot identify image file <bytes>").

The exact selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-grid-short-descriptor-20261024/coverage.json; its local receipt records the selected, executed, and passed row IDs. The raw LLVM branch record for src/codecs/avif/samples.rs:1712 has outcome counters 6/0, exercising the short-extent error path. Coverage MCP returned measured selected-run coordinates but marks source/build identity unverified and test attribution unknown. Incremental comparison with the saved full report is incomparable because that baseline's branch detail is incomplete; no aggregate coverage gain is claimed.

The public fixture matrix now contains 2,539 total rows: 2,022 decode / inspect / verify rows and 517 encode rows. Of those, 2,022 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF grid without dimg references — 2026-10-24

Added active parity row decode:avif:error_grid_without_dimg_references. The fixture renames the source grid's only dimg reference box to zzzz without changing box sizes or encoded media payloads. Pillow 12.2.0 rejects it with RuntimeError("Failed to decode image: Invalid image grid"). The fixture SHA-256 is a283fb5590e31db1f491fe1e010a22fec3f55da99080dd4dcc61b95e89d6316a.

The selected parity run passed 1/1 at .coverage-mcp/local-evidence/selected/avif-grid-no-dimg-current-20261024/coverage.json. The local LLVM report records the missing-child error arm in src/codecs/avif/samples.rs:1908; Coverage MCP lists only the opposite arm as unobserved in this selected run. It does not reach the similar container check at src/codecs/avif/container.rs:1590, because sample extraction rejects the input first. Coverage MCP marks source identity unverified and test attribution unknown for the report, and its query against the saved full report timed out; no full-suite coverage delta is claimed.

The public fixture matrix now contains 2,538 total rows: 2,021 decode / inspect / verify rows and 517 encode rows. Of those, 2,021 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

JPEG oversubscribed Huffman fallback parity — 2026-10-24

Added active row decode:jpeg:malformed_markers_dht_oversubscribed_retained_tables. The full-file fixture keeps the baseline AC and chroma Huffman tables while replacing DC0 with three one-bit codes, an oversubscribed table. Its generator is scripts/generate_jpeg_oversubscribed_dht_fallback_fixture.py; input SHA-256 is d308eee3946fdfa39f65045ee77d49ba407868dbea4a8a421fde3179b45bc457. Pinned Pillow 12.2.0 verifies the JPEG and reports OSError("broken data stream when reading image file") on decode. The exact selected public parity row passed 1/1 with the same malformed result.

The three new JPEG parity rows passed together (3/3) in .coverage-mcp/local-evidence/selected/jpeg-oversubscribed-dht-parity-main-20261024/coverage.json. Coverage MCP's decode_slow_fast query observes the length-greater-than-16 path and the false arm of the invalid-table sentinel check at src/codecs/jpeg/decode/huffman.rs:389-390; the opposite arms remain unobserved. The report has no verified source/build identity or test attribution, so these are coordinate observations, not a verified coverage gain. No full coverage campaign was run.

The public fixture matrix now contains 2,537 total rows: 2,020 decode / inspect / verify rows and 517 encode rows. Of those, 2,020 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

JPEG progressive oversubscribed Huffman parity — 2026-10-24

Added active row decode:jpeg:malformed_markers_progressive_dht_oversubscribed. It mutates progressive_gray.jpg by replacing only its DC0 DHT with three one-bit codes, preserving the other tables. Input SHA-256 is 883582bb9b9d43c06f950dca99782441350fa25262ad30247a0d87d2d7bff1b3. Pinned Pillow 12.2.0 verifies the file and reports OSError("broken data stream when reading image file") on decode. The selected public parity row passed 1/1.

Coverage MCP's gap query for the three-row report lists 38 unobserved branch coordinates in progressive_reconstruct. The report has no verified source/build identity or test attribution, so the row-level observations do not establish marginal or aggregate coverage gain. No full coverage campaign was run.

JPEG scalar Huffman sentinel parity — 2026-10-24

Added active row decode:jpeg:malformed_markers_dht_oversubscribed_scalar_fallback. The fixture starts from sampling_3x1.jpg, retains its sibling Huffman tables, and oversubscribes DC0. Its generator is scripts/generate_jpeg_oversubscribed_dht_fallback_fixture.py; input SHA-256 is 7e895799133d2308b6e0eef0795c67da67675771693cde3aad1f49dc81bd6625. Pillow 12.2.0 verifies the input and returns the same malformed-stream decode error; the selected public parity row passed 1/1.

Coverage MCP's selected query for HuffTable::decode_slow at src/codecs/jpeg/decode/huffman.rs:349 lists only the true outcome, showing the false outcome in the invalid-table sentinel predicate was observed. Both arms at line 360 remain missing in the three-row report. Source/build identity and test attribution are unverified, so no marginal or aggregate coverage gain is claimed. No full coverage campaign was run.

AVIF auxiliary alpha sample-count parity — 2026-10-22

Added decode:avif:sequence_alpha_sample_count_mismatch for the pinned 10bit.avif sequence with only the alpha track's stsc.samples_per_chunk field changed from five to four (input SHA-256 89a13baeb503ace10bea0f07d9c2aa296235d2ca8ed0471f3ee99751deccafcf). Pillow 12.2.0 verifies the file and decodes its first four 64×64 RGBA frames; loading frame four raises RuntimeError: Failed to decode frame 4: No images remaining. The first-frame reference is 16,384 bytes with SHA-256 cef05e2501d6fe214a10be9acd4aeef15db8263529bcfb0111bf2cdc98285b57.

The selected public matrix case passed 1/1. It exposed and fixed an early Rust sample-count rejection that made inspection fail before Pillow's late sequence error: inspection and first-frame decoding now retain the mapped samples, and full-sequence decoding reports the malformed color/alpha count before building frames. Coverage MCP identified the gap in sequence sample-count validation at src/codecs/avif/samples.rs:2671. The selected LLVM report is target/release-evidence/selected/avif-alpha-sample-count-mismatch-v2-20261022.json. Its comparison with the saved full report is incomparable because baseline branch detail does not reconcile with reported totals and neither report has a verified source/build receipt. The selected gaps query shows the expected unvisited time-scale and equal-count arms in src/codecs/avif/decode.rs:307,312-313; no marginal or aggregate coverage gain is claimed. No full coverage campaign was run.

The public fixture matrix now contains 2,532 total rows: 2,015 decode / inspect / verify rows and 517 encode rows. Of those, 2,015 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 85 cases.

AVIF 12-bit 4:2:0 alpha odd-edge parity — 2026-10-22

Added public decode parity row decode:avif:high_bitdepth_still_12bit_420_alpha_odd_edge_17x9 for a 17×9, full-range, 12-bit AV1 profile-2 all-lossless 4:2:0 image with 12-bit auxiliary alpha. The fixture exercises odd right/bottom edges and distinct low-nibble chroma. Its deterministic generator, pinned provenance, and exact pixel digest are recorded in the AVIF fixture README.

The selected native coverage run passed all five decode rows and the allocation fault contract. That fault contract now uses this fixture, so the injected reservation failure traverses the new 12-bit route; the public result and retry contract pass. The selected LLVM report is target/release-evidence/selected/avif-12bit420-alpha-odd-edge-20261022-final-r4/coverage.json. Coverage MCP reports 2,974/32,174 branch observations for this selected workload and six unobserved true arms in the helper's defensive plane-shape guards at src/codecs/avif/decode.rs:939. The report has no verified source or build identity and no test attribution. Its baseline comparison is incomparable because the saved baseline's branch detail does not reconcile with its totals. These selected observations do not establish marginal, aggregate, or full-suite coverage gains.

The public fixture matrix then contained 2,531 total rows: 2,014 decode / inspect / verify rows and 517 encode rows. Of those, 2,014 decode rows and 486 encode rows were active; 31 encode rows remained planned. The separate target-only fault lane contained 85 cases.

AVIF subsampled RGB output reservation fault contract — 2026-10-22

Added target-only case fault-contract:avif:avif_subsampled_rgb_output_reservation_failure using the active decode:avif:baseline 8-bit 4:2:0 input. The coverage-only failpoint forces the subsampled RGB output reservation to fail without requesting a large allocation. The public result must be a Dimensions error at StillDecode with message decode: unable to allocate AVIF subsampled RGB output; retry must match a fresh decode. The selected run passed 1/1 with oracle_status: not_applicable, so this is fault-contract evidence, not Pillow parity. Its report is target/release-evidence/selected/20261022T055920Z/coverage.json (SHA-256 f9e744f74dc6b44dca3f5809b311baf0d0580db96adec4a042cd617943b51878).

Coverage MCP found no missing branch location at the output reservation check in this selected report. Overall it reports 1,985/32,908 branch observations; source/build identity is unverified and test attribution is unknown, so this is selected-run exploration only. No verified marginal gain, aggregate coverage gain, or full-coverage result is claimed.

ICO embedded PNG partial-signature parity — 2026-10-22

Added active parity row decode:ico:error_malformed_png_entry_signature. Its complete 2,690-byte ICO preserves the embedded PNG's four-byte dispatch prefix and flips only the fifth signature byte; input SHA-256 is 69864fbd1392610d04953ca7ff3de0b0e9643a24f3edeabee748e06fe251549e. Pinned Pillow 12.2.0 reports OSError("Truncated File Read") for inspection, verification, decode, and sequence decode. The exact selected Rust parity run on the current main base passed 1/1.

Coverage MCP's selected-test coordinate comparison against the prior PNG selection found the false arm of the full PNG signature check at src/codecs/png/decode.rs:2036 as newly observed. The one-row report leaves the true arm unobserved, as expected for this malformed input. Both reports have unverified source/build identity and unknown MCP test attribution, so this is coordinate evidence only; no verified marginal gain or full-coverage result is claimed. The current-base local report is .coverage-mcp/local-evidence/20261022/ico-png-partial-signature-main/coverage.json.

Selected coverage artifact retention — 2026-10-21

The selected coverage runner now defaults to a unique .coverage-mcp/local-evidence/selected/<run-id>/ directory outside target/. The report, captured command log, and local execution receipt remain adjacent. Explicit SELECTED_COVERAGE_REPORT paths retain their repository containment and no-overwrite checks.

The selected-only verification ran RUSTC_WRAPPER= PYTHON=/Users/lazytrot/work/image-slash-star/.oracle-venv/bin/python CARGO_NET_OFFLINE=true make coverage-selected COVERAGE_CASES='decode:webp:lossy_vp8' from source revision 65d094e0bf2024735f5db932f7e7621b034a9576. It passed 1/1: selected, executed, and passed IDs were all decode:webp:lossy_vp8; no row failed or remained planned. The local receipt records a clean worktree before and after the run, source_changed_during_run: false, and fixtures_changed_during_run: false.

The retained report is .coverage-mcp/local-evidence/selected/20261021T125859.070656Z-544ea994e4de47c8b33548801213f084/coverage.json (SHA-256 b40b8a5d2e0491dfd80ca5ae96f6efd47ae4397fbb1338b020f74d66a1cf5454). Its adjacent files are coverage.log and coverage.local-evidence.json.

Selected-run metric Covered / total Percent
Lines 2,744 / 139,295 1.97%
Branches 267 / 32,016 0.83%
Functions 227 / 8,908 2.55%
Regions 4,587 / 216,342 2.12%

Coverage MCP coverage_gaps was queried with this report, metric=branches, and query=src/codecs/webp. It returned status=measured, with 267/32,016 branches in the report and 757 matching groups (five shown on the first page). Source identity is unverified, test attribution is unknown, and build ID and recorded revision are null. These missing provider receipts prevent a compatible incremental union or a marginal coverage claim. Missing observations are selected-run locations, not regressions; selected reports do not establish full coverage or enforce full-suite floors.

GIF NETSCAPE loop-payload parity — 2026-10-21

Added active input-only parity rows decode:gif:netscape_loop_split_subblocks and decode:gif:netscape_loop_empty_payload. Their deterministic inputs are derived structurally from animated.gif, with SHA-256 values f37bed09e23a28e757415e9a2e238743ca8e14010bc8f2a9f4203560e193326a and 20dad1519e7cd65f7f2aff71ca773bfedea1eb4d475b9ac795d0b71eb26202db. Pillow 12.2.0 verifies and decodes both as two-frame 128x128 animations, leaves loop metadata unspecified, and returns identical frame references: frame 0 (P, SHA-256 5c14fc6f08efde212c935cb3f9e414e282357d8ceca54b8cb932023c15e4f5f9) and frame 1 (Rgb8, SHA-256 589579c365ba1aee1b7f5eb46af957d2d5f9dc32c22bc35c8f5d331263ebb4fb).

The first case splits the loop record across data sub-blocks. The second has an empty first sub-block; a following zero padding marker lets Pillow finish its extension-data loop and is ignored by the Rust GIF block parser. The decoder now reads the first NETSCAPE2.0 sub-block, matching Pillow's loop metadata behavior. The coverage harness checks exact frame pixels while preserving the decoder's indexed frame representation.

The selected run passed 5/5 rows (the two new cases, two loop controls, and the existing ANIMEXTS1.0 control). Its local LLVM report is .coverage-mcp/local-evidence/20261021/gif-netscape-loop-edge-parity-r6/coverage.json (SHA-256 540056e37567817f86d1b1c13ae9976981b0a6735eb163ba0d496083ca2a7df0). Coverage MCP measured 142/32,016 branch observations overall and found no missing observations under read_first_sub_block_and_skip_rest. Source identity is unverified and test attribution is unknown, so this is selected-run evidence only; no full-coverage result or aggregate gain is claimed.

AVIF monochrome super-resolution parity — 2026-10-21

Added active case decode:avif:superres_actual_upscaled_monochrome_17x16 for a 17x16, 8-bit YUV400 AVIF with denominator-9 super-resolution (coded width 16, visible width 17), one tile, and luma SGR restoration. The deterministic fixture generator uses the pinned libavif 1.4.1/libaom 3.13.2 fixture tool; the AVIF SHA-256 is d2c485bd5da5d3ea1a6c7af4c95807176f71949c312ca37756caed3e2eae6446. Pinned Pillow 12.2.0 returns 816 RGB bytes with SHA-256 90cb1ee739f1819fd58c121b50d8ed032e298361ec5a897a1b88b3e61d103dd6.

The decoder now admits this bounded intra monochrome super-resolution restoration profile. Its matrix-quantization guard remains closed for inter reconstruction. The selected new row passed 1/1, and the existing monochrome and super-resolution controls passed 3/3 on the final formatted source. Reports: target/release-evidence/selected/avif-mono-superres-new-combined-final.json and target/release-evidence/selected/avif-mono-superres-controls-rechecked-final.json.

Both Coverage MCP incremental branch comparisons (new parity and target-only fault against the controls report) are incomparable because the baseline branch detail does not reconcile with its totals. All selected reports have unverified source identity, null build/revision receipts, and unknown test attribution, so no union or branch gain is claimed. The new-row gaps query reports 55 missing observations in lossy_monochrome_superres_restoration_common and six in its closure; both result arms of the matrix guard at src/codecs/avif/av1/entropy.rs:17927 remain unobserved. The fault-report query reports the true arms of the sequence-support and frame-dimension guards at src/codecs/avif/av1/mod.rs:503 and :504 as unobserved; it reports no missing branch at the plane-dimension comparison on line 512. These are selected-report gaps only. No full coverage campaign was run.

AVIF monochrome alpha-plane fault contract — 2026-10-21

Added target-only case fault-contract:avif:avif_monochrome_alpha_plane_length_mismatch using the active Pillow-backed limited-alpha monochrome 16x16 fixture. A cfg(coverage) hook removes one sample from the validated alpha plane immediately before monochrome_alpha_matches. The runner requires Unsupported(NotImplemented, StillDecode) and then compares an uninjected retry with a fresh decode. The selected target-only run passed 1/1 with oracle_status: not_applicable; this result is diagnostic fault-contract evidence, not Pillow parity. Its local report is target/release-evidence/selected/avif-mono-superres-alpha-fault-combined-final.json. The hook is recorded as defensive_model in the coverage-origin inventory, which verifies 196 exact cfg(coverage) guards across 28 files.

Adam7 RGB16 PNG parity — 2026-10-21

Added active public parity case decode:png:interlace_adam7_rgb_16bit. Its 9x9 RGB16 source serializes all seven Adam7 passes and has input SHA-256 243f253a436c595237e54fddb58f7b5b9fa5fbf07a18b35531399a821cb7a5dc. Pinned Pillow 12.2.0 decodes it as RGB with 243 bytes and SHA-256 fdd488e078dac07ca3813a65dce0146ee1b9fc2f451301d579356f95f512920e.

The selected parity run passed 1/1 on the combined matrix. Coverage MCP measured 167/31,900 branches and reported both unpack_into arms at src/codecs/png/decode.rs:1794 as missing from this selected report. Source/build identity is unverified and test attribution is unknown. The saved full report comparison was incomparable because its branch detail does not reconcile with its totals; no aggregate coverage gain is claimed. The refreshed report is target/release-evidence/selected/png-adam7-rgb16-merged-main-20261021.json. No full coverage campaign or production decoder change was made.

BMP top-down odd-width 24-bit parity — 2026-10-21

Added active parity case decode:bmp:top_down_24_odd_width. Its 194-byte 9x5 INFO-header BMP uses a negative height, 27-byte BGR pixel rows, and one padding byte per row. The complete input SHA-256 is e33cd8541c6e05f96d02f256fdc94baa80d072ec4146f08129ef9f87053d0b19. Pinned Pillow 12.2.0 returns 135 exact RGB bytes with SHA-256 3ea707e3df8c76a38c8c72d2c3e263806f92aef645741ed183127b35ce04f925.

The exact selected parity run passed 1/1; its report records 94/31,900 branch observations. Coverage MCP found the bottom-up arm missing at decode.rs:710. A follow-up run with the existing bottom-up BMP control passed 2/2 and recorded 95/31,900 branch observations. The selected-report comparison found one newly observed branch arm, but remains limited because source/build identity is unverified and test attribution is unknown. Comparing with the saved full report was incomparable: its branch detail is incomplete and its denominator is 31,800. No marginal coverage gain or full coverage result is claimed. The local reports are target/release-evidence/selected/bmp-top-down-odd-width-merged-main-20261021.json and target/release-evidence/selected/bmp-top-down-odd-width-with-bottom-up-control-merged-main-20261021.json.

The saved full BMP report still lists a missing false arm at decode.rs:801 in palette attachment. Existing no-palette BMP input is rejected by Pillow as truncated, so the branch remains a reachability question rather than a justified new parity case.

The current fixture matrix contains 2,530 total rows: 2,013 decode / inspect / verify rows and 517 encode rows. Of those, 2,013 decode rows and 486 encode rows are active; 31 encode rows remain planned. The separate target-only fault lane contains 82 rows.

TIFF 2x2 Predictor=2 odd-edge parity — 2026-10-22

Added active parity rows for a 5x4 TIFF with an odd-width padded clump and a 4x5 TIFF with a padded final clump row. Both use LZW, contiguous 2x2 YCbCr, Predictor=2, and RowsPerStrip=4. Pinned Pillow 12.2.0 / libtiff 4.7.1 decodes the inputs to RGB; input and pixel SHA-256 values are 3aba39db3897b58eebb6a54769267ca7c0c46c3111fd06748a08c258d862b86c / 6d8e08b0b2dd2e2620535846b713064c48abca47c6d57ad654433136c0735e70 and 363e81d857d75ba4b3ecf5a7da2db8cb8e35ff825abcd2856f292eb1c902ddef / a8f4c5318a22ef4da79c4febbf6d8d838ba9415afacc1fe55a568a4c93fcdc30.

The Rust TIFF gate admits odd-edge 2x2 Predictor=2 geometry. The existing ceiling-based clump and predictor-row calculations handle the padding. A focused selected run passed 5/5 exact decode rows, including both new cases and three controls; the control-only run passed 3/3. Coverage MCP selected-test comparisons reported zero new branch and line coordinates. Both reports lack source/build receipts, so the comparison is limited to coordinates and does not establish a verified coverage gain. Reports: .coverage-mcp/local-evidence/selected/20261022/tiff-ycbcr-odd-predictor-2-controls/coverage.json and .coverage-mcp/local-evidence/selected/20261022/tiff-ycbcr-odd-predictor2-controls-only/coverage.json.

TIFF 1x2 Predictor=2 odd-height parity — 2026-10-22

Added active parity rows for 4x3 and 3x3 contiguous YCbCr TIFFs using LZW, 1x2 subsampling, and Predictor=2. Both images end with a padded clump row. The 4x3 fixture has an 8-byte predictor row, so Pillow/libtiff preserves its residual bytes; the 3x3 fixture has a 6-byte predictor row and takes horizontal predictor reversal. Pinned Pillow 12.2.0 / libtiff 4.7.1 produces RGB references. Input / pixel SHA-256 values are f6e68880226a3e0d995cc73a931cd5b2905709d0bea15299aa572b0c62eef046 / 7e55ac763e029f17ce869538b69db5f9a3c61078802c4a0ce8a254c992cd11e3 and 4dca2e6335e895e6b88a6f8caa8b5c6aece3c1dac43b568044f283f74afd6967 / c52188185662eb2a565288b837ba81c29535ca8ddfa9a1fdfd3eecd7b077dfd9.

Both exact selected parity rows passed individually and together (2/2). Coverage MCP found the missing false arm at src/codecs/tiff/decode.rs:957 when measuring the 3x3 selector alone. The paired LLVM report covers both arms there (false=4, true=5), and the focused coverage_gaps query returns no missing group at that line. Coverage MCP marks source identity unverified and test attribution unknown; the incremental comparison is incomparable because the earlier LLVM branch detail is incomplete. This evidence is limited to these selected rows and is not a full-suite coverage claim. The paired report is target/release-evidence/selected/tiff-1x2-odd-height-predictor2-pair.json.

PNG chunk-type byte parity — 2026-10-22

Added malformed input decode:png:error_malformed_structure_invalid_chunk_type_non_letter with a complete, CRC-correct a@Cd chunk before IDAT. Pinned Pillow 12.2.0 rejects the file during Image.open with UnidentifiedImageError. Its chunk name check also accepts ASCII digits and underscores, so the positive control decode:png:pillow_tolerated_chunk_type_digit_underscore covers a1cd and a_cd; the Rust parser preserves those Pillow-observed outcomes. The malformed and accepted fixture SHA-256 values are edac414911843c23dac2cba7f194ed34fc43addfd40877440e29b676dce55ae8 and 92f4b333a2dc484ceae684e89dac4cac8d3c11c96c03e287b0e2a0e4a71785de.

The shared chunk-type validator now runs in both decode iteration and PNG inspection. The focused selected run passed 4/4 rows: the malformed case, the digit/underscore control, and the existing lowercase-reserved-bit and post-IDAT ancillary controls. Coverage MCP found no missing branch groups in validate_chunk_type. Its report marks source identity unverified and test attribution unknown; the local receipt records the four selected cases and no source changes during the run, so this remains selected-scope evidence rather than an aggregate coverage claim. Report: .coverage-mcp/local-evidence/20261022/png-chunk-type-parity-final/coverage.json.

AVIF full-width multi-tile monochrome super-resolution — 2026-10-21

Added public Pillow parity case decode:avif:multitile_monochrome_superres_288x64. The pinned libavif 1.4.1 / libaom 3.13.2 generator verifies two deterministic encodes and an actual denominator-9 AV1 frame with a 256x64 coded plane, a 288x64 upscaled plane, and two full-width tile columns. The source Y4M, AVIF, and Pillow RGB pixel hashes are c8ebdc997141ba1718abe3b81819e6383f2d3724f54a646525f98e3059c30b60, cc88ed36062a37989bef826649d01c2fa872f41c3668c59509f310ff081a93d4, and 30ba32d9eda130257562b74f7fa6a49025176071264bfca20a3d87cae6951479.

The Rust decoder now admits only two complete tile columns, one tile row, monochrome 8/10/12-bit reconstruction, actual super-resolution, and neutral CDEF, deblocking, restoration, and film-grain settings for this path. The existing frame assembler combines coded tile planes before applying the shared upscaler. The initial 256x64 candidate had a cropped second tile and differed from Pillow in 171 bytes at the right edge; it was replaced and is not active.

The selected public case passed exact RGB parity. The focused controls decode:avif:multitile_monochrome and decode:avif:superres_actual_upscaled_monochrome_17x16 also passed. The local selected LLVM report is .coverage-mcp/local-evidence/selected/avif-mono-288-final-20261021/coverage.json. Coverage MCP observed the super-resolution true arm at src/codecs/avif/av1/frame.rs:1714; its false arm was absent from this selected run. MCP reports 1,785/31,970 branches in this small selected report, with source identity unverified and test inventory unknown, so it is only coordinate-level evidence and not an aggregate coverage claim.

AVIF monochrome grid parity and reservation failure — 2026-10-21

Added active parity case decode:avif:portable_lossless_monochrome_grid_73x64. Its deterministic 73x64 monochrome 2x1 AVIF input SHA-256 is 3e69167291d846470673b297e9a30e51d7027e182918b0a8c1d95f24719e9828; pinned Pillow 12.2.0 produces the exact 18,688-byte RGBA reference with SHA-256 a553e8c265e29b0644101cff0da8cb54ac351ac4541b86d095ad960445cea987.

Added target-only contract fault-contract:avif:avif_monochrome_grid_cell_reservation_failure using that active parity input. The coverage-only failpoint forces the monochrome grid's cell-vector reservation to fail; the runner checks the public StillDecode error and a successful retry. The exact selected run passed both selectors (1/1 parity and 1/1 fault contract, oracle not_applicable). Its local report is target/release-evidence/selected/avif-monochrome-grid-mono-fault-final-20261021.json. The report is local-only and has no Coverage MCP source/build receipt; no full coverage claim is made.

AVIF monochrome grid edge parity — 2026-10-21

Added active parity cases decode:avif:portable_lossless_monochrome_grid_no_alpha_73x64 and decode:avif:portable_lossless_monochrome_grid_bottom_clip_64x73. The first fixture has no auxiliary-alpha items, references, or properties; its input SHA-256 is a33a40230675d388722a13e45849205e24ff7f36486502907472c5f9ebd719d0. Pinned Pillow 12.2.0 returns RGB 73x64 with 14,016 exact bytes and SHA-256 1b4a716a8f76555d37d08901f0582e195b2bdcedad46b00f781995d42e4cb1b6. The second is a 1x2 monochrome grid clipped to 64x73; its input SHA-256 is 453945fc2524dabc77162d97896b21d8399a7171a909d19babb908603c0a4201. Pillow returns RGBA with 18,688 exact bytes and SHA-256 20b867857750340cae5d682bb6f5a162508395c242dfe331321cbff0bae90bb4.

The deterministic generator checks the BMFF item graph and extents, encodes both cell variants twice, and verifies the complete decoded pixels through the pinned oracle. The selected run passed 2/2 new parity rows. Coverage MCP's focused branch query for validate_monochrome_grid_with_token returned 30 remaining observations in the selected report: the no-alpha still.alpha branch at line 693 and visible-height calculation at line 807 had no missing locations; it still listed the first-leaf arm at line 625, the unsupported monochrome-dimension arm at line 628, the reservation-failpoint arm at line 636, and both zero-visible-sample rejection arms at line 811. The report is target/release-evidence/selected/avif-grid-edge-cases-20261021.json; Coverage MCP marks its source/build identity unverified and test attribution unknown. The prior selected local report was unavailable after cleanup, and Coverage MCP could not resolve the recorded 2026-08 baseline snapshot (composite snapshot not found), so no marginal coverage gain is claimed. No full coverage campaign or production decoder change was made.

Fixture declarations, executed comparisons, source coverage, and release publication have different identities and denominators. The latest local all-feature report and the historical managed coverage baseline are recorded separately; later entries retain the report-specific observations made when each entry was recorded.

JPEG row-upsample fault contracts and TIFF Predictor=2 parity — 2026-10-21

Added target-only fault contract fault-contract:jpeg:jpeg_fancy_upsample_row_invalid_geometry using the active Pillow-parity YCCK input. Its coverage-only fault sets the row upsampler's source width to zero, checks the public malformed-decode error, then verifies retry against a clean decode. The selected fault-contract run passed 1/1 with oracle_status: not_applicable. Coverage MCP returned fancy_upsample_row branch locations for the selected report, but its source identity is unverified and test attribution is unknown; no coverage gain is claimed.

Added three target-only fault contracts on the same active YCCK parity input for zero source height, zero horizontal upsampling ratio, and zero vertical upsampling ratio. Valid JPEG frame dimensions and sampling factors cannot produce these internal states. Each coverage-only hook exercises one guard, asserts the public malformed-decode result, and verifies a clean retry. These rows report oracle_status: not_applicable and remain separate from Pillow parity counts. The combined selected report .coverage-mcp/local-evidence/selected/jpeg-parity-and-faults-20261024.json passed all 286 active JPEG decode parity rows and all 13 JPEG fault contracts (299/299). Coverage MCP reports no missing branch at the row-geometry guard for this selection. Its source identity remains unverified and test attribution unknown, so the selected report does not support an aggregate coverage-gain claim.

Added target-only fault contract fault-contract:jpeg:jpeg_fancy_upsample_row_short_stride, injecting a stride one byte shorter than the component width. This state is unreachable through valid JPEG component setup and must be rejected before any row slice can use the undersized stride. The public malformed-decode error and retry against a clean decode are checked using the same active Pillow-parity YCCK input. The selected fault run passed 1/1. In its local LLVM report the short-stride condition recorded true/false counts of 1/36; the selected valid YCCK row recorded 0/72 for the same condition. Coverage MCP surfaced remaining missing arms in the row helper. An incremental comparison of the earlier selected fault report with the valid YCCK report returned incomparable because baseline branch detail does not reconcile with report totals, so no aggregate coverage gain is claimed. The current selected fault report is target/release-evidence/selected/20261020T201245Z/coverage.json; comparison inputs were target/release-evidence/selected/20261020T200320Z/coverage.json and target/release-evidence/selected/20261020T200430Z/coverage.json.

Added target-only fault-contract case fault-contract:jpeg:jpeg_row_upsample_source_length_mismatch on the active decode:jpeg:color_ycck_app14_transform_2 input. Its coverage-only one-shot hook shortens the selected component sample slice below the computed row requirement. The public result must be a malformed JPEG StillDecode error, followed by a retry that matches a clean decode. The selected run passed 1/1; its local receipt records the exact selected ID, oracle_status: not_applicable, clean source state before and after, and no fixture changes. At revision 936bc563111847de84d8926c4eae4f2ed9f80a4a, the retained report is .coverage-mcp/local-evidence/selected/jpeg-row-source-length-mismatch-20261021-clean/coverage.json with SHA-256 51a038f39db8f0c26f9acd3abf6b208e885a0e8e44f821cd5f25c063ed13d063. Its single-case totals are 1,891/138,817 lines (1.3622%), 274/31,906 branches (0.8588%), 132/8,881 functions (1.4863%), and 3,155/215,542 regions (1.4638%). Coverage MCP returned measured; the focused helper query listed 17 remaining branch observations, while the line-filtered query for the source-length guard returned no missing group. MCP source identity is unverified, test attribution is unknown, and build ID and recorded revision are absent. No compatible full baseline was queried for this source revision, so no aggregate gain is claimed. No full coverage run was made.

Added active parity case decode:tiff:ycbcr_subsampled_lzw_2x2_two_strips_predictor_2. The 224-byte little-endian input SHA-256 is bf76628b4a022f6c6891f65fc572d3af75760777dab85e70ef1e0e933072c6c1; pinned Pillow 12.2.0 produced the exact 48-byte RGB output SHA-256 7a2b02a725a8988a4e716873f80fe8290c26e274536c6716b4474c31b8379df4. The selected parity run passed 1/1. Coverage MCP returned both branch arms at decode_ifd:323, but source identity is unverified and test attribution is unknown, so no coverage gain is claimed. The reports are target/release-evidence/selected/20261020T194137Z/coverage.json and target/release-evidence/selected/20261020T194437Z/coverage.json. No full coverage campaign was run.

Added Pillow-backed 1-by-2 YCbCr LZW Predictor=2 parity cases. The 4-by-4 fixture has 8-byte predictor scanlines, so libtiff reports horAcc8: (cc%stride)!=0. and leaves the residual bytes untouched; the 3-by-4 fixture has 6-byte scanlines, which libtiff reverses normally. With pinned Pillow 12.2.0 / libtiff 4.7.1, the 235-byte input and 48-byte RGB output hashes are e5dd405646c7e6f44ea0c82e5f01cd770cd395ad38b93bb1011ccc176c17a095 and b394ef5f5e2680867b09884393d2ee73a2ce9491a21c905c9b40d99074d9671a; the 224-byte input and 36-byte RGB output hashes are b1ebb064f9f7f330ce1a1e0b7e8abdab9919791f6c364067542dc656e09e6681 and 384d5eeb323cb3f719d2203a0602ba2fcd42f95cd981568a4e9c4c2b084de219. One selected run passed both new rows and the neighboring 1-by-2 Predictor=1 and 2-by-2 Predictor=2 rows (4/4). Coverage MCP still lists branch arms at decode_ifd:323, but the selected report records source identity as unverified and test attribution as unknown. Comparing it with the saved full report was incomparable because baseline branch detail does not match its reported totals; no coverage gain is claimed. The selected report is target/release-evidence/selected/20261020T213209Z/coverage.json. No full coverage campaign was run.

The fixture matrix now contains 2,487 total rows: 1,972 decode / inspect / verify rows and 515 encode rows. Of those, 1,972 decode rows and 483 encode rows are active; 32 encode rows remain planned. The separate target-only fault lane contains 78 rows. The coverage-origin inventory records 195 exact cfg(coverage) guards across 28 Rust files.

TIFF unaligned subsampled YCbCr Predictor=2 parity — 2026-10-21

Added active public parity rows for 2-by-2 and 1-by-2 subsampled YCbCr LZW strips with Predictor=2 and RowsPerStrip=3. The 238-byte 2-by-2 input SHA-256 is 45aef5c7eea83c4600240c0d4836d826b910723dc205b8f224187edcb40f63c0; Pillow returns 48 RGB bytes with SHA-256 ee406bf055bf628b9b0a3b6d3ea29a5f32d97e963d3eb4964d5942c37f04881a. The 253-byte 1-by-2 input SHA-256 is 047e56f7916f1dca93eb034f622171ec39da0881f4679dc7f1681b075f0d243f; Pillow returns 48 RGB bytes with SHA-256 83c2ac29ff7d103f160792e45e42d13c3cd1c5b36f7b70b62e3ed5117f207666. In the 1-by-2 case, libtiff leaves the 8-byte predictor scanline residuals untouched; in both layouts, Rust reverses eligible prediction in the existing strip buffer before the unaligned conversion path, without adding an allocation.

The selected run passed five Pillow parity rows and the existing unaligned strip reservation fault contract (1/1; oracle not applicable). Coverage MCP returned both outcomes around decode_ifd:323, but reports source as unverified and test attribution as unknown. Comparing to the saved full report was incomparable because branch details differ; no coverage gain is claimed. The local report is target/release-evidence/selected/tiff-unaligned-ycbcr-predictor-parity-20261021.json. No full coverage campaign was run.

TIFF tiled subsampled YCbCr parity and resource bounds — 2026-10-21

Added Pillow-backed TIFF cases for patterned 2-by-2 YCbCr clumps across four 16-by-16 Deflate tiles, an accepted 15-by-16 clipped tile with compressed output ending after the visible clumps, mismatched tile byte-count arrays, and an out-of-bounds tile offset. Added a typed not_applicable fault contract for the bounded decoded-prefix failure path alongside the existing tile-buffer reservation fault. The padded tile prefix is capped at the maximum RGB byte count permitted by TIFF's existing decompression-bomb pixel limit.

The selected coverage run passed four parity rows and both TIFF fault contracts. Coverage MCP reported no missing branches in decode_subsampled_ycbcr_tiles for this measurement. The local report is .coverage-mcp/local-evidence/20261021/tiff-ycbcr-tiles-fault-prefix.json; its source identity is unverified and test attribution is unknown, so this is localized evidence only. No full coverage campaign was run.

Before the follow-up cases above, the fixture matrix contained 2,479 total rows: 1,964 decode / inspect / verify rows and 515 encode rows. Of those, 1,964 decode rows and 483 encode rows were active; 32 planned encode rows remained. The target-only fault lane contained 75 rows. The coverage-origin inventory recorded 192 exact cfg(coverage) guards across 28 Rust files.

WebP VP8 method-zero sampling parity — 2026-10-20

Corrected libwebp parity in VP8 coefficient adaptation: method 0 samples the first 50 macroblocks through 200 macroblocks, then samples one quarter of the frame; skip probability uses the full frame macroblock count. Token-buffer methods no longer signal skip probability, and an Intra4 macroblock skipped after zero residuals preserves the Y2 contexts as libwebp does. These changes reuse the existing macroblock decisions and add no extra per-macroblock pass.

Added Pillow-backed parity rows enc_lossy_quality_0_method_0_capped_statistics and enc_lossy_quality_0_method_0_large_frame_skip_sample. The first uses the existing 128x128 rgb.png (64 macroblocks) and matches a 698-byte WebP (SHA-256 66771f67573da043e1b72af996adf0d8b694ae86e03332369361be65ff305860). The second uses large.png at 513x257 (561 macroblocks; 140 sampled) and matches a 506-byte WebP (SHA-256 79e192628a654aa8745d528b5eef7537cfcb9463fafc24ddf7f28afe5bdc1a96).

The selected all-feature run passed 10/10 existing and new WebP encode rows, with 40 public encode calls and no panics. The capped-statistics row also passed alone (1/1, four public calls). Reports are target/release-evidence/selected/webp-skip-method0-sampling-final-20261020.json (SHA-256 61db78820e9506dfd16c93731b5f4fccb3b1480bd5b6dc2533dab0c13f748621) and target/release-evidence/selected/webp-method0-capped-statistics-only-20261020.json (SHA-256 80227fb8b4a5ad8149831f684c6810e077de62a9e9beb506cd68ac1922b33fa7).

Coverage MCP's focused branch query returned missing outcomes in adapt_coefficients and the VP8 residual skip branch at line 531. These are selected-report locations only: source/build identity is unverified and test attribution is unknown. The attempted incremental comparison is incomparable because the prior report's detailed branch inventory does not reconcile with its totals. No aggregate coverage gain or full-suite claim is made, and no full coverage campaign was run. These are ordinary input parity cases, not target-only fault contracts.

The follow-up row enc_lossy_quality_0_method_0_sampling_boundary_204_macroblocks uses a 192x272 RGB source (204 macroblocks). Method 0 samples 51 decisions at this size, the first sample count above the 50-macroblock cap; the 51st sampled macroblock has a deterministic high-frequency pattern. The source is generated by scripts/generate_webp_method0_sampling_boundary_fixture.py from the pinned rgb.png input. Pillow 12.2.0 emits 2,218 bytes (SHA-256 02b3bde54171c43bee921746dd3398a6f0a35649f0735f2a376b31a9640749b3), and the selected all-feature run passed this row alone (1/1, four public encode calls, zero panics). Its one-row LLVM report observed 7,099/140,521 lines, 609/32,044 branches, 481/8,971 functions, and 11,236/218,427 regions. Coverage MCP identified the total > 200 false arm as unobserved in this one-row selection, while the prior 10-row selected report observed both arms. The selected-tests comparison found no newly observed branch locations; the incremental comparison is incomparable because the earlier report's branch detail does not reconcile with its totals. Both reports have unverified source identity and unknown test attribution. Keep this row for the exact public sampling-boundary regression contract; it does not establish marginal or aggregate coverage gain. The report is target/release-evidence/selected/webp-method0-sampling-boundary-204-20261020.json (SHA-256 048ed9d35829a3ed4da16db92e2610bdf5c7b172934727a9d28246d082996548).

The current public fixture matrix contains 2,471 total rows: 1,957 decode / inspect / verify rows and 514 encode rows. Of those, 1,957 decode rows and 482 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows.

ICO/CUR entry-selection parity — 2026-10-20

Added five active Pillow parity rows covering ICO directory selection and CUR hotspot handling: equal-area lower-depth preference, stable equal-depth ties, both zero-bit-count depth fallbacks, equal-size CUR entries with different y-hotspots, and a CUR entry whose width and height both increase. The CUR equal-size witness uses a 1x11 canvas, keeping y-hotspots 10 and 2 in bounds. The larger-dimensions CUR witness orders a 1x1 green entry before a 2x2 red entry and confirms Pillow selects the later entry.

The ICO decoder and inspector now share area-then-depth selection for ICOs, including Pillow's palette-derived ceil(log2(color_count)) fallback and the maximum-depth fallback when the palette count is absent. CUR selection follows Pillow's raw directory rule: a later entry replaces the current one only when both raw dimensions are strictly larger. ICO bit-depth bytes are not treated as CUR hotspot coordinates.

The focused all-feature branch-coverage run passed all seven selected rows:

RUSTC_WRAPPER= PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:ico:cursor_equal_size_different_y_hotspots decode:ico:cursor_larger_dimensions decode:ico:multi_res_multi_descending decode:ico:multi_res_equal_area_bit_depth_tiebreak decode:ico:multi_res_equal_area_same_depth_stable decode:ico:multi_res_zero_bpp_depth_fallbacks decode:ico:cursor_cursor_24bit' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/20261020/ico-selection-branches-final/coverage.json

Coverage MCP reports no missing branches in entry_color_depth, prefers_entry, or prefers_cursor_entry for this measurement. The selected report is .coverage-mcp/local-evidence/20261020/ico-selection-branches-final/coverage.json; its source identity is unverified and test attribution is unknown, so this is localized branch evidence, not an aggregate coverage-gain claim. These cases are reachable through normal image inputs and remain Pillow parity rows; no fault-contract row is appropriate.

The fixture matrix contains 2,468 rows: 1,957 decode / inspect / verify rows and 511 encode rows. Of those, 1,957 decode rows and 479 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows.

WebP method-zero quality-window parity — 2026-10-20

Added active Pillow encode rows enc_lossless_method_0_quality_40 and enc_lossless_method_0_quality_60 using the existing 128x128 lossless.webp source (SHA-256 20eb48b4ef2a42d4842684930c2023f7d14ac343b825d19a185e8dda5b25f8b2). Both select lossless: true and method: 0, at qualities 40 and 60. With Pillow 12.2.0, Rust encoding matched the exact reference streams: 3,358 bytes at quality 40 (SHA-256 21af1c4ce50d605d46ea838a65660bb4219b9bee2d47fb21deb1718ea69d13d5) and 3,276 bytes at quality 60 (SHA-256 d9d39a23393d2418af4eea5bf80cac9fbcfff5a5ede79a126ec600c5bc3a18c9). Both re-decoded to the exact 128x128 RGB pixel reference.

The focused two-row selection passed both new cases and made eight public encode calls. A follow-up selection including the existing quality-80 control passed 3/3 rows and made 12 public encode calls; its report is target/release-evidence/selected/webp-method0-quality-windows-control.json (SHA-256 362613df5133960f80abccdeb71bdc91e3449dc917c0a3c503a4a43992a45e98). The active LLVM function record counted both outcomes at backward_refs.rs:307 (6 true, 12 false) and :309 (6 true, 6 false), plus six true outcomes at :311. Coverage MCP also returned missing groups for duplicate zero-hit function records at these coordinates. Its comparison with target/release-evidence/coverage-main-full-20261020.json was incomparable because the baseline branch detail does not match its reported totals; its source/build identity is unverified and test attribution unknown. These remain selected parity and branch-location evidence, not an aggregate coverage-gain claim.

WebP method-zero quality-25 window parity — 2026-10-20

Added active Pillow encode row enc_lossless_method_0_quality_25 on the same 128x128 RGB lossless.webp source. At lossless: true, method: 0, and quality: 25, Pillow 12.2.0 produces a 3,638-byte WebP with SHA-256 90f3b669c6d09675a56cadb39a9bb794baa9899595fb09f6e4d8b787e485f588; the re-decoded RGB reference is 49,152 bytes with SHA-256 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131.

The focused selected case passed 1/1 with exact encoded-byte and pixel parity. Its report is target/release-evidence/selected/webp-method0-quality-25.json (SHA-256 466d08a74507cb1010c8474a1bb2f07470337c6884bec70009ae91840975e351). The active fill_hash_chain_impl::<true> record counted six false outcomes at the quality > 25 predicate on backward_refs.rs:311, selecting the width << 4 search window. Coverage MCP returned that false outcome as observed in one function record while retaining duplicate zero-hit groups; its incremental comparison with the saved full report was incomparable. This is local selected evidence only.

Direct odd-width 1-bit PNG decode parity — 2026-10-20

Added Decode row decode:png:depth_1_1bit_odd_width for the existing complete 9x3 mode 1 1bit_odd_width.png fixture, previously used only for encoding. The source SHA-256 is ab470446e941a51011e157e861e3f920b911686d3e592e1b7cb1d6a683bdd675; its six Pillow pixel bytes have SHA-256 36e3c5d288415910fd696272299e53b64a80b66782e965c506b57e7dd2d8d203. The odd row width exercises public unpacking of the ninth 1-bit pixel before the seven unused tail bits in each row.

The selected Decode row and the existing encode:png:enc_1bit_odd_width row both passed exact pixel parity. The command and report are PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:png:depth_1_1bit_odd_width encode:png:enc_1bit_odd_width' SELECTED_COVERAGE_REPORT=target/release-evidence/selected/png-one-bit-odd-width-roundtrip.json and target/release-evidence/selected/png-one-bit-odd-width-roundtrip.json (SHA-256 7aac9adf9c0bc71f044c3cc5b8d98400914c95485aed2788aa9cba63d181022f). Coverage MCP returned no missing branch groups for unpack_into at line 1774. Its query for pack_one_bit at line 1900 reported a duplicate zero-hit function record, while the selected LLVM export contains nonzero branch counters for an active function record there. The selected report and saved full baseline have no source/build receipts, and their incremental comparison is incomparable; this is localized evidence, not an aggregate coverage-gain claim.

JPEG progressive correction-buffer parity — 2026-10-20

Added the public encode row encode:jpeg:enc_progressive_correction_buffer_flush_256x256. Its source is a 256x256 L8 PNG whose 256-byte rows repeat [0, 32, 64, 96, 128, 160, 192, 224] 32 times. The generated PNG is 371 bytes with SHA-256 a50cef6ddd8ace094ab3db04f0d205abbd8d6a70b2b618d93fb03e494c47eca9. Pillow 12.2.0 encodes it as JPEG with quality 75, progressive scans enabled, and optimization disabled. The exact 3,228-byte JPEG has SHA-256 7bf0311dd950a11befc00859db41ae78298875a015be7958dcdafaf71c091b18.

The selected all-feature branch-coverage case passed 1/1 and made five public encode calls, including sink and token parity. The local LLVM report is .coverage-mcp/local-evidence/20261020/jpeg-progressive-correction-256/coverage.json (SHA-256 6cfefcf4cb26ef7e31efcf10cdf0669668b58cf9fb36226b7e6400a105064487). Its branch counters recorded six true evaluations of correction_bits.len() > 937 for NoopProgressiveScanCheckpoint and two for TokenProgressiveScanCheckpoint; the eob_run == 0x7fff condition remained false in this case. Coverage MCP marks source identity unverified and test attribution unknown, and incremental comparison with the saved full baseline is incomparable because baseline detail does not match its reported totals. This records selected-path evidence only and makes no aggregate coverage-gain claim.

The branch is reached through ordinary public encoding, so this case remains in Pillow parity and does not need a target-only fault-contract row. The fixture matrix now contains 2,468 total rows: 1,957 decode / inspect / verify rows and 511 encode rows. Of those, 1,957 decode rows and 479 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows.

WebP lossy quality-zero bitstream parity — 2026-10-20

Added two active Pillow encode rows for lossy WebP at quality 0 and method 0. The solid 32x32 RGB source is (54, 83, 112) throughout; its exact 64-byte WebP has SHA-256 6f7a1d39acaa69a091365e2f0f40056123e3e32557716ff641b00c74908d2467 and its decoded RGB reference has SHA-256 400ee6b557d526d51bf44bf9bb5a134f1c4180f2735f5024e6a1b4caafd902f7. The nonuniform 17x17 RGB source is the existing webp_subtract_green.png fixture; its exact 158-byte WebP has SHA-256 dd356bbf484bad7659696b03b904f19eda8cf6a78f243ac2b2ff03ebdf09e054 and its decoded RGB reference has SHA-256 0e2113aada69ce5552318e82fb2a0187b4e90328b59cecd40323d9c389028100.

Exact byte parity required matching libwebp's flat-border Intra16 mode choice, the sharpness-zero filter-delta cap, and skip-probability signaling plus zero-coefficient macroblock context resets. Skip counts are collected during the existing coefficient-statistics traversal. Both quality-zero rows and the quality-100 control passed the selected public encode run: 3/3 rows, 12 encode calls, no panics. The report is target/release-evidence/selected/webp-q0-nonuniform-20261020.json (SHA-256 37315b6153679a21dd847a27dca58940882fabf12742ebe93c0cd7286476d466). Coverage MCP found no missing branch groups in skip_probability or flat_border_mode for this selected slice. The report remains local evidence: Coverage MCP marks source identity unverified and test attribution unknown, so it does not support an aggregate coverage claim.

These branches are reachable through ordinary public inputs and remain Pillow parity cases. No target-only fault contract is appropriate for them; the separate fault-contract lane remains at 72 rows.

AVIF odd-size I420 film-grain chroma parity — 2026-10-20

Added active Pillow parity row decode:avif:portable_lossless_filmgrain_420_chroma_from_luma_65x65. The fixture uses the pinned lossless 4:2:0 chroma-from-luma grain recipe at 65x65. Its 33x33 chroma planes end in a one-pixel grain block. The final chroma sample maps to the last luma row and column, and its horizontal interpolation neighbor clamps at the right image edge. The 8,189-byte AVIF has SHA-256 5f881e4c6eed5bb4c554004d72ca5e992f6b704bc39672b01d8b3a3236bb2330; Pillow 12.2.0 returns 12,675 RGB bytes with SHA-256 d3c620ef7742e8702d1351c33b4ae9386a67fa1a761b6c4b9ea695a6fe08f0c9.

The selected coverage-matrix run passed 1/1 on aarch64-apple-darwin with all features and branch instrumentation using:

PYTHON=./.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:avif:portable_lossless_filmgrain_420_chroma_from_luma_65x65' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/20261020/avif-filmgrain-odd-i420/coverage.json

Its LLVM report is retained at .coverage-mcp/local-evidence/20261020/avif-filmgrain-odd-i420/coverage.json (SHA-256 69ebe07ee9fe26967cc7a2e0c5d7470ad7409c715e7bff11a077744182d5496a). The local receipt records the exact selected row passing and fixture hashes unchanged during the run. Coverage MCP reports 1,928/32,484 branch observations for this selected report and still lists missing outcomes in film_grain::apply_plane and apply_with_sampling specializations. Source identity is unverified and test attribution is unknown; the comparison with the saved full baseline is incomparable because its detailed branch data does not match its reported totals. This run records selected-path evidence only; it does not establish aggregate coverage gain or complete branch closure.

The row exercises behavior reachable through a normal image decode, so it remains in the Pillow parity lane. No target-only fault-contract case is needed. The fixture matrix now contains 2,456 total rows: 1,951 decode / inspect / verify rows and 505 encode rows. Of those, 1,951 decode rows and 473 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows.

AVIF auxiliary-alpha duration parity — 2026-10-20

Added active Pillow parity row decode:avif:sequence_alpha_duration_mismatch. The input is derived from the existing 10-bit AVIF sequence by changing only the auxiliary alpha track's sample duration from 1 to 2; its sample payloads and color track are unchanged. The generated input is 2,267 bytes with SHA-256 b70e900cbe163b4e394aaa0bab6f283fec8f7f0093cc8dbf9ea790b85103902d. Pillow 12.2.0 accepts the 64×64 RGBA sequence and yields five 16,384-byte frames, each with a 1,000 ms duration. The public decoder previously rejected this input solely because corresponding color and auxiliary-alpha sample durations differ; the decoder now keeps the sample-count and track-timescale checks while allowing Pillow-compatible duration differences.

The exact selected parity case passed 1/1 after the fix using:

PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:avif:sequence_alpha_duration_mismatch' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/20261020/sequence-alpha-timing-final.json

The selected LLVM report is retained at .coverage-mcp/local-evidence/20261020/sequence-alpha-timing-final.json (SHA-256 ed93cf3ead23150f44100c598cbb2a7227d7425eec6b2d16cb6681b519efabcd). The local receipt records the selected case passing; Coverage MCP labels source identity unverified and test attribution unknown, so this report is not used to claim aggregate coverage gain. Incremental comparison with the retained full baseline is incomparable because baseline branch detail does not match its reported totals. Pillow supplies exact frame pixels and the independent libavif observation supplies loop semantics. This parity case tests accepted public input behavior; it does not claim support for every AVIF track arrangement.

The current fixture matrix contains 2,455 total rows: 1,950 decode / inspect / verify rows and 505 encode rows. Of those, 1,950 decode rows and 473 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows. The coverage-origin inventory records 189 exact cfg(coverage) guards across 28 Rust files.

JPEG marker-tail and YCCK singleton parity — 2026-10-20

Added active Pillow-backed rows decode:jpeg:baseline_444_single_scan_com_tail_junk, decode:jpeg:baseline_444_single_scan_com_eoi_marker_fill, decode:jpeg:baseline_444_single_scan_com_ff00_tail, decode:jpeg:baseline_444_single_scan_two_trailing_com, and decode:jpeg:ycck_h2v2_single_sample_1x1. The COM-tail rows derive from the 8×8 baseline COM control by inserting a 00 junk byte, a legal FF marker-fill byte, or an FF00 stuffed pair before EOI; the fourth case adds a second valid COM segment before EOI. Pillow 12.2.0 verifies and decodes all four to the control's same 192 RGB bytes. The FF00 candidate SHA-256 is 7ee7bd8d0fd0734f5b51cc0cd29e8fae262b29f0d6366ab5dcf081ea787e5dc3; its pinned base SHA-256 is cf8e4443dcff4df7858b6573664aa3fe73dd401827aa293d0eca84eb0667f666. The YCCK case changes only the SOF0 dimensions from 2×2 to 1×1; Pillow returns one CMYK pixel, ff ff fd ff. The second-COM candidate SHA-256 is c23f18f246085b1b088d82f9c660e1939d9d3198dda3c05ea5fe1dcf961a78e8.

The COM-tail rows exposed that the baseline decoder's validated single-scan fast path rejected bytes after a trailing marker, then sent the valid scan through generic extraction with the post-scan marker bytes included as entropy. It now skips intervening bytes and FF00 stuffed pairs only after a valid allow-listed trailing segment and bounds repeated marker-fill scanning at parsed EOI. parse_jpeg guarantees the initial cursor is at an FF marker, so the previously uncovered pre-segment non-marker guard was unreachable for parser-produced input and was removed instead of adding an artificial test. This preserves the entropy boundary and accepts the Pillow-observable inputs.

The exact selected regression run passed 7/7 rows on aarch64-apple-darwin with all features and branch instrumentation, including the existing trailing COM control and DQT marker-fill case:

PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:jpeg:baseline_444_single_scan_trailing_com decode:jpeg:baseline_444_single_scan_com_tail_junk decode:jpeg:baseline_444_single_scan_com_eoi_marker_fill decode:jpeg:baseline_444_single_scan_com_ff00_tail decode:jpeg:baseline_444_single_scan_two_trailing_com decode:jpeg:baseline_444_single_scan_dqt_marker_fill decode:jpeg:ycck_h2v2_single_sample_1x1' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/20261020/jpeg-tail-parity-seven/coverage.json

The selected LLVM report is retained at .coverage-mcp/local-evidence/20261020/jpeg-tail-parity-seven-final-code/coverage.json (SHA-256 16086ef71e98c042dec010bedb8d59be50ee21aecd5d3bc83e87edfc850f3932); its local execution receipt records all seven cases passing with no fixture changes during the run. Coverage MCP reports no missing branches at the post-segment byte check (line 2766) or FF00 condition (line 2789) in this report. The selected report totals 408/32,484 observed branches, while Coverage MCP marks source identity unverified and test attribution unknown. Incremental comparison is incomparable because the saved full baseline has incomplete branch detail, so this run does not establish an aggregate coverage gain or regression.

Signed-tag TIFF and singleton YCCK coverage — 2026-10-22

Added active public parity rows decode:jpeg:ycck_h2v1_single_sample_1x1 and decode:tiff:grayscale_unknown_signed_private_tags. The JPEG fixture changes only the SOF0 dimensions of the pinned 2×2 H2V1 YCCK input; its SHA-256 is 6ef8f392eb8f93b3afccc85b36981cbad1c080d92c81ce99a9bce32c80f5ca40. Pillow 12.2.0 verifies it and returns one CMYK pixel, fb ff fd ff (SHA-256 fe4cfd863d3977883fd52b5794e14c8ea1cadd264db6925f83b128d1df2ce3e3).

The TIFF fixture adds private SBYTE, SSHORT, and SLONG fields 65000–65002, each with value −1, to the pinned grayscale input. Its SHA-256 is 5e7b1dfc00abf38207e020dc3b39d6fe37fb32e77c7b5382227590057bc63c38. Pillow 12.2.0 reads all three signed values and produces the same 128×128 grayscale pixels as gray.tiff (SHA-256 1928fc10cb7c056f9c5de7ee534445e876fac9fd1ea050bc3c8b6eb29371c707).

Both selected public parity runs passed 1/1 on aarch64-apple-darwin with all features and branch instrumentation:

PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:jpeg:ycck_h2v1_single_sample_1x1' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/selected/jpeg-ycck-h2v1-singleton-20261022/coverage.json
PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:tiff:grayscale_unknown_signed_private_tags' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/selected/tiff-signed-private-tags-20261022/coverage.json

Coverage MCP's selected-test comparison against the active 2×2 YCCK control observed the previously missing false arm of upsample_h2v1_row at src/codecs/jpeg/decode/upsample.rs:436. Comparing the TIFF row with the existing grayscale row observed six false-arm branch observations at src/codecs/tiff/decode.rs:3915–3917, where the signed private tags take the non-YCbCr path. Both comparisons are coordinate-only: the local reports have no source revision or build identity, and Coverage MCP marks test status unknown. They establish the selected inputs' observed paths, not an aggregate coverage gain or regression.

JPEG post-scan junk followed by another marker — 2026-10-22

Added active parity row decode:jpeg:baseline_444_single_scan_com_tail_junk_then_com. The 750-byte JPEG is derived from the pinned single-scan COM fixture by adding one junk byte and a second COM segment before EOI. Its SHA-256 is 1cc70897b39aad9b13eade241695dd0628c4aade3f660ab4d8557d013ea7952c. Pillow 12.2.0 verifies and decodes it as an 8×8 RGB image. The 192 output bytes match the existing post-scan COM reference exactly (SHA-256 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f).

The new row and the existing two-trailing-COM control each passed 1/1 in separate selected coverage runs. Coverage MCP's selected-test comparison observed three additional branch coordinates: the post-scan marker search in decode.rs:2766 and decode.rs:2771, plus junk skipping in parser.rs:107. The reports use the same branch denominator, but have no source revision or build receipt and Coverage MCP reports test status unknown; the comparison is coordinate-only and does not establish an aggregate gain. The parser's false arm remains an open candidate for a different input.

AVIF version-1 item-reference alpha parity — 2026-10-20

Added active public parity row decode:avif:iref_version_1_alpha_auxl. The generated fixture widens alpha.avif's existing auxl reference from 16-bit to 32-bit item IDs, preserving the item 2 → item 1 relationship and encoded AV1 payloads. The version-1 iref grows metadata by four bytes; both file-backed iloc extents are rebased by four bytes. The 6,445-byte input SHA-256 is b6f3b78c98b33b32b679d07a91b3f3030aba7c49def8bc8bad8b64243eb2c710. Pinned Pillow 12.2.0 produces the exact 64×64 RGBA reference: 16,384 bytes with SHA-256 7b62ff36a098d8bdea49e0b72c834b6fd3e4e04f70d884eee274fc69ed869ddd.

The exact selected coverage row passed 1/1 using:

PYTHON=.oracle-venv/bin/python make coverage-selected COVERAGE_CASES='decode:avif:iref_version_1_alpha_auxl' SELECTED_COVERAGE_REPORT=.coverage-mcp/local-evidence/20261020/avif-iref-v1/coverage.json

The LLVM report is retained at .coverage-mcp/local-evidence/20261020/avif-iref-v1/coverage.json (SHA-256 453f03ef1136e645062c84287a3153301381ad7f7e3f18ce5bd04ac02d4fb289). The local receipt confirms the exact row passed and fixtures stayed unchanged during the run; Coverage MCP still labels source/build identity unverified and test attribution unknown. Its selected report has 2,063/32,138 branches. At the from_id and to_id width checks in container::parse_iref (lines 1131 and 1141) and samples::parse_iref (lines 1028 and 1039), the selected report no longer lists the false arm as missing in one parser group at each site, consistent with the version-1 path being exercised. Duplicate groups still list both arms as missing. The saved full-baseline query lists the false arm as missing at all four sites. Coverage MCP's incremental comparison is incomparable because baseline branch detail is incomplete or inconsistent with its 31,800-branch summary; no aggregate gain or regression is claimed.

The case reaches the version-1 reference parser through public image decode and retains exact Pillow pixel parity. The remaining missing clone groups do not establish additional missing input variants.

Separate-planar TIFF Deflate faults and WebP quality-50 parity — 2026-10-20

Added two public TIFF parity inputs derived from the active separate-planar RGB tiled Deflate fixture. The invalid-zlib-header input planar_separate_rgb_tiled_deflate_invalid_stream.tiff has SHA-256 fb0a43f73dc8a957f59f56cbe6d924c449ad4d0d8306649b1ab2f97c33b79ba5; Pillow 12.2.0 verifies the TIFF header and raises OSError: decoder error -2 while loading pixels. The short-output input planar_separate_rgb_tiled_deflate_short_tile.tiff has SHA-256 2756d3f21cda37ea4aa2b5f02b6f40511e3ce0654bdf1a922a928e64c5ab4454 and has the same Pillow decode error. It exposed a decoder panic when a valid Deflate stream produced only three bytes; the decoder now returns a structured malformed-input error after checking the requested sample range.

Added encode:webp:enc_lossless_quality_50 on the existing lossless WebP source. The exact Pillow encoded reference is 3,584 bytes with SHA-256 46dc365fb19ed82270953c05d810df4c43e0aea7d5bff836f60e271de9e861a5; its re-decoded 128×128 RGB reference SHA-256 is 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131.

The three selected parity cases passed. The report is retained at .coverage-mcp/local-evidence/20261020/tiff-webp-deflate-outcomes/tiff-webp-deflate-outcomes-final.json (SHA-256 a47a5359edcaaa554578fa4613302c918dacdd19a879afad9aaf7cd2f505230f). Its local receipt confirms source and fixture hashes stayed fixed during the run. Coverage MCP marks source/build identity unverified and test status unknown. The LLVM report records the separate-planar decode_block error-mapping closure and truncated-output guard. It also records the quality-50 path through the quality > 50 false edge. The full-baseline comparison remains incomparable because baseline branch detail does not reconcile with aggregate totals; no aggregate coverage gain is claimed.

These inputs reach behavior through public Pillow-compatible calls, so they remain parity cases. The 72 typed target-only fault-contract rows remain in their separate not_applicable oracle lane.

WebP VP8L run-cap parity and benchmark path filter — 2026-10-20

Added active Pillow parity row encode:webp:enc_lossless_method_0_run_cap. Its 4,356×1 RGB source contains 4,099 repeated white pixels followed by 257 distinct colors, keeping the input off the small-palette path. With lossless method 0, the public encoder reaches the VP8L hash-chain checkpoint at an internal run of 4,096 and clamps the run to 4,095. The PNG source SHA-256 is 038d4a47bb2b7f22b62eaac823a897c74607b20ee0ab6999e30b5dc84f6a1a93; the 13,068-byte Pillow-decoded RGB reference SHA-256 is 3206f3f36cf23cf01f6a3f2b696cb407eee7c80c81c05a0373154b4a165a6016; the 186-byte encoded WebP SHA-256 is d99c88b7b040f8f34dd8048f54ef0fcb4db4f43a7ffa1a048ddd9008dc863f7c.

The selected parity run passed 1/1 and re-decoded to 4,356×1 with exact pixel parity. Its report is retained at .coverage-mcp/local-evidence/20261020/webp-run-cap-62daa243/coverage.json (SHA-256 c86f0bc2a039065003df89e788f7def9b9f26812d0939d963bbeb03e8342c16f). In the active fill_hash_chain_impl::<true> specialization, the report records both outcomes at the periodic-run check (48 / 13,206) and maximum-run check (3 / 9). The local receipt marks source/build identity unverified and named test attribution unknown. Coverage MCP groups untouched sibling monomorphizations separately, and its comparison with the full baseline is incomparable because the baseline branch detail does not reconcile with its aggregate totals. These are local path observations, not an aggregate coverage gain claim.

This input reaches the behavior through normal public encoding, so it remains Pillow parity. The 72 typed target-only fault-contract rows remain in their separate lane with oracle status not_applicable.

WebP method-six hash-chain run-cap parity — 2026-10-22

Added active Pillow parity row encode:webp:enc_lossless_method_6_run_cap. It reuses the 4,356×1 RGB run-cap source with lossless quality 80 and method 6, which selects fill_hash_chain_impl::<false>. The selected all-feature coverage run passed 1/1 and re-decoded to exact 4,356×1 RGB pixels. Pillow's 616-byte WebP reference has SHA-256 8abd0df9e4f0d5292902f75bc9e0be22261b7045b2266ebf895d0c17a46e00d4; its pixel reference is the existing 13,068-byte source result with SHA-256 3206f3f36cf23cf01f6a3f2b696cb407eee7c80c81c05a0373154b4a165a6016.

The selected report is retained at .coverage-mcp/local-evidence/20261022/webp-method-6-run-cap/coverage.json (SHA-256 8264ac4c3cbfdd41fb53820c6c4221533a7bd1f877ef493a77cf9fc47e4f6ad9). In the executed false specialization, the periodic-run check recorded 57 true and 15,453 false outcomes; the run > MAX_LENGTH check recorded 3 true and 12 false outcomes. The source file hash at measurement was b9cb0e990625fe385ce49f4d96e84acc609242353e949d89be17093939e787cc. The runner log records the selected test passing. Coverage MCP marks the report's source/build identity unverified and test attribution unknown; comparison with the older selected report is limited. These observations do not establish an aggregate coverage gain.

The x86 benchmark workflow's pull-request path filter now includes src/cancel.rs, which the benchmark uses for cancellation-aware encodes. Its release-policy regression test and the local selected parity test passed. The CI filter fix is committed on main as 62daa2436d7802294ed253f2e54953862a6509aa; the GitHub CI, documentation, and paired SSE2/AVX2 benchmark runs were triggered on that commit.

The current fixture matrix contains 2,444 total rows: 1,941 decode / inspect / verify rows and 503 encode rows. Of those, 1,941 decode rows and 471 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows. The coverage-origin inventory records 189 exact cfg(coverage) guards across 28 Rust files.

Full coverage baseline and AV1 film-grain overlap parity — 2026-10-20

Refreshed the local all-feature coverage baseline on source revision 34c3930f2e7f6fdad102a421e15170fc2e202688. The report is retained at .coverage-mcp/local-evidence/20261020/main-full-34c3930f/coverage.json (SHA-256 0b28133d95eb8c736f83dccc87cfbcf7eaea57a89c9031dade323c2e8716383b). The run used:

CARGO_INCREMENTAL=0 RUSTC_WRAPPER= PYTHON=.oracle-venv/bin/python CARGO_BUILD_JOBS=2 make coverage COVERAGE_REPORT=target/release-evidence/coverage-main-full-20261020.json

The all-feature coverage gate passed. The run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, 68/68 feature-gate tests, 4/4 animation-loop tests, and the capability-table test. The full report measures 91,909/138,417 lines (66.4001%), 18,108/31,800 branches (56.9434%), 5,079/8,855 functions (57.3574%), and 140,584/214,895 regions (65.4199%). Coverage MCP labels its source identity unverified and test attribution unknown; this is a fixed local exploration baseline, not a registered source/build receipt.

Coverage MCP located uncovered outcomes in src/codecs/avif/av1/film_grain.rs::overlapped_grain. Added the public parity row decode:avif:portable_lossless_filmgrain_i444_overlap_64x64 by enabling only the inspected AV1 overlap flag in the existing 64x64 all-lossless I444 source. The generator confirms unchanged BMFF sample extents and all 15,555 tile-payload bytes. The input is 15,960 bytes with SHA-256 345a3e16a1d9574a6ac39c4b14eaa93ba70b5d49714cae2188fdff03c252e03a; its 12,288-byte Pillow RGB reference has SHA-256 46bfc877578f36fc8d3b376c3ac41e6be9ff98bb14fda447a0b0baeeba0b97d7.

The selected coverage-matrix run passed 1/1. Its LLVM report is retained at .coverage-mcp/local-evidence/20261020/avif-filmgrain-overlap-34c3930f/coverage.json (SHA-256 418c268e65838ac45a232cc52b119b894843c94b84f321721b5eb1fbafbe72b8). The hit-bearing overlapped_grain specialization recorded 36,864 calls and both outcomes at its branch conditions. Coverage MCP still reports missing branch coordinates for another linked specialization. The incremental comparison with the full baseline is incomparable because the baseline's detailed branch data does not reconcile with its aggregate totals. No aggregate coverage gain or complete branch-closure claim is made.

The parity matrix now contains 2,439 total rows: 1,938 decode / inspect / verify rows and 501 encode rows. Of those, 1,938 decode rows and 469 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows. The coverage-origin inventory records 189 exact cfg(coverage) guards across 28 Rust files.

Unaligned TIFF YCbCr strips and CI gate hardening — 2026-10-20

Added a Pillow-parity fixture for subsampled YCbCr TIFF strips whose RowsPerStrip boundary cuts through a vertical clump. The public decoder now converts each strip using its own clump rows. A separate typed fault-contract row fault-contract:tiff:tiff_unaligned_strip_assembly_reservation_failure injects strip-output reservation failure on this path and checks the structured error followed by a successful retry; its oracle is not_applicable, so it is excluded from Pillow parity totals. The workflow policy checker now rejects continue-on-error on required CI jobs and their steps, with regression mutations for both levels.

The TIFF input SHA-256 is fec83d5c16fb6b391c5bb7bf3273a3f9e009dcd6937ba4ce795f1ad086f84a4d; its exact 48-byte RGB output SHA-256 is ee406bf055bf628b9b0a3b6d3ea29a5f32d97e963d3eb4964d5942c37f04881a. The selected coverage run passed 1/1 parity rows and 1/1 fault-contract rows. Its report is target/release-evidence/selected/tiff-unaligned-ycbcr-fault-contract-final.json (SHA-256 498567163da32491699c14b375c48d4d7030002a7be9c7f73c7ba31ca661cc3b). Coverage MCP reports the unaligned-strip predicate's false arms as missing in this selection and no missing branch outcomes at the reservation hook. The report has unverified source/build identity and unknown named-test attribution, so this is coordinate evidence only. No full coverage campaign was run.

cargo fmt --all -- --check, strict all-target/all-feature Clippy, make workflows-check, the focused workflow-policy regression test, fixture integrity, and the typed fault-contract validator passed.

The current fixture matrix contains 2,439 total rows: 1,938 decode / inspect / verify rows and 501 encode rows. Of those, 1,938 decode rows and 469 encode rows are active; the other 32 encode rows are planned. The separate fault-contract lane contains 72 rows. The coverage-origin inventory records 189 exact cfg(coverage) guards across 28 Rust files.

AV1 odd-width I420 super-resolution parity — 2026-10-20

Added decode:avif:superres_actual_upscaled_i420_17x17, a lossy 17x17 AVIF still that signals super-resolution denominator 9. Its coded luma width is 16 and upscales to 17; ceil-rounded I420 chroma width grows from 8 to 9. The fixture generator validates the AV1 geometry, repeat-encodes byte-identically, and checks Pillow 12.2.0 verify()/load() plus the exact RGB output. Input SHA-256: 5824f2bd3c3fa431a0c0c57509f34e11ec148e36bac9531bff083394eab59d2f; the 867-byte decoded pixel SHA-256 is 0140c8dab75efad711db2af0b7f1f837e76e2a8d578ac43052fea15b7693d926.

The selected public parity row passed 1/1. Coverage MCP lists branch coordinates in upscale_subsampled_leaf and resize_plane, including the unobserved injected header-mismatch arm and invalid-plane-geometry arms. It also lists the unsampled non-subsampled width arms at resize.rs:223 and resize.rs:228; this fixture follows the 4:2:0 subsampled arms. The report is local-only with unverified source/build identity and unknown test attribution, so these are coordinate observations rather than a marginal coverage claim. Separately, the existing target-only fault-contract:avif:avif_superresolution_header_geometry_mismatch row passed 1/1 with oracle status not_applicable; it remains outside Pillow parity counts. The gap query for that selected report omits the injected mismatch arm at resize.rs:206, while still listing non-subsampled width and invalid-plane geometry arms. Its report is also local-only with unverified source/build identity and unknown named-test attribution, so this does not establish an aggregate or marginal coverage gain. No full coverage campaign was run.

The selected report is target/release-evidence/selected/20261020T000909Z/coverage.json (SHA-256 ad5903cec36bcdcb8f8c9d7a219c2e902d2fd5d8e571de08ac50c0f6943b8c3d). The selected fault-contract report is target/release-evidence/selected/20261019T234822Z/coverage.json (SHA-256 f102498b91b8b11e8034b16ec7315cc4edf802e9998d0608dd02f2639676feba).

JPEG trailing JFIF APP0 parity — 2026-10-19

Added decode:jpeg:baseline_444_single_scan_trailing_app0, a complete baseline 4:4:4 JPEG with a valid JFIF APP0 segment after its only entropy scan. Pinned Pillow 12.2.0 accepts the file in both verify() and load(); it decodes to 8×8 RGB and the exact 192-byte pixel output matches the existing trailing-COM and trailing-APP1 cases. The input SHA-256 is 507c2cf54fb8d6c38bf75020b6371df6e74b639eefc5c8e7091b6657b1c9e646; the pixel SHA-256 is 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f.

The JPEG parser already accepts APP0 segments. The baseline single-scan fast boundary recognizer now treats APP0 like the supported APP1, COM, DHT, and DQT segments, keeping valid metadata after the scan out of entropy extraction. This is a bounded marker match with no extra allocation or pixel-loop work. The selected coverage run passed 1/1 and checked that decoded opaque metadata retains the exact APP0, COM, APP0 order and bytes. Coverage MCP's line-filtered branch query reports only the invalid-marker (true) arm at decode.rs:2774 as missing in this selection, consistent with APP0 taking the accepted (false) arm. The incremental comparison with coverage-main-20261019.json is incomparable because its branch detail does not reconcile with the totals. Both MCP measurements lack source/build receipts, and MCP test attribution is unknown. The local selected-run receipt records the exact case, source and fixture hashes, and passing test process. No aggregate coverage gain or full-suite claim is made; no full coverage campaign was run.

The focused report is target/release-evidence/selected/20261019-jpeg-trailing-app0-as-chunks-f4e98437/coverage.json (SHA-256 eec4c738e6ef1eba9d853d47ce6e88682bba93a3413a534fd4f8b827329b3c75).

TIFF RGB16 Deflate-compressed contiguous strips — 2026-10-19

Added decode:tiff:rgb16_le_deflate_contiguous_strips for a little-endian 16-bit RGB TIFF with two independently Deflate-compressed, one-row contiguous strips. It relies on the default unsigned sample format and omits the default contiguous planar configuration and predictor tags. Pinned Pillow 12.2.0 opens it as 2×2 RGB and returns the exact pixel bytes 12569aab00ff0080ffff017f. The fixture generator verifies the RGB photometric tag, compression, strip offsets and lengths, and the omitted default tags. Input SHA-256: b3a35c9135e45daf9016229f803eaade5923b506830b491cd001c9db1899e369; output SHA-256: d7973d0ab7bfd18e2fe3666bcdb5367d84d3b854b58bab793799d0803fb63c1b.

The generic TIFF strip decoder already bounds each strip, decompresses to the expected row size, and converts RGB16 samples to RGB8. The inspection predicate now accepts this contiguous Deflate layout, with no pixel-loop or allocation change. The final selected coverage run passed 1/1. Coverage MCP's line query lists two missing observations at inspect.rs:396. The report's raw branch records show ten executions of the planar == 1 and !tiled outcomes, but zero counts for a wider joined span on the same line. MCP marks the report's source unverified and test attribution unknown, so this mapping remains a coordinate lead and does not establish marginal coverage. Its incremental comparison with coverage-main-20261019.json was incomparable because baseline branch detail does not reconcile with its totals. The local receipt records the selected case, passing process, matching source-file hash, and fixture hashes; no aggregate coverage gain or full-suite claim is made. No full coverage campaign was run.

The focused report is target/release-evidence/selected/20261019-tiff-rgb16-deflate-strips-b3c311c69-clippy/coverage.json (SHA-256 ed984dbed71d978fab31b2f11b4d81055c7049ab36f371fdb4617e4bab258544).

TIFF unsigned RGB16 strip parity and allocation fault contract — 2026-10-19

Added little- and big-endian, uncompressed 2×2 RGB16 TIFF fixtures with two one-row strips. The little-endian input relies on TIFF's default unsigned sample format, while the big-endian input stores SampleFormat=1 for all three channels. Pinned Pillow 12.2.0 converts each unsigned sample to RGB8 by retaining its high byte; both files produce the exact 12-byte pixel sequence 12569aab00ff0080ffff017f. The input SHA-256 values are aebc7d664d848fe2d4e5054c4926ea6b38b99665d2d31bd6c86419aa07b7874b (little endian) and 9b91240255da2d849d12be62e59c3d868721112253ed46f1284578597567b0e3 (big endian).

The selected matrix run passed both parity rows and the target-only fault-contract:tiff:tiff_rgb16_output_reservation_failure row. The fault returns the structured TIFF RGB16 output allocation error, then a retry matches a fresh decode. This contract has oracle_status: not_applicable and is reported outside Pillow parity. Its source case is the little-endian parity fixture.

The selected branch report is target/release-evidence/selected/20261019T040515Z/coverage.json (SHA-256 249d565c2daacb13aa16001744aa85e33a07f4ba451c30bded8cbf94f9c69ef9). Coverage MCP records 174/31,674 observed branches and no missing branch groups in the RGB16 conversion or output-reservation helpers; it reports 24 missing branches in the shared TIFF layout function. The report has unverified source/build identity and unknown test attribution, so these are coordinate-only observations and do not establish an aggregate coverage gain. The focused runner log records 2/2 Pillow decode rows and 1/1 fault contracts passing. No full coverage campaign was run.

TIFF subsampled YCbCr checkpoints and odd clump edges — 2026-10-19

Added five Pillow-backed decode rows for 1×2 and 4×2 subsampling. The three 32×32 inputs exercise the 1,024-pixel conversion checkpoint through the specialized 1×2 path, the general 4×2 path, and custom-coefficient tables. Two 33×33 4×2 inputs add odd final clumps; both clip the final row and column while still reaching the checkpoint. Pinned Pillow 12.2.0 generated the exact RGB references for all five cases.

Selected branch runs passed all five rows: the individual 1×2, default 4×2, and custom 4×2 reports are under target/release-evidence/selected/tiff-ycbcr-checkpoint-1x2.json, target/release-evidence/selected/tiff-ycbcr-checkpoint-4x2-retry1.json, and target/release-evidence/selected/tiff-ycbcr-checkpoint-custom-4x2-retry1.json; the two odd-edge rows passed in target/release-evidence/selected/tiff-ycbcr-checkpoint-4x2-odd-edges.json. Coverage MCP finds no missing branch groups at the general converter's current checkpoint and clipping conditions (decode.rs:2124, 2131, 2155) in the combined odd-edge report. Its selected-tests comparison with the even 4×2 report observes 13 new branch coordinates, including both true clipping arms. The MCP marks the comparison limited because source/build identity is unverified and test attribution is unknown. Its incremental comparison cannot combine the selected reports because exact detail does not reconcile with the reported totals. The 1×2 report's raw LLVM record shows both checkpoint outcomes (5 and 5,115), while MCP still lists that specialized line as missing; therefore no aggregate gain or regression is claimed. No full coverage campaign was run.

AVIF mixed-segment inter parity and TIFF YCbCr fault contract — 2026-10-18

Added the active public parity case decode:avif:animated_mixed_lossless_inter_b32_i420_64x64. Its two-frame 64×64 8-bit I420 sequence contains both lossy and qindex-zero lossless segments in a full-visible inter-coded B32x32 leaf. The selected Pillow 12.2.0 comparison passed 1/1 with exact 12,288-byte RGB parity. The fixture hash is ecb244cfa33b1737f09246cf87ad20dbd8156108dc9b93da76a8bbe885007257; frame reference hashes are 90ce523631e9fd385bcae414317ca29e655e9fa26a022e09d50795e71b32d634 and aa3d0199115d1734da9065059f33f648e4f90151fbce35dc3cd670a5f6b479f4.

Added target-only fault-contract:tiff:tiff_ycbcr_general_rgb_output_reservation_failure for the generic 4×2 subsampled converter. Its coverage-only injection reuses the existing reservation fault point; production builds reserve the original exact output length. The selected contract passed 1/1, returning the public typed allocation error and then matching a fresh decode on retry. The Pillow-backed source parity control also passed 1/1. This row has oracle_status: not_applicable and remains outside Pillow parity totals.

Selected coverage reports are target/release-evidence/selected/20261018-avif-mixed-lossless-inter-b32-final.json (SHA-256 b49001beeaeca0880ad6b39743aac23eff5424ca507195f15ee1ed776f91f60f), target/release-evidence/selected/20261018-tiff-ycbcr-general-reservation-fault-final.json (SHA-256 8c48cebf2b1553581f10db116bc537da851d3341be80e8a4d5bdbb2ca452dcf7), and the two existing parity controls in target/release-evidence/selected/20261018-avif-tiff-edge-controls.json (SHA-256 c408ded30954b71475dca52e5c2136d60d40bf59b9d082b3efa5fc9209b44689). Coverage MCP's selected-tests comparison reported 285 newly observed branch coordinates for the AVIF entropy path and one for the generic TIFF reservation hook. These measurements have unverified source/build identity and unknown test attribution, so they are coordinate-only evidence; no aggregate coverage gain or regression is claimed. No full coverage campaign was run.

At the time this 2026-10-18 entry was recorded, the fixture matrix contained 2,434 total rows: 1,934 decode / inspect / verify rows and 500 encode rows. Of those, 1,934 decode rows and 468 encode rows were active; the other 32 encode rows were planned. The separate fault-contract lane contained 71 rows. The coverage-origin inventory recorded 188 exact cfg(coverage) guards across 28 Rust files.

BMP decoded-pixel reservation fault contract — 2026-10-17

Added the target-only row fault-contract:bmp:bmp_decoded_pixels_reservation_failure, which reuses the active decode:bmp:depth_24 Pillow input. The 24-bit decoder now reserves its RGB output with try_reserve_exact; the coverage-only fault makes that reservation fail and the public API returns a structured dimensions error. The normal retry is compared with a fresh decode. The selected fault contract passed 1/1 with oracle_status: not_applicable, outside Pillow parity, and the ordinary depth_24 parity row passed unchanged.

The selected branch report is .coverage-mcp/local-evidence/20261017/bmp-decoded-pixels-fault/coverage.json (SHA-256 1929fb205c059466e7957c8713a82cea5533f3afa4bc42bff20608727e1e481c). It contains 51/31,478 observed branches overall. Coverage MCP reports no missing branch group spanning src/codecs/bmp/decode.rs:696 or src/codecs/bmp/decode.rs:705. The report has no source/build receipt and unknown test inventory, so these are coordinate-only observations; the selected runner output is the evidence for the one fault case. The incremental comparison with the saved full report was incomparable because exact branch detail did not reconcile with its totals; no coverage union or regression claim is made. No full coverage campaign was run.

GIF pre-frame zero padding parity — 2026-10-17

Added decode:gif:pre_frame_zero_padding for a complete 1x1 indexed GIF with a zero padding block before its first image descriptor. Pinned Pillow 12.2.0 verifies and loads the input as one P frame with pixel 00; the fixture SHA-256 is 4c25c0da8eb0126a59c3b171a3316a9d8fed08697074a75f19dc0add1bb9a044 and the exact pixel-reference SHA-256 is 6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d. The selected matrix run passed with the post-frame padding control and no-frame inputs. It also exercises basic inspection and the exact 34-byte metadata limit. A separate zero-padding-before-trailer input still matches Pillow's no-image error.

The selected branch report is .coverage-mcp/local-evidence/20261017/gif-pre-frame-zero-padding-selected/coverage.json (SHA-256 ac416dd62e5b1f608917d2c903e52feffa2903bf4682319cad7148e6ac28c12f). It contains 110/31,476 observed branches overall. Coverage MCP reports no missing branch group spanning src/codecs/gif/decode.rs:175, src/codecs/gif/decode.rs:420, or src/codecs/gif/inspect.rs:143, covering still/sequence parsing, metadata measurement, and inspection padding paths. The report has no source/build receipt and unknown test inventory, so these remain coordinate-only observations. The current fixture matrix contains 2,404 total rows: 1,904 decode / inspect / verify rows and 500 encode rows. Of those, 1,904 decode rows and 468 encode rows are active; the other 32 encode rows are planned.

TIFF equivalent-default YCbCr rational parity — 2026-10-18

Added decode:tiff:ycbcr_equivalent_default_rational_lzw_2x2, a complete 4×4 LZW TIFF with explicit coefficient and reference fractions that equal the YCbCr defaults but use noncanonical numerator/denominator pairs. Pinned Pillow 12.2.0 accepts the input as RGB and returns the same exact 48 bytes as the default-tag fixture. The input SHA-256 is 06a8a28ba0ebe1359d107ca2d7c442eb02dcc27cba8b85b06c16eaa610e7fa65; the pixel-reference SHA-256 is af15457a9372a158dd276ced4109b650b99def573093a49f70dbb469c2262668.

The focused selected matrix run passed 1/1. Its report is target/release-evidence/selected/ycbcr_equivalent_default_rational_final.json. Coverage MCP reports 234/31,634 observed branches for that selected report. The selected-tests comparison with three existing YCbCr rows found zero newly observed branch coordinates and three coordinates not observed by the new case. Both reports are source-unverified with unknown test attribution, so this is limited coordinate evidence, not a measured aggregate coverage gain. The old full report predates the current source and is not combined with this selection. The case remains useful as a distinct parity contract for explicit fractions equivalent to defaults; no fault injection or full coverage run was needed.

Codec edge and progressive JPEG restart parity — 2026-10-18

Added public Pillow parity rows for OS/2 core 4-bit BMP padding, GIF Plain Text Extension handling, two-page transparent TIFF output, 16-bit partial-frame APNG composition, and a trailing DHT after a single-scan baseline JPEG. Added progressive JPEG restart-row parity for RGB, grayscale, and CMYK, plus a 33x33 4:2:0 input that ends on partial MCUs. Two malformed trailing-DHT cases verify that Pillow accepts the JPEG structure but rejects truncated Huffman counts or symbol payloads during pixel loading.

The 33x33 case exposed missing dummy-block DC symbols in interleaved scans and missing inherited DC refinement bits. The encoder now emits the padded MCU events Pillow expects. The selected decoder matrix passed 5/5 format-edge rows and the focused trailing-DHT matrix passed 3/3 rows. The selected progressive JPEG matrix passed 4/4 rows with 20 public encode calls and zero panics. The new partial-MCU output is 1,331 bytes; its source SHA-256 is afdec16d964c39b1d8f8329f72d798669ce507bf0904f96388fd273ddf65cc45 and its Pillow encoded-reference SHA-256 is 0185f9326f806ea684d69619abaa48e1abebf62d1d511ba0ca349017a8566f29.

The selected target-only JPEG coefficient-reservation fault contract also passed 1/1 with oracle_status: not_applicable, separately from Pillow parity. Coverage MCP reports 726/31,634 branch observations in the final format-edge decoder report, 292/31,634 in the trailing-DHT report, and 715/31,634 in the progressive JPEG report. Its targeted query found no missing branch arms at the new partial-MCU block-bound checks. It still lists the internal malformed DHT bounds at decode.rs:2596 and :2602 as unobserved, despite the public error-parity rows; those coordinates need further reachability analysis. The reports have unverified source identity and unknown test attribution, so these are exploration coordinates, not measured coverage gains. Reports: target/release-evidence/selected/20261018-edge-decode-final.json, target/release-evidence/selected/20261018-progressive-jpeg-restarts-final.json, target/release-evidence/selected/20261018-jpeg-trailing-dht-boundaries.json, and target/release-evidence/selected/20261018-jpeg-fault-contract-coverage.json. No full coverage campaign was run.

TIFF YCbCr rational edge parity — 2026-10-18

Added public Pillow parity cases for negative-equivalent SRATIONAL coefficient and reference values, plus exact-count DOUBLE coefficients. Pillow displays the negative-equivalent pairs as positive ratios, while libtiff consumes their stored numerator as signed and denominator as unsigned during YCbCr conversion; the fixtures retain the exact pixel bytes from that behavior. A DOUBLE coefficient tag with the required three values opens and verifies but fails during pixel decoding, while unsupported coefficient counts continue to use libtiff defaults. These are Pillow-reachable input cases, so they remain ordinary parity rows rather than target-only fault contracts.

The final selected TIFF YCbCr rational matrix passed 25/25 active parity rows in target/release-evidence/selected/tiff-ycbcr-rational-edges-final-v3.json. Coverage MCP reports 260/31,512 branch observations for that report and lists remaining coordinates in ycbcr_parameters and read_ycbcr_rationals around inspect.rs:441, :465, :469, :506, and :520. The report has no recorded revision or build ID, an unverified source state, and unknown test attribution; these are exploration coordinates only and do not establish a measured source coverage gain.

After the reference-limit comparison was rewritten with checked arithmetic to satisfy strict Clippy, the accepted and rejected boundary rows were rerun and passed 2/2 in target/release-evidence/selected/tiff-ycbcr-reference-limit-checked-arithmetic-v1.json. Coverage MCP lists ten missing branch coordinates in ycbcr_reference_exceeds_conversion_limit, including spans around decode.rs:2332 and :2337. This selected report also has no source/build receipt or test attribution, so the coordinates remain exploratory rather than proof of current-source coverage.

TIFF LZW mid-stream CLEAR parity — 2026-10-18

Added decode:tiff:lzw_midstream_clear_width_reset, a complete grayscale TIFF whose LZW codes cross the 9-to-10-bit early-change boundary, issue CLEAR at 10 bits, and continue with 9-bit literals. The generator verifies the code width at the boundary and after CLEAR, then checks Pillow 12.2.0's mode L, 330×1 dimensions, exact pixels, and SHA-256 a50858b23acd18e82d5012a8a115b2a905f22610822f86e5622aef99ebfa3cf4. The selected public parity row passed 1/1.

Coverage MCP's selected LLVM report records 193/31,586 branch observations overall and has no missing branch groups on the LZW CLEAR conditions at decode.rs:2960 and decode.rs:3055. The report has unverified source and unknown test attribution. Its incremental comparison to the saved full report is incomparable because the baseline lacks compatible detail; no aggregate coverage gain or full-suite result is claimed. Report: target/release-evidence/selected/20261018T035838Z/coverage.json.

TIFF YCbCr FLOAT and DOUBLE parity — 2026-10-18

Added five valid public parity rows for IEEE FLOAT/DOUBLE coefficient and reference-black-white tags, including an accepted infinite DOUBLE coefficient. Four error-parity rows cover NaN coefficients and infinite reference values. The generated TIFFs contain real IEEE payloads; the malformed existing DOUBLE-coefficient row, which retains RATIONAL bytes, is unchanged. Pinned Pillow 12.2.0 produced the exact RGB bytes and decoder errors. These are ordinary parity cases because complete TIFF inputs reach each behavior; no target-only fault contract was needed for these paths.

The focused run selected all nine new parity rows, the retained malformed DOUBLE-coefficient row, and the five existing TIFF YCbCr fault contracts. All 10/10 parity rows and 5/5 target-only contracts passed. The LLVM report is .coverage-mcp/local-evidence/20261018/tiff-ycbcr-float-double-v3/coverage.json. Coverage MCP reports 277/31,568 branch observations in this selected report, but marks source identity unverified and test attribution unknown; it is not an aggregate coverage gain or full-suite claim. Its remaining floating_value index-bound arm is defensive: read_ycbcr_rationals checks exact field counts before requesting each array index, so no public TIFF input reaches an out-of-range call.

TIFF YCbCr subsampling and positioning parity — 2026-10-18

Added seven public Pillow parity inputs for the supported 2x1, 4x1, 4x2, and 4x4 clump layouts, including odd image edges and custom coefficients. Added three more inputs showing that libtiff ignores malformed YCbCr positioning metadata (tag 531) during RGB conversion. The selected run passed all 10 rows with pixel parity. The four existing TIFF YCbCr fault-contract rows also passed 4/4 with oracle_status: not_applicable.

The selected public report is target/release-evidence/selected/20261017T223455Z/coverage.json; the selected fault-contract report is target/release-evidence/selected/20261017T223916Z/coverage.json. Coverage MCP reports no missing branch groups for the general converter's odd-edge clipping checks at decode.rs:2011 and :2018. It still lists uncovered defensive validation arms for zero clump factors and mismatched sample lengths in the general converter. Both reports have no source/build receipt and unknown test inventory; they are selected-test exploration evidence and do not establish an aggregate coverage gain or full-suite coverage claim. The baseline comparison was incomparable because the saved baseline lacks matching coverage detail and verified receipts.

APNG duplicate control before the default image — 2026-10-17

Added the public decode:png:apng_duplicate_actl_before_idat row. Its CRC-checked fixture duplicates the acTL chunk before IDAT from apng_rgba_controls.png; the input SHA-256 is 18b489f5cea0c7e3e58550afcc2ce169a12d377d5f7e357b1de2714ab5c67022. Pinned Pillow 12.2.0 warns that the APNG is invalid, then verifies and loads the static default image as one 4x4 RGBA frame. The exact pixel reference SHA-256 is 21b7dac1be9dacf604fd4475304d962dc50a83b6b9623340f59de886d398b8c6. The selected public matrix run passed for this case and the existing duplicate acTL after IDAT control.

The selected branch report is .coverage-mcp/local-evidence/20261017/png-apng-pre-idat-duplicate-actl/coverage.json (SHA-256 b25cc6e2ac8dc97e8521c5a0dfe4e53e99a5758c925582ecd4998e1b7c4a32de). It contains 249/31,482 observed branches overall. Coverage MCP reports no missing branch group spanning src/codecs/png/decode.rs:1032, the duplicate-control fallback arm. The report has no source/build receipt and unknown test inventory, so this is coordinate-only reachability evidence. The current fixture matrix contains 2,296 total rows: 1,802 decode / inspect / verify rows and 494 encode rows. Of those, 1,802 decode rows and 462 encode rows are active; the other 32 encode rows are planned.

WebP oversized alpha ANMF height parity — 2026-10-17

Added the public pillow_tolerated_malformed_animated_alpha_anmf_height_mismatch row. Its deterministic 64x64 animated alpha WebP declares the first ANMF frame as 64x65 while retaining the original nested ALPH and VP8 bitstream. Pinned Pillow 12.2.0 verifies and decodes it as two 64x64 RGBA frames; the exact frame references match the existing oversized-width control. The selected test_decode_matrix_webp parity run passed 1/1.

A selected branch-coverage report at .coverage-mcp/local-evidence/20261017/webp-anmf-height-selected/coverage.json has SHA-256 148e3c20d0ed7b8964e2538635f3d20aab480d348faa00d1a592e6bf41ec4b3a. Coverage MCP reports both outcomes at src/codecs/webp/inspect.rs:310 in this selected report. The report has no source/build receipt and test inventory is unknown; it is coordinate-only reachability evidence. The incremental comparison with the saved 2026-10-16 full report is incomparable because its branch details do not reconcile with its totals. No aggregate coverage gain or full-suite regression conclusion is claimed. The current fixture matrix contains 2,288 total rows: 1,794 decode / inspect / verify rows and 494 encode rows. At that point, 1,794 decode rows and 462 encode rows were active; the other 32 encode rows were planned.

WebP VP8L alpha hint parity — 2026-10-17

Added a paired VP8X/VP8L alpha-flag parity case. The pillow_tolerated_malformed_vp8x_vp8l_alpha_flag_mismatch fixture sets the VP8L alpha hint while keeping the VP8X alpha bit clear, without changing the image bitstream. Pinned Pillow 12.2.0 accepts it as an opaque 128x128 RGBA image; the exact pixel reference SHA-256 is 6b4e0e27ac0a042958c1a976561c6d890fe2042e3e54c8e898cd859c87db332b. The complementary pillow_tolerated_malformed_vp8x_alpha_flag_without_vp8l_hint fixture sets only the VP8X alpha bit; Pillow reports RGB and the exact pixel reference SHA-256 is 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131.

The first selected Rust matrix run failed because inspection reported RGB. The public codec now takes still VP8L alpha metadata from its parsed image header, and the selected pair and complete WebP matrix tests pass. A selected branch-coverage report is at .coverage-mcp/local-evidence/20261017/webp-vp8x-alpha-pair-selected/coverage.json; its SHA-256 is 0631eeae65b1d0a7b8abcc1d49fe4a0aa4b5d675393e59282405af5fca40223e. Coverage MCP reports no missing branch group at src/codecs/webp/inspect.rs:247 and one unobserved false outcome at src/codecs/webp/native/decoder.rs:329. The report contains 256/31,460 observed branches, has no source/build receipt, and has unknown test inventory; it is coordinate-only reachability evidence. The selected-test absence at line 329 is not a regression. Comparison with the saved 2026-10-16 full report is incomparable because branch details do not reconcile with its totals. No aggregate coverage gain or full-suite regression conclusion is claimed. The current fixture matrix contains 2,291 total rows: 1,797 decode / inspect / verify rows and 494 encode rows. Of those, 1,797 decode rows and 462 encode rows are active; the other 32 encode rows are planned.

WebP extended duplicate image chunk rejection — 2026-10-17

Added four malformed extended-container parity rows for duplicate VP8L, duplicate VP8, and both VP8L/VP8 mixed-chunk orders, plus a simple WebP case where Pillow tolerates a duplicate VP8 chunk. The inputs are derived from pinned fixtures and have their RIFF extents updated. Pillow 12.2.0 recognizes each malformed WebP signature, then rejects inspection, verification, still decode, and sequence decode with OSError: could not create decoder object. The simple duplicate-VP8 file remains accepted. All five public matrix rows pass their recorded operation outcomes. Full inspection and the native extended decoder reject a second image chunk while the simple WebP path keeps Pillow's tolerant behavior; VP8L headers continue to be read through a chunk-bounded reader.

The selected five-row WebP branch report is at .coverage-mcp/local-evidence/20261017/webp-extended-image-chunk-parity/coverage.json; its SHA-256 is fbc64e64fb1f0e56ec79f2687180d49128133a222695fe2ff45d993b459b8a09. Coverage MCP shows the compound inspector guard's true path and the duplicate VP8 decoder error path were reached; the simple duplicate-VP8 path is included in this selected run. The report observes 313 of 31,460 branch coordinates; false short-circuit outcomes remain among the reported inspector gaps. Source/build identity is unverified and test inventory is unknown, so this is coordinate-only reachability evidence.

A Coverage MCP incremental regional comparison used the duplicate-VP8L and alpha-flag rows as a three-row baseline and the four additional chunk cases as the new batch. It returned limited: 2,998/212,096 baseline regions, 4,993 batch regions, 3,447 newly observed coordinates, and 1,546 already covered. The projected union is 6,445/212,096 regions (+1.625 percentage points on that denominator). Both reports lack source/build identity and test inventory, so the union is exploratory coordinate evidence, not a verified suite gain. Branch and line incremental comparisons were incomparable because detailed locations did not reconcile with report totals. The baseline report is .coverage-mcp/local-evidence/20261017/webp-image-chunk-baseline/coverage.json (SHA-256 37f1f634d90a92a5e9446aa507a38318f494a7e18190ce9600eb8b68e89b3b8f); the new-batch report is .coverage-mcp/local-evidence/20261017/webp-image-chunk-incremental/coverage.json (SHA-256 f23fdb42cb9f503ea3a35cb88b4c9938a297ccff35dabda99cee1108c88a056b). No full coverage run or full-suite regression conclusion is claimed. The current fixture matrix contains 2,295 total rows: 1,801 decode / inspect / verify rows and 494 encode rows. Of those, 1,801 decode rows and 462 encode rows are active; the other 32 encode rows are planned.

AVIF 12-bit I444 auxiliary-alpha parity — 2026-10-17

Added the public high_bitdepth_still_12bit_444_alpha_9x9 decode row. The deterministic 9x9 full-range profile-2 fixture contains 12-bit I444 color and a monochrome 12-bit auxiliary alpha item. Pinned libavif 1.4.1/libaom 3.13.2 produce two all-lossless one-tile frames; Pillow 12.2.0 verifies and loads the input as one RGBA8 frame. The 484-byte input SHA-256 is f7eb5b9edfdd7b11d00094aadb91320e7cc6cc01961470e3c2040d91e68610aa; the exact 324-byte Pillow reference SHA-256 is 4a644e661e4cc9eb2ab3b4548d7f2275061b058e14a9370cffb63826f5c7a014.

The selected test_decode_matrix_avif parity run passed. A selected cargo +nightly-2026-07-16 llvm-cov report at target/release-evidence/coverage-avif-12bit-444-alpha-9x9.json was queried with Coverage MCP. Its report contains 1,829/31,302 observed branches overall; the source and build are unverified and test attribution is unknown. The report shows the new case reaches both the eight-lane converter batches and the scalar tail. Coverage MCP also reports ten unobserved branch outcomes in the separate 10-bit alpha converter and eight in the full-resolution RGB shape checks. These are observations from the selected report, not claims about the full suite. An incremental union with the saved 2026-10-16 full baseline is unavailable: its detailed observations do not reconcile with its reported totals, so Coverage MCP returns incomparable. No aggregate gain or full-suite regression conclusion is claimed.

JPEG empty DC Huffman table grayscale fast-path parity — 2026-10-17

Added the public empty_dc_huffman_table_grayscale_fast decode row. Its full 3,887-byte baseline grayscale JPEG replaces DC Huffman table 0 with a valid zero-symbol table. Pinned Pillow 12.2.0 verifies and decodes it as one 128x128 L image. The complete input SHA-256 is 7fda920713bb5982e3dc04a8f1dc695189e8b62a22f2118e72a22a5efd5f96b8; the exact 16,384-byte Pillow pixel reference SHA-256 is f1dad3cb56362cf934f41278fe27f561f388fe8284f70dda72f98035de1f4f2f.

The selected test_decode_matrix_jpeg run passed exactly this row. A second selected run under cargo +nightly-2026-07-16 llvm-cov passed the same row and produced target/release-evidence/coverage-jpeg-empty-dc-huffman-grayscale-fast-20261017.json (SHA-256 c43650e94a75e035742262fbb95f59c1322d99445ff798fa6e29c39c7b9975f3). Coverage MCP reports 258/31,396 observed branches in this selected report and shows the optimized decode_slow_fast path reaching the overlong-code and empty-table recovery branches at lines 389–391. The saved 2026-10-16 full report lists arm=true at line 390 as missing; the selected report's LLVM branch data records the empty-values arm=true as taken. Both reports have unverified source/build identity and unknown test attribution, so this is coordinate-level reachability evidence only. The old report is stale and its observations do not reconcile with its totals; no aggregate coverage gain is claimed.

Selected 10-bit I444 alpha coverage — 2026-10-17

The existing high_bitdepth_still_10bit_444_alpha_lossy_16x16 Pillow parity row also passed alone under cargo +nightly-2026-07-16 llvm-cov. Its report is target/release-evidence/coverage-avif-10bit-444-alpha-16x16.json and records 2,426/31,302 observed branches. Coverage MCP's selected_tests comparison with the selected 12-bit I444 alpha report found five branch arms newly observed at coordinates in convert_full_resolution_rgb_10bit_alpha, with five outcomes still unobserved there. The comparison is limited because both reports have unverified source/build identities and unknown test attribution; it describes report-coordinate differences, not a verified gain. The incremental union was incomparable because the baseline's detailed observations do not reconcile with its totals. No aggregate coverage claim is made.

Latest full all-feature coverage — 2026-10-16

One complete local make coverage run on source commit 7fe6010a91b4b1732bf3f1f6fac99cdc418b4340 passed all 136 executed tests: 3 unit, 57 coverage-matrix, 7 decode-policy, 1 determinism, and 68 feature-gate tests. The run used:

env RUSTC_WRAPPER= PYTHON=.oracle-venv/bin/python CARGO_BUILD_JOBS=2 make coverage COVERAGE_REPORT=target/release-evidence/coverage-main-full-20261016.json

The report is retained at .coverage-mcp/local-evidence/20261016/main-full-7fe6010a/coverage.json and was also written to target/release-evidence/coverage-main-full-20261016.json. Its SHA-256 is 8425ebb15b6b2c2e2f2022afc4bf3d813c30eda6325ab723fcab936ac39dbafd.

Metric Covered / total Percent
Lines 89,333 / 135,876 65.745974%
Branches 17,470 / 31,282 55.846813%
Functions 5,003 / 8,694 57.545434%
Regions 136,514 / 210,887 64.733246%

The run passes the owner-approved alpha floors of 59% lines, 46% branches, 52% functions, and 58% regions. It does not meet the separate 100% goal. Coverage MCP can read the report, but its record has unverified source identity, no registered build receipt, and unknown test attribution. Keep this local exploration report separate from the historical managed baseline; no verified regression or aggregate incremental-gain claim follows from comparing them.

Local artifact availability and exporter investigation — 2026-10-05

An owner-confirmed routine cleanup removed the local target/ directories, including the raw profiles, compiled objects and receipts cited below. Their recorded digests remain historical identities; unavailable artifacts have not been recreated or represented as surviving originals. Fresh measurements are required for further comparisons. New essential receipts are being retained outside build directories.

Before cleanup, a native exporter investigation found positive raw-profile counts for 64 API functions reported as uncovered in the last full JSON. Reordering the identical complete object set changed the exported function coverage. The pre-cleanup AVIF table below preserves the original exporter output, but these mapping losses prevent interpreting its changes as missing execution or a test regression. The diagnosis retained after cleanup is a context reconstruction, and a native repair must be validated with fresh artifacts. The repair must prefer real mappings over unused mappings, including real functions with zero executions, while retaining genuinely unused functions and every reported source. No corrected result was admitted at that investigation checkpoint; the fresh validation below has its own artifacts.

Scoped JPEG grayscale and portable progressive parity — 2026-10-05

The maintained input generator adds 11 complete JPEG decode cases and 15 grayscale encode cases. Sizes 17x9, 128x128 and 512x512 cover omitted, 4:4:4, 4:2:2 and 4:2:0 sampling options, with optimized, progressive and restart variants. Two complete inputs redefine DQT or DHT after the first scan. Pinned Pillow 12.2.0 supplies all encoded-byte and decoded-pixel references through the normal producer.

The encoder preserves explicit grayscale SOF sampling descriptors while retaining one block per scan MCU. Non-1x1 singleton baseline scans use the existing sequential reconstruction path. Unsnapshotted quantization tables borrow the unchanged frame tables; missing captured tables remain errors. An explicit Huffman snapshot flag distinguishes uncaptured tables from captured absence, preserving first-scan provenance after later definitions. Lookup Options retain absence semantics and checked error conversion; omitted encode options retain the grayscale default.

WASI exposed a preceding progressive decoder bug: non-DC-only scalar IDCT received coefficients without dequantization. The correction multiplies in the existing reorder loop on portable targets. Native ARM/x86 expressions and the already dequantized DC-only path remain unchanged. The original main attempt passed 212/227 WASI decode cases and 92/96 encode cases; both failed receipts remain preserved. An isolated preceding-source reproduction also fails the old progressive case against its exact Pillow reference.

Fresh main acceptance passes all 14 formatting, verification, strict native, coverage-hook and WASI gates. Native and WASI each pass 227/227 JPEG decode and 96/96 encode cases, with 454 public encode calls and zero panics. Existing JPEG feature contracts pass 68 native and 66 WASI tests, with zero failures or ignored tests. All 4,212 prior input/reference payloads, old ordinary row objects and 26 fault rows remain exact. Fault contracts were not requested in this normal scoped run. The main receipt SHA-256 is ab2a02836cd8ed6f280b74055be6d326e52dbb5ce784a73bf7c6646fcc84823f; independent acceptance review is c6b5c05ba60d992b58850fc0fd65fd87f36be552aeaa09767ca8bbbfd4c04aaa. Proofs are outside target/, under the recovery root recorded below.

Before the portable correction, the frozen grayscale candidate was measured with 297 prior JPEG controls and then only 26 new ordinary cases, resetting profiles between runs. Native counters record ten newly exercised branch arms: five in JPEG and five in PNG deflate reached through the complete PNG inputs. Coverage MCP's line comparison is limited; branch comparison is incomparable because aggregate and normalized detail denominators differ. No aggregate incremental union or full-suite regression is claimed. The selected receipt SHA-256 is 2b7abd4fc08c566ff3faf2eac61cd7af94cc34f1f31454706d2007281d924744. The full totals below belong to their earlier source. Paired throughput timing remains pending.

Managed full-coverage baseline — 2026-10-05 (historical)

The fresh full run on ede1d7fa passes make coverage-with-exporter and all seven existing test binaries (3/4/1/57/7/1/68), with zero failures or ignored tests. Its ordinary inventory is 2,138 rows: 1,675 active decode, 431 active encode and 32 planned encode. All active rows pass. The 26 target-only fault contracts pass separately with oracle status not_applicable. There are 1,647 public encode calls and zero encode panics.

Metric Covered / total Percent
Lines 89,212 / 135,769 65.708667%
Branches 17,401 / 31,246 55.690328%
Functions 4,989 / 8,685 57.443869%
Regions 136,469 / 210,864 64.718966%

All alpha floors pass. The separate strict 100% verifier exits 1 because every metric remains incomplete. This is a native all-feature test and coverage run; the preceding scoped target checks retain their own evidence. No matching x86 throughput measurement or codec speed claim is added.

Proof paths below are relative to /private/tmp/image-slash-star-evidence-recovery-a761-20261005/. The fresh JSON is maintained-exporter-canonical-main-ede1d7fa-v5/maintained-producer.json, SHA-256 48ba281a9429f6610d526e791a44319d6ab3e493bd46506bd6d900bb5a581e49. The LCOV SHA-256 is 0de32869f420a49de6b849a69442c088e6320293088027c3ae63064bfd156b79. Independent completion audit has SHA-256 f73865355296d835be2da2650c7c634d8e81e41b0dac0ef90e115e2bd0ce7eb5. Its source, tool, log and report guards bind 5,388 source and fixture files, 113 compiled artifacts, seven fresh raw profiles and one merged profile. All eight profile copies are preserved outside build directories. Empty compiler wrappers, two build jobs, offline Cargo and disabled incremental compilation are explicit. Objects and profiles remain fixed across exports. This evidence prose is updated after the measured source freeze is released.

Coverage MCP reads byte-exact copies of the native reports and returns remaining JPEG, TIFF and AVIF branch locations. Its provider source and build identities are unregistered and test status is unknown; the local audit supplies the separate execution binding. Previous full source differs, so no incremental union or verified full-suite regression comparison is claimed from those queries. The failed preceding full attempt remains recorded below, without an accepted report.

Earlier full all-feature coverage at 2,134 rows — 2026-10-05

The implementation at the recorded 2,134-row checkpoint was measured through make coverage-with-exporter, which delegates to the existing full make coverage command with the independently audited LLVM 22.1.8 v3 exporter and pinned Rust llvm-profdata. The JSON is maintained-exporter-canonical-main-0460-v3/maintained-producer.json, SHA-256 24a01a758cbdb7dbf3a1c3d0444a18352cf9a5cc001733ec8912d0435563c7c5. All fresh proof paths in this section are relative to /private/tmp/image-slash-star-evidence-recovery-a761-20261005/ and are outside the removable build-target directories. Historical cleaned artifacts remain unrecovered.

Metric Covered / total Percent
Lines 89,211 / 135,769 65.707930%
Branches 17,399 / 31,246 55.683928%
Functions 4,989 / 8,685 57.443869%
Regions 136,465 / 210,864 64.717069%

All alpha floors pass. The separate strict verifier exits 1 because every 100% requirement remains unmet. The full run passes all seven existing test binaries (3/4/1/57/7/1/68), with zero failures or ignored tests. That run measured an ordinary inventory of 2,134 rows: 1,671 active decode, 431 active encode and 32 planned encode. TIFF has 264 decode rows; AVIF remains at 525 and JPEG at 216. All 26 target-only fault contracts retain separate results and oracle status not_applicable. The malformed ledger contains 592 entries and the static origin registry has 141 guards across 20 files.

The preceding same-code campaign explicitly binds 5,297 source, fixture, script, configuration, benchmark and documentation files, 113 compiled artifacts and seven fresh raw profiles. An empty RUSTC_WRAPPER, two build jobs and parent CARGO_INCREMENTAL=0 are recorded. Native reports use exactly the same objects and profiles; source and artifact hashes stay fixed through all exports. The full receipt has SHA-256 943194502182041a23802e5bcddb6a4398ebb47c3753d9d3d0dc5627b195580d. This evidence prose was updated after measurement. Its source and fixture identity remains bound to that recorded inventory; later additions have separate evidence.

All eight distinct formatting/strict-Clippy gates pass, including debug, release, coverage hooks, JPEG benchmark, SSE2 and AVX2 cross-compilation. All-feature check, strict rustdoc, doctests and existing tests pass. All 33 feature lanes pass: 11 native runtime, 11 WASI runtime and 11 browser compile/strict-Clippy/rustdoc lanes. The quality receipt has SHA-256 91fb461c28aa400ea37503763afa15706d772f0819c66176fb85981d6f29d62b. The verbose matrix log supplies the lane records; its nonverbose summary list is empty. Cross-compilation supplies no matching x86 throughput measurement. This slice adds no private unit tests, unsafe code, broad lint exceptions, source exclusions or ignored cases.

TIFF ExtraSamples and grayscale-alpha parity

The maintained input-only generator covers four families (RGBX and grayscale unspecified extras, associated LA and straight LA), contiguous/separate storage, strips/tiles, and raw/Deflate/LZW/PackBits compression: 64 complete 17x9 inputs with padded tile edges and alpha boundaries. Fresh pinned Pillow 12.2.0 owns all expected outcomes: 34 successful pixel references, 28 open failures and two successful opens followed by materialization failures. The 30 valid but unsupported layouts are classified ambiguous in the malformed ledger. They are ordinary oracle cases, separately from fault contracts.

A fresh isolated public comparison observes 56/64 mismatches in the preceding implementation and zero in this candidate; eight controls match both. All 264 TIFF cases pass. Every prior ordinary row, 25 prior fault contracts, 200 TIFF input/reference records and old encoded-input/raw-reference byte remains exact. Historical managed measurements and identities are preserved. The combined preparation receipt has SHA-256 4cc13292522e82dcf0fc0f7a59f692baabd4a9ccd649db240b95b048545eda49.

Inspection and decode share the ExtraSamples layout decision and raw ignored band-count validation. Compressed ignored planes are omitted from payload decoding. Retained samples are compacted in the existing checked assembly buffer with its allocation and capacity preserved; cancellation remains bounded. Optional alpha, color-map and extra-sample metadata retain genuine absence semantics. The existing private fast-path Option categories retain their checked fallbacks. New fallible conversion/compaction helpers return Result. No timing result is claimed for these changes.

AVIF SGR source reservation contract

avif_sgr_source_reservation_failure reuses the complete ordinary animated_lossy_inter_420_superres_sgr_8bit_160x56 input and introduces the typed av1.restoration.sgr_source_reservation fault point. Under coverage it requests usize::MAX through the actual Vec<u16>::try_reserve operation; normal builds use the original sample count. The public contract checks the structured SequenceDecode dimensions error and exact message, one-shot fault reset, and two fresh successful retries with complete sequence equality. The hook is absent from normal builds. This is target-only fault evidence; the adjacent ordinary source keeps its independent Pillow comparison.

On fixed source and instrumentation, the selected control run passes 201 ordinary cases (200 prior TIFF cases plus the AVIF source) and 25 prior faults. The next run passes only the new 64 TIFF cases and one fault. Profiles are reset between runs; all actual objects and all four native denominators stay fixed. The selected receipt has SHA-256 3aea95a9a9e4749b0ec8e1782be610b0b7eeaad54212dd4146fdcbaa2bba39ae.

Coverage MCP's unmodified LCOV comparison observes 56 new line coordinates, 55 in TIFF and one at the coverage-only SGR reservation hook, for the selected union 34,518 -> 34,574 / 131,268. Its status is limited: provider source, build and test contexts remain unbound, although the independent local receipt records fixed hashes and successful executions. The response SHA-256 is a094bb469b4a603957f6977ce0af8d312507214b953bccbebe0a321560e5413f. Both native JSON incremental queries are incomparable because summary and normalized detail counts differ. Reports and counters were preserved. These selected coordinates do not establish full-suite regression status or the full campaign's coverage delta.

Native exporter provenance and reporting boundaries

The v3 native patch is pinned to Rust LLVM commit 52ed14fcd56afc30f9cccd8ca8ce237c2eef7e04; patch SHA-256 is c79225c56592e5305169c006f5f17d432e80a11f0e9463eff04b387434061b91. The preserved exporter SHA-256 is 80b04f713478755ad311865a82ed2a3c49c7441f9398cfea37c06326d684e768. No installed toolchain files are replaced.

A fresh control on the preceding 056c502b source reproduces the original unpatched coverage totals. On identical objects and profiles the native repair restores 64 real functions whose exact mangled-name/CFG-hash profile tuples have positive counts. It retains all 110 source files and 397 unused-only function entries at zero, including 333 entries in measured source files. A separately labeled genuine capability-test profile proves that two real unexecuted mappings retain their branch records at count zero. Unused payloads contain the same coordinates with structural Zero counters, so LLVM folds and omits their exported branches; real CounterRef/expression payloads retain them. The full branch denominator increases by 14 for the seven SourceColor::is_empty branch regions. This producer correction is separate from execution gains caused by new cases.

The preceding native audit receipt has SHA-256 0b48887f8613126abf4d7d9d5054af7e0ab3afad3ca5b606ac2631c5fabdbb71; its payload-wording correction has SHA-256 464f449829a1829a65b04f18c9095f6c2e35e15b24ed75ae660ee88377b21957. The original strict Cargo/native JSON identity failure is preserved: Cargo adds metadata and slightly reserializes percentage floats. Native integer counters and literal LCOV fields agree; no original report is corrected. Natural unmatched-unused mappings with a positive foreign-hash profile record were not demonstrated. That edge retains source-policy evidence only. Admission is bounded to the pinned native macOS ARM64 producer and recorded artifacts.

An independent audit of the current combined campaign passes 34 direct native JSON/LCOV exports across 17 distinct complete nine-object orders. Every source, function, region, branch, instantiation and count field is retained and order invariant. Frozen source, full and incremental objects, profiles, tools and original reports/logs remain byte exact. The current audit receipt has SHA-256 87db2f9469abc3be885755ac7a7b9c2b869355da889a58a3534211f5ac95253d. Its 34 Cargo/native percentage-only scalar differences remain separately recorded. The first audit preparation fails on an incorrect assumption that the new sorted fault row is last; the corrected exact-ID guard succeeds. That failed preparation is preserved separately.

Maintained producer setup and canonical command

The opt-in coverage-exporter-setup and coverage-with-exporter targets now maintain the exact native patch and toolchain descriptor in the repository. The original coverage/check/complete recipe bytes remain unchanged. A narrow Git whitespace attribute preserves the serialized patch's blank context markers; its reviewed patch hash remains exact. The optional launcher preserves spaces and apostrophes in report names and rejects characters the inner recipes cannot represent literally. Final controlled checks pass 90/90; an independent outer-to-inner check passes 40/40, including GNU Make 3.81's -i behavior. Ignored shell errors can mask the Python rejection's outer exit status, but no coverage/context work runs for those rejected values. Dollar and line-feed guards fail during Make expansion. Earlier failed checks remain preserved.

A genuinely fresh maintained v3 setup uses the exact prepared LLVM source, two build jobs and an isolated prefix outside target/. Configure and all 759 build steps pass, followed by actual no-op and two concurrent receipt reuses. Its executable SHA-256 is 045227d446bfb7241b8e6febd2707ce82c6aee9aedb8cb725cb4d828bcec7004; its identity receipt is 49ff1dd42ff0afbae1745cb002c9c55c3ee256357c0c7cf970e66887c8fedb42. All 34 native JSON/LCOV exports across 17 complete object orders match the previously audited producer's fields. The actual setup/export verdict has SHA-256 db4e20acd783ca834861b25742bcb6c0fc452fc0baf75a041bc32f9128bdff9d. The first-source-fetch branch remains unexercised. Native admission and the foreign-hash limitation described above retain their recorded scope.

The integrated canonical command passes make verify, all seven existing test binaries, 1,671 active decode rows, 431 active encode rows and all 26 target-only fault contracts. Its 1,647 counted public encode calls have zero panics. The 32 planned encoder rows are reported separately from the active denominator. All alpha floors pass; the separate strict verifier exits 1. The integer totals above reproduce the preceding audited full campaign exactly.

The measurement runner's bookkeeping assertion incorrectly included planned skips in that active denominator and failed after the real commands exited 0. Its original failed receipt remains unchanged, SHA-256 01a969d5e64f4f0a54693aa95fe6e6f6fb68600718adc0346d901fb23e30a8d3. An independent completion supplement checks the actual runner source and literal results, then performs only a normal LCOV report export and strict verification. It reruns no tests and rewrites no counters or original receipt. Its SHA-256 is 54c7affcf9587c894a3580fd3bf4d38875a6bf572846e9f25b323a556f5977f0. The LCOV SHA-256 is 363c6078af91b6907c56a1843fa5f1c6eba4f215540bfdfc420a61830d1426ef.

The canonical run freezes 5,301 source/configuration files, 113 compiled artifacts plus the root executable used by the nine-object export, seven raw profiles and one merged profile. Its completion audit archives and checks these artifacts, original reports/logs, producer identities and all 110 measured sources before and after report-only work. The export's raw-profile argument list is captured after the export, explicitly as a later capture. Human evidence and command-reference prose are updated after measurement; codec, test, fixture and producer recipe contents remain unchanged. No provider receipt is invented, and this reporting repair is separate from a new-case coverage gain.

TIFF ignored-sample row boundary parity — 2026-10-05

Three complete raw RGB TIFFs retain an unspecified fourth sample in rows of 255, 256 and 257 pixels. Their stored row sizes are 1,020, 1,024 and 1,028 bytes. The normal input-only generator and pinned Pillow 12.2.0 reference producer preserve all previous 64 generator outputs, 2,134 ordinary rows and 26 separately typed fault contracts. Exact RGB observations contain 765, 768 and 771 bytes. The codec implementation is unchanged. The existing public cache check uses four cloned handles sequentially on the maintained WASI runner, which lacks thread spawning; native checks retain four worker threads and the same complete image, pointer-identity and cache-state assertions.

The fixed-source incremental run, preceding that harness portability update, selects all 264 previous public TIFF rows, then only the three new rows. Both selections pass without failures or ignored tests, with zero fault contracts selected or executed. Both native reports retain identical denominators: 135,754 lines, 31,228 branches, 8,682 functions and 210,844 regions. The previously missing true arm of compact_extra_samples at tiff/decode.rs:1517 changes from 0 to 1 in the native file and function records; the new row crosses the 1,024-byte token checkpoint within a row. This is no cancellation-response or throughput claim.

Fresh evidence resides in tiff-extra-sample-boundary-cases-8abb-20261005/ below the recovery directory named above. The original incremental receipt has SHA-256 271b2e8da2b981fa6456594e77b9089326ff4be2a5af933b42a9467e7701bb92; independent completion has SHA-256 1110d55f680fe9d0b182f7213a7f33b94c126a86ad0dba9cd338d14f825f576d. Preserved raw profiles re-merge byte-identically. Direct native exports match all counters, coordinates, names and shapes; distinct outputs retain only explicitly reported percentage display differences within two ULPs and one terminal LF in LCOV. Earlier strict reviewer attempts remain preserved.

Coverage MCP returns the missing branch for the controls and none at that location for the new-only report. Its LCOV line union records zero new lines. Its branch union is incomparable because reported totals and detail differ; provider source/build receipts remain unregistered. No report fields were rewritten. These selected results do not replace the last full all-feature measurement above or establish a full-suite regression check. The inventory at this checkpoint is 2,137 ordinary rows, including 267 TIFF decode rows; the 26 fault contracts remain outside Pillow parity totals.

After the harness update, all ten scoped commands pass: formatting, fixture verification, generator byte checks, strict native and WASI all-target/ all-feature Clippy, coverage-configured strict Clippy, native TIFF decode and encode, the normal WASI matrix build, and its three selected ordinary rows. Native parity passes 267/267 decode and 59/59 encode, with 205 public encode calls and zero panics. WASI passes 3/3 selected rows. No test is ignored. The completion receipt is main-scoped-acceptance-portable-v3-completion/completion.json, SHA-256 7ff0067677967b6f9f1141336412b050f411d3d183c03eeca62f50bfa88c4a55. Its final guards bind 5,374 source and fixture files and the rebuilt native and WASI binaries. The original failed bookkeeping receipt is preserved: it incorrectly expected a coverage-only fault summary from a normal binary, whose fault dispatcher is empty. No fault selector was requested or counted as Pillow parity. Four earlier WASI malformed-range classifications remain outside this selected scope; this is no full WASI or 33-lane campaign claim.

TIFF payload-range classification on 32-bit WASI — 2026-10-05

Four checked strip/tile offset additions now classify an unrepresentable payload range as malformed, using the adjacent out-of-bounds payload message. This matches the existing complete Pillow error fixtures for planar_separate_rgb_tiled_oob_tile, planar_separate_rgb_oob_strip, tiled_palette4_oob_tile and error_bad_ifd_oob_strip. Geometry errors and checked arithmetic remain unchanged. The correction has no dependency on the separate large-row diagnostic, which has not executed. Native 64-bit behavior remains unchanged; a representable incremental retry minimum on 64-bit can still differ from a terminal unrepresentable range on 32-bit.

All fourteen scoped commands pass on the candidate following f04ba130. Native and WASI each pass the full TIFF public matrix: 267/267 decode and 59/59 encode, with 205 public encode calls and zero panics per target. The existing TIFF-only feature tests pass 67 native and 65 WASI tests, with zero failures or ignored tests. Formatting, fixture verification, native and WASI all-target/all-feature strict Clippy, coverage-configured strict Clippy, and WASI TIFF-only strict Clippy also pass. All prior fixture bytes and observations are unchanged; no fault selector is requested or counted.

The receipt is tiff-range-only-f04ba130-scoped-acceptance-v1/receipt.json below the recovery directory above, SHA-256 392f5ba40a496f99b47fe00caefcc8488f49e7726fcde11fc772649024eade5d. Final guards bind 5,374 source files, tools, rebuilt test binaries and the two unrelated untracked files. This resolves the four classification failures left outside the preceding three-row WASI selection. It is no complete 33-lane campaign or fresh full coverage result.

Animated AVIF primary-item rotation parity — 2026-10-05

animated_primary_item_irot adds one essential primary-item rotation property to the existing complete five-frame AVIF. The input-only generator grows the file from 1,235 to 1,245 bytes, rebases its item and track offsets, and retains every coded sample byte. Pinned Pillow 12.2.0 observes the same five 150x150 RGB frames and 33-ms durations. Two fresh observations through the maintained native observer record repetition count zero. That observer uses the exact surviving ABI header and pinned Pillow shared library; no full clean native source checkout is claimed.

The isolated ordinary public comparison passes 1/1. Its fixed-source incremental run passes one existing animated control, resets raw profiles, then passes only the new row. No fault contract is selected or executed. All 63 compiled objects and all four native denominators remain identical: 135,754 lines, 31,228 branches, 8,682 functions and 210,844 regions. The true arm at avif/decode.rs:349 changes from 0 to 1 in file and function records; literal LCOV records agree. Coverage MCP returns the missing true arm for the control and the missing false arm for the new-only run. Its incremental union is incomparable because normalized detail and aggregate inventories differ. Reports retain all fields; no MCP union or full-suite gain is claimed.

The candidate preserves all 2,137 previous ordinary observations, 26 separate fault objects, old input/raw bytes and loop facts. Appending the fresh native loop observation changes the whole-index digest, so 132 old-row index-SHA fields are explicitly refreshed; those row objects are not byte-identical. The final handoff is animated-avif-primary-irot-f04ba130-20261005/final-handoff-v1.json, SHA-256 2509e87af0b47c2ade917d0edff80bcd473039598120e410a1e56310c57c6973, under the recovery directory above. The original selected-run bookkeeping failure is preserved and qualified by its actual command exit zero and literal 1/1 result. This update changes no Rust codec or test harness. The current inventory contains 2,138 ordinary rows, including 526 AVIF decode rows; fault contracts remain outside Pillow parity totals.

Normal main acceptance passes formatting, the pinned input-generator check, 526/526 native AVIF rows and the one selected WASI row, with zero failures or ignored tests. Existing executables are reused for actual current inputs; there is no recompile claim. The outcome receipt is animated-avif-primary-irot-f04ba130-20261005/main-normal-public-outcomes-v1.json, SHA-256 70594fd65d6370650667f3a7eea64fd85ce62240e81e91ce77bee2b9b5697e28. The initial fixture verification fails on two stale current roadmap AVIF counts; its original receipt and log remain preserved. Those derived fields are corrected to 526, with historical coverage records unchanged, and verification is rerun separately. The administrative correction changes no codec, test, fixture or generator byte measured by those runtime comparisons.

Full-campaign AVIF witness registration correction

The fresh full attempt on 7edbc034 passes all 1,675 ordinary decode rows, 431 active encode rows and 26 separate fault contracts, with 1,647 public encode calls and zero encode panics. It fails the existing complete native repetition witness test on its stale 285-artifact assertion: the current index contains 291 artifacts. This failed attempt produces no accepted coverage report. Its seven raw profiles, original receipt and log remain preserved in maintained-exporter-canonical-main-7edbc034-v4/; the failure audit has SHA-256 0ed60c841df220fd55a7736cfcfc58ec6e60674d63d484e8f8388b9fea69ed00.

The public witness harness now requires exactly 291 artifacts, appends the new case to its exact name list and resolves its source through the existing matrix sequence observer. All previous 91 case objects and 285 artifact bytes remain unchanged. Complete-input hashes, native repetition facts, every frame's pixels and timing, and public error checks remain enforced. The focused existing test passes 1/1 with zero failures or ignored tests, covering all 92 complete cases. Fresh pinned Pillow observes the new five frames and two native observations match the retained index. Formatting, strict all-feature public-test Clippy and fixture verification also pass.

The terminal review is animated-avif-primary-irot-f04ba130-20261005/witness-registration-fix-7edbc034-v1/completion-review.json, SHA-256 9a57980be1c9ee0445fda3e13ca7258f011f3e3ecdc52e402f7b5da5554aae73. Its guards bind 5,388 source and fixture files, tools, logs, the actually recompiled normal test binary and the two unrelated untracked files. Only the three harness registrations change. This focused correction does not replace the last full coverage measurement above.

Pre-cleanup AVIF full coverage — 2026-10-05

The last recorded full local report was target/release-evidence/coverage-avif-derived-skip-refs-v2-20261005.json, SHA-256 32b12a55dddb5a2488f8c09bfb67a02feb42dab40fa0ac21697c0b151983e0e3. make coverage uses nightly-2026-07-16, an empty RUSTC_WRAPPER, two build jobs, CARGO_INCREMENTAL=0 and a fresh target/llvm-cov-avif-derived-skip-refs-v2-full-20261005 target.

Metric Covered / total Percent
Lines 88,832 / 135,656 65.483281%
Branches 17,359 / 31,196 55.644954%
Functions 4,921 / 8,682 56.680488%
Regions 135,986 / 210,661 64.552053%

All alpha floors pass. The separate strict verifier exits 1: all four 100% requirements remain unmet. All seven test binaries pass 3, 4, 1, 57, 7, 1 and 68 tests, with zero failures or ignored tests. The measured AVIF checkpoint ordinary inventory contains 2,070 rows: 1,607 active decode, 431 active encode and 32 planned encode. AVIF has 525 decode rows, JPEG 216 and TIFF 200. All 25 target-only fault contracts retain oracle status not_applicable and separate results. The malformed-input ledger remains at 562 entries.

The incremental and full campaigns preserve all 5,190 measured source/configuration/script/fixture hashes: 5,189 repository files and one ignored ambient Finder file. The repository-local count includes the ignored .cargo/config.toml; 5,188 measured files are tracked in Git. The local configuration sets CARGO_INCREMENTAL=0 for child commands and selects a compiler wrapper. The campaign explicitly sets the parent Cargo environment to CARGO_INCREMENTAL=0 and overrides the wrapper with an empty RUSTC_WRAPPER. Both ignored files retain separately verified hashes. The full campaign has its own 113 instrumented artifacts and seven fresh profiles, unchanged across JSON and LCOV exports. The selected campaign's 63 artifacts and final profiles remain unchanged. Different test scopes use separately bound objects; no cross-scope object identity is claimed. The original full source receipt retains precommit base revision 61f4dfdc145f2a35526588667368d5873df07280 and SHA-256 dc6f39d09a0a1424857fd8c72ebb435bd084f6870cd47a752d8cdbf9549cf582. Human evidence documentation is outside that measured inventory.

All eight formatting/strict-Clippy gates pass, including coverage-nightly, JPEG benchmark and SSE2/AVX2 cross-compilation. Their v2 receipt has SHA-256 7ecdc21d94aa08a4c3f9ba76c947fdc2c3eed1e1607d9fbf2823c94aeafb892e. All 33 feature lanes pass: 11 native runtime, 11 WASI runtime and 11 browser compile/strict-Clippy/rustdoc lanes. The v2 feature receipt has SHA-256 5b5451ff599288230aeaae13b032bde06b0f5d7d6fea48065417d98d695da871. These cross-target checks provide compilation evidence, without matching x86 runtime or throughput measurements for this change. The origin registry retains 140 guards across 20 files. This change adds no private unit tests, unsafe code, lint exceptions, coverage exclusions or ignored cases.

Complete AVIF disabled-skip reference parity — 2026-10-05

Three complete ordinary lossless animations exercise I420, I422 and I444 sampling with five 64×64 frames and fixed 32×32 blocks. At the observed inter context, the header retains a derived skip-reference pair while skip mode is disabled. The reconstruction gate now permits that unused pair, retaining the existing exclusion of enabled skip mode and all reference, quantizer, geometry and safety checks. The change removes one context predicate and adds no pixel allocation, raster copy or block-loop operation. It has no measured speed claim. Execution evidence covers bounded reconstruction for these three complete inputs.

Ordinary input Bytes Complete input SHA-256
animated_lossless_inter_420_derived_skip_refs_b32x32_64x64 6,130 50d8bdd33c5a5e958d5991d25767748088ba3354d35d4b809d52e84a45713c15
animated_lossless_inter_i422_derived_skip_refs_b32x32_64x64 7,530 0eae260be09a74b98b1f525261a237ef3783105870de44224de91dd65ee5d168
animated_lossless_inter_i444_derived_skip_refs_b32x32_64x64 10,135 3769c145bb4d97f357a8b3c4660fb8a2f976c682643304e64833d06515901009

The maintained scripts/generate_avif_derived_skip_reference_fixtures.py runs through the normal AVIF asset hook. Recipes retain stimulus and complete input hashes; fresh pinned Pillow 12.2.0 owns expected pixel and lifecycle observations. Two separate output-directory generations and --check reproduce all three input files. The generator receipt has SHA-256 a618607002514ab86a69a686d24ecb6030c5c952678296526341600f9fb8d305. The normal native loop producer independently observes all five displayed frames, exact pixels, 100 ms timing and loop zero. Its index grows from 88 to 91 cases and 267 to 285 artifacts. All previous cases and artifact bytes remain exact. The new index SHA-256 is 38e8bf690190b189c26fb93876ef7c7b47b67ca57fa4c99c49b819b0ef58f13d.

Canonical regeneration preserves all 522 prior AVIF ordinary outcomes and every other format/encode block. Only the native index digest changes in the 63 existing AVIF sequence provenance fields in each of the matrix and output JSON. All 25 fault contracts and historical managed-ledger measurements, run identities and measured-input hashes remain exact. An isolated public probe also matches seven complete ordinary inputs, 29 sequence frames and seven first images against fresh Pillow observations; its receipt has SHA-256 9774993f56582350a1c7ce44e02295a14087d47f97d9cf069477223d1ee56a23. Independent source review finds no required repairs and binds the retained skip-mode exclusion, all 18 new first-image/sequence references, old outcomes and native artifacts. Its receipt has SHA-256 c8e17b450b2ba14ec348b861c1ac9ad5461babb3605475f18102637e437ee504.

The first full attempt fails on the existing native observer's stale 267-artifact assertion. The repair updates that observer to 285 artifacts, appends the three case registrations, shifts five origin line coordinates by one and refreshes the ledger's current origin digest. A subsequent manual formatting attempt also fails rustfmt; its unsuccessful evidence is kept. The authoritative cargo fmt output is used by every successful v2 campaign. The original incremental/feature successes, failed full attempt and formatting failures remain separate from the passing v2 receipts.

Incremental measurements and coverage limits

On the fixed v2 source, the baseline executes 522 prior ordinary AVIF rows and 24 applicable AVIF fault contracts, reported separately. Three subsequent runs execute one new ordinary input each through the existing matrix runner. All four runs pass, resetting raw profiles between runs and preserving all 63 actual instrumented objects. The incremental receipt has SHA-256 301313e5e2c007b55b3fdb88420d94e4abafd83e19a40649a73c3f8f3efc1609. The read-only producer audit binds original report hashes, 110 measured source files, all 5,190 frozen files, actual objects and passing selected-row logs. Its SHA-256 is d67650d5986a300b9038b0a18c77b0129a8bec462009fc5c37fd65e444b00104.

Coverage MCP verifies the LCOV line-coordinate union 43,973 → 44,032 / 131,155, with marginal gains of 58, one and zero. The 58 coordinates are in existing code: 40 forwarding-wrapper lines in block.rs and 18 compound-reconstruction lines in entropy.rs. The I422-only gain is a short-circuit right-hand evaluation in bounded_reference_mode_supported; it does not show enabled skip mode. The zero-gain I444 case retains independent parity value. Native LF/LH totals and the full report's aggregate metrics retain their separate denominators. JSON region and branch comparisons are incomparable: region summary/detail covered counts disagree, and native branch detail loses four identities. No JSON producer context, replacement counters or synthetic identities are introduced. The verbatim query receipt has SHA-256 0dee6bf2dc3a8842f191176cc4ddfed258f9018aae122e132168b9ba47263f53.

All four native full covered counts are lower than the preceding TIFF report. Source, fixture inventory and build identity differ, so these reports do not provide an exact full-suite regression comparison. The 59 selected line gains are not a claim that 59 preceding full-suite gaps disappeared. The current full report retains 46,824 missing lines, 13,837 missing branch outcomes, 3,761 missing functions and 74,675 missing regions. Proofs are under target/release-evidence/avif-derived-skip-v2-61f4dfdc-20261005/, with original reports and receipts beside it; canonical producer evidence is under target/release-evidence/avif-derived-skip-canonical-61f4dfdc-20261005/.

Preceding TIFF associated-alpha full campaign — 2026-10-05

The preceding TIFF full local report is target/release-evidence/coverage-tiff-associated-alpha-20261005.json, SHA-256 97b19bdff5d96774f0b4499a7177bbc25d0746eb51477cda829f201d44056e87. make coverage uses nightly-2026-07-16, an empty RUSTC_WRAPPER, two build jobs and the dedicated target/llvm-cov-tiff-associated-alpha-20261005 target.

Metric Covered / total Percent
Lines 89,044 / 135,657 65.639075%
Branches 17,363 / 31,216 55.622117%
Functions 4,984 / 8,682 57.406128%
Regions 136,223 / 210,663 64.663942%

All alpha floors pass. The separate 100% verifier exits 1; all four completion requirements remain unmet. All seven test binaries pass 3, 4, 1, 57, 7, 1 and 68 tests, with zero failures or ignored tests. The ordinary inventory has 2,067 rows: 1,604 active decode, 431 active encode and 32 planned encode. TIFF has 200 decode rows, JPEG 216 and AVIF 522. The 25 target-only fault contracts remain separately reported with oracle status not_applicable.

All 5,094 source/configuration/script/fixture hashes remain exact across the fixed-source incremental and full campaigns: 5,093 repository files and one ignored ambient Finder file. The original full source receipt preserves its precommit base revision 3489d205f3acd4698d4c336eadfd1e756e40ff7a; receipt SHA-256 is 009eff76925febd98014667645a7fae0233f87eaa02020fde320d48d56999d32. Human evidence documentation is outside that inventory. Native full aggregate totals and selected-report coordinate totals remain distinct.

All eight formatting/strict-Clippy gates pass, including coverage-nightly, JPEG benchmark and SSE2/AVX2 cross-compilation. All 33 feature lanes pass with all 5,004 captured file hashes unchanged: 11 native runtime, 11 WASI runtime and 11 browser-target compile/Clippy/rustdoc lanes. The feature receipt has SHA-256 b8773060f79d62247a44b732187028308116bbee26c47677a238778d41c910ba. The origin inventory remains 140 guards across 20 files. Private unit tests, unsafe code, coverage exclusions and ignored cases are absent from this change.

Complete TIFF associated-alpha parity — 2026-10-05

Twenty-two complete ordinary inputs cover contiguous/separate sample planes, multiple strips, clipped edge tiles, raw/Deflate/LZW/PackBits compression and per-plane horizontal prediction. The maintained scripts/generate_tiff_associated_alpha_fixtures.py is called by the normal TIFF asset hook. It includes nonzero hidden RGB at alpha zero, stored colors above alpha, alpha 1/2/17/254, opaque samples and payloads crossing cancellation checkpoints. Two output-directory generations and --check reproduce every input byte. All 180 previously tracked TIFF inputs and 178 prior decode rows, 59 encode rows, encoded reference JSON, other-format rows and 25 faults remain exact. Inputs contain storage samples and selectors; the live oracle owns all normalized expected pixels and failures. The final 22-input regeneration receipt has SHA-256 183af3b4daf63b2158bd59f8ea44dce8bc526c94a8b388c0ae5e39267adb6407.

Pinned Pillow 12.2.0 independently establishes inspection/verification success for all 22 inputs, 18 exact pixel successes and four materialization failures. The raw separate importer accepts three declared RGB planes with the alpha plane omitted, retaining colors with zero alpha. Declaring the first alpha block instead fails with ValueError: unknown raw mode for given image mode. These boundary inputs retain every payload and byte-count byte; only the offset count changes. They are ordinary parity cases. Their malformed-ledger specification status is ambiguous, because the complete TIFF storage is valid and the reference's raw band importer lacks that decoder. The ledger preserves 558 prior classes and adds four, for 562.

Associated RGBA normalization now runs in place: transparent pixels clear, opaque pixels retain their channels, and intermediate alpha uses truncated channel * 255 / alpha, clipped to 255. The source descriptor still records SourceAlpha::Premultiplied. Raw separate planes without an alpha block retain their reference-defined transfer samples. A shared pixel helper and 1,024-byte cancellation chunks add no pixel allocation or raster copy. One local Clippy expectation documents the exact arithmetic invariant: byte multiplication is at most 65,025 and the division arm's alpha is 1..=254. It excludes no source from coverage. This correction has no throughput claim.

The preserved old binary mismatches all 18 initial inputs: 16 wrong normalized rasters and two incorrectly successful raw planar decodes. Two further first alpha-block inputs also expose the error; two omitted-plane controls already match and preserve that leniency. The fresh public probe matches all 22 final cases, with all inspection/verification boundaries retained. The canonical matrix supplies wrapper, cancellation, metadata, sequence and structured-error checks. The focused green receipt has SHA-256 cdaa78609447990e5f58d2a92592c96257668cdcdd6adb3b3cd35360ee510e7b. The primary behavior is Pillow's Unpack.c RGBa unpacker and TiffDecode.c separate-plane completion, pinned to tag 12.2.0 and preserved in ignored proof. The tag resolves to commit 3c41c095064200a02672d89cc5ff629eaf4b0d4f; the saved commit-addressed source text is provenance and was neither compiled nor executed.

Incremental measurements and producer receipts

Changed source is measured afresh: 178 prior ordinary TIFF rows, then batches of eight contiguous, eight compressed separate and six raw boundary rows. Every run passes with all 387 instrumented artifact hashes fixed. Raw profiles are reset independently and fresh nonempty profiles are required. Initial Cargo execution including compilation takes 124.120 seconds; later batches take 0.843–1.003 seconds under concurrent checks. These are workflow timings.

Audited optional producer sidecars bind original report hashes, all 110 measured source files, the frozen build identity and passing canonical row logs. Coverage MCP verifies region union 6,116 → 6,153 / 210,643: gains are 28, one and eight. The separately audited LCOV line union is verified 3,967 → 3,999 / 131,156. These selected denominators differ from full aggregate totals and do not establish a full-suite regression comparison. JSON line and branch unions return incomparable; branch detail contains 31,210 coordinate arms against 31,216 native arms. Those responses are kept without replacing native totals or inventing missing branch identities.

The full run still has 46,613 missing lines, 13,853 missing branch outcomes, 3,698 missing functions and 74,440 missing regions. In particular, selected gains include newly implemented conversion behavior and are not a claim that 37 historical full-suite gaps disappeared. Historical managed ledger metrics, run/snapshot IDs and measured-input hashes remain unchanged. Evidence is under target/release-evidence/tiff-planar-alpha-3489d205-20261005/, with reports and feature receipts beside it. Wider ExtraSamples-zero and LA layout differences from the exploratory 128-input family remain unimplemented ordinary gaps.

Preceding JPEG scan-declaration full campaign — 2026-10-05

The preceding JPEG full local report is target/release-evidence/coverage-jpeg-sos-20261005.json, generated by make coverage with nightly-2026-07-16, an empty RUSTC_WRAPPER, two Cargo build jobs and the dedicated target/llvm-cov-jpeg-sos-20261005 target. Its SHA-256 is 5b6ca500bae7c9d3d2add1b9145c7ccf15afbc7879056e43853388a7cff67b0d.

Metric Covered / total Percent
Lines 88,995 / 135,609 65.626175%
Branches 17,343 / 31,196 55.593666%
Functions 4,983 / 8,681 57.401221%
Regions 136,168 / 210,608 64.654714%

All alpha floors pass. The separate strict verifier exits 1 because all four 100% requirements remain unmet. All seven test binaries pass 3, 4, 1, 57, 7, 1 and 68 tests, with no failures or ignored tests. Its report-era ordinary inventory contains 2,045 rows: 1,582 active decode, 431 active encode and 32 planned encode rows. JPEG has 216 ordinary decode rows and AVIF retains 522. All 25 target-only fault contracts remain separately counted, with their reference status not_applicable.

All 5,053 recorded source/configuration/script/fixture hashes are unchanged between the fresh incremental and full campaigns. This inventory contains 5,052 repository files and one ignored ambient tests/fixtures/.DS_Store. The original source receipt retains precommit base revision 455d66aa3a8aa7e2bf6ac1da8c75198c8d96f316; its SHA-256 is fa9e7c99f5d287bd28509077d2c6bd57608c0657e2f98b343b580aeeb5492977. Human evidence documentation is outside that measured inventory.

All eight formatting/strict-Clippy gates pass, including debug, release, coverage-nightly, JPEG benchmark and SSE2/AVX2 cross-target checks. All 33 feature lanes pass with 4,959 recorded file hashes and capability artifacts unchanged. Native/WASI lanes execute tests; browser WASM lanes compile and run strict Clippy/rustdoc. Cross-target SIMD checks establish compilation and lint evidence, without x86 throughput measurements for this change. The origin registry retains 140 guards across 20 files. No private unit tests, unsafe code, source exclusions, ignored cases or lint exceptions are added.

Coverage MCP reads the full report with source unverified and tests unknown. It groups 74,440 missing regions into 6,647 missing-region groups, with AV1 inter-translation instantiations still the largest displayed groups. Missing counts also include 46,614 lines, 13,853 branch outcomes and 3,698 functions. Local command/hash receipts do not create a managed MCP source/build binding or named-test attribution. Historical managed ledger metrics and identities remain unchanged; current integrity hashes and inventory counts are separate.

Complete JPEG scan-length and component-count parity — 2026-10-05

Eleven complete public inputs preserve the source entropy, scan order and final EOI bytes, changing only the selected SOS length and, where declared, component count. The maintained generate_jpeg_sos_edge_fixtures.py uses the normal JPEG asset hook, pinned source/output hashes, bounded shared marker walking and fresh pinned Pillow lifecycle calls. Two separate output-directory runs and --check reproduce all eleven bytes exactly; all 216 prior JPEG input files remain unchanged. Inputs contain no Rust outcomes.

Ordinary case Bytes Complete input SHA-256
error_sos_length_0 4,564 729419da5fe9727a0f6d751a6865c55e44bcd95094bf153c06cc7e382ce2e4d0
error_sos_length_1 4,564 a744fc417d07b52a16f2dd1f3ac0f7e784803c64b88423c2342f07c1d1ff7223
error_sos_length_2 4,564 066f03bcef810cb346ff6f55ffdb1cbab465b375d1832e894a542d2706062929
error_sos_length_11 4,564 5f235865d0e748c1f67a12d63ac883a43c73eea66cd255ae44f7e47a1534e960
error_sos_length_13 4,564 121633f20c3b9b7e4fc33e80ea817fbf6d7e4cab6a6eab2d4ab791cad029ed3d
error_sos_length_65535 4,564 63c54401762bd11614feb80554c736d1d8c80ba8be003c9d570224deefd47edb
error_sos_zero_components_length_6 4,564 538b1e21c0c658ef42b5d053ff6c379c0f7ea9a5f40ee2f53140ae3a4f8754fa
error_sos_five_components_length_16 4,564 e192d29496bf30ab3f4ea34e2f8dc5fb3608ad66942475153695dc10b5d2c393
error_sos_255_components_length_516 4,564 fffe6aba1f8e5ed5d232db2bc6eded2ddaaf20c4b4b13c11d1577cf6dbd3e4b8
error_progressive_second_sos_length_7 3,939 eb1f33e9234cb7b8ab4ebabfb199c3eb255107a67b3e9ce468eaf81b07c0298e
error_baseline_multiscan_second_sos_length_7 649 d5dd86cf6d57ea40449b16e137de0a9403512c831f5d4bcee6c995ea8ee6c232

Pinned Pillow 12.2.0 with bundled libjpeg-turbo 3.1.4.1 detects every input as JPEG. Ten inputs open, inspect and verify with the unchanged source metadata, then both pixel workflows fail with builtins.OSError and broken data stream when reading image file. The UINT16_MAX declaration instead fails at open with Truncated File Read. Three complete valid source controls and additional valid one-/four-component controls retain exact Pillow pixels.

The old target incorrectly materialized all six length mutations and both later-scan mutations. Lengths 0/1 also incorrectly failed inspection and source opening for verification. The three count mutations already failed as malformed input; they now validate the reference's scan-shape boundary before component reads. They are regression cases, not additional claimed old mismatches.

Inspection now stops at SOS lengths 0/1 after the bounded length read, matching Pillow's open behavior. Normal payload bounds, truncated length fields and other markers retain their existing handling. Pixel parsing reads the length and count, preserves the existing zero-component error, then requires at most four components and exactly 2 * count + 6 bytes before allocation or table reads. The saturated u16 arithmetic is exact for every byte-sized count (maximum 516); strict Clippy passes without a new allowance. The check runs once per scan and adds no pixel-loop work or copies. This is a compatibility and validation fix, without a measured throughput claim.

The exact primary source is tag 3.1.4.1, commit 9217719d3a58633923b096af4c1d50d304768a64. Stored tag and commit-addressed jdmarker.c bytes both have SHA-256 1dd922aff8f92ece4f8f2b11eea08cd49b2e232de797ee98db9e331f6d0e3296; its get_sos reads length and count before validating the shape. Independent review reproduced the complete inputs and verified all entropy/tails without calling the repository generator or either codec.

The preserved red probe matches the root dependency lock, including wide 1.7.0. The fresh green probe matches all eleven ordinary outcomes, preserves exact Debug/display diagnostics, stages, offsets and identities of all seventeen prior SOS rows, and preserves complete metadata/pixels for five normal controls. Static JPEG sequence failures retain their existing StillDecode stage. Initial observer field/lock/tooling failures and the first green observer's executable-mode failure remain unsuccessful separate evidence; no result from them becomes a passing receipt. The final green receipt is public-green-receipt-v2.json, SHA-256 13a8f62b4ed4346a1178bcbbdd8d16a343e7347f2adf3c6198dbb214469d2d79. Canonical Pillow regeneration preserves all 205 old JPEG decode rows, 81 encode rows, encoded/raw bytes, every other format row and all 25 fault rows. The malformed ledger preserves 547 prior classes and adds eleven, for 558 total.

Incremental execution and Coverage MCP limits

Changed source requires a fresh baseline. Twelve selections use the same finished source and identical hashes for all 387 compiled artifacts: the previous 205 ordinary JPEG rows plus its one existing target-only allocation fault, followed by the eleven ordinary cases individually. Every selection passes. The fault remains oracle_status: not_applicable; no new injected failure is needed for input-reachable scan validation.

Each selection resets only raw profiles, uses --no-clean, and requires fresh nonempty profiles before reporting. The first selection takes 95.456 seconds including the build; subsequent Cargo executions take 0.789–0.828 seconds. These are workflow timings with concurrent checks, not codec throughput.

Coverage MCP and the independent LCOV union agree on 5,630 to 5,634 covered line coordinates out of 131,108. The first length-zero case adds four; the other ten retain distinct boundary/later-scan regression value with zero additional line-coordinate gain. This selected coordinate denominator differs from the full aggregate line denominator above. No earlier-source report or selected-test absence is used to claim a regression.

Both LCOV and LLVM JSON branch-union requests return incomparable because normalized baseline detail does not match reported branch totals. Those responses are preserved; no aggregate branch union is claimed. Bounded raw parser/header observations and the full four-metric report remain separate from this provider limit. The original line query was limited, with source unverified and tests unknown. A subsequent read-only audit adapted the immutable producer receipts into optional sidecars before the TIFF source change. Coverage MCP then verified 9,155 → 9,157 / 210,588 regions for all eleven JPEG cases, with no report or source mutation. Branch union remained incomparable: 31,190 coordinate arms versus 31,196 native arms. This historical fixed-source result and its producer audit are preserved in the JPEG bundle; it is not a comparison against the later TIFF source.

The ignored evidence bundle is target/release-evidence/jpeg-sos-455d66aa-20261005/, with the original failed attempts, pinned primary source/inputs, generator and independent reviews, red/green outcomes, preservation/accounting receipts and strict checks. Incremental/full LLVM reports, source receipts, MCP responses and the 33-lane feature receipts are beside it in target/release-evidence/.

Rejected JPEG packed quantizer correction deletion (2026-10-05)

A separate worktree at 78fc8c8c24126b6c095f3746569dba0bfaf94921 tested removing the ceiling-reciprocal correction from the private packed four-block JPEG quantizer. An independent review checked all 13 byte-origin callers, the clamped quantization tables, pinned wide 1.7.0 arithmetic, and the reciprocal bound. The arbitrary-i32 quantizer retained its correction. The candidate passed strict Clippy and formatting, 81/81 public JPEG encode rows (379 calls, zero panics), 205/205 decode rows, and all 20 complete-byte baseline/candidate output comparisons before each timing campaign.

The fixed paired-five-rounds and paired-five-rounds-reversed campaigns (local sessions 53108 and 36102, both exit 0) each completed 40 whole-public-call workloads across 20 configurations and five rounds, with opposite starting order and the unchanged TurboJPEG 3.2.0 oracle following each Rust variant. Each campaign saved 800 raw records. Source, binary, and oracle-library hashes were unchanged. The Apple M3 Pro ARM64 host used macOS 15.7.7 and Rust 1.96.1 with LLVM 22.1.2; the Rust builds used ordinary release settings and the C harness used -O3 with TurboJPEG SIMD enabled.

Ratios below are candidate/baseline median paired times, first/reversed campaign. Values above 1 mean slower complete calls.

Encode workload Raw ratio Oracle-normalized ratio
RGB 128x128 Q10 4:2:0 1.0727 / 1.0729 1.0727 / 1.0725
RGB 512x512 Q10 4:2:0 1.0685 / 1.0825 1.0729 / 1.0886
RGB 1024x1024 Q85 4:2:0 1.0290 / 1.0433 1.0323 / 1.0411
RGB 128x128 Q85 4:2:2 1.0572 / 1.0597 1.0552 / 1.0324
Grayscale 128x128 Q85 1.0504 / 1.0628 1.0550 / 1.0586
Grayscale 512x512 Q85 1.0628 / 1.0749 1.0610 / 1.0728

Of the 17 configurations admitted to the changed encoder path, 15 had slower raw medians in both campaigns and 14 had slower normalized medians in both. None improved both raw and normalized medians in both campaigns. CMYK128's small raw improvement reversed after normalization; RGB512 Q85 changed direction between campaigns. Three unaffected encode configurations and all 20 decode workloads remain separately reported controls, not a combined score.

No repository Cargo, test or profiling jobs overlapped the timing window. The first-start process snapshot showed unrelated Python jobs and macOS media analysis consuming CPU. Those heavy jobs were absent from the reverse-start snapshot, which retained smaller background activity. Some controls also varied, including progressive decode; these measurements do not establish a physically idle host or attribute every timing change to the quantizer. Repeated material encoder penalties and the absence of a repeatable acceptable benefit justified rejection. Static ARM64 instruction deletion did not establish lower runtime cost. No numeric SSE2, AVX2, or world-fastest result is claimed, and the candidate was not applied to main.

The ignored evidence bundle is target/release-evidence/jpeg-packed-quantizer-78fc8c8c-20261005/: both raw campaigns and summaries, comparison.json/CSV, exact JPEGs, source snapshots, patch, binaries, build/check/range-review receipts, hardware/load snapshots, and the rejection and independent measurement review. The baseline encoder SHA-256 was 5451cb6570679fe9ea13b385900e5270581220e35cf1993c09eeb0b1a799afab; candidate encoder df73cfae0d0accc85e54a2e2d11412915d26a54d4778b38153797e59356ae7a7; candidate patch 85548d5ab3a7ee901d022b86a5ccf0e6acb25e2e0646ef934c1c28629a10c5e1.

Preceding AVIF container and multi-tile full campaign — 2026-10-05

This preceding full local report is target/release-evidence/coverage-avif-multitile-container-v2-20261005.json, generated by make coverage with nightly-2026-07-16, an empty RUSTC_WRAPPER, two Cargo build jobs and the dedicated target/llvm-cov-multitile-container-v2-20261005 coverage target. Its SHA-256 is 027665b7e2cb4e54182b7929ecd568ff83941b839f3708d29277747c4720103e.

Metric Covered / total Percent
Lines 88,986 / 135,603 65.622442%
Branches 17,338 / 31,192 55.584765%
Functions 4,983 / 8,681 57.401221%
Regions 136,157 / 210,598 64.652561%

All alpha floors pass. The separate strict verifier exits 1 because all four 100% requirements remain unmet. All seven test binaries pass 3, 4, 1, 57, 7, 1 and 68 tests, with no failures or ignored tests. They exercise 522 ordinary AVIF decode rows, 25 separate target-only fault contracts and 88 native loop witnesses. At that report’s source, the ordinary inventory contains 2,034 rows: 1,571 active decode, 431 active encode and 32 planned encoder rows.

All 5,041 recorded local source/configuration/script/fixture hashes remain unchanged between the fresh incremental and full campaigns. That inventory contains 5,040 files committed in the checkpoint and one ignored ambient tests/fixtures/.DS_Store; it is not a count of newly created source files. The original local receipt preserves its precommit base revision. A separate Git binding checks the measured files against committed blobs without rewriting that receipt. Documentation changed after execution is outside this measured source inventory.

All eight formatting/strict-Clippy gates pass, including debug, release, coverage-nightly, JPEG benchmark, SSE2 and AVX2 cross-target checks. All 33 feature lanes pass with the 4,940 recorded local file hashes unchanged and capability artifacts unchanged. Native/WASI lanes run tests; browser WASM lanes compile and run strict Clippy/rustdoc. Cross-target SIMD checks establish compilation/lint evidence. They supply no x86 throughput measurement. The coverage origin registry has 140 guards across 20 files, with no source exclusions. No new private unit tests, unsafe code, ignored cases or lint exceptions are introduced.

Coverage MCP reads this full report with source unverified and tests unknown. It groups 74,441 missing regions into 6,647 missing-region groups; these are not counts of wholly uncovered functions. Missing counts also include 46,617 lines, 13,854 branch outcomes and 3,698 functions. The largest displayed groups remain AV1 inter-translation instantiations. Local source/command/hash receipts do not create a managed MCP source/build binding or named-test attribution.

Complete AVIF container and multi-tile sequence cases — 2026-10-05

Thirteen new ordinary cases give 522 AVIF decode rows and 2,034 ordinary rows (1,571 active decode, 431 active encode, 32 planned encode). The 25 target-only fault contracts remain separate. These are current inventory/reference counts; execution and coverage claims require completed campaign receipts.

The maintained container-edge and multi-tile-motion generators use the normal AVIF asset hook, valid bounded BMFF boxes and byte-identical repeated inputs. Pinned live Pillow 12.2.0, with libavif 1.4.1/dav1d 1.5.3/libaom 3.13.2, supplies all public outcomes and raw pixels. No Rust outputs become ordinary inputs or references. Format detection succeeds for every input.

Ordinary case Bytes Complete input SHA-256 Live Pillow outcome
animated_tkhd_version_zero 1,223 eb7b131fb8288fbe8e67daf9e41e7f80bdf3f923d474177fac84a0b58550b674 Open, inspect, verify, decode and sequence decode succeed; all five frames, metadata and timing match the source.
animated_tkhd_version_zero_unknown_duration 1,223 ca1834317cd4b5b0db00130370cf3db3c94426ff7479c6414c4da2cabfef2a09 Open, inspect, verify, decode and sequence decode succeed; all five frames, metadata and timing match the source.
ipma_optional_zero_index 5,907 590514b40d0df05335861bf4345eb99068dc1264d38715f23f8e931c5376aaf3 Open, inspect, verify, decode and sequence decode succeed with unchanged still pixels and metadata.
error_ipma_essential_zero_index 5,907 b4f6f62f44d85c84a27bd98c1ad9529453c7ce31fa88602fc88eae0641b06c80 Open fails with PIL.UnidentifiedImageError; inspect, verify, decode and sequence decode report malformed input.
error_ipma_property_index_out_of_bounds 5,907 ca46ccb69a865f237092cf3ed7fb77862fa3faff112d311f860ecfb91eec77dd Open fails with PIL.UnidentifiedImageError; inspect, verify, decode and sequence decode report malformed input.
iloc_file_data_reference_1 3,077 d4b06f63b3bd3ce2bd409930b7c2892236000ff4583e70e771f4a21573dbb6af Open, inspect, verify, decode and sequence decode succeed with unchanged still pixels and metadata.
iloc_file_data_reference_65535 3,077 a9d263c7af3c3d1219cf2187bef5916ace90bf1018dfb6fa58650f99f51be0f7 Open, inspect, verify, decode and sequence decode succeed with unchanged still pixels and metadata.
iloc_idat_data_reference_1 5,906 b0689513b0693085ef11397fa967bcc56741ae79b80d8a81d4ef424ce561bea2 Open, inspect, verify, decode and sequence decode succeed with unchanged still pixels and metadata.
iloc_idat_data_reference_65535 5,906 756ea5b7a21c472cee85913fbb64260fccd5267f98900dd2b815760738f07eb4 Open, inspect, verify, decode and sequence decode succeed with unchanged still pixels and metadata.
animated_motion_multitile 1,264 c248f019a008e9dea4425e1d5f44d1418b44929604312d95a69a0a3ac5d4709f Open, inspect, verify, decode and sequence decode succeed; four exact RGB 256×128 frames, each lasting 100 ms.
animated_motion_multitile_split_groups 1,280 eb19bcebc0698dfa3149c76fb6828705b22e37f45e213b70541a61b3abd20b89 Open, inspect, verify, decode and sequence decode succeed; four exact RGB 256×128 frames, each lasting 100 ms.
animated_lossless_motion_multitile 1,327 24612186624c6b470a50a549d876469c8265976633afee87fa030d910cd0532b Open, inspect, verify, decode and sequence decode succeed; four exact RGB 256×128 frames, each lasting 100 ms.
animated_lossless_motion_multitile_split_groups 1,342 04b61cf8b3e9887ee651cec5dc055b5a102198de9f69e2ad64b4e183639cf596 Open, inspect, verify, decode and sequence decode succeed; four exact RGB 256×128 frames, each lasting 100 ms.

The two association errors retain cannot identify image file <bytes>. The essential-zero input asset is ipma_essential_zero_index.avif. Track mutations narrow tkhd version 1 to version 0 and rebase the file extent and chunk offset by twelve bytes, preserving other fields and media bytes. Both versions, including the UINT32_MAX duration sentinel, retain five frames and native one-play repetition. Association/data-reference mutations retain every media byte. Split-group variants preserve each encoded tile and parsed frame-header field, repacking complete sample extents and track tables.

Ordinary compatibility fixes

The Q100 pair exposed a real lossless sequence gap. Before the fix, public still decoding succeeded while both sequence decodes returned Unsupported/SequenceDecode/NotImplemented with decode sequence: AVIF sequence validation failed: AVIF sequence rendering has no completed color surface. Pillow decoded four RGB 256×128 frames. Source inspection traced the gate to comparing a full 256-pixel reference width with a checked 128-pixel tile width; the public probe alone did not locate the failing sample.

The generic lossless inter gate now admits validated, unreduced full references shared by checked tiles and preserves the previous admitted-width alternative. ScaleFactors still uses full current/reference dimensions; scaled == false requires exact dimensional equality. Depth/layout, surface, tile bounds and tool checks remain; local reconstruction/global prediction coordinates are unchanged. Fixed public sequence decodes of both Q100 variants match all four Pillow frames exactly, and still pixels equal frame zero. The Q80 source/split pair retains the same complete parity. This proves the bounded witnesses, not every possible multi-tile block grammar.

The four nonzero data-reference files exposed another ordinary gap: Pillow accepts 1 and 65,535 for construction method 0/file and 1/idat; the preceding Rust probe rejected all four at inspection, still decode and sequence decode. Pinned libavif read.c reads the field without storing/using it; idatStored selects local bytes. Both Rust parsers and the independent full sample inspector now consume the fallible u16 without rejecting its value. Reserved bits, supported methods, checked arithmetic and existing file/idat bounds remain. The field cannot select an external resource. Fixed public still/sequence pixels match the live Pillow witnesses without a fault label or private comparator.

Native provenance and preservation

Six new native observations cover both tkhd variants and all four motion inputs. All 82 prior record dictionaries and native artifact records/bytes remain exact. The 88-record bundle has 80 accepted complete decodes and eight malformed inputs; 267 artifacts total 9,816,480 bytes, including 9,293,948 Pillow frame bytes. Additional collections bind their actual compiler and observer-binary identities, preserving original metadata. Native repetition is 0 for both tkhd variants (one total play), and -1 for the motion inputs (infinite). The native index SHA-256 is 38b94714d241f811741a4116bb80cbb9e1479feb8360da99a001bad37037b159.

Canonical generation preserves all 509 prior AVIF operation observations, other-format observations and AVIF encode rows. Only sequence.loop_evidence.index_sha256 refreshes in 57 output rows and their 57 matrix rows. Existing native identities, input hashes, loop counts, pixels, durations, errors and flags stay unchanged. All prior 24 fault rows and 1,876 raw files retain exact values/bytes. The 37 new ordinary canonical raws match stored live Pillow bytes in full. Another 32 new files are six native witness inputs plus 26 Pillow frames. Only two association-error classes extend malformed accounting: all 545 prior class dictionaries remain exact, giving 547 classes. Later count/integrity updates are separately recorded accounting metadata.

Capacity-growth-only allocation contract

avif_retained_temporal_sample_reservation_failure is a separate target-only case using ordinary animated_motion_multitile_split_groups. Its av1.frame.retained_temporal_sample_reservation hook consumes only when a partial group's nonempty sample count exceeds spare vector capacity. Empty or already-fitting groups cannot consume it. usize::MAX additional nonzero-sized samples causes an actual deterministic try_reserve capacity failure without host OOM. Normal builds retain the actual sample request, existing error closure and ordering before pending-state publication.

The generic shared runner requires AVIF Dimensions at SequenceDecode and decode sequence: AVIF sequence validation failed: unable to reserve retained AV1 temporal-MV samples. Existing thread-local scoping consumes once and restores state on return or unwind. A successful retry must equal a fresh uninjected Rust sequence decode; its ordinary source independently checks exact Pillow frames. Injection/retry has oracle_status: not_applicable, not Pillow allocation attribution. The new hook is defensive_model; current origins total 140 guards across 20 files.

Identity and claim limits

Clean pinned libavif commit is 6543b22b5bc706c53f038a16fe515f921556d9b3; read.c SHA-256 is d2e4062f7030ffa5843a3c9cc4984e382a07782ce2241d8b5354fda888266e85. The Pillow handshake checks wheel/runtime pins. Public-probe receipts retain actual source/input hashes and locked dependency identities. Independent canonical/source audits are retained under target/release-evidence/avif-multitile-current-78fc8c8c-20261005/; generator, native and before/after proofs are under the companion next-public-gaps-78fc8c8c-20261005/ and avif-multitile-inter-candidate-78fc8c8c-20261005/ directories.

The existing native parity test now pins 267 artifacts and all 88 names, including the six new matrix source mappings. Its four existing test functions and preceding helper/assertion bodies are preserved. Fresh ignored native collections have their own build identity and ordering; publishing additions preserves the accumulated canonical index's record order and provenance.

Fresh incremental campaign and failed-run preservation

The first 15 selected runs pass on their recorded source. The subsequent full run fails only the old 235-artifact assertion in the existing native parity test. Its failed terminal receipt and log remain preserved; no successful full report is attributed to that run. The existing test's six new witness names and source mappings are added with the 267-artifact assertion. Source changed, so a fresh baseline and all 14 additions are remeasured in the separate v2 campaign; reports from the two source inventories are not combined.

The fresh baseline executes 509 preceding ordinary AVIF rows plus 24 preceding faults. Thirteen ordinary selections and one target-only fault then run separately. All 15 selections pass. Each case resets only profiles with cargo +nightly-2026-07-16 llvm-cov clean --profraw-only; the normal combined LCOV invocation uses --no-clean, followed by a separate JSON report. The receipt requires fresh nonempty profiles and keeps all 387 compiled-file hashes identical between selections. Profile absence cannot reuse stale profdata. The complete campaign takes 106.450857 seconds including its first build; subsequent selected Cargo calls take 0.809–0.866 seconds on this host. These are workflow timings, with no codec throughput claim.

The independent LCOV union and all 14 Coverage MCP incremental comparisons agree: 45,247→45,290 observed lines out of the fixed 131,102 selected-report coordinate denominator. Marginal gains in campaign order are 16, 3, 0, 0, 10, 1, 6, 1, 1, 0, 0, 0, 0 and 5 lines. The two Q100 sources and four data-reference inputs remain regression witnesses despite zero marginal lines after earlier selections. This selected denominator remains distinct from the full report's aggregate line total.

The retained allocation-error closure at frame.rs:1598–1602 has three LLVM regions, each with baseline count zero, selected fault count one and full-suite count one. The fault's structured error and retry assertions pass separately from its ordinary source's exact Pillow parity. Selected-report absences are not regressions. MCP retains limited coordinate evidence with source unverified and tests unknown. The 100% and fastest-codec goals remain open.

The avif-multitile-container-v2-* local receipts, immutable full source receipt, independent coverage audit and coverage-mcp-multitile-v2-* summaries retain these results. The current malformed and claim-integrity accounting is updated before the fresh campaigns, preserving all historical managed measurement IDs, counts, inputs and preceding report observations.

Preceding full AVIF location and temporal coverage — 2026-10-05

The preceding full local report is target/release-evidence/coverage-avif-iloc-temporal-20261005.json, generated by RUSTC_WRAPPER= CARGO_BUILD_JOBS=2 COVERAGE_REPORT=target/release-evidence/coverage-avif-iloc-temporal-20261005.json make coverage with nightly-2026-07-16. It records 88,946/135,595 lines (65.596814%), 17,313/31,190 branches (55.508176%), 4,982/8,681 functions (57.389702%), and 136,103/210,590 regions (64.629375%). All alpha floors pass. The strict 100% verifier exits with status 1 with all four requirements still unmet; that goal remains open. The report SHA-256 is 1de66283960b30d4afbf90213e54a0a111663a48a5d59ca37a341fe7a9de0f7f.

All seven test binaries pass: 3, 4, 1, 57, 7, 1 and 68 tests, with no failures or ignored tests. The matrix harness covers 509 ordinary AVIF decode rows, 24 separate target-only fault contracts and the native repetition bundle's 82 cases. The ordinary decode/encode inventory contains 2,021 rows: 1,558 active decode rows, 431 active encode rows and 32 planned encoder rows. All 505 preceding AVIF observations, other-format observations and 23 preceding fault rows remain unchanged.

The full local receipt records unchanged hashes for 4,957 local files: 4,956 tracked source, configuration, script and fixture files, plus one ignored ambient tests/fixtures/.DS_Store file. The expanded inventory includes 109 existing committed scripts and five new fixture files; it does not mean that 114 source files were created. The full receipt separately records the generated malformed_ledger.json and its claim_ledger.json integrity refresh after the incremental campaign. All executable source, input/reference and matrix hashes remain identical between those campaigns.

Relative to the preceding full report, covered counts increase by 36 lines, eight branch outcomes, four functions and 42 regions. Source totals increase by 30 lines, eight branches, two functions and 40 regions. Those changes span the generic inspection/decode staging fix and the new coverage hook; they are descriptive counts for different source. They remain separate from the 14 new line observations isolated by the same-source incremental campaign below. No source exclusions are used.

make fmt, make lint and make lint-x86-simd pass all eight recorded formatting/strict-lint gates with identical hashes for 153 Rust/configuration files. The SSE2 and AVX2 gates are cross-target compile/lint checks. All 33 feature lanes pass with all 4,855 recorded local hashes unchanged, including 4,698 codec fixture/observation files and the separate ambient Finder file. Native and WASI lanes execute runtime checks; browser WASM lanes compile and run strict Clippy/rustdoc checks. Capability artifacts remain unchanged. The two accounting-file updates made after these campaigns are recorded separately. The exact cfg(coverage) inventory is 139 guards across 20 files. No new private unit tests, unsafe code, ignored cases or lint exceptions are introduced.

Coverage MCP reads the full report with source unverified and test attribution unknown. It groups the 74,487 repository-wide missing regions into 6,648 missing-region groups; these are not counts of wholly uncovered functions. There are also 46,649 missing lines, 13,877 missing branch outcomes and 3,699 missing functions. The largest displayed groups remain repeated AV1 inter-translation instantiations. An AVIF display filter retains the global totals. Local command/hash receipts do not create a managed MCP source/build binding or named-test attribution.

Complete AVIF location cases and error staging — 2026-10-05

Four ordinary cases extend the existing indexed-idat input. All are complete files with valid enclosing BMFF box sizes. The maintained idat generator and normal AVIF asset hook construct their inputs; pinned live Pillow 12.2.0 produces the operation observations and raw reference. Its runtime is libavif 1.4.1, dav1d 1.5.3 and libaom 3.13.2. Repeated generation is byte-identical.

Ordinary case Bytes Complete input SHA-256 Live Pillow outcome
iloc_idat_split_extents 5,918 b92d22f904a48d380a99f7b91ff78aa73ab4fc73e9d2f8b71697d843881aa1bd Open, inspect, verify, decode and sequence decode succeed with the original pixels and frame metadata.
error_iloc_truncated_extent_index 5,896 62f5d6dd3b3cfb368030407977a2af434659c178c1412844781e43c03e25d8ed Open fails with PIL.UnidentifiedImageError; inspect, verify, decode and sequence decode report malformed input.
error_iloc_index_size_three 5,906 53be83151f9031fbc56c0f3bc91fd50f5c2b7b3376ac760fb662b458eadc572b Open fails with PIL.UnidentifiedImageError; inspect, verify, decode and sequence decode report malformed input.
error_iloc_idat_extent_out_of_bounds 5,906 1e0f61d11eb4cf291f4af89d3636ff874f517358e2eecb20d8b92d1a4a05e46b Open, inspect and verify succeed; decode and sequence decode fail with builtins.SyntaxError.

Format detection succeeds for all four. The two open failures retain the normalized Pillow message cannot identify image file <bytes>. The overrun retains the exact decode message Failed to decode frame 0: BMFF parsing failed. Its successful header is RGB, 128×128, one frame, so an inspection failure would violate the public contract.

The split input retains the nonzero base offset of eight. Its two zero-index extents use relative offsets eight and 1,405, with lengths 1,397 and 1,398; they concatenate to the original 2,795 AV1 bytes. The truncated-index case ends its bounded iloc after two of the four declared index bytes. The width case declares an unsupported three-byte index. The overrun changes only the extent length from 2,795 to 2,796: its relative end exceeds the 2,811-byte idat payload by one while remaining inside the outer file. Adjacent bytes cannot satisfy that item's source bound. All ftyp, original unreferenced mdat, non-iloc metadata children and idat/AV1 bytes remain unchanged. The AV1 payload SHA-256 is be0bf650b8612533577e4b47a60989bb3f092cfb256b81f3bd84e3b5ce8ea199. The split row compares all 49,152 decoded bytes with the independent reference.

The generic Rust inspection path now validates container/configuration metadata while retaining declared idat spans with checked arithmetic. Decode extraction checks every item's file/idat bound before using encoded payloads. Grid-descriptor and retained opaque-metadata reads remain bounded to the selected source; opaque extents are checked before reserving their declared size. File-backed items and sequence sample-table spans retain their existing bounds checks. This preserves Pillow's lazy item-payload failure stage without permitting a read outside idat or adding a case-specific comparator.

Independent bit-depth enrichment now uses inspect_color_configurations to read bounded item properties or track sample descriptions without reading item extents. The full sample inspector remains strict and rejects the overrun with item extent exceeds source bytes. All 29 preceding inspector function bodies and all 470 successful preceding inspection-depth values are unchanged. generate_decode_refs.py catches only public Pillow open failures when recording inspection errors; an independent enrichment failure now aborts generation instead of being mislabeled as a Pillow outcome.

During ordinary input/reference generation, 4,690 of 4,694 preceding fixture files stay byte-identical. The ordinary generator changes only the three AVIF aggregate JSON/index files; the concurrently changed origin registry belongs to the separate fault work. Four complete inputs and one raw reference are added, with no prior files deleted. All 505 preceding AVIF row dictionaries, other-format matrix rows and 23 preceding fault rows are unchanged. Later count/integrity updates are accounting metadata, separately recorded.

Nonempty temporal-sample allocation contract — 2026-10-05

The target-only row avif_tile_group_temporal_sample_reservation_failure reuses the ordinary animated_motion_chroma input. Its coverage-only point, av1.frame.tile_group_temporal_sample_reservation, is consumed only when a reconstructed tile has nonempty temporal-MV samples. Empty intra-frame work cannot consume it. A real try_reserve(usize::MAX) fails deterministically; the production request remains the actual sample count, with the same existing Dimensions error closure.

The shared public runner requires AVIF SequenceDecode and the exact message decode sequence: AVIF sequence validation failed: unable to allocate AV1 tile-group temporal-MV samples. It then checks a successful uninjected retry against a fresh Rust sequence decode, including all returned content. The ordinary source row separately supplies independent Pillow sequence/pixel parity. One-shot fault state is cleared before the retry. This row remains in the shared matrix's oracle_status: not_applicable lane; all 24 fault contracts are separate from the 2,021 ordinary rows. Ordinary image bytes cannot deterministically force this allocation failure.

Same-source incremental observations and accounting — 2026-10-05

The six selected runs first execute all 505 preceding AVIF rows plus 23 preceding fault contracts, then each of the four new ordinary rows and the new fault row separately. All selections pass. All 4,957 recorded local hashes remain unchanged throughout execution and the subsequent MCP comparisons. The independently checked LCOV coordinate union is 45,228→45,230→45,233→45,234→45,237→45,242 observed lines out of 131,094: gains of two, three, one, three and five lines, in the table order above followed by the temporal-sample fault. No coordinates are added or removed. This fixed selected-report denominator differs from the full report's 135,595 lines.

The truncated-index selection observes the error-return region at samples.rs:1122 in both inspection/decode instantiations: preceding counts zero/zero become four/two. The temporal-sample fault observes the existing allocation-error closure at frame.rs:2941–2943 once, from zero. Those exact regions are also observed in the full report. MCP's raw LCOV/LLVM results retain source unverified and tests unknown. These coordinate observations do not establish full-suite regressions, managed source binding or named-test attribution.

The preliminary make verify catches the stale generated malformed ledger. After all incremental tests and MCP comparisons finish, the maintained generator adds exactly the three ordinary AVIF error classes, increasing the ledger from 542 to 545 classes while preserving all preceding class values. Only that ledger and its current claim-ledger integrity digest change between the incremental and full receipts. Rust runtime tests do not read the malformed ledger; executable source, inputs, references and the shared matrix stay unchanged. Historical managed run/snapshot identities, metrics and measured inputs are preserved. The later verification passes. Receipts are retained in target/release-evidence/avif-iloc-edge-cases-d9efb879-20261005/, the avif-iloc-temporal-* campaign paths and the corresponding coverage-mcp-iloc-* summaries.

Rejected aligned JPEG 4:2:2 conversion fusion — 2026-10-05

An isolated experiment based on d9efb879 fused RGB conversion with h2v1 chroma downsampling for no-token Cs422 inputs whose width is divisible by 16. It removed two full-size chroma allocations while preserving saturation before averaging. Both frozen variants passed 205 JPEG decode and 81 JPEG encode public matrix rows, strict Clippy and all 20 exact JPEG benchmark-encoded-byte comparisons.

The append-based variant took 1.0191× the baseline's time on the affected RGB 128 Q85 Cs422 encode workload. A direct-store refinement measured 0.9958× and 0.9927× in opposite-start five-round campaigns, while its oracle-normalized direction crossed (1.0029× / 0.9974×). Normal RGB 512 Q10 Cs420 encodes measured 1.0148× / 1.0089× and Q85 Cs420 encodes 1.0039× / 1.0139×, with higher normalized medians in both runs. Every complete 40-workload campaign and raw sample remains in the ignored target/release-evidence/jpeg-next-performance-d9efb879-20261005/ evidence.

Both variants were rejected and reverted. No JPEG optimization or speed claim was retained; these local ARM64 results do not establish x86 performance.

Preceding indexed-idat, color CDEF and H4 full campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-avif-indexed-idat-cdef-20261005.json, generated by RUSTC_WRAPPER= CARGO_BUILD_JOBS=2 COVERAGE_REPORT=target/release-evidence/coverage-avif-indexed-idat-cdef-20261005.json make coverage with nightly-2026-07-16. It records 88,910/135,565 lines (65.584775%), 17,305/31,182 branches (55.496761%), 4,978/8,679 functions (57.356838%), and 136,061/210,550 regions (64.621705%). Every alpha floor passes. The strict verifier still fails all four 100% requirements; that goal remains open.

All seven test binaries pass, including 57 coverage-matrix harness tests, 505 AVIF decode rows, 23 separate target-only fault contracts, the native repetition bundle's 82 cases, seven decode-policy tests and 68 feature-gate tests. The ordinary matrix contains 2,017 rows. All preceding Pillow case observations and 21 preceding fault rows remain unchanged. The local full receipt records unchanged hashes for 4,843 local files, including 4,842 tracked source, configuration and fixture files plus one ignored Finder metadata file. The report SHA-256 is 6a4d058c0d3a2c6dad13eea36f71da69bfcce4bcf69b9151f2b54c9bbb95db0e.

Relative to the preceding full report, covered counts increase by 18 lines, six branch outcomes, two functions and 24 regions. Source totals decrease by 362 lines, 14 branches, 13 functions and 470 regions across the H4 cleanup and new coverage hooks. These source-total changes remain separate from the eight additional line observations isolated by the same-source incremental campaign below. No source exclusions are used.

make fmt, make lint, make lint-x86-simd, make verify and all 33 native, WASI and WASM feature lanes pass. Strict lint retains identical hashes for 153 Rust/configuration files; the feature campaign retains all 1,334 input hashes without capability-artifact drift. The two new defensive fault points increase the exact cfg(coverage) inventory from 136 to 138 guards across 20 Rust files. Existing guard origins are retained. No new unit tests, unsafe code, ignored cases or lint exceptions are introduced.

Coverage MCP reads the full report as source-unverified with test attribution unknown. It retains 74,489 missing regions and 13,877 missing branch outcomes. The largest groups remain repeated AV1 inter-translation instantiations; the retained luma-only H4 fallback still has 24 unobserved branch outcomes. Local command/hash receipts do not create managed MCP evidence. This checkpoint makes no measured performance or fastest-codec claim.

AVIF per-tile CDEF region-map reservation fault contract — 2026-10-16

fault-contract:avif:avif_tile_cdef_region_map_reservation_failure reuses the active decode:avif:multitile_color_split_groups Pillow input, SHA-256 654ef88dd8ebc71a554c03f721ad97581fcf2d2df0d825020d267939eb8f5e34. Its coverage-only fault point forces the per-tile CDEF region-map reservation in entropy.rs to fail before resizing. The selected target-only contract passed 1/1: the public AVIF StillDecode Dimensions error has message decode: AVIF AV1 validation failed: unable to allocate AV1 CDEF region map, and retry output equals a fresh uninjected decode. oracle_status is not_applicable; the separate fault result does not contribute to Pillow parity counts. The hook is compiled only for coverage builds.

Coverage MCP finds no missing branch observation at entropy.rs:11308 in the selected report. The report has no source/build receipt and test attribution is unknown. The incremental comparison with the saved full baseline is incomparable because exact branch detail is incomplete, so this remains selected coordinate evidence and makes no aggregate coverage claim.

Report:

  • target/release-evidence/coverage-avif-tile-cdef-reservation-selected-20261016.json

Indexed AVIF item, color CDEF faults and luma-only H4 — 2026-10-05

The ordinary parity row iloc_idat_indexed_extent adds a four-byte zero extent index to the pinned method-one idat input. Its version-one iloc declares index_size = 4; construction method one leaves that index unused. Base and extent offsets remain eight bytes each, and all 2,795 AV1 bytes, idat payload, ftyp, original mdat and non-iloc metadata children remain unchanged. Bounded box reconstruction adds four bytes to iloc and meta. The complete 5,906-byte input has SHA-256 d90e970b5b9570c5091df64871d58a8f500c72df294c456037fad90cc1d92aac.

Live pinned Pillow 12.2.0 with libavif 1.4.1, dav1d 1.5.3 and libaom 3.13.2 accepts the indexed input with exactly the source image's pixels, metadata and frame observations. The maintained generator now verifies both idat variants before writing either and retains its original returned path. The normal AVIF asset hook and independent reference generator use the same workflow. Both repeated generation runs and generate_decode_refs.py --format avif pass. During input/reference generation, 4,689 of 4,692 preceding fixture files remain byte-identical; only the three aggregate AVIF JSON/index files change, and the new complete input and 49,152-byte raw reference are added. Subsequent current-count and integrity-hash updates affect only accounting metadata. Historical coverage metrics, measured inputs and managed identities remain unchanged.

Two new target-only rows, avif_assembled_cdef_region_map_reservation_failure and avif_assembled_cdef_active_map_reservation_failure, reuse the active multitile_color_split_groups parity input. Ordinary image bytes cannot reliably force either allocation failure. Each coverage-only point requests usize::MAX capacity at one fallible vector reservation, takes the existing structured AVIF still-decode Dimensions error, and then checks a successful uninjected retry against a fresh Rust decode. The existing ordinary source row separately supplies independent Pillow pixel parity. Error messages and production reservation counts remain unchanged; restoring the normal aliases reconstructs frame.rs byte-for-byte to the preceding production source. These rows stay in the shared matrix's separate oracle_status: not_applicable lane and do not increase Pillow parity totals.

The former decode_following_vertical_without_chroma has one caller: the third child of the closed H4 compositor, always 16x4 with no Full-resolution edges. Its locally owned state remains 4:2:0, while this child parses and publishes Monochrome syntax/output because it owns only luma samples. The new private decode_following_horizontal_four_without_chroma keeps sample checks, geometry consumption, quantization/CDEF bookkeeping, error ordering, palette rejection, the active H4 reconstruction and byte-identical output contexts. Four disconnected private helpers and unused edge preparation are removed after independent caller/reference review. All other surviving function bodies are byte-identical apart from the sole compositor call. block.rs shrinks by 422 lines, with final SHA-256 0f18d590882c560b9770503795b3a0c3520dd03c1fbd554bf0ef7930767abb00. The shared reconstruction, complete partition decoder and checked H4 fallback remain intact.

The incremental campaign separately runs all 504 preceding AVIF rows plus 21 preceding fault contracts, then the new parity row and each new fault row. Every selection passes with no failures or ignored tests. All 4,843 recorded local file hashes stay unchanged within the campaign. Coverage MCP's LCOV union estimates 45,192→45,194→45,197→45,200 observed lines out of 131,064: gains of two, three and three lines, respectively, with zero added or removed coordinates. Successful extent-index reads at container.rs:659 and samples.rs:1110 are observed; their error-return outcomes remain missing. The color CDEF allocation error closures at frame.rs:1993 and :2010 are observed in their selected reports. This subset denominator differs from the full report; the union is limited coordinate evidence and does not establish full-suite regressions or verified named-test attribution.

The preliminary verifier catches stale current provenance counts in the roadmap/documentation. They are synchronized to 138 before the successful final verification. The local full receipt explicitly records the later claim-ledger integrity refresh; all Rust and test input/reference hashes remain identical to the incremental campaign. Independent source, input, registry and numerical reviews have no actionable findings. Proofs and receipts are retained under target/release-evidence/avif-h4-no-chroma-specialization-0899215a/, target/release-evidence/avif-idat-indexed-20261005/ and the corresponding avif-indexed-idat-cdef-* campaign paths.

Preceding AVIF idat and following-chroma H4 campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-avif-h4-idat-20261005.json, generated by RUSTC_WRAPPER= CARGO_BUILD_JOBS=2 COVERAGE_REPORT=target/release-evidence/coverage-avif-h4-idat-20261005.json make coverage with nightly-2026-07-16. It records 88,892/135,927 lines (65.396867%), 17,299/31,196 branches (55.452622%), 4,976/8,692 functions (57.248044%), and 136,037/211,020 regions (64.466401%). All alpha floors pass; the strict report verifier still fails all four 100% requirements, so that goal remains open.

Every test binary passed, including all 57 coverage-matrix harness tests, 504 AVIF decode rows, the native repetition bundle's 82 cases, all 21 target-only fault contracts, seven decode-policy tests, all 68 feature-gate tests, determinism, animation, and runtime suites. The ordinary decode/encode inventory now contains 2,016 rows; previous Pillow observations are unchanged. The local source receipt confirms unchanged Rust, Cargo and input hashes throughout this full campaign.

Relative to the preceding full report, covered counts increase by 15 lines, four branch outcomes and 26 regions, with the function numerator unchanged. The same-source incremental comparison below isolates the new idat row's line observations. Source totals decrease by 6,732 lines, 1,038 branches, 388 functions and 9,914 regions after the H4 specialization supported by caller proof and removal of its disconnected code. These source-total changes are kept separate from executed coverage; no source exclusions are used.

Coverage MCP reads the report as source-unverified with test attribution unknown. It retains 74,983 missing regions and 13,897 missing branch outcomes. The largest groups remain repeated AV1 inter-translation instantiations. The retained following-H4 fallback still has uncovered outcomes; its reachability and checked fallback remain intact.

make fmt, make lint, make lint-x86-simd, make verify, and all 33 native, WASI, and WASM feature lanes pass. Lint and feature receipts confirm unchanged source/input hashes. The origin inventory remains 136 exact cfg(coverage) guards across 20 Rust files. No new Rust unit tests, unsafe code, source exclusions, ignored cases or lint exceptions are introduced.

AVIF idat item and following-H4 specialization — 2026-10-05

The ordinary parity row iloc_idat_primary_item relocates the pinned baseline's primary AV1 item into a complete meta/idat box. Its iloc version-one entry uses construction method one, data-reference index zero, and nonzero base and extent offsets of eight bytes each. Both container inspection and sample extraction must resolve the item relative to the idat payload. The sixteen padding bytes precede the unchanged 2,795-byte AV1 payload; the original mdat, ftyp, and non-iloc metadata children remain byte-identical. The 5,902-byte complete fixture has SHA-256 cc020ae1e91a2cad8c4f66b10165702bf11abc39a462a06b9665664f3c63c337.

Live pinned Pillow 12.2.0 with libavif 1.4.1, dav1d 1.5.3, and libaom 3.13.2 accepts the relocated item with the same complete image and frame observations as the source. The maintained reference generator produces exact pixels and operation contracts independently of Rust. Generate or verify the input with target/oracle-staging/pillow122/bin/python scripts/generate_avif_idat_fixture.py; the normal AVIF asset hook invokes it too. Repeated generation preserves the same bytes and refuses to replace a differing fixture. The input/reference generation step leaves all 4,687 preceding nonaggregate fixture files byte-identical, with previous JSON case observations and ordinary matrix rows preserved. Subsequent count and integrity-hash synchronization changes only accounting metadata; historical measured inputs and managed coverage identities remain unchanged. The AVIF decode inventory grows from 503 to 504; all 21 target-only fault rows retain their separate oracle_status: not_applicable lane.

The H4 refactor uses the following caller invariants. Both calls to the former decode_following_vertical belong to one locally owned Lossy420Decoder::with_qindex state, which fixes sampling to 4:2:0. Each receives 16x4 dimensions and no Full-resolution edges. Pending geometry is consumed by each successful syntax attempt, so both following leaves have parent Horizontal16x4 geometry. Encoded TX8x4 or TX4x4 child splits do not change that parent. The callback can access only the range decoder. The private entry is now decode_following_horizontal_four_chroma.

Sample-depth and geometry checks, quantization/CDEF bookkeeping, syntax/error sequencing, palette rejection before reconstruction, the active H4 reconstruction, and visible output/context updates are retained. The complete partition decoder, normalized Full/high-depth path and H4 compositor remain. The source proof disconnects 63 private helpers together with their unused aliases, constants, neighbor type and twelve unread fields. Four already disabled private tests used only removed helpers; they are retired. A mixed edge test retains its live right-edge assertion. No public parity case is removed. block.rs shrinks by 8,365 lines; the final source SHA-256 is c389592f0ba11d479ceb3ff0277b6148d7a3b94093ff7d0449828b0362f586c7. No coverage exclusions, unsafe code, ignored cases or new lint exceptions are introduced.

Structured caller/reference proofs, preserved baseline/candidate source, lint and feature receipts with source hashes, and the live input/reference receipts are retained under target/release-evidence/avif-h4-following-specialization-3e4ab357/, target/release-evidence/avif-idat-primary-20261005/, and the corresponding avif-h4-idat-* campaign paths.

The incremental campaign runs all 503 preceding AVIF rows and the new row separately on identical source; both selections pass. Its local receipt confirms unchanged Rust, Cargo and input hashes. Coverage MCP's LCOV union estimates 43,755→43,770 observed lines out of 131,419, a fifteen-line gain (0.011414 percentage points), with zero added or removed coordinates. The new row observes 14,754 lines; 14,739 overlap the preceding subset. The previously missing Idat selection at container.rs:642 and relative-span calculation at samples.rs:1124 are observed in its selected LLVM report. This subset denominator differs from the full campaign. MCP still reports source/build identity unverified and test attribution unknown; the local command/hash receipt does not create managed evidence or establish full-suite regressions.

Preceding Full-chroma H4 cleanup campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-avif-h16x4-cleanup-20261005.json, generated by RUSTC_WRAPPER= CARGO_BUILD_JOBS=2 COVERAGE_REPORT=target/release-evidence/coverage-avif-h16x4-cleanup-20261005.json make coverage with nightly-2026-07-16. It records 88,877/142,659 lines (62.300311%), 17,295/32,234 branches (53.654526%), 4,976/9,080 functions (54.801762%), and 136,011/220,934 regions (61.561824%). All alpha floors pass; the strict report verifier still fails all four 100% requirements, so that goal remains open.

Every test binary passed, including all 57 coverage-matrix harness tests, 503 AVIF decode rows, the native repetition bundle's 82 cases, all 21 target-only fault contracts, seven decode-policy tests, all 68 feature-gate tests, determinism, animation, and runtime suites. The 2,015 ordinary decode/encode rows and their Pillow references are unchanged.

The covered numerators are identical to the preceding full campaign. The caller-proven dead-code cleanup removes 457 reported lines, 84 branches, 15 functions, and 713 regions from the source totals; no coverage exclusion or synthetic case produces this change. Coverage MCP reads the report as source-unverified with test attribution unknown. Its totals retain 84,923 missing regions and 14,939 missing branch outcomes. Uncovered paths in the retained vertical fallback remain open.

make fmt, make lint, make lint-x86-simd, make verify, and all 33 native, WASI, and WASM feature lanes pass. The origin inventory remains 136 exact cfg(coverage) guards across 20 Rust files. No Rust unit tests, unsafe code, source exclusions, or new lint exceptions are introduced by the cleanup.

Preceding CDEF fault-contract campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-cdef-region-map-20261005.json, generated by RUSTC_WRAPPER= COVERAGE_REPORT=target/release-evidence/coverage-cdef-region-map-20261005.json make coverage with nightly-2026-07-16. It records 88,877/143,116 lines (62.101372%), 17,295/32,318 branches (53.515069%), 4,976/9,095 functions (54.711380%), and 136,011/221,647 regions (61.363790%). All alpha floors pass; the strict report verifier still fails all four 100% requirements, so that goal remains open.

Every test binary passed, including all 57 coverage-matrix harness tests, 503 AVIF decode rows, the native repetition bundle's 82 cases, all 21 target-only fault contracts, seven decode-policy tests, all 68 feature-gate tests, determinism, animation, and runtime suites. The 2,015 ordinary decode/encode rows and their Pillow references are unchanged by this slice. Fault results remain a separate oracle_status: not_applicable lane.

Coverage MCP reads this full report as source-unverified with test attribution unknown. It reports 85,636 missing regions and 15,023 missing branch outcomes. The monochrome CDEF region-map allocation error closure is now covered. The same-source incremental line comparison below isolates the new case's coordinate observations; full-report denominator changes are reported intact.

make fmt, make lint, make lint-x86-simd, make verify, and all 33 native, WASI, and WASM feature lanes pass. The origin inventory records 136 exact cfg(coverage) guards across 20 Rust files. No source exclusions, Rust unit tests, unsafe code, or lint exceptions were added in this slice.

Preceding AVIF edge campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-avif-edges-20261005.json, generated by RUSTC_WRAPPER= COVERAGE_REPORT=target/release-evidence/coverage-avif-edges-20261005.json make coverage with nightly-2026-07-16. It records 88,864/143,107 lines (62.096194%), 17,293/32,316 branches (53.512192%), 4,975/9,095 functions (54.700385%), and 136,002/221,642 regions (61.361114%). All alpha floors pass (59%, 46%, 52%, and 58% respectively). The strict report verifier still fails all four 100% requirements; that goal remains open.

Every test binary passed, including all 57 coverage-matrix harness tests, 503/503 AVIF decode rows, the native repetition bundle's 82 complete cases, all twenty target-only fault contracts, seven decode-policy tests, determinism, all 68 feature-gate tests, animation, and runtime suites. The matrix contains 2,015 decode/encode rows. The unchanged fault contracts remain a separate lane with oracle_status: not_applicable, outside Pillow parity counts. The initial full run caught the native repetition harness's stale 232-artifact inventory; its exact inventory now includes the new sequence and all 235 artifact hashes, and the repeated full campaign passes.

Coverage MCP reads the final report as source-unverified with test attribution unknown. It reports 85,640 missing regions and 15,023 missing branch outcomes. The largest groups remain AV1 inter-translation and vertical decode instantiations in block.rs. Repeated generic instantiations dominate; these coordinates are leads for source review, not direct fixture prescriptions. The final same-source incremental comparison is recorded below. Source and harness edits changed full-report denominators, so differences from the preceding full report are not an isolated execution gain.

make lint, make lint-x86-simd, make fmt, make verify, and all 33 native, WASI, and WASM feature lanes pass. The origin inventory remains 135 exact cfg(coverage) guards across 20 Rust files, with no source exclusions. No new Rust unit tests, unsafe code, or lint exceptions are introduced.

Preceding complete-source campaign — 2026-10-05

The preceding full local report is target/release-evidence/coverage-current-source-accounting-20261005.json, generated by RUSTC_WRAPPER= COVERAGE_REPORT=target/release-evidence/coverage-current-source-accounting-20261005.json make coverage with nightly-2026-07-16. It records 88,864/143,127 lines (62.087517%), 17,279/32,344 branches (53.422582%), 4,974/9,095 functions (54.689390%), and 136,005/221,676 regions (61.353056%). The project alpha floors pass (59% lines, 46% branches, 52% functions, 58% regions), while the separate 100% requirement still fails and remains open.

All test binaries in the campaign passed, including all 57 coverage-matrix harness tests, seven decode-policy tests, determinism, all 68 feature-gate tests, animation, and runtime suites. The shared matrix contains 1,995 decode/encode rows and twenty target-only AVIF/JPEG fault contracts in a separate lane with oracle_status: not_applicable; all twenty contracts passed. The full AVIF decode matrix passed 483/483, including both lossy 4:2:0 four-Square8 parity cases, the skipped color/alpha CDEF case, and the 33×17 I422 super-resolution case's Pillow odd-width right-edge chroma behavior.

Coverage MCP reads the full LLVM report as source-unverified with test attribution unknown because it carries no source/build receipts. Its region and branch totals report 85,671 missing regions and 15,065 missing branch observations. The largest groups are AV1 inter-translation and vertical decode instantiations in block.rs; repeated generic instantiations dominate the result, so the coordinates are leads for source review rather than a direct case prescription. The targeted branch scan still reports missing outcomes in Lossy420Decoder::decode_following_vertical (block.rs:67556); neither lossy Square8 parity row adds observations there. The frame.rs branch scan also reports 35 missing outcomes in assemble_monochrome_tiles, including inconsistent or absent per-tile filter metadata paths. MCP does not attribute observations to tests. The full report includes all twenty fault-contract rows; source/build receipt-bound attribution remains unavailable.

The current coverage-origin inventory records 135 exact cfg(coverage) guards across 20 Rust files. All source coverage(off) attributes have been removed. Rust's strict Clippy policy, coverage-hook Clippy configuration, and x86 SSE2/AVX2 lint targets pass without new lint exceptions. Target fault injection remains compiled only for coverage builds.

AVIF configuration precedence and film-grain edges — 2026-10-05

Twenty new complete-file manifest cases use live pinned Pillow 12.2.0, libavif 1.4.1, dav1d 1.5.3, and libaom 3.13.2. Fourteen succeed completely, five fail during opening or first-frame decoding, and one succeeds on frame zero before rejecting an unlisted grain reference in frame one. The ordinary public runner executes all twenty successfully after the fixes. These are Pillow parity inputs; the twenty target-only fault contracts remain a separate unchanged lane.

The configuration generator preserves BMFF lengths, item extents, and AV1 media bytes while changing redundant declarations or a later duplicate property. Seven cases establish that decoded sequence fields take precedence over differing profile, level, tier, monochrome, subsampling, and chroma position declarations. Two depth disagreements between the selected pixi and av1C properties require opening errors. Two later duplicate pixi properties retain the first property's precedence. Two matching ten/twelve-bit container declarations retain the actual eight-bit sequence pixels, and one accepted twelve-bit declaration has highBitdepth clear. Declared depth metadata remains independently identified; decoded storage and conversion use the validated AV1 sequence depth.

Before fixes, the original nine configuration cases failed, both duplicate property cases failed, both declared-versus-sequence depth cases failed, and the tolerated twelve-bit flag case failed. Rust now validates the selected first pixi against the cached av1C depth and follows libavif's twelve-bit flag precedence. The redundant configuration/sequence equality check is removed. Bounded container framing, actual AV1 syntax, repeated sequence consistency, sample bounds, and checked plane/conversion validation remain. No additional pixel allocation or repeated configuration payload parse is introduced.

The grain generator adds exact I422 pixels, Y-point-count 15 and UV-count 11 rejections, unequal I420 U/V presence, an unlisted reference rejection, and valid reuse of an inactive reference. The last case reproduced a sequence decode failure before the fix. A listed, existing reference with inactive grain now inherits inactivity; empty or unlisted references still fail. Option<FilmGrain>::None retains its documented meaning of apply_grain=false. The independent header inspector follows the same native semantics. The refreshed native repetition bundle contains 82 cases; all 81 preceding case records are unchanged, with one new inactive-reference sequence observation.

Reproduce inputs with target/oracle-staging/pillow122/bin/python scripts/generate_avif_config_disagreement_fixtures.py and target/oracle-staging/pillow122/bin/python scripts/generate_avif_filmgrain_edge_fixtures.py. The existing asset-generation hook invokes both. Exact outputs and operation contracts are generated through scripts/generate_decode_refs.py --format avif; no expected pixels or failures are copied from Rust.

The incremental campaign executes the preceding 483 AVIF rows and the twenty new rows in separate runs on identical final source, features, and LLVM flags. Both subsets pass and their local receipt confirms unchanged Rust inputs and matrix hashes throughout. Coverage MCP's LCOV coordinate union reports 43,734→43,749 observed lines out of 138,301: fifteen additional lines, with no source coordinates added or removed. The twenty-row subset observes 22,283 lines; 22,268 were already observed by the old AVIF subset. The I422 grain helper has seven missing regions in the baseline and none in the new subset. This subset denominator differs from the full all-test campaign.

Coverage MCP labels both raw reports source-unverified and test attribution unknown. The local receipt supports this same-source comparison but does not turn it into managed MCP evidence or a full-suite regression result. JSON branch/region coordinates are useful for review; no numeric incremental branch or region union is claimed. Reports are avif-edges-baseline-20261005.lcov and avif-edges-selected-20261005.lcov, with companion JSON reports, avif-edges-receipt-20261005.json, and coverage-mcp-avif-edges-final-20261005.json, under target/release-evidence/.

Local red/green logs: config-disagreement-red-20261005.log, avif-15-red-20261005.log, duplicate-pixi-red-20261005.log, sequence-depth-red-20261005.log, depth-flags-red-20261005.log, and avif-20-green-20261005.log, all under target/release-evidence/.

Rejected JPEG sparse chroma masks — 2026-10-05

A separate worktree at d5ddebbe83d067be16f49eb13c4f29603faa55d5 implemented fused chroma nonzero masks and a separate sparse Cb/Cr entropy loop for complete I420 MCUs without low-quality trimming. The prototype is rejected and reverted; the main encoder remains unchanged. Its exact source and patch are preserved locally for review of the rejected prototype.

The ARM64 macOS 15.7.7 campaign used rustc 1.96.1, ordinary Cargo release builds, and the pinned TurboJPEG 3.2.0 oracle. No LTO, target-cpu, PGO, or TurboJPEG SIMD disabling was added. Single-threaded complete public calls use the existing twenty configurations, forty encode/decode workloads, and Rust harness's 100-call warmup; per-invocation iteration counts and timings are retained. Five rounds alternate baseline/candidate order, with the unchanged oracle following each variant. All 800 raw records retain commands, timing, output hashes, order, and background-load observations. Source, binary, and oracle hashes remained unchanged. CPU brand/model queries were unavailable; recorded background load was nonzero, so this is a scoped host observation.

All seven admitted encode configurations regress in every paired round. The table gives medians of paired candidate/baseline time ratios; values above one are slower. Oracle normalization retains the same regression decision.

Encode workload Candidate / baseline Oracle-normalized ratio
32×32 Q85 I420 1.1585 1.1587
128×128 Q50 I420 1.0494 1.0413
128×128 Q85 I420 1.1222 1.1243
128×128 Q100 I420 1.2138 1.1838
512×512 Q85 I420 1.2125 1.2083
1024×1024 Q85 I420 1.2366 1.2138
128×128 Q85 I420, restart interval 4 1.1085 1.1325

Controls varied: odd 63×65 encoding was 0.9805, I444 encoding 1.0008, 512×512 Q10 encoding 1.0927, and 1024×1024 decoding 0.9928. These controls are retained alongside the regressions. Mask-construction overhead and lost six-chain instruction overlap are plausible causes, without stage-level proof. No encoder, decoder, SSE2, AVX2, or universal speedup is claimed.

Correctness still passed: emitted JPEG bytes matched the baseline for all twenty configurations; the existing public manifest passed 81/81 encode rows (379 calls, zero panics) and 205/205 decode rows; strict all-feature/all-target Clippy passed.

The preserved candidate source SHA-256 is 283be8d25af57b67396f3a08742586532c539593cbb5095cd6b0dcc78e912321; patch SHA-256 is b541f59801c0a84d7ae4510ab292943a28779fc3046661896b9543a247558556. Local evidence is under target/release-evidence/jpeg-sparse-chroma-d5ddebbe/: rejection.json, candidate-source.rs, candidate.patch, build/check logs, and paired-five-rounds/{metadata.json,raw.jsonl,summary.json,summary.csv,exact-encode-equality.json}. These local artifacts are not shipped release benchmark results. The next candidate must preserve instruction overlap or identify a different measured cost, then pass the same correctness and complete-call measurement gates.

Rejected JPEG bounded entropy arithmetic — 2026-10-05

An isolated candidate based on e070f9cef79005c5b832ebb78db0fee3eb192cf6 replaced three saturating operations with locally bounded arithmetic: available reservoir space, the post-capacity-check word count, and the AC zero run. The source-bound ARM64 object showed saturation selects for these expressions, but did not quantify their share of elapsed time. Six-chain scheduling, quantization, storage, and output contracts were unchanged.

Two whole-call campaigns each completed forty workloads and five balanced rounds, with the second reversing the starting order: 1,600 raw records in total. Both retained exact equality for all twenty encoded benchmark JPEGs. Strict Clippy and the public Pillow manifest passed 81/81 encode rows and 205/205 decode rows. The ordinary release builds used Rust 1.96.1 on macOS 15.7.7 ARM64 and the pinned TurboJPEG 3.2.0 timing oracle, with single-threaded operation loops. CPU brand/model and memory queries were unavailable; nonzero background load is recorded in each campaign. Inputs, source, executables, and oracle hashes stayed unchanged during each campaign.

Each table value is the median of five paired round ratios. Candidate/baseline ratios below one mean lower elapsed time. Normalized ratios also divide each target measurement by its following oracle measurement.

RGB I420 encode workload First ratio Reversed ratio Normalized first / reversed
63×65 Q85 1.0092 1.0122 1.0067 / 1.0095
128×128 Q100 1.0214 1.0135 1.0198 / 1.0337
512×512 Q85 1.0169 1.0048 1.0122 / 0.9981
1024×1024 Q85 1.0167 1.0131 0.9955 / 1.0129
512×512 Q10 0.9852 0.9479 0.9839 / 0.9511

Regular RGB inputs repeatedly regressed despite gains on some low-quality and CMYK inputs. Decode controls also varied. The combined candidate is rejected; these results do not isolate an individual expression's cost or establish an SSE2/AVX2 result. The encoder was restored byte for byte, and the clean managed worktree was archived after independent preservation checks. No candidate source reached main.

The retained bundle target/release-evidence/jpeg-bounded-entropy-e070f9ce/ contains both executables, source and patch snapshots, harness files, inputs, both complete campaigns, comparison.json, comparison.csv, rejection.json, and preservation.json. Candidate source SHA-256: 71942749a3545ed9323573abc8a60c9c9a59ca6a9234f8e992798ed3a375c36f; restored encoder SHA-256: 5451cb6570679fe9ea13b385900e5270581220e35cf1993c09eeb0b1a799afab.

SSE2/AVX2 runtime evidence and JPEG profile — 2026-10-05

At pushed revision d5ddebbe83d067be16f49eb13c4f29603faa55d5, CI run 37263569622 completed successfully. Both SSE2 and AVX2 public JPEG/AVIF encode/decode parity lanes passed with branch coverage; aggregate coverage floors, strict lint, feature/target checks, and dependency checks also passed. The x86 coverage artifact retains eight reports. Their numerical totals have not been inspected locally, so this establishes runtime parity and passed floors.

Benchmark run 37263569657 also passed five rounds each of SSE2 and AVX2 on the same Ubuntu host, covering 20 configurations and 40 workloads. All 40 comparisons retained equal output lengths and hashes. Downloading its timing artifact requires authenticated access (HTTP 401), so no relative speed or speedup is claimed from this run.

A source-bound ARM64 profile at that revision sampled the complete 1024×1024 RGB Q85 I420 encode call for 12 seconds. Its receipt records source hashes, binary SHA-256, build flags, and the owned process; the source remained unchanged through sampling. Streaming encoding represented 84.56% of observed top-of-stack samples, RGB conversion 9.11%, and external FDCT 6.20%. Exact binary/object/DWARF matching maps representative streaming addresses to Cb AC coefficient reads, zero-run handling, and the bit reservoir. Collapsed samples prevent assigning a precise entropy fraction. Sampling is not a timing benchmark.

The profile motivated collecting sparse chroma AC masks during quantization and enumerating their zigzag positions. The experiment above rejects that prototype after complete-call measurement. Any future implementation must preserve ZRL/EOB, DC prediction, byte stuffing, and restart semantics, then pass exact public parity and balanced complete-call measurements. Dense-image mask overhead is part of the measured rejection above; no optimization is retained from this profile. Halving the measured conversion bucket would permit approximately 1.048× overall speedup, while the sparse-scan candidate's affected fraction is unknown.

Local receipts: target/release-evidence/jpeg-profile-d5ddebbe/receipt.json, analysis.md, analysis-offset-mapping.json, and analysis-ci-terminal.json; remote benchmark metadata: target/release-evidence/simd-remote-d5ddebbe/.

Unreachable AVIF Full-chroma Horizontal16x4 cleanup — 2026-10-05

Both current callers of Lossy420Decoder::decode_following_vertical belong to the H4 composer. Each receives a local with_qindex state initialized to Subsampled420, dimensions (16, 4), and absent full-edge state. Intervening methods do not change sampling; the callback receives only the range decoder. The sole Full-sampling setter, decode_origin_full, is outside this local path. The Full-chroma Horizontal16x4 predicate therefore cannot succeed for any current caller, independently of coverage observations.

The removed cluster consists of that reconstruction arm, reconstruct_following_lossy_full_vertical_16x4_leaf, reconstruct_lossy_full_16x4_chroma_normalized_target, and their exclusively owned right_edge_4_for_16x4 accessor. It removes 580 source lines and three separator blanks. Exact comparison against f46efa4b3eee82b9c33e5cd3fe1911a7ad2d16f5 confirms only those four ranges were deleted: every retained byte is unchanged. The live 4:2:0 arm, entire vertical decoder, H4 composer, and their safety checks remain. This proof does not justify deleting the complete fallback method.

The source proof is retained in target/release-evidence/avif-vertical-h16x4-cleanup-f46efa4b/proof.json. No cfg guard or source coverage exclusion changed. The full all-feature campaign, strict debug/release/coverage and x86 SIMD Clippy gates, formatting, static verification, and all 33 feature lanes pass. Ordinary Pillow rows and target-only fault rows are unchanged. This source cleanup is not a measured AVIF throughput improvement.

Complete source accounting and unreachable Square8 cleanup — 2026-10-05

The preceding full report still contained 42 source coverage(off) attributes. This cleanup removes all 42, including defensive production checks, and the unused nightly coverage-attribute feature gates. make verify now rejects source coverage exclusions in Rust files under src and tests, preventing those attributes from silently shrinking later denominators.

Source review proves the older lossy four-Square8 fallback is unreachable: public root contexts retain level zero or one; its exact frame class is absent from closed_class admission, and the alternative vertical-pair admission requires context level three. The complete frame decoder already handles the two public Square8 inputs. The obsolete predicate, dispatch branch, and composer are deleted, removing 208 lines and one coverage guard. Shared vertical helpers and the H4 callers remain.

The subsequent full campaign passes all public parity and twenty target-only fault-contract rows. make lint, make lint-x86-simd, and all 33 feature/target lanes also pass. Coverage is rebaselined at the four totals above; source accounting and deletion changed the denominators, so their difference from the previous report is not an incremental execution gain. The 100% target remains open. These edits introduce no codec optimization or new runtime speed claim.

The x86 CI benchmark lane also gains an explicit Linux POSIX feature macro for its strict C11 timing harness. The native strict C build and a timing smoke invocation pass on ARM64 macOS; Linux compilation and SSE2/AVX2 runtime results remain pending the pushed workflow. The fixture encoder patch retains its semantics after whitespace normalization; reverse application checks pass against the pinned patched libavif tree.

Report: target/release-evidence/coverage-current-source-accounting-20261005.json.

AVIF skipped CDEF color/alpha public parity — 2026-10-05

decode:avif:multitile_skipped_cdef_color_alpha is a complete 128×64 RGBA input with two tile columns in each color and monochrome-alpha item. The independent libaom default-CDF writer selects unpartitioned 64×64 DC blocks with skipped transforms. Frame headers retain enabled CDEF syntax with zero strengths, while skipped blocks omit the region index. Pinned Pillow 12.2.0 accepts the file and supplies exact pixels; the public matrix runner passes all declared operations. No target fault injection or Rust implementation change is involved.

The new one-case selection passes against the same 481-case AVIF baseline used for the gradient below. Coverage MCP's incremental LCOV line comparison, including the gradient as a previously accepted batch, observes 20 newly covered coordinates and 11,454 overlapping coordinates. The estimated gain is 0.014490 percentage points over the 138,027-line selected-report denominator. The gains include the inactive-block and absent-region-index skips in both color and monochrome tile assembly (frame.rs:2063,2099,2411,2462). Missing source/build receipts and test attribution limit this to coordinate evidence, without a full-suite regression claim. This ordinary-input case belongs to Pillow parity; the twenty typed target-only fault contracts remain a separate outcome lane.

The subsequent full campaign passes all tests and records 18 additional covered lines, 24 branches, zero functions, and 24 regions with unchanged denominators relative to the preceding full report. MCP's full-report branch comparison remains limited by unverified source/build identity; its frame.rs filter observes seven newly covered outcomes, including all four targeted assembly skips. The current report records both outcomes at each target: color active-map 256/4,352, color region-index 68/4, monochrome active-map 256/1,536, and monochrome region-index 24/4. These are report counts, not receipt-bound per-test attribution. make fmt, make verify, make lint, and make lint-x86-simd also pass. The native fixture writer now compiles with -Wall -Wextra -Werror; both generator profiles reproduce their pinned hashes. The SSE2/AVX2 gates are cross-compilation checks on this ARM64 host, with no new runtime speed measurement. The fixture additions change no codec hot path.

Reports:

  • target/release-evidence/coverage-avif-existing-minus-square8-gradient-20261005.info
  • target/release-evidence/coverage-avif-square8-gradient-new-20261005.info
  • target/release-evidence/coverage-avif-skipped-cdef-color-alpha-new-20261005.info
  • target/release-evidence/coverage-current-skipped-cdef-20261005.json

AVIF lossy Square8 gradient public parity — 2026-10-05

decode:avif:portable_lossy_420_square8_gradient adds a 16×16 full-range quality-99 RGB gradient with four terminal Square8 leaves and disabled screen-content tools. The pinned libavif 1.4.1/libaom 3.13.2 generator produces identical repeated encodes; pinned Pillow 12.2.0 supplies the exact RGB reference. The public manifest runner passes all declared operations.

The focused LLVM report records three complete lossy-partition decodes, twelve streamed intra leaf decodes, and nine following-leaf decodes. It records zero hits in decode_four_lossy_420_leaves and Lossy420Decoder::decode_following_vertical. The complete frame decoder handles this input before the legacy fallback. Source review also finds that the fallback's closed_class admission omits the lossy square-split predicate; the public root context has level zero or one, while its vertical-pair alternative requires level three. This case therefore protects the complete frame's public pixels without providing a witness for the older square helper.

Both the 481-case existing AVIF selection and the new one-case selection pass. Coverage MCP cannot union these LLVM JSON details with the full report because the detailed observations do not reconcile with the reported totals. Matching LCOV selections instead provide an unverified incremental line estimate: zero newly covered lines, with all 12,177 new-selection line coordinates already covered by the 138,027-line existing-selection inventory. The case is retained for its distinct public gradient regression contract. Missing source/build receipts and test attribution limit the comparison to coordinate evidence; it makes no full-suite regression claim.

Reports:

  • target/release-evidence/coverage-avif-square8-gradient-new-20261005.json
  • target/release-evidence/coverage-avif-existing-minus-square8-gradient-20261005.info
  • target/release-evidence/coverage-avif-square8-gradient-new-20261005.info

AVIF monochrome CDEF region-map reservation fault contract — 2026-10-05

fault-contract:avif:avif_monochrome_cdef_region_map_reservation_failure reuses the existing decode:avif:multitile_monochrome_split_groups complete 128×64 Pillow-success input, SHA-256 57490ef5f80626a3218b96cae9f3e9601ff9db685fc608cd02ad39213638b24c. The ordinary input requests two CDEF region slots. It cannot deterministically choose allocator failure, and Pillow cannot receive the target's injection.

The coverage-only point makes the existing try_reserve_exact request usize::MAX, causing its real capacity failure before resizing the map. The runner requires the public AVIF StillDecode dimensions error and exact message decode: AVIF AV1 validation failed: unable to allocate assembled monochrome CDEF map, then requires a successful retry equal to a fresh uninjected decode. The row uses the existing decode_error_then_retry_succeeds contract and structured diagnostics requirement, with oracle_status: not_applicable. Production builds keep the original reservation count and error path.

The twenty existing contracts and the new one-case selection each pass. Their local receipt confirms unchanged source and Cargo inputs between runs. Coverage MCP's matching LCOV comparison observes five newly covered lines, 30,769→30,774/138,310, a 0.003615 percentage-point incremental estimate. The selected LLVM region scan finds no remaining gap in the allocation error closure. MCP still labels source/build identity unverified and test attribution unknown; the coordinate union does not establish a full-suite coverage result. The added hook brings the origin inventory to 136 exact cfg(coverage) guards across 20 Rust files, without source exclusions.

Reports:

  • target/release-evidence/cdef-region-map-baseline-twenty-20261005.lcov
  • target/release-evidence/cdef-region-map-selected-one-20261005.lcov
  • target/release-evidence/cdef-region-map-selected-one-20261005.json
  • target/release-evidence/cdef-region-map-incremental-receipt-20261005.json
  • target/release-evidence/coverage-mcp-cdef-region-map-incremental-20261005.json

AVIF monochrome CDEF active-map reservation fault contract — 2026-10-05

fault-contract:avif:avif_monochrome_cdef_active_map_reservation_failure reuses the active decode:avif:multitile_monochrome_split_groups Pillow stimulus, which enables CDEF for a split monochrome frame. Its coverage-only failpoint targets the later cdef_active.try_reserve_exact allocation, after the CDEF region map and loop-filter metadata reservations. The public AVIF StillDecode dimensions error is checked, then a fresh retry must match an uninjected decode. The row uses oracle_status: not_applicable; the injected failure remains outside Pillow parity counts.

The new fault case and the nineteen-case baseline each passed through test_fault_contract_matrix. Coverage MCP's LCOV incremental line comparison observed five newly covered lines in frame.rs and estimated a 0.003622 percentage-point gain over the 138,027-line selected-report denominator. MCP marks the estimate limited because source/build receipts and test attribution are missing. The branch comparison is incomparable because exact branch detail is unavailable, so this is selected-run coordinate evidence, not a full-suite coverage claim.

Reports:

  • target/release-evidence/coverage-fault-contracts-existing-nineteen-minus-cdef-20261005.info
  • target/release-evidence/coverage-fault-contract-monochrome-cdef-active-map-new-20261005.info
  • target/release-evidence/coverage-current-fault-contracts-20261005-cdef-active-map.json

AVIF monochrome CDEF invalid sample-depth fault contract — 2026-10-31

fault-contract:avif:avif_monochrome_cdef_invalid_sample_depth_rejected reuses the active decode:avif:coverage_monochrome_multitile_loop_cdef_active_8bit_128x64 Pillow parity fixture. Its coverage-only hook changes the CDEF filter parameter depth to 7 immediately before the shared filter, reaching the maximum_sample range rejection. The integration contract checks the public AVIF StillDecode malformed error, then verifies that a clean retry succeeds. The row is target-only with oracle_status: not_applicable; it does not add a Pillow parity observation or a release-build hook.

The exact selected test_fault_contract_matrix case passed. The retained LLVM JSON has no baseline observations for the invalid-depth edge at cdef.rs:317; the selected report records that edge after the injected depth 7. Coverage MCP's incremental comparison was unavailable because its transport closed; this is selected branch-coordinate evidence, not a full-suite coverage claim.

Reports:

  • .coverage-mcp/local-evidence/full/20261031-av1-monochrome-multitile-active-loop-cdef-current/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-cdef-invalid-sample-depth-final/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-cdef-invalid-sample-depth-final/coverage.local-evidence.json

AVIF monochrome CDEF direction-depth fault contract — 2026-10-31

fault-contract:avif:avif_monochrome_cdef_direction_invalid_sample_depth_rejected uses the same active monochrome CDEF Pillow parity fixture. Its coverage-only hook passes bit depth 7 to direction_for_block, which rejects the invalid depth and returns the normal AVIF StillDecode malformed error. The contract checks that error and a successful clean retry. The fault row remains target-only with oracle_status: not_applicable.

The selected integration case passed. The retained LLVM JSON records the invalid-depth branch at cdef.rs:72, which had no observations in the full baseline. Coverage MCP's incremental comparison remains unavailable because its transport closed; this selected report provides local branch-coordinate evidence only.

Reports:

  • .coverage-mcp/local-evidence/full/20261031-av1-monochrome-multitile-active-loop-cdef-current/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-cdef-direction-invalid-sample-depth-final/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031-avif-monochrome-cdef-direction-invalid-sample-depth-final/coverage.local-evidence.json

AVIF monochrome CDEF input-guard sweep fault contract — 2026-10-31

fault-contract:avif:avif_monochrome_cdef_input_guard_sweep_rejected reuses the active monochrome CDEF Pillow parity input. A coverage-only hook checks 19 invalid private calls across block geometry, source and output lengths, sample depth, direction, empty sample dimensions, and deliberately unavailable taps. The public decode reports the malformed-input contract with the exact message decode: AVIF AV1 validation failed: invalid AV1 bitstream: CDEF guard sweep rejected 19 invalid inputs; the row then verifies that an uninjected retry succeeds. Its oracle status is not_applicable, so the injected result remains separate from Pillow parity.

A combined selected run of 12 active AVIF Pillow parity rows and the three CDEF fault contracts passed all 15 rows. The current-source LLVM report records 66/66 CDEF branch outcomes, including the zero-variance and low-nonzero- variance outcomes in adjust_primary_strength. Source and fixture hashes were stable during the run. Coverage MCP returned Transport closed, so these are local selected-report counts rather than an MCP source/build receipt or a full-suite claim.

Reports:

  • .coverage-mcp/local-evidence/selected/20261031-avif-cdef-parity-and-guards-current/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031-avif-cdef-parity-and-guards-current/coverage.local-evidence.json

AVIF color CDEF active-map extent fault contract — 2026-11-01

fault-contract:avif:avif_color_cdef_active_map_extent_mismatch_rejected reuses the active decode:avif:coverage_i420_intra_cdef_10bit_16x16 Pillow parity input. A coverage-only hook shortens the decoded CDEF active map by one entry immediately before the existing extent guard. The public AVIF StillDecode malformed-input error is checked, followed by a successful clean retry. The injected row has oracle_status: not_applicable and is kept separate from the parity result.

The selected fault-contract run passed 1/1, and a separate selected parity run passed 1/1 with exact 768-byte pixel parity. LLVM coverage shows the active-map extent guard's rejection edge taken once in the injected run and zero times in the parity-only run. Both local receipts report unchanged source and fixtures. Coverage MCP returned Transport closed, so these reports are local evidence, not managed attribution or a full-suite coverage claim. Source and fixture SHA-256 values were 349ae3a00776d6827e1716dbe7f5ed746238e063a961b465d615b7018dfcf139 and 3407c458add1348d2e0f0a73f8aaaa862fd435a18eb7c563b8461d89541656d2.

Reports:

  • .coverage-mcp/local-evidence/selected/20261031T230625.055415Z-3a1ada4568c748c4a0bbe6b67a063193/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031T230625.055415Z-3a1ada4568c748c4a0bbe6b67a063193/coverage.local-evidence.json
  • .coverage-mcp/local-evidence/selected/20261031T230732.716490Z-f3360f66ccd243dfab6b2c073b19f131/coverage.json
  • .coverage-mcp/local-evidence/selected/20261031T230732.716490Z-f3360f66ccd243dfab6b2c073b19f131/coverage.local-evidence.json

AVIF color CDEF strength-count guard fault contracts — 2026-11-01

The AV1 parser derives color CDEF strength counts from the parsed strength arrays, whose syntax allows one through four entries. The target-side FrameCanvas::apply_cdef guard also checks those counts against the arrays. Coverage review found that separate count > array.len() comparisons repeated the upper bound for the fixed [u32; 4] arrays; the guard now uses each array's length as the range upper bound, preserving the accepted values without unreachable comparison branches. Two target-only cases exercise the invalid-count path, which ordinary valid bitstreams cannot express: fault-contract:avif:avif_color_cdef_invalid_y_strength_count_rejected sets only the Y count to zero, and fault-contract:avif:avif_color_cdef_invalid_uv_strength_count_rejected sets only the UV count to zero. A third case, fault-contract:avif:avif_color_cdef_active_strength_index_out_of_range_rejected, sets an active region index to the first value beyond the Y and UV strength counts. All three hooks exist only under #[cfg(coverage)] and reuse decode:avif:coverage_i420_intra_cdef_10bit_16x16. The runner checks the public StillDecode errors decode: AVIF AV1 validation failed: invalid AV1 bitstream: CDEF strength counts are invalid for the count cases and decode: AVIF AV1 validation failed: invalid AV1 bitstream: CDEF active region index exceeds strengths for the index case, then confirms each clean retry succeeds. All three rows have oracle_status: not_applicable; the normal input remains a separate Pillow parity row.

The baseline all-active matrix selection passed 3,088/3,088 rows: 2,365 decode, 556 encode, and 167 fault contracts. The target-only fault outcomes remain outside oracle-parity counts. Its selected LLVM report records 96,178/142,952 lines (67.28%), 19,311/31,982 branches (60.38%), 5,228/9,333 functions (56.02%), and 146,535/221,847 regions (66.05%). In raster.rs, it records 1,982/4,674 lines (42.40%) and 308/904 branches (34.07%). These are all-active parity/fault-matrix figures, not full test-suite coverage or a 100% coverage claim. No Coverage MCP tool was exposed in this session, so the report and receipt are local evidence without MCP source/build attribution. The receipt records unchanged source and fixtures during the run, revision 69a79d4c46b3c8598de020e47345ade1b0e1d304, source-manifest SHA-256 cf06eefe697bec96cafe0510654091b7d30cc7742d1c4ae467979369741c64ce, raster SHA-256 9256783ff149ecc1aafc5d52a5aee07f2bce91ef565f226381cedd2f33ca5827, the active parity input SHA-256 3407c458add1348d2e0f0a73f8aaaa862fd435a18eb7c563b8461d89541656d2, and matrix SHA-256 00450f600e2302f654d5452d156134cf3b25b29360545ed4e8e9eed0b0c470f7. That matrix snapshot contains one planned 9x9 CDEF parity case, excluded from the 3,088 executed rows.

Reports:

  • .coverage-mcp/local-evidence/selected/20261101T045700.728392Z-707a91ec2a1641dfaf86ccc8a774b6db/coverage.json
  • .coverage-mcp/local-evidence/selected/20261101T045700.728392Z-707a91ec2a1641dfaf86ccc8a774b6db/coverage.local-evidence.json

AVIF odd-edge color CDEF parity — 2026-11-01

The pinned 9x9 and 9x16 10-bit I420 fixtures coverage_i420_intra_cdef_10bit_9x9 and coverage_i420_intra_cdef_10bit_9x16 are active pixel-parity regressions with Pillow 12.2.0/libavif 1.4.1 RGB references. Both have active single-entry CDEF. The 9x16 fixture combines a partial horizontal block with an aligned vertical extent, exposing a failure hidden by the 9x9 fixture's repeated edge samples.

The earlier visible-edge extension matched the 9x9 output but differed in 94 of 432 RGB bytes for 9x16. The entropy walker had reconstructed the complete 16x16 coded canvas, then cropped it before CDEF. Retaining that canvas through CDEF and cropping after filtering restores exact parity for both fixtures. Super-resolution retains its filtered padding for its subsequent resize stage. The temporary plane traces and diagnostic example were removed.

The initial two-case reproducer passed 2/2 active rows. After removing the diagnostics, the related CDEF/super-resolution selection passed 35/35 parity rows. A separate selection passed 13/13 CDEF fault contracts with oracle: not_applicable; those results are not counted as Pillow parity. Native strict lint and the SSE2/AVX2 compile checks passed. The static origin inventory now accounts for all 267 coverage guards across 36 files, including the six color-CDEF defensive guards omitted from its previous receipt.

Coverage MCP's branch-gap inspection of frame_coordinate::<true> reports only the unreachable arm of its compile-time generic condition as missing. No coverage exclusions were added. This is selected-case evidence; it does not establish full-suite coverage or decoder performance. The local LLVM reports have unverified source provenance and unknown test attribution in Coverage MCP.

Reports:

  • Parity: .coverage-mcp/local-evidence/selected/20261101T053933.226263Z-280a3c48d1c341c88ad8b5535deb42e9/coverage.json
  • Parity receipt: .coverage-mcp/local-evidence/selected/20261101T053933.226263Z-280a3c48d1c341c88ad8b5535deb42e9/coverage.local-evidence.json
  • Fault contracts: .coverage-mcp/local-evidence/selected/20261101T054059.940791Z-fece9c294b48459c837820cd50c7c44c/coverage.json
  • Fault receipt: .coverage-mcp/local-evidence/selected/20261101T054059.940791Z-fece9c294b48459c837820cd50c7c44c/coverage.local-evidence.json

AVIF grid and monochrome assembly fault contracts — 2026-10-05

Two target-only rows use existing active Pillow parity inputs as reproducible stimulus. fault-contract:avif:avif_grid_cell_reservation_failure uses decode:avif:grid, an 80×80 color grid with per-cell alpha. Grid assembly now uses fallible try_reserve instead of Vec::with_capacity, preserving the normal reservation size while returning the public AVIF StillDecode dimensions error on allocation failure. Its coverage-only failpoint forces that error, and the runner confirms a fresh retry matches an uninjected decode.

fault-contract:avif:avif_monochrome_loop_filter_metadata_reservation_failure uses decode:avif:multitile_monochrome_split_groups. It forces the assembled monochrome loop-filter metadata reservation to fail, checks the public StillDecode dimensions error, and verifies retry output against a fresh decode. Both rows use oracle_status: not_applicable; their injected outcomes remain separate from Pillow parity counts.

The 17-case existing-fault baseline and the two-case new selection each passed through test_fault_contract_matrix. Coverage MCP's LCOV incremental line comparison observed 923 new line coordinates, a 0.668744 percentage-point gain over the 138,020-line selected-report denominator; 15,044 coordinates were already covered. MCP marks this estimate limited because the reports have no source/build receipts or test attribution. Its branch comparison was incomparable because exact branch detail was unavailable, so these figures are selected-run coordinate evidence, not full-suite coverage claims.

Reports:

  • target/release-evidence/coverage-fault-contracts-seventeen-baseline-20261005.info
  • target/release-evidence/coverage-fault-contracts-two-new-20261005.info

AV1 projected temporal-field reservation fault contract — 2026-10-05

The target-only row fault-contract:avif:avif_projected_temporal_field_reservation_failure reuses decode:avif:animated_motion_chroma, whose inter frames enable reference-frame MV projection. Its cfg(coverage) failpoint forces ProjectedTemporalField::new's reservation to fail and asserts the exact AVIF SequenceDecode dimensions diagnostic, then verifies a fresh retry matches an uninjected sequence decode. The new contract passed 1/1; the existing sixteen contracts passed 16/16 in the selected baseline. Its oracle is not_applicable, so it remains outside Pillow parity totals.

Coverage MCP compared the selected LCOV reports in incremental line mode: four newly observed coordinates (0.002898 percentage points), with 19,478 already covered. In the sixteen-case baseline, the allocation-error mapping at motion.rs:2999 was missing; it is observed by the new contract. MCP marks the estimate limited because source/build receipts and test attribution are unavailable.

Reports:

  • target/release-evidence/coverage-fault-contracts-existing-sixteen-20261005.info
  • target/release-evidence/coverage-fault-contract-projected-field-new-20261005.info
  • target/release-evidence/coverage-full-active-goal-20261005-projected-field.json

The public row decode:avif:coverage_lossy_420_square8_four_leaves_01 pins a lossy 4:2:0 16×16 AVIF with a four-Square8 AV1 partition trace and exact Pillow RGB output. It passed 1/1, and its same-target baseline comparison against the other 480 active AVIF decode rows found zero newly covered lines. The frame's allow_screen_content_tools flag fails the specialized closed-frame gate, so this row is retained as a public parity regression only; it is not claimed as coverage for decode_four_lossy_420_leaves or decode_following_vertical. MCP's selected report remains source-unverified and test attribution unknown.

Reports:

  • target/release-evidence/coverage-avif-existing-480-20261005.info
  • target/release-evidence/coverage-avif-lossy-square8-new-20261005.info

AV1 tile assembly and partition-node reservation fault contracts — 2026-10-05

Two target-only cases exercise deterministic AV1 allocation failures through the shared fault-contract runner. The assembled loop-filter metadata contract reuses decode:avif:multitile_color_split_groups; the partition-node contract reuses decode:avif:baseline. Each case checks the public AVIF StillDecode dimensions error for its named allocation failure, then verifies that a fresh decode retry matches the clean result. Both use oracle_status: not_applicable and remain excluded from Pillow parity counts.

The selected runner passed both new contracts (2/2); a same-source selected baseline run passed the other fourteen contracts (14/14). Coverage MCP compared their LCOV reports in incremental line mode: 7 newly observed line coordinates, 14,410 already covered, and a limited 0.005072 percentage-point estimate. MCP marks the comparison limited because source/build receipts and test attribution are unavailable. Its selected report has no remaining line gaps in PartitionWalker::push, and no region gap at the assembled metadata error mapping or branch gap at its injection check. The rest of assemble_color_tiles retains unrelated uncovered regions.

Reports:

  • target/release-evidence/coverage-fault-contracts-existing-fourteen-20261005.info
  • target/release-evidence/coverage-fault-contracts-new-two-20261005.info
  • target/release-evidence/coverage-fault-contract-assembly-partition-20261005-confirmed.json

AV1 tile block metadata reservation fault contract — 2026-10-05

The target-only row fault-contract:avif:avif_tile_block_metadata_reservation_failure reuses the active decode:avif:baseline input. Its coverage-only failpoint forces the per-tile decoded-block metadata reservation to fail and checks the public AVIF StillDecode dimensions error, then verifies that an uninjected retry matches a clean decode. The selected contract passed 1/1; all twelve earlier fault contracts also passed in their selected batch, and the full run passed all thirteen. Its oracle status is not_applicable, so it remains separate from Pillow parity counts.

Coverage MCP's same-target LCOV incremental comparison starts from the 56-test coverage-matrix baseline without its fault-contract runner, then unions the twelve existing fault contracts and this new row. It reports four newly observed line coordinates (0.002899 percentage points) in tile_state.rs. MCP marks the result limited because the reports have no source/build receipts or test attribution. The full all-feature report has no remaining region gap at the new reservation error path.

AV1 chroma tile-cell reservation fault contract — 2026-10-05

The target-only row fault-contract:avif:avif_chroma_tile_cell_reservation_failure reuses the active decode:avif:baseline input. Its coverage-only failpoint runs after the luma cell allocation succeeds and forces chroma-cell reservation to fail. The contract checks the distinct public AVIF StillDecode dimensions diagnostic, then verifies an uninjected retry matches a clean decode. The selected case passed 1/1; its oracle status is not_applicable and it does not contribute to Pillow parity counts.

The same-target LCOV incremental comparison adds this row after the thirteen existing fault contracts and reports three newly observed line coordinates (0.002174 percentage points) in tile_state.rs. MCP marks the comparison limited because the local reports have no source/build receipts or test attribution. The full report has no missing branch at the injection check and no remaining region at the public error mapping.

AV1 film-grain parity and restoration fault contracts — 2026-10-05

The public parity row decode:avif:animated_filmgrain_reference_reuse_i444_64x64 uses a two-frame full-resolution I444 sequence. The first key frame refreshes film-grain parameters into reference slot 0; the second displayed inter frame sets update=false, reuses slot 0, and supplies a new seed. Pinned Pillow 12.2.0/libavif 1.4.1 decodes both frames. The selected Rust parity run passed 1/1, including exact per-frame pixel references.

The public row decode:avif:portable_lossless_filmgrain_420_chroma_from_luma_64x64 adds a lossless I420 key frame with chroma_scaling_from_luma=true, non-empty Y scaling points, and empty U/V point arrays. The generator preserves the tile payload and item extent, validates the rewritten syntax with the independent OBU inspector, and pins the exact Pillow RGB output. Its selected Rust parity run passed 1/1. Coverage MCP reports no remaining branch gap at the read_film_grain chroma-scaling gate (frame.rs:4277) in the full AVIF matrix.

The public row decode:avif:portable_lossless_filmgrain_420_zero_y_points_64x64 exercises a valid 8-bit I420 key frame whose film-grain syntax has num_y_points == 0 and CFL disabled. AV1 infers empty U/V point tables and omits luma AR coefficients for this 4:2:0 syntax. The deterministic generator preserves the tile payload and item extent, validates the rewritten OBU independently, and pins Pillow's exact 12,288-byte RGB output (5d35ab50438b9f1536ef7de3cbca8ac3d01360efa9d77446dfe0d69786d2fb62). The selected public parity row passed 1/1. The decoder now accepts this legal case, retains a zero luma-grain LUT for active chroma consumers, and skips Y plane writes when no Y points are present. With no active chroma points, it returns after geometry and parameter validation without allocating grain LUTs.

This case exposed an admission gap: lossless non-super-resolution inter reconstruction rejected all film-grain frames before producing a color surface. The decoder now admits only bounded full-resolution I444 grain for that lossless profile. Grain remains display-only and retained reference samples remain ungrained. The bounded geometry and depth checks match the existing display materializer.

The target-only row fault-contract:avif:avif_sgr_intermediate_reservation_failure injects a deterministic reservation failure in SGR intermediate allocation while decoding the active decode:avif:animated_lossy_inter_420_superres_sgr_8bit_160x56 input. It asserts the public allocation error classification and retry behavior; its oracle status is not_applicable. The selected new fault case passed 1/1. The target-only row fault-contract:avif:avif_restoration_stripe_scratch_reservation_failure uses the active decode:avif:high_bitdepth sequence. Independent OBU inspection confirms a 64×64, non-super-resolution, single-tile frame with restoration enabled, which reaches striped restoration. The reservation hook forces the scratch reservation to fail; ordinary allocation failure now reports the typed Dimensions resource error rather than malformed input. The contract asserts the exact SequenceDecode diagnostic and verifies retry against a fresh sequence decode. Its oracle status is not_applicable, and the selected fault case passed 1/1.

The target-only row fault-contract:avif:avif_restoration_stripe_output_reservation_failure uses the active decode:avif:high_bitdepth sequence. A cfg(coverage) failpoint forces the striped-restoration output reservation to fail before stripe scratch is allocated. The public result must be a typed Dimensions error at SequenceDecode, and a fresh retry must decode the same reference sequence. Its oracle status is not_applicable, and the selected fault case passed 1/1. Coverage MCP's selected-test branch comparison against the scratch-reservation control found one newly observed arm at the output-reservation failpoint (restoration.rs:221–223). The scratch-control arm at restoration.rs:254–256 was not observed in the output-failure run because that failure returns before scratch reservation. MCP source/build identity remains unverified, so these are coordinate observations rather than a verified aggregate coverage gain.

The target-only row fault-contract:avif:avif_tile_cell_reservation_failure uses the active decode:avif:baseline input. A cfg(coverage) failpoint forces the AV1 tile cell reserve to fail; the contract checks the exact public Dimensions diagnostic at StillDecode, then confirms a fresh retry matches a clean decode. Its oracle status is not_applicable, and the selected contract passed 1/1. The coverage-origin inventory now records 128 exact guards across 20 Rust files; the new reservation hook is classified as defensive_model.

The focused film-grain parity rows passed 3/3; all twelve target-only fault contracts passed 12/12 in the full all-feature campaign. The complete AVIF decode matrix passed 480/480, and the AVIF edit-list repetition witness passed after its artifact index was updated to include the new verified loop sample. The current full report is target/release-evidence/coverage-zero-y-filmgrain-tile-cell-20261005.json.

Coverage MCP scope: incremental, metric lines, reports five newly observed coordinates for the zero-Y parity row (0.003624 percentage points) and three for the tile-cell fault contract (0.002174 percentage points). The comparisons use the same-source selected reports target/release-evidence/coverage-baseline-zero-y-filmgrain-final-20261005.info, target/release-evidence/coverage-filmgrain-zero-y-i420-final-20261005.info, target/release-evidence/coverage-baseline-fault-contract-tile-cell-20261005.info, and target/release-evidence/coverage-fault-contract-tile-cell-final-20261005.info. MCP marks them source-unverified with unknown test attribution, so both gains are limited coordinate estimates. Branch-detail unions are incomparable. Invalid reference and point syntax remains outside the positive Pillow parity lane; the twelve remaining read_film_grain branch observations need separate input-reachability review. The current full report also leaves normal SGR regions uncovered, including 36 in sgr_intermediates and 23 in restore_sgr_plane; the striped restoration contract covers its allocation failure outcome only. The earlier film-grain, SGR, and stripe reports are preserved as historical measurements. Earlier reports: target/release-evidence/coverage-baseline-filmgrain-existing-20261005.json, target/release-evidence/coverage-filmgrain-reference-reuse-20261005.json, target/release-evidence/coverage-filmgrain-cfl-i420-20261005.json, target/release-evidence/coverage-baseline-faults-existing-20261005.json, and target/release-evidence/coverage-fault-contract-sgr-intermediate-20261005.json.

A prior full all-feature report and its dated observations are retained below for historical context.

A later coverage_matrix_tests integration-target run completed 56/56 tests on the 1,981-row matrix. Its parity-target report is target/release-evidence/coverage-parity-matrix-final-20261004.json: 85,100 / 142,526 lines (59.7084%), 16,699 / 32,240 branches (51.7959%), 4,652 / 8,990 functions (51.7464%), and 130,211 / 220,521 regions (59.0470%). This report is separate from the broader all-feature report above.

AVIF display-plane allocation fault contract — 2026-10-04

fault-contract:avif:avif_display_plane_copy_allocation_failure injects a one-shot allocation failure immediately before AV1 display-plane copy reservation while decoding the existing decode:avif:baseline input. It asserts the public Dimensions / AVIF / still-decode error and a successful retry. The case is indexed in the shared matrix with a not-applicable oracle; it does not add to Pillow parity counts. The selected all-feature coverage run passed 1/1 and wrote target/release-evidence/coverage-fault-contract-avif-20261004.json (1,972 / 32,244 branches for that selected run). Coverage MCP reports no remaining branch gap at src/codecs/avif/av1/surface.rs:174.

For Coverage MCP incremental comparison, a same-source baseline was captured with test_fault_contract_matrix skipped; its remaining 56 integration tests passed. The compare call is incomparable: LLVM detailed observations do not reconcile with report totals, and these reports have no source/build receipts or test attribution. No marginal coverage gain is claimed from that comparison.

AVIF still-brand sequence parity — 2026-11-07

Added input-driven parity row decode:avif:animated_sequence_still_major_brand. Its reproducible fixture changes only the ftyp major brand of the existing four-frame animated_motion_chroma.avif sequence from avis to avif. Pinned Pillow 12.2.0 exposes the result as a single 32×32 RGB still image (3,072 bytes). The sequence API now selects the primary-image path before extracting sequence tracks for avif major-brand files, so it does not reserve or decode the hidden frames.

The parity harness also verifies this image under a one-frame policy with a 3,072-byte sequence-output limit. It passed the Pillow pixel-parity row (1/1) and the retained frame-count and mode fault contracts (2/2); each contract retries the ordinary four-frame avis sequence after checking its injected error. The selected LLVM report records both outcomes of the frame-count comparison (1 true, 5 false) and mode comparison (1 true, 4 false) at src/codecs/avif/decode.rs:242.

Report: .coverage-mcp/local-evidence/selected/20261107T111349.187247Z-87167ab9bddc466388b2e599cb8147f6/coverage.json (SHA-256 1d32cbfaae13e9f4f4f36e4fae6370432e1724b255ddd76b853fe6bb0e28c2a8); receipt: .coverage-mcp/local-evidence/selected/20261107T111349.187247Z-87167ab9bddc466388b2e599cb8147f6/coverage.local-evidence.json (SHA-256 ef710cb7cd212dacecc251d7478e46c4cd9a894683e8b337bd6d3ab0d74fdc65). Coverage MCP was not connected, so this is local selected evidence and does not update full-suite coverage totals.

fault-contract:avif:avif_sequence_frames_reservation_failure drives the public sequence decoder with the active decode:avif:animated_motion_chroma fixture (32×32, four frames). The coverage-only failpoint asks Vec::try_reserve for an impossible capacity, which deterministically reaches the existing reservation-error conversion without allocating; the public call must return Dimensions at SequenceDecode, and retry must return all four frames. The selected all-feature run passed both fault contracts (2/2 cases). Against the same-source 56-test parity baseline at target/release-evidence/coverage-parity-baseline-postfmt-20261004.info, the selected combined fault report target/release-evidence/coverage-fault-contracts-postfmt-20261004.info adds 23 line coordinates (0.016688 percentage points). Coverage MCP reports no remaining branch outcomes at src/codecs/avif/decode.rs:231 or :241, the failpoint and reservation-error conversion, nor at src/codecs/avif/av1/surface.rs:174 for the existing still-image fault. Branch-level incremental union is incomparable because LLVM detail does not reconcile with aggregate totals. The reports have no source/build receipts or test attribution, so the line result is a limited estimate rather than a verified causal claim.

AV1 split monochrome tile reservation fault contract — 2026-10-04

fault-contract:avif:avif_monochrome_tile_reservation_failure uses the active decode:avif:multitile_monochrome_split_groups Pillow parity input. Its first tile group exercises the existing incremental monochrome tile-state reserve. The coverage-only fault requests an impossible vector capacity, which reaches the existing Dimensions error conversion without allocating. The selected target-only contract checks StillDecode error classification and that a fresh retry returns the complete decoded image. The injected result remains oracle_status: not_applicable and outside Pillow parity totals. The focused five-case fault-contract lane passed 5/5 contracts, and its instrumented JSON report is target/release-evidence/coverage-fault-contracts-five-20261004.json. Coverage MCP reports no remaining branch outcomes at the new failpoint on src/codecs/avif/av1/frame.rs:1577. The report has no source/build receipts or test attribution, so this is limited coverage-coordinate evidence.

For the new case alone, a same-source 56-test parity baseline skipped test_fault_contract_matrix; those tests passed 56/56. Coverage MCP's incremental comparison against target/release-evidence/coverage-parity-baseline-monochrome-fault-20261004.info estimates 21 newly observed line coordinates, or 0.015235 percentage points. The selected report is target/release-evidence/coverage-fault-contract-monochrome-tile-20261004.info. It remains a limited estimate because source/build identity and test attribution are unavailable.

AV1 super-resolution and JPEG multi-scan allocation fault contracts — 2026-10-04

fault-contract:avif:avif_superresolution_positions_reservation_failure uses the active decode:avif:animated_lossy_inter_420_superres_sgr_8bit_160x56 sequence. The inter frame reaches AV1 super-resolution after the first frame has been decoded. A coverage-only one-shot fault requests usize::MAX positions from the existing try_reserve_exact call, producing its normal Dimensions / AVIF / SequenceDecode error without attempting a large allocation. Retry must return the matrix canvas and frame count, and its full result must equal a fresh uninjected decode.

fault-contract:jpeg:jpeg_multiscan_coefficient_reservation_failure uses the active decode:jpeg:baseline_444_multiscan_duplicate_component input to enter multi-scan coefficient retention. Its coverage-only fault forces the actual try_reserve_exact capacity-overflow path; the public result must be Dimensions / JPEG / StillDecode, and retry must equal a fresh uninjected decode. Both cases use oracle_status: not_applicable and remain outside Pillow parity totals.

The focused all-feature baseline passed 56/56 integration tests with the fault runner skipped. The selected four-case fault lane then passed 4/4 contracts (the two existing AVIF contracts plus these additions). Its LCOV reports are target/release-evidence/coverage-fault-parity-baseline-20261004.info and target/release-evidence/coverage-fault-contracts-new-cases-20261004.info. Coverage MCP's incremental line comparison is limited because the reports have no source/build receipts or test attribution: it estimates 29 newly observed line coordinates, or 0.021040 percentage points. The path-filtered observations include the JPEG coefficient reservation and AV1 position reservation error paths. Branch comparison is incomparable because the available detail does not reconcile with report totals; no branch gain or regression claim is made.

JPEG default Huffman table slot reservation fault contract — 2026-10-14

fault-contract:jpeg:jpeg_huffman_table_slot_reservation_failure reuses the active decode:jpeg:baseline_444_multiscan_late_dht_after_default_scan input. Its first baseline scan reaches the default Huffman table slot reservation before the later DHT marker. A coverage-only one-shot fault requests usize::MAX slots from the existing try_reserve_exact call, taking the capacity-overflow error path without a large allocation. The public result must be Dimensions / JPEG / StillDecode with message decode: unable to allocate JPEG Huffman table slots; retry must equal a fresh uninjected decode. The fault row uses oracle_status: not_applicable and is excluded from Pillow parity totals; only its ordinary source row carries Pillow parity. The selected fault-matrix run passed 1/1 case; its report is .coverage-mcp/local-evidence/20261014/jpeg-huffman-slot-fault/coverage.json. Coverage MCP found no remaining region or branch location at parser.rs:414 in that selection. The report has no build/source receipt and test attribution is unknown, so these are limited selected-coordinate observations; they do not establish an aggregate coverage gain or full-suite coverage.

JPEG YCCK output reservation fault contract — 2026-10-19

fault-contract:jpeg:jpeg_ycck_output_reservation_failure reuses the active odd-sized subsampled YCCK input decode:jpeg:color_ycck_app14_transform_2. The coverage-only one-shot fault requests usize::MAX output bytes from the fallible YCCK result reservation, exercising the public Dimensions / JPEG / StillDecode failure without attempting a large allocation. Retry must match the clean Pillow-parity decode. This target-only contract is recorded with oracle_status: not_applicable; the source image remains the input-driven Pillow parity case.

JPEG bulk entropy refill experiment rejected — 2026-11-04

Native x86 A-B-B-A run 41812150890 compared baseline 3607da286639c16a0cf76c32f09fffcdf8b675be with the committed candidate from PR head 11a4fdf4c3479416ab2f38c86709d36abc4c0ed9. Six primary cohorts completed on both SSE2 and AVX2, and the benchmark's output-identity checks passed. The candidate failed the performance gate: SSE2 primary paired gain was -2.0854% with a -2.6305% minimum guard gain; AVX2 primary paired gain was -4.9570% with a -4.9859% minimum guard gain. Zero of six primary cohorts were faster on either variant.

The largest cases regressed on both variants. SSE2 grayscale 512x512 4:2:0 moved from 2.560 ms to 2.612 ms and 4:2:2 from 2.560 ms to 2.631 ms. AVX2 moved from 2.209 ms to 2.320 ms and from 2.203 ms to 2.317 ms, respectively. Reject the bulk refill implementation and retain the byte-at-a-time reader. Keep the separately validated marker-prefix EOF fault contract; its cfg(coverage) hook is absent from production builds.

JPEG fast bit-reader marker-prefix EOF fault contract — 2026-11-04

fault-contract:jpeg:jpeg_fast_reader_marker_prefix_eof_fallback reuses the public grayscale 4:2:0 input decode:jpeg:grayscale_sampling_420_512x512. The coverage-only one-shot fault ends the logical entropy range immediately after 0xFF, exercising the fast reader's marker-prefix EOF fallback. The public decode must recover to the same bytes as the clean Pillow-parity decode, and a retry must also succeed. The target-only fault is recorded with oracle_status: not_applicable; the source image remains the input-driven Pillow parity case.

JPEG baseline fast-reader metadata guard fallback — 2026-11-04

Five target-only fault-contract cases reuse the clean 4:4:4 baseline input decode:jpeg:subsampling_444. Each changes one parsed-metadata invariant used by single_baseline_scan_entropy_end, forcing the generic entropy path. The public decode must match the stored Pillow pixels, and a clean retry must succeed. These cases exercise scan-count, entropy-start, entropy-end, EOI marker, and final-marker-position guards; they stay outside Pillow parity counts with oracle_status: not_applicable.

The selected run passed 5/5 fault contracts. Coverage MCP found no remaining JPEG branch observations at decode.rs:2997, :2998, :2999, :3000, or :3084 in .coverage-mcp/local-evidence/selected/20261104T144719.716920Z-8adf50c8aa164d419c0c64ca83155691/coverage.json. That report still has source=unverified and tests=unknown, so the branch result is limited to these selected coordinates; it does not establish an aggregate coverage gain or full-suite coverage.

JPEG h1v2 upsampler edge and allocation contracts — 2026-10-19

The public parity row decode:jpeg:baseline_420_chroma_component_sampling_fallback exercises the 1×2 chroma upsampling ratio and passes exact 16×16 RGB parity. Four target-only fault contracts reuse that input to check zero-height and zero-width geometry, a short source plane, and output-plane reservation failure. Each returns the expected public JPEG decode error, then retry matches a clean decode. These rows use oracle_status: not_applicable and remain outside Pillow parity counts.

The selected run passed all five rows and is recorded at target/release-evidence/selected/20261019-jpeg-h1v2-helper-edges-final/coverage.json. Coverage MCP reports no missing branch groups for h1v2_fancy_upsample; it still reports 18 unobserved regions in that function. The report has no source/build receipt and MCP test attribution is unknown, so it is selected-coordinate evidence only. No aggregate coverage gain or full-suite coverage claim is made, and no full coverage campaign was run.

Six YCCK parity rows also pass in the selected report target/release-evidence/selected/20261019-ycck-selected-final/coverage.json. They cover odd- and even-height 4:4:0 vertical row upsampling, luma and K-plane sampling differences, and single-sample h2v1/h2v2 edges. The 17×10 parity case checks the clamped final source row. Coverage MCP reports 3,975/223,112 regions observed overall and 186 unobserved regions in the separate full-plane h1v2_fancy_upsample helper for this YCCK-only selection. This report also lacks source/build identity and test attribution, so it does not establish an aggregate coverage gain. No full coverage campaign was run.

AV1 super-resolution output-plane reservation fault contract — 2026-10-04

fault-contract:avif:avif_superresolution_plane_reservation_failure reuses the active 160×56 AV1 super-resolution sequence after the positions vector has been built. A coverage-only fault requests usize::MAX output samples from the existing plane try_reserve_exact; the public sequence result must be Dimensions / AVIF / SequenceDecode, and retry must equal a fresh clean decode. The fault is recorded with oracle_status: not_applicable and does not contribute to Pillow parity counts.

The final-source baseline selected 472 existing AVIF decode rows and five prior fault contracts; all 57 coverage-matrix harness tests passed. The selected sixth-contract run also passed all 57 tests. Coverage MCP reports the sample-reservation error region at resize.rs:398 as missing in the baseline and absent from the selected-run gap list. Its incremental comparison is incomparable because LLVM detail does not reconcile with report totals. Reports are target/release-evidence/coverage-avif-superres-faults-postfmt-baseline-20261004.json and target/release-evidence/coverage-fault-avif-superres-plane-postfmt-new-20261004.json. They lack source/build receipts and test attribution, so the coordinate change does not establish a numeric marginal gain or a verified regression result.

AV1 temporal-motion-field reservation fault contract — 2026-10-05

fault-contract:avif:avif_temporal_motion_field_reservation_failure injects a capacity-overflow failure at the existing AV1 temporal-motion-field reservation while decoding the active decode:avif:baseline Pillow input. The selected contract checks the public AVIF Dimensions / StillDecode error and its full diagnostic (decode: AVIF AV1 validation failed: unable to allocate AV1 temporal motion field), then requires a retry to equal a fresh uninjected decode. The injected outcome is indexed as oracle_status: not_applicable and does not contribute to Pillow parity counts.

The six existing fault contracts passed in the selected baseline run, and the new contract passed in its one-row run. Coverage MCP showed the allocation error region as missing in the earlier AVIF report at motion.rs:3113; it is absent from the selected run's gap list at motion.rs:3122. The region-level incremental comparison against the six-case run estimates six newly observed regions (0.002720 percentage points). This evidence is limited: reports have no source/build receipts or test attribution. Line comparison is incomparable, and branch detail does not reconcile with report totals. The selected reports are target/release-evidence/coverage-fault-contracts-six-before-temporal-motion-20261005.json and target/release-evidence/coverage-fault-contract-avif-temporal-motion-field-v2-20261005.json.

AV1 split color-tile reservation fault contract — 2026-10-05

fault-contract:avif:avif_color_tile_reservation_failure uses the active decode:avif:multitile_color_split_groups Pillow parity input. The dedicated scripts/generate_avif_color_tile_split_fixture.py derives it from the pinned multitile.avif, preserving frame-header and tile payload bytes while placing the two color tiles in separate tile-group OBUs. It checks the split ranges (0, 0) and (1, 1), then requires Pillow 12.2.0 to return the same format, mode, size, metadata, and pixels as the source. The generated input hash is 654ef88dd8ebc71a554c03f721ad97581fcf2d2df0d825020d267939eb8f5e34; its 98,304-byte RGB reference hashes to 8fddfd016bbc17e2f00a5154ee6e50c8f1d9d6a8254279ddf57be490ecdf9e44.

The selected Pillow parity row passed. The target-only coverage case injects a one-shot failure at the existing incremental color-tile reservation and checks the public Dimensions / AVIF / StillDecode error, including the diagnostic decode: AVIF AV1 validation failed: unable to reserve reconstructed AV1 tile state; retry must equal a fresh uninjected decode. Its oracle remains not_applicable, outside the Pillow parity result count. The focused fault run passed 1/1 and wrote target/release-evidence/coverage-fault-contract-color-tile-20261005.json.

Coverage MCP reports the reservation-error closure at src/codecs/avif/av1/frame.rs:1574 as missing in the same-source AVIF parity baseline, and absent from the selected fault report. The JSON region comparison is incomparable because its detailed LLVM observations do not reconcile with the reported totals. An LCOV incremental line comparison against target/release-evidence/coverage-avif-color-tile-parity-baseline-20261005.info reports 29 newly observed line coordinates (0.021037 percentage points); the selected report is target/release-evidence/coverage-fault-contract-color-tile-final-20261005.info. The LCOV branch comparison remains incomparable because branch detail does not reconcile with totals. Neither report has source/build receipts or test attribution, so the line result is an unverified coordinate estimate, not a causal coverage claim.

The full scripts/generate_test_assets.py --format avif command currently stops earlier at its ICC fixture hash assertion. The dedicated split fixture generator and Pillow reference generation completed independently.

AV1 SGR restoration allocation classification fault contract — 2026-10-05

fault-contract:avif:avif_sgr_restoration_output_reservation_failure reuses the active decode:avif:animated_lossy_inter_420_superres_sgr_8bit_160x56 sequence input to inject a deterministic failure at SGR output-plane reservation. It protects a distinct public diagnostic: allocation failures must remain Dimensions errors, not be mislabeled as malformed AV1 input. The runner checks the full SequenceDecode diagnostic and that retry matches a fresh uninjected sequence decode. The matching AVIF source row remains the Pillow parity case; the injected result is oracle_status: not_applicable.

The focused target-only run selected, executed, and passed all nine fault contracts declared in the matrix at that point. Its report is target/release-evidence/coverage-fault-contracts-nine-20261005.json and records 4,878/32,254 branches for this selected run. Coverage MCP found no missing branch observation at the SGR allocation error conversion in restoration.rs:688. The report has no source/build receipt or test attribution, so its coverage coordinates are limited evidence; the runner output is the evidence that the nine selected contracts passed.

AV1 equal-width super-resolution parity — 2026-10-04

The active decode:avif:superres_equal_width_16x16 case uses a pinned lossy 16×16 I420 still whose AV1 sequence enables super-resolution and whose frame header signals denominator 9 while coded and upscaled widths both remain 16. The fixture generator checks that syntax, repeats the encode, and verifies the pinned Pillow 12.2.0 RGB pixels (768 bytes; SHA-256 d5b4e270a08e4f03c6de84f4488420658a3ab62b00a954aeca14d50f58bb0eef). The encoded asset SHA-256 is 2de74d720f8863be43049a3df776337c1cde494122a57093ffad532cea19a004.

The selected parity row passed within the 57-test coverage-matrix harness. In the final-source 472-row AVIF baseline, Coverage MCP lists the true arm at resize.rs:208 as missing; in the one-row measurement, that arm is absent from the gap list while the false arm remains missing. The incremental comparison is incomparable because LLVM detail does not reconcile with report totals. Reports are target/release-evidence/coverage-avif-superres-faults-postfmt-baseline-20261004.json and target/release-evidence/coverage-avif-superres-equal-width-postfmt-new-20261004.json. The reports lack source/build receipts and test attribution, so this confirms the selected coordinate change without a numeric marginal percentage claim.

AV1 equal-width I444 super-resolution parity — 2026-10-05

The active decode:avif:superres_equal_width_i444_16x16 row adds the 8-bit 4:4:4 path to the existing 4:2:0 equal-width case. The deterministic Y4M source is pinned at 0ed9bb725d8f4eb3ae33998b97f064ef9486683156befa28e3c572f652d42788; the fixture generator repeats the pinned encode and checks AV1 I444 and equal-coded/upscaled-width syntax. The fixture hash is cd02b86f213b96f9d58bec3781f8855f325aa7b4c867a6fbf76f5802886420a4. Its 768-byte Pillow RGB reference hashes to 9cebc72915c26c647a920455c639b606976a1bbc0221ff9bf10cc0c9441864f9.

The selected public parity run passed 1/1. Coverage MCP branch gaps at resize.rs:210 and :215 now list only the true arms, so this I444 row observes the previously missing false arms. The JSON incremental comparison is incomparable because LLVM detail does not reconcile with the baseline totals. The LCOV line union estimates 113 newly observed coordinates (0.081973 percentage points) against target/release-evidence/coverage-avif-color-tile-parity-baseline-20261005.info. Both reports lack source/build receipts and test attribution, so this is a limited coordinate estimate rather than a verified causal gain. The selected reports are target/release-evidence/coverage-avif-i444-equal-width-selected-20261005.json and target/release-evidence/coverage-avif-i444-equal-width-selected-20261005.info.

JPEG optimized Huffman length-limit parity — 2026-10-05

The active encode:jpeg:enc_optimize_huffman_length_limit row encodes a deterministic 2504×288 L8 PNG at quality 1 with optimized baseline Huffman tables. Its balanced frequencies across seventeen AC symbols and EOB force the JPEG 16-bit code-length limiter to rebalance the generated table. The integer-basis fixture generator pins the source pixels and PNG hashes to 8c5f7f43d4a78548fe6c8054b4c6a74279da5d46afe367adbd95a1ec8da92a9c and 21d7fefde68d0e4c9ee627c2222831fce271230e3365a8a921393bf37b554338. Pillow 12.2.0 with JPEG 6.2 returns the 8,167-byte output pinned at 4f8d2339e8eb0053fc2190cbbdd7e10a99f74e4139edd7be16805a669db7d668; public Rust encode bytes match exactly, and decoded L8 pixels match the Pillow image.

The selected public parity run passed 1/1. Coverage MCP reports no missing regions, branches, or lines in jpeg::encode::huffman::optimal_table for this selected report. Incremental LCOV comparison is incomparable because the measurement includes coordinates outside the older baseline inventory; the JSON detail comparison is also incomparable. Reports lack source/build receipts and test attribution, so no aggregate percentage gain is claimed. The selected reports are target/release-evidence/coverage-jpeg-huffman-length-limiter-selected-20261005.json and target/release-evidence/coverage-jpeg-huffman-length-limiter-selected-20261005.info.

Target-only fault-contract lane — 2026-10-05

At this report snapshot, the shared matrix had nine active AVIF/JPEG fault contracts, kept separate from Pillow parity with oracle_status: not_applicable. An earlier selected lane run, recorded before the SGR restoration contract was added, executed eight contracts and passed all eight public error and retry checks. Coverage MCP reported no remaining branch gaps at the AVIF color-tile reservation fault point in frame.rs:1574 or its reservation error conversion at :1577. That selected report records 4,876/32,252 branches; it is not full-suite coverage. It has no source/build receipts or test attribution, so those totals are limited selected-run evidence. Against target/release-evidence/coverage-avif-color-tile-parity-baseline-20261005.info, the incremental LCOV comparison estimated 1,366 newly observed line coordinates (0.990925 percentage points). This remains an unverified estimate, not a receipt-bound causal claim or full-suite gain. The historical reports are target/release-evidence/coverage-fault-contracts-eight-agent-20261005.json and target/release-evidence/coverage-fault-contracts-eight-agent-20261005.info.

That nine-case lane subsequently passed 9/9, including the SGR restoration allocation-classification contract. Its report is target/release-evidence/coverage-fault-contracts-nine-20261005.json and records 4,878/32,254 branches. Coverage MCP reports no remaining branch gap at the SGR allocation error conversion in restoration.rs:688. This selected report also has no source/build receipts or test attribution; the runner output establishes the nine passing contracts, while its coverage coordinates remain limited evidence.

Progressive CMYK without APP14 parity — 2026-10-04

The active progressive_cmyk_no_app14 row strips the single Adobe APP14 segment from the existing progressive CMYK input. The 11,859-byte fixture has SHA-256 abe44e8567c1cbf463ba0e99cd8d96598fad6de8291e8723f3abd00d82ce769c; Pillow 12.2.0 returns 65,536 CMYK bytes with SHA-256 ff97c9d811b513694fa089a582cdf540e4f17c26bfa087cd9df458dd0f610385. The initial selected parity run found all channels complemented: the progressive path inverted CMYK samples only when APP14 existed, unlike the baseline path and Pillow's four-component output convention. The decoder now applies the same inversion for all four-component progressive JPEGs and no longer stores an unused APP14 transform byte. The targeted parity run passed for the new case and the existing baseline and progressive APP14 CMYK neighbors. Its matrix case is included in the same-source parity baseline; it therefore adds no further marginal line coverage in a separate selected-row comparison.

AV1 duplicate tile-group-start parity — 2026-10-04

The active error_tile_group_start_order AVIF row changes the second split tile-group header from tile 1 to a duplicate tile 0, with zero alignment padding. The 316-byte fixture hashes to 68781acc246e2946c962c33990c53b50ed308a06fcdec6e421a38dbf353de4cf. Pillow reports RuntimeError: Failed to decode frame 0: Decoding of color planes failed; the selected Rust/Pillow parity row passes 1/1 on the local Pillow 11.3.0 host (the repository pins 12.2.0). The isolated report target/release-evidence/coverage-avif-tile-order-final.json and the refreshed parity-target report cover the missing true arm at src/codecs/avif/av1/frame.rs:1482. Coverage MCP's selected-test comparison observes one new coordinate, but remains limited without source/build receipts. The deeper accept_tile_group ordering guard at line 1545 is rejected earlier by read_tile_group, so this row claims only the public path it reaches.

GIF metadata-limited decode parity — 2026-10-04

The active palette_absent case also exercises the public metadata-limited decode path on its three Pillow-valid GIF inputs, with a 13,772-byte cap above their metadata extents. The normal decode assertion remains active, and the policy decode must return exact reference pixels. Its selected matrix row passes 1/1; the isolated report and Coverage MCP comparison observe the false outcome at src/codecs/gif/decode.rs:369. The full comparison also observes the true outcome at line 400 for the local-table variants. Pillow pixel references and GIF assets were unchanged. The host Pillow version is 11.3.0 while the repository pins 12.2.0, so this Rust-only policy-field change did not regenerate oracle outputs.

Progressive JPEG restart-overrun parity — 2026-10-04

The active decode row progressive_restart_overrun mutates the second progressive scan in progressive_restart.jpg by appending sequence-correct RST7/RST0 markers at its entropy boundary, before the following DHT and DRI markers. Its 5,655-byte input hashes to 509d436c87d82c880128aeffe1b41a39819dc7030141964bd302a6e4039f3c86; pinned Pillow 12.2.0 returns the same 128×128 RGB pixels as the unmutated source, with reference SHA-256 e92abdc1f9d14fd2491920de98bdcee028788715bebc6ba5d21b20d89b59fd76. The selected public parity row passes 1/1. Its isolated LLVM report records 4 true and 5,632 false outcomes at src/codecs/jpeg/decode/progressive.rs:832, exercising the extra empty segment past the 256-MCU scan. Coverage MCP has no source/build receipt or test attribution for this selected report; the named-row result and branch counts are local execution evidence.

JPEG low-quality 4:2:0 edge parity — 2026-10-04

Monochrome AV1 film-grain parity — 2026-10-04

The active decode row portable_lossless_filmgrain_monochrome_64x64 is a 6,210-byte 64×64 8-bit all-lossless monochrome AV1 primary still with frame film grain. Its AVIF input SHA-256 is 0bc3fe81f320d7f55853d53ec7b7fa20f099bf8af7e5e7ccbaa69556ccd980d4; Pillow 12.2.0's 12,288-byte RGB reference hashes to 853bfb557b4ab4960d708f4ecfeda145ed9feab8c987214d82ee6a20665e93f4. The selected public parity row passes. The decoder now admits monochrome primary sequences that declare film-grain support because selected-display materialization applies the frame's grain before checking the complete plane. The auxiliary-alpha admission rule remains unchanged.

Coverage MCP compares eight newly observed branch coordinates in film_grain::apply_monochrome with the earlier full report; eight validation arms remain unobserved. Both reports lack source/build receipts and test attribution, so this is limited coordinate evidence, not a verified causal claim.

JPEG low-quality 4:2:0 edge parity — 2026-10-04

The active encode row enc_sub_420_q10_odd_streaming_edge combines quality 10, 4:2:0 sampling, and a 33×33 source, exercising partial right and bottom MCU edges on the low-quality streaming path. Its existing source asset hashes to afdec16d964c39b1d8f8329f72d798669ce507bf0904f96388fd273ddf65cc45; Pillow 12.2.0's 33×33 RGB reference is 3,267 bytes with SHA-256 9ee98db427d2e8ac625f6eb0e09e79f96ae13ff7c975297d537fe0e1725c27e4, and the encoded JPEG reference is 777 bytes with SHA-256 db364d028ea02c8c5e3548e22df6c1d4a74466e9afb06cf952bfe0e47e71419e. The selected public matrix row passes. Its selected LLVM report records the true arm of present[0] at jpeg/encode/mod.rs:3925; the remaining listed arms are structural states, and the full coverage totals remain unchanged. MCP reports no source/build receipt and unknown test attribution, so the branch observation is coordinate evidence rather than a receipt-verified causal claim.

GIF reserved disposal values — 2026-10-04

The active rows enc_animated_disposal_8_reserved_bits and enc_animated_disposal_255_u8_limit exercise GIF sequence encoding with the full public u8 disposal range. Pillow 12.2.0 shifts the supplied value into the graphic-control packed byte: disposal 8 produces 0x20 / 0x21, while 255 produces 0xfc / 0xfd. The exact two-frame Pillow outputs hash to 8a8954d61effd22db2292078adda561beb35102d50c36d2cd438094787afc190 and 727785b857f0bbb52cddea5cbbad4a14b8721f68914eb31cc557b92344a69305. Both selected public parity rows pass. Coverage MCP returns no missing branch group for disposal_code; its report has no source/build receipt and unknown test attribution, so this is coordinate evidence rather than a verified causal claim.

Public parity rows added — 2026-10-04

The active AVIF rows error_sequence_frame_id_width_exceeds_16 and error_sequence_identity_color_matrix_profile2_8bit mutate the pinned error-resilient animation's sequence header. The first changes its three-bit additional frame-ID length from 0 to 2, declaring a 17-bit frame ID. The 1,084-byte input hashes to 6970dc8e41a8861097dff0fbd8577b84dde72ec2018d3f2f75169bf7d78a123e. Pillow 12.2.0 opens and verifies the container, then reports RuntimeError: Failed to decode frame 0: Decoding of color planes failed on load. The selected public decode row passes. The selected LLVM branch report observes the true arm of the 16-bit guard at src/codecs/avif/av1/sequence.rs:266, which the preceding full Coverage MCP report listed as missing. Coverage reports lack source/build receipts and test attribution, and the selected comparison is not aggregate-comparable, so this is coordinate-level evidence. The second changes the same sequence from Main profile to profile 2 while retaining 8-bit depth, then sets the CICP matrix to the identity value. Its input hash is 478d360b9c47d12f32c1a2f6ee9da0a483f7b6ac87b1ea93deda0e786dea07f6; Pillow 12.2.0 opens and verifies it before reporting the same decode error. Its selected branch report enters identity-matrix parsing, but raw counts at sequence.rs:354 show its profile != 1 true arm and both nested profile == 2 && bit_depth == 12 outcomes remain unobserved. This malformed row therefore does not close the profile/depth guard.

The active rows baseline_reserved_ac_zero_size_eob and baseline_multiscan_reserved_ac_zero_size_eob cover Pillow's handling of a reserved zero-size AC symbol (0x10) as end-of-block. Their 137-byte grayscale and 165-byte 4:4:4 multiscan inputs hash to 278b5b7d9a5d56799646149baec5c89be8d1f1bc1d39c74f0ab02b16a53c774d and 8aa96a1a0a6e8edd37fafbe7be424c3b3691deb16923a469c46718730a10e7bc. Pillow 12.2.0 yields 8×8 grayscale and RGB images respectively, all pixels 128; both selected public decode rows pass exact parity. The grayscale row reaches the single-scan fast path, and the three-scan RGB row dispatches through the scalar baseline block decoder. Zero-size EOB leaves the DC-only output optimization available.

The active JPEG rows baseline_420_restart_row_aligned and baseline_420_restart_overrun add an exact DRI=8 4:2:0 control and a Pillow-tolerated surplus-restart mutation. The 5,954-byte control hashes to a0ea540bcedbb4fdb195055eee29aa0e3f5b9a856e6bea195002be0d8f7d5f4c; the 5,958-byte candidate hashes to d52d934b119504b84ee1697bec2ce78077788e3a98ff8073a371a2a42b26715c. Pillow 12.2.0 loads and verifies both as 128×128 RGB with the same pixel SHA-256 e92abdc1f9d14fd2491920de98bdcee028788715bebc6ba5d21b20d89b59fd76. The candidate inserts FF D0 FF D1 before EOI. With 64 MCUs and DRI 8, the decoder expects eight entropy segments; the mutation supplies ten, reaching the direct-path segment-count fallback at src/codecs/jpeg/decode/decode.rs:1180. The focused public row passes 1/1. Coverage MCP's refreshed full report has no missing branch group at that location. MCP still lacks source/build receipts and test attribution, so this is coordinate evidence rather than a receipt-verified causal claim.

The active JPEG row baseline_444_single_component_scan_cb retains only the first Cb scan from baseline_444_three_sequential_scans and appends EOI. The 640-byte input hashes to 6ab4a1f95019f910ed48b81d5889ff9a464904c9ba158232ab290e41dfe16231; Pillow 12.2.0 opens, verifies, and decodes it as 8×8 RGB with pixel SHA-256 3100a6a318864cd8fff4192c9acc15b51f2219a0195043761c7a38caf5b3963a. This single-scan route reaches the scan_components.len() != 3 fallback guard in src/codecs/jpeg/decode/decode.rs:1590, then decodes through the general checked path. The public matrix test and complete make coverage campaign pass. Coverage MCP no longer lists that outcome as missing, but cannot attribute the hit to a test without source/build receipts. No codec or SIMD implementation changed in this fixture batch.

The active JPEG row baseline_cmyk_single_component_scan retains only the first component scan from baseline_cmyk_13x9.jpg. Its 13×9 CMYK input hashes to 81109c230ad68dc6ddfccb25a441f9c0ceb2b5d336a3e948b2496628849c1c7f, and Pillow 12.2.0's decoded CMYK pixels hash to 1ca1b4e0d3309f8b0e4d84ddc4fd20c8fc98827a62e0b4d3713ef3017f52f7b4. The focused public JPEG matrix passes 202/202 rows. This input reaches the single-component fallback in src/codecs/jpeg/decode/decode.rs:963; the coverage campaign below measures it in the current report.

The active AVIF row animated_lossy_inter_420_superres_sgr_8bit_160x56 extends the 10-bit super-resolution/restoration witness to 8-bit I420. Its frame 1 uses largest-transform mode, 16×16 partitions, super-resolution from 128×56 to 160×56, and SGR restoration on all three planes. The 1,612-byte timestamp-normalized input hashes to c294163610d4a45852fe374e0345c878979bb81e5ea94596960ef64411180fd7. Pillow 12.2.0 RGB frame hashes are 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 0bb7e3278f7cad0535a87e433d644434074b207396bf668ab3f5007dfca98061; the selected public sequence decode matches them byte-for-byte. The fixture uses the pinned encoder compatibility patch documented in scripts/avif_fixture_oracle/README.md.

The active AVIF rows error_av1c_invalid_marker and error_av1c_twelve_bit_without_high_bit_depth each mutate one field in the 3,077-byte baseline file. Their input SHA-256 values are 8e183203e849b4a7fd01bf5662b585a42b745b01b18a62a5c11cb64d550dbae9 and 68e3963bfc3437156e871b5b48e279e1450fa8d67f22b03644925190b8b03695. Pillow 12.2.0 reports PIL.UnidentifiedImageError; the Rust parity contract reports malformed. The AVIF decode matrix passes 442/442 cases, and Coverage MCP now returns no missing branch observations at samples.rs:724 and samples.rs:732.

The active AVIF row error_animated_duplicate_sample_size retypes the animated fixture's stss box as a second stsz, places it before stco, and makes the following chunk-offset table incomplete. Its input SHA-256 is 99400ac1612db40de4af63b07e7511483381590689be3cc0ed1607df63e44959. Pillow reports PIL.UnidentifiedImageError, and the Rust parity contract reports malformed. The AVIF decode matrix passes 443/443 cases. Coverage MCP reports no missing branch observation at samples.rs:2189; the report still lacks a source/build receipt, so this remains coordinate-level evidence.

The active AVIF row animated_lossy_inter_420_superres_sgr_10bit_160x56 adds a full-range two-frame 10-bit I420 sequence. Its inter frame is coded at 128×56, super-resolves to 160×56, and uses SGR restoration on all three planes; the bitstream uses the supported largest-transform mode. The 1,366-byte timestamp-normalized input hashes to 016e4a8433002b60899744fba6f26a7c10af82c192f65b4c5c19233b15c3cb11. Both public Rust decode APIs match Pillow 12.2.0 byte-for-byte: frame hashes are 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 199a031bed1879efe5b17d90bacd44226ec2c05da120f4e981326695e6d493d0, each with a 33 ms duration. The selected manifest parity row passes 1/1. Coverage MCP's full-report coordinate comparison shows this case alongside other all-feature work exercising 61 additional outcomes in the high-depth super-resolution/restoration admission function; the function now has 65 unobserved branch outcomes. MCP reports no source/build receipt or test attribution, so the comparison is not a verified causal claim.

The active AVIF row animated_lossy_inter_420_superres_select_10bit_160x56 adds a companion full-range 10-bit I420 sequence. Its inter frame uses TX_MODE_SELECT with the same 128×56 to 160×56 super-resolution geometry and no active restoration. The 1,311-byte timestamp-normalized input hashes to 04e31a3ac36c25ef77061a2ed09b79fd8fb885a5ff14d6ab3a82e2d32ad3b02e. Public Rust decode and sequence decode match Pillow 12.2.0 byte-for-byte; the RGB frame hashes are 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 7aa2455358aa4a1d51b3a4a263a425229b1be524efd68979a26dad18c8250fef, both with a 33 ms duration. The focused row passes 1/1, and native repetition is confirmed as infinite. Coverage MCP's selected comparison against the SGR row shows seven newly observed coordinates in complete_high_depth_inter_reconstruction_context; the all-feature report also adds one covered branch relative to the prior full report. Those reports lack source/build receipts and test attribution, so these remain coordinate signals rather than verified attribution.

The active ICO row error_short_header_metadata_preflight uses a four-byte recognized signature without the remaining directory header. Its input SHA-256 is 6b1e73a0094b7b812d3b9e22cffb4f8239319847522c4fa103753b6950020f93; the manifest also compares decode_with_policy with a zero metadata-byte limit. Pillow reports PIL.UnidentifiedImageError, and the Rust parity contract reports malformed. The ICO decode matrix passes 57/57 cases, and Coverage MCP returns no missing branch observation at ico/decode.rs:123.

The active WebP encode row enc_lossless_sampling_row_compaction_checkpoint uses a deterministic 512×1,024 RGB input whose two VP8L histogram bands compact to multiple rows. The token-aware encode shard passes 47/47 cases, including byte-for-byte Pillow parity for the new row. The input SHA-256 is 36d8d0a1048480054a0d99cb503cab17e299d0f6fa1f9afdbee81e1568e43478; its 395,738-byte Pillow WebP output has SHA-256 5d216ba74978fb381c518359f11db60861b8ce6a25ab2c30edd4bdcd8e1ed012. The selected Coverage MCP report has no missing branch at webp/native/encoder.rs:1454, the nonzero-row token checkpoint. Its report still lacks a source/build receipt, so this is coordinate-level coverage evidence.

Token-aware VP8L sampling checkpoint parity — 2026-10-04

The active WebP encode row enc_lossless_sampling_equal_rows_checkpoint uses an 8,192×16 RGB fixture with 511 unique colors. Repeated histogram distributions across tile rows reach the token-aware row and column sampling checkpoints without selecting the palette transform. The selected public row passes Pillow byte parity, including the token-aware Rust output. The input SHA-256 is cda7a74a4e7b6e8414374a82307919b65426a6c24b252055e6f89c0cc230650a; its 134,180-byte Pillow WebP output has SHA-256 3da23b0660aba09c176a17b552913c14e33f2ac943a265582bdbfb5a0529b92f. Coverage MCP reports no missing branch outcomes at webp/native/encoder.rs:1378 and :1418, the 1,024-comparison row and column checkpoints. The incremental LCOV estimate reports four newly covered lines and a 0.002902 percentage-point gain against the pre-row baseline. That increment is coordinate evidence only because source/build and test receipts are unavailable; branch-level incremental unions remain incomparable.

The current matrix contains 2,233 total rows: 1,753 decode / inspect / verify rows and 480 encode rows. Of those, 1,753 decode rows and 448 encode rows are active; 0 decode rows and 32 encode rows are planned. TIFF has 288 decode rows. The 31 fault contracts are tracked separately from the Pillow parity totals. Full and selected MCP reports lack source/build receipts and test attribution, so MCP locations are coordinate evidence rather than verified named-test attribution.

PNG Paeth tie parity — 2026-10-15

Two active public encode rows now target Paeth predictor tie behavior. enc_paeth_tie_precedence uses a 2x7 grayscale raster to exercise the predictor return arms and equal adaptive filter scores. enc_paeth_emitted_above_upper_left_tie uses a 3x2 grayscale raster where Paeth wins adaptive selection and distinct, equally close above and upper-left samples make its tie choice visible in exact encoded bytes. The pinned Pillow 12.2.0 references and round-trip pixels are generated from the public encoder. The second reference decompresses to filter bytes [0, 4] with Paeth residuals [1, 1, 0]. The selected public matrix run passed both rows (2/2), made eight public encode calls, and had no panics.

Coverage MCP returned no missing branch groups for src/codecs/png/encode.rs:275 or :339 in the selected report target/release-evidence/coverage-png-paeth-tie-final.json. That report observed 269/31,320 branch outcomes. It has no source/build receipt and test attribution is unknown. Incremental comparison with coverage-png-matrix-current.json is incomparable because the branch detail differs (31,320 versus 31,314 outcomes); no marginal gain or full-suite coverage claim is made. The saved full baseline remains unchanged.

JPEG Huffman edge rows — 2026-10-14

Two generated JPEG parity rows extend the active matrix. long_huffman_code_slow_path is an 8x8 grayscale SOF0 image whose one-symbol DC and AC tables use valid 11-bit codes; pinned Pillow 12.2.0 decodes all 64 samples as 128. The row exercises the >10-bit lookup fallback through public decode operations. baseline_444_unused_custom_dc_chroma_table adds unused DHT selector 2 with standard chroma DC code counts and swapped symbol values. Pillow 12.2.0 returns the same 128x128 RGB pixels as the baseline image, while Rust takes the generic custom-table path.

The saved full branch report .coverage-mcp/local-evidence/20261013/main-full-baseline/coverage.json lists the false arm of standard_huff_table at huffman.rs:89 as missing. The selected public row passed 1/1. Its focused report is .coverage-mcp/local-evidence/20261014/jpeg-unused-custom-dc-chroma/coverage.json; Coverage MCP no longer lists the values-comparison false arm at line 89, and a selected-row comparison against jpeg-empty-dc-huffman/coverage.json reports three newly observed branch coordinates, including that arm. The comparison is limited: source/build identities are unverified and test attribution is unknown. This is targeted coordinate evidence, not a verified aggregate gain. No full coverage run was made.

Current AVIF location generator observations — 2026-10-05

The current AVIF location inputs come from scripts/generate_avif_idat_fixture.py through the normal asset hook. They exercise a truncated extent index, an unsupported three-byte index width, assembly from two indexed idat extents, and an extent ending one byte beyond idat. Pinned Pillow 12.2.0 rejects the first two at open, preserves the split item's complete image result, and accepts inspection and verification of the overrun before frame decoding rejects it as malformed. The canonical reference generator reads configuration depth through the bounded configuration-only reader in scripts/inspect_avif_bitstreams.py; its full sample inspector keeps extent validation. Independent enrichment failures abort generation. These ordinary cases remain separate from the 24 target-only fault contracts.

Token-aware PNG reserved-distance parity — 2026-10-04

The active row error_token_aware_reserved_deflate_distance reuses the pinned zlib_reserved_distance_symbol.png input through the public decode_with_token API and checks the same Pillow 12.2.0 malformed-decode contract as ordinary decode. Its 67-byte fixture has SHA-256 222fcf6a5fc0b121582aa779cd86a7e77e35948b779e71151313d9ced571b7b1; the selected public parity row passes 1/1.

The selected LLVM report records one hit on the reserved-distance true arm at src/codecs/compression/deflate.rs:539, which the earlier full report lists as uncovered. The other outcome remains uncovered in this one-row selection. The full-versus-selected MCP comparison is incomparable because baseline branch detail is incomplete; both reports lack source/build receipts and test attribution, so this is coordinate-level evidence only. No codec or SIMD implementation changed.

AVIF profile-2 12-bit identity-CICP parity — 2026-10-04

The active row profile2_identity_12bit_444 uses a reproducible 16×16 full-range 4:4:4 AVIF with profile 2, 12-bit samples, and CICP 1/13/0. Its 1,188-byte fixture SHA-256 is 1ce2aae5539074e3a65092f185c4db34537462d637859d4fd85449bb15557931; the 768-byte Pillow RGB8 reference SHA-256 is 45114693c3cde135ae810d49fbfb8bcf54204da4b9bf11fa3094b5e177686343. The selected public parity row passes 1/1. The decoder maps AV1's Y/Cb/Cr identity planes to G/B/R and truncates validated 12-bit samples to RGB8; existing YUV conversion kernels are unchanged.

The fresh selected LLVM report records the true outcomes of all three guards at src/codecs/avif/av1/sequence.rs:354 (three hits each). The separately selected 8-bit malformed identity-CICP row records the false depth outcome (three hits), so the two public rows exercise both depth outcomes. Coverage MCP reports the opposite outcomes missing in their respective single-row selections. The profile != 1 false arm and profile == 2 false arm remain unobserved. MCP reports lack source/build receipts and test attribution; its selected-test comparison is limited coordinate evidence, not a verified full-suite gain.

VP8 loop-filter mode-delta parity — 2026-10-04

The active WebP row lossy_vp8_mode_filter_delta uses a deterministic 128×128 RGB keyframe with a +5 VP8 loop-filter mode delta. The 3,312-byte fixture SHA-256 is 86b97b8489b9ec2318858bef5d91be138e1222398dd2b8ffbde6dded0e598b55; its Pillow RGB pixel SHA-256 is ce195285d0ae374bc2ae5538da590658fbe26846b27cf2b0d2300979319f4c99. The selected public decode parity row passes 1/1. Its fixture generator applies the encoder-only patch to a temporary copy of pinned libwebp 1.6.0 and checks the Pillow output hashes.

The selected LLVM report records true hits at src/codecs/webp/native/vp8.rs:1158 (3), :1283 (3), and :1913 (192); the mode check at :1915 observes both outcomes (177 true, 15 false). Coverage MCP confirms the opposite outcomes at 1158, 1283, and 1913 remain unobserved in this selected-only report. The earlier full report listed these true outcomes as missing, but neither report has source/build receipts or test attribution, so the comparison remains coordinate-level evidence.

WebP malformed chunk extents and GIF89a exact metadata budget — 2026-10-04

The active WebP row error_truncated_chunk_header_metadata_preflight retains the valid VP8X and EXIF chunks from exif.webp, removes its VP8L image chunk, and adds one byte inside the corrected RIFF extent. Pillow rejects the resulting malformed file; the Rust row exercises the metadata preflight path with a zero-byte metadata limit. The full parity matrix passes, and Coverage MCP no longer lists the short-chunk-header branch at src/codecs/webp/decode.rs:203. The report is source-unverified and its test attribution is unknown, so this is coordinate evidence.

The active WebP row error_chunk_exceeds_riff_metadata_preflight uses the same extended metadata container with the EXIF chunk length raised past the RIFF extent. Pillow and the Rust public operations reject it, and the zero-byte metadata-limit call reaches the chunk-extent error at src/codecs/webp/decode.rs:223. Coverage MCP no longer lists either line 203 or line 223. Its two remaining WebP metadata branches, at lines 185 and 186, reject bad RIFF/WEBP signatures before public metadata scanning can be entered.

The active GIF row gif89a_exact_metadata_limit checks that the existing GIF89a lzw_kwkwk.gif fixture decodes at its exact 39-byte metadata limit. Its Pillow pixel parity passes. This case adds a metadata-policy regression check but does not change aggregate coverage; the remaining reported GIF signature arm corresponds to invalid signatures, which public format detection rejects before metadata scanning.

An earlier local full report recorded 86,813/142,471 lines (60.9338%), 16,768/32,250 branches (51.9938%), 4,849/8,990 functions (53.9377%), and 132,773/220,396 regions (60.2429%). The GIF exact-budget case adds a parity regression check without changing that report's aggregate coverage. The report and MCP view lack source/build receipts and test attribution, so their source locations are coordinate evidence rather than verified causal attribution.

The active AVIF row iref_future_version adds an empty version-2 iref FullBox and preserves exact Pillow 12.2.0 metadata and pixels. Its selected public Rust parity row passes.

The active JPEG row baseline_444_multiscan_final_empty_entropy derives an 8×8 baseline 4:4:4 image with an empty final component scan immediately before EOI. Pinned Pillow 12.2.0 decodes the fixture and the selected Rust parity row passes. The refreshed local LLVM report with both rows records 86,819/142,504 lines (60.9239%), 16,751/32,252 branches (51.9379%), 4,847/8,990 functions (53.9155%), and 132,753/220,401 regions (60.2325%). Coverage MCP no longer reports missing branch observations at avif/samples.rs:982 or jpeg/decode/decode.rs:2473. The local report has no source/build receipt or test attribution, so these locations are coordinate evidence rather than verified causal claims.

MCP still reports the true outcome for the right-hand comparison at tiff/decode.rs:1872 and :1965. The active invalid-first-code TIFF row makes the left side of code >= CLEAR || output.len() >= expected true, so the right side is short-circuited. Public TIFF inputs keep expected positive and the decoder stops when it reaches that size; no public Pillow-parity input can take the right-hand true outcome. This is not a missing public fixture.

The active WebP row enc_lossy_method_6_token_checkpoint exercises the token-aware lossy VP8 method-6 trellis path on lossless.webp. Its 128×128 RGB input SHA-256 is 20eb48b4ef2a42d4842684930c2023f7d14ac343b825d19a185e8dda5b25f8b2; its 49,152-byte Pillow RGB reference hashes to 2c759de6a1ae9096f129744a6c04d24f1a611bcd8841b26810cc1c583b6a1525, and its 3,570-byte Pillow WebP output hashes to ba524d40418e1bd254e437cb4cf51d98e10d31df9fb5a163938840b9e3fddf4f. The token-aware WebP encode shard passes 47/47 cases, including byte-for-byte parity for this row. Coverage MCP's focused report no longer lists a missing group at webp/encode/vp8/quant.rs:238, and the raw LLVM export records 10,240 executions of the token-specific quantizer specialization. The aggregate branch percentage did not change; the report has no source/build receipt or test attribution, so these are coordinate and specialization observations, not receipt-verified causal attribution.

A parity-only coverage-matrix run passed 38 public parity-target tests with 18 internal/admin tests filtered out. Its selected report, target/release-evidence/coverage-public-parity-20261004-final6.json, records 83,386/142,489 lines (58.5210%), 16,208/32,252 branches (50.2542%), 4,554/8,987 functions (50.6732%), and 127,597/220,381 regions (57.8984%). Compared with final5, raw covered totals rise by 50 lines, 12 branches, six functions, and 81 regions. Coverage MCP's selected comparison observes six new parse_pasp branch coordinates: the valid false outcomes in both parser implementations. Across the three TIFF increments, Coverage MCP observes the zero next-IFD arm at decode.rs:46, three metadata_bytes outcomes, and the inspect_basic arm at inspect.rs:47. Current filtered gap queries list no missing TIFF outcomes in metadata_bytes, decode_page, or inspect_inner. MCP marks the comparisons limited because source/build receipts are unavailable; they are coordinate evidence rather than verified causal or regression claims. The incremental comparison to final5 is limited because source/build identity is unverified. These selected-target totals describe the public parity test target and do not replace the full release coverage campaign.

The active AVIF row primary_item_pasp_4x3 adds the exact 342-byte input primary_item_irot_pasp_4x3.avif (SHA-256 2acc2e59572718a5fd1247aef7d18ab7666943533f068c221117df05378c4564). It associates a valid 4:3 pasp property with the existing 270-degree primary-item rotation fixture; the property and association add 17 metadata bytes, and the iloc extent is relocated from byte 285 to 302. Pillow 12.2.0 verifies and loads it as 2×3 RGB with the same info and all 18 pixel bytes as the source. The focused public AVIF parity target passes 1/1. Coverage MCP reports target/release-evidence/coverage-avif-pasp-20261004.json and target/release-evidence/coverage-public-parity-20261004-final6.json leave only the three invalid-value arms in each container::parse_pasp and samples::parse_pasp unobserved; the valid false/success outcomes are present. Both reports lack source/build receipts and test attribution, so this is coordinate evidence, not a verified suite-wide coverage gain.

The active AVIF row clap_zero_width_ignored adds an essential clean-aperture property with a zero width numerator to the 3,077-byte baseline AVIF. The 3,118-byte input hashes to ce95ee92b5498964ff6e3e0bd383608c559fafcafe7bd110e5f2101d10734572; Pillow 12.2.0/libavif 1.4.1 verifies and decodes it as 128×128 RGB with the unchanged pixel SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf. Rust's inspector and decoder now preserve this property as opaque metadata and do not apply a crop, matching Pillow.

The active AVIF row clap_zero_width_denominator_ignored adds an essential clean-aperture property with a nonzero width numerator and a zero width denominator to the same 3,077-byte baseline. The 3,118-byte input hashes to 8641c0eff26bfdf83f998e2a13737eeea8dbff30d04c818109a358d3a267b4e1. Pinned Pillow 12.2.0/libavif 1.4.1 verifies and decodes it as 128×128 RGB with the unchanged pixel SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf.

Six further active rows exercise the other ignored clean-aperture cases. The 3,118-byte zero-height-numerator, zero-height-denominator, zero-horizontal- offset-denominator, and zero-vertical-offset-denominator inputs hash to ec0031d6d620d303a05937051504d621498dfe73920c51fb072e03c7746fbe2c, 1004a811270a222f0072637fafc2b1004f25084a6f8f1b34976696595fefefab, 9d67878e798b93a6fe551fdd492701a501d4744d847f26c670e5c793c9a367c3, and 662fca402bf3a78537aaaadbe101c5ceaee736a064ddcaa46ff5931ec17971c2. The trailing-payload rows contain one and 16 bytes and hash to ece2fc8f98cc42f31a8806690ac415460d5eadf96c93492ba2d710c0b2e22bde and 93038a983d242ee2204d866b63a1811573acc7f8e38699595d328ccdf49cf2d7. Pinned Pillow 12.2.0/libavif 1.4.1 verifies and decodes all six rows as 128×128 RGB with the unchanged pixel SHA-256 above. Both AVIF parsers now preserve these unusable clean-aperture declarations as opaque metadata. The full AVIF matrix passes 467/467, and Coverage MCP reports no missing branch group in either parse_clap; its source identity and test attribution remain unverified.

The active GIF row lzw_long_expansion_token_checkpoint is a 1,024×515 Pillow 12.2.0 palette image. Its 1,909-byte input hashes to 60bfab0d96d4fcc742246b440f337bc183e1e1ead86dfa02a8fb4013f07e571a; its 527,360-byte decoded reference has SHA-256 8245292ed38da63c136ed67020067c8dad124da8cadacdb8cad7489f914fa01b. Its valid LZW phrase reaches the cancellable expansion checkpoint, and the new GIF fixture passes exact public pixel parity. A separate error_lzw_end_only_token_checkpoint row checks the immediate-end-code error through the token-aware public decoder; it was split out of the aggregate malformed group so the token-aware assertion applies only to the relevant input. Two more dedicated error rows cover an invalid first LZW code and a future dictionary reference. The selected four-row GIF shard passes 4/4. The full selected Coverage MCP report returns no missing branch groups for decode_lzw_with_token or append_code_with_token in src/codecs/gif/decode.rs; this remains coordinate evidence.

Four existing Pillow rows now also exercise public decode_with_policy at the measured metadata boundary: BMP depth_24 at 54 bytes, ICO single_icon at 22, WebP icc_profile at 69, and TIFF tiled_missing_byte_counts at 146. The focused BMP/ICO/WebP selector passes 3/3 and the TIFF selector passes 1/1; all four retain exact Pillow pixel references. Against the prior selected report, MCP's filtered gap listings now show one missing BMP metadata_bytes outcome instead of two, no ICO metadata_bytes group instead of one, six WebP metadata_bytes outcomes instead of 19, and three TIFF outcomes instead of 10. The TIFF check exercises the unequal offset/count length path at tiff/decode.rs:150. The cycle and empty-directory policy rows exercise the remaining TIFF metadata_bytes exits; the final selected report has no missing branch groups for that function. MCP's aggregate incremental comparison remains incomparable and its reports lack source/build receipts and test attribution, so these are coordinate-level observations rather than verified test attribution.

The TIFF cyclic_ifd_leniency row exercises metadata policy on the self-referential cyclic_ifd.tiff with its measured inclusive limit of 140 bytes. A dedicated error_empty_ifd_chain_metadata_policy row exercises empty_ifd_chain.tiff with a zero limit and retains Pillow's malformed error. Together they cover the cycle stop, matching strip offset/count arrays, and no-directory error path. The final selected report has no remaining TIFF metadata_bytes branch gaps; source/build identity is unverified.

The TIFF single_page row requests page index 1 from single.tiff. Pinned Pillow 12.2.0 reports builtins.EOFError, and the public owned and borrowed decode_frame calls are pinned to Rust's parameter error. This reaches the zero next-IFD termination arm in tiff/decode.rs:46; the preceding selected report listed that arm as missing. The final parity-only run passed with the frame request included, and Coverage MCP no longer lists that arm. The report has no source/build receipt or test attribution. The row also exercises public inspect_basic; the parity harness checks that its complete page count matches the full inspection and Pillow reference, covering the basic path in tiff/inspect.rs:47.

The active TIFF row error_lzw_invalid_first_token_checkpoint checks the invalid-first-code error through the token-aware public decoder as well as the ordinary decode path. It is retained for that API parity contract, not claimed as a new branch gain. A fresh one-row LLVM report, target/release-evidence/coverage-tiff-invalid-first-token-selected.json, records the invalid code >= CLEAR arm four times in ordinary decode and twice in token-aware decode at tiff/decode.rs:1872 and :1965. The RHS output.len() >= expected is short-circuited and has no counter in this selection. Coverage MCP reports the missing RHS outcomes in the one-row view; this does not identify a missing public input, because the first code is already invalid and a valid first code starts with zero output against a positive expected length. The same fresh report lacks source/build receipts and test attribution.

The final5 TIFF branch query has four remaining outcomes: the invalid-signature arm in parse_header at decode.rs:1005, the output-full RHS in ordinary and token-aware LZW at decode.rs:1872 and :1965, and the empty-input arm in encode_lzw at encode.rs:723. Public format dispatch rejects signatures before parse_header; TIFF validation requires positive decoded dimensions and skips zero-row compressed strips before LZW; and public encoder validation passes nonempty pixel data to encode_lzw. These defensive arms have no known public Pillow-compatible parity witness under the current APIs. This is a source-level reachability assessment; the MCP report lacks source/build receipts and test attribution.

Public parity rows added — 2026-10-03

The active JPEG row baseline_444_restart_marker_fill adds three legal 0xFF fill bytes before the restart markers of a Pillow 12.2.0 baseline 4:4:4 JPEG. Its input is 2,593 bytes (SHA-256 c5369d29b879ca0d40ac01c927c4a5d845d3fc9f59ae07ccb7cb5947b0e5fee2); its 2,835-byte Pillow RGB reference has SHA-256 0276fe6a4734a34cee3009e2c6aca9c36323785712622759f3a8b9e835453895. The selected public parity run passes. The pre-row full report listed the true arm of the repeated-fill loop at jpeg/decode/decode.rs:2484; the selected report observes it, and the refreshed full report has no gap at that location.

The active AVIF row no_intrabc_repeated_patch_monochrome_256 pairs the existing monochrome IntraBC witness with an all-lossless frame that disables IntraBC. Its input SHA-256 is 34321df1afb253b459f20169ddc4d3b588e517b4832c2c2460d6900ca647c7a3; its 196,608-byte Pillow RGB reference has SHA-256 ed729898cd63496b4a1aa628686ebff2dd7a0f383dfdae854f7cd77dae54ce22, and the selected public parity row passes. Coverage MCP still reports the false arm of !header.superres_enabled at av1/frame.rs:3346; this row tests the valid IntraBC-disabled bitstream state and is not credited with closing that superres branch. Selected and full reports have no source/build receipts and unknown test attribution, so the branch observations are coordinate evidence.

The selected and refreshed full reports show no remaining branch gap at jpeg/decode/decode.rs:2484, av1/frame.rs:3647, or webp/native/decoder.rs:226. MCP incremental comparison is unavailable because the full report's detailed baseline branch inventory is incomplete; no four-metric union or receipt-verified causal attribution is claimed. The full report still has 15,726 unobserved branch outcomes, so the 100% goal remains open.

The existing WebP rows enc_lossless_indexed and enc_lossless_indexed_alpha now also request public encode_with_token parity. The 9,190-byte opaque Pillow reference has SHA-256 fc35d688c00c25e149daee2fc8716ca3e6fcd671a67430db0169671c0dc39b34; the 2,022-byte alpha reference has SHA-256 5e8dfcc6d3fab8655405b166a951cbb1885400c7b6966945e112cc0473d0c339. Both token-aware calls match those exact bytes, and the indexed-alpha call also retains its 65,536-byte RGBA reference (SHA-256 f622a7e1dbe429f8414c6081c3d79c93573e37b18538dc828c497f13fa8b3659). The selected MCP report and refreshed full report no longer list either outcome of has_alpha in the token-aware expand_indexed path at webp/encode/mod.rs:663. MCP source/build receipts and test attribution are unavailable, so this is coordinate evidence.

The active WebP error row error_truncated_riff_extent_metadata_preflight adds a reproducible 16-byte RIFF prefix declaring 32 container bytes while providing only the 16-byte header. Pillow 12.2.0 detects WebP and rejects the input with OSError: could not create decoder object; the selected public parity row passes. The matrix also repeats public still decode with a zero-byte metadata limit and checks the resulting error kind and format against the same Pillow error contract. The full Coverage MCP report no longer lists a missing branch at webp/decode.rs:193, the declared-extent guard. MCP source/build receipts and test attribution remain unavailable, so the coordinate mapping is not receipt-verified.

The WebP decode row lossy_vp8_segmentation_feature_data_disabled_16x16 (input SHA-256 b1fce88cb549bb4429cada0271752681530e8a86bc1c76256c57e581cf7c93ad) matches its pinned Pillow RGB reference and passes selected public parity. A Coverage MCP comparison with the saved pre-row report observes the false arm at src/codecs/webp/native/vp8.rs:1177; the refreshed filtered query has no missing branch there. The reports lack source/build receipts and test attribution, so this is coordinate evidence, not receipt-verified causal attribution.

The GIF encode row enc_rgb_balanced_checkerboard_token_split uses source SHA-256 d5045ccb8a0f05d35a07e300642c7501d4349af24aee2157b0b6886a0e3a32d4 and matches the 78-byte Pillow GIF reference with SHA-256 edcba5284f8c6f34ffb4de0f7c6012a90b7a650c3c693ac97efe6ad176c74f6d. Its selected public parity passes. The full comparison shows no new branch coordinate: the false arm for split > 0 at src/codecs/gif/encode.rs:1832 remains missing, while this input exercises the false outcome of the later equality operand. The normal 22-row color quantization partition also leaves that arm unobserved. Retain this row for public token-encoding parity, not as a coverage gain; MCP source/build identity is unverified.

The additional GIF row enc_rgb_257_color_low_green_dominant exercises a skewed 257-color RGB distribution (source SHA-256 221a0b156a315d1113a1d491c7fe497b21253a21ff17ad28c9ac7dd6f3c7c0e7) and matches the 1,124-byte Pillow GIF reference with SHA-256 f63195630ba5ccc8c680101828adceb54944bfa35dd235d48ae7a7921cf070cd. Its selected public token-encode row passes. The full branch comparison shows zero new coordinates, and the refreshed query still reports the false arm of the split < sorted.len() condition at src/codecs/gif/encode.rs:1814. The selected input reaches the final axis entry but exits through the median-threshold break; treating the condition's false arm as unreachable for valid public inputs is a source inference, not receipt-verified Coverage MCP evidence. Keep the row for its exact palette-encoding parity value, not as a coverage gain.

The AVIF decode row animated_lossless_inter_420_clipped_b32x32_10bit_28x28 uses input SHA-256 f9d829f20968483dbd078a47f136b9c413205ce78d423fb0b5f1bdb2d2c0cce4. Pinned Pillow 12.2.0 returns two 28×28 RGB frames at 100 ms each, with hashes 925479a7e1eb832f5ce02848b2fb4df84769979f770e056ac398bf856cdcca1f and e8e893f5c8a17b1d22653f7d92adfed2021901ab37d9bcbc72debccfba3645bd; the selected public parity row passes. The selected report still shows missing outcomes in decode_inter_transform_size at av1/entropy.rs:6927 and :6938, so this row is retained for high-bit-depth clipped-frame parity rather than as a coverage gain. The report has no source/build receipt or test attribution.

Three WebP encode rows cover compressed, raw, and equal-sized alpha candidates. enc_lossy_rgba_alpha_compressed (source SHA-256 bdf14b68c3d95d39080728931fee6002ddb27624e816df41a1120ba497ee2a81) matches the 140-byte Pillow output SHA-256 9528b8edc7bbf5d2010bcaa1492f07feeef7d9004073c4ef3fdf8127f5a5a307. enc_lossy_rgba_alpha_raw (source SHA-256 e1105dfac182e64e01ef20cd87bbe44ffa4a187666161e1d54858afaf947ed36) matches the 4,210-byte output SHA-256 c3fed186ee97cc2418fd1815880646118e73fdaa3fed896bf977118972b13e4d. enc_lossy_rgba_alpha_size_tie uses a 9×1 constant-alpha RGBA source (source SHA-256 6e7e517108ef0e25c4f6c4257318ebf06f0abb2bea133804ea2417883e586d14) and matches Pillow's 100-byte output SHA-256 f99e6b76bea04b1263728c6f4c6d275db57a7e9e1636887f6da8df0f1d84b594 through both ordinary and token-aware public encode calls. The exact tie exposed a parity bug: Pillow keeps the compressed candidate on equal lengths. Both Rust paths now choose raw only when it is strictly shorter, retaining the existing compressed buffer on a tie. The selected row passes with five public encode calls and no panics. Coverage MCP reports both outcomes of the ordinary Noop-writer size decision covered at webp/native/encoder.rs:2750; its token-specialized sibling arms remain unobserved in that block because the specialization receives Some(token). MCP source/build receipts and test attribution are unavailable, so the coverage mapping remains coordinate evidence.

The AVIF matrix now includes two size-zero box cases. size_zero_top_level_free appends a size-zero top-level free box and payload to the baseline (input SHA-256 0390a339020a54aa4ddb7600b988407c10efdc21ec0bdff762a793b7a1217e6c). Pinned Pillow 12.2.0 returns the same 128×128 RGB pixels as the baseline: 49,152 bytes with SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf. The error_meta_nested_zero_size_ipma case sets the final nested ipma box size to zero (input SHA-256 01ef1212f06626031f796c5268e49065a340ab0308a0cc7db4a0fdbafcfdbc65); Pillow rejects it as malformed, and its active public row passes. A Coverage MCP coordinate comparison with the pre-case full report shows one additional observation at samples::next_box (samples.rs:264), and the refreshed filtered query reports no remaining branch gap there. The comparison has no source/build receipt or test attribution, so it cannot bind that observation to these rows. avif/container.rs:449 still has an unobserved nested-size rejection arm: public validation rejects the nested box in samples::validated before reaching the duplicate container parser. The error_meta_duplicate_primary_item AVIF row changes the baseline's nested iloc FourCC to a second pitm without moving box data (input SHA-256 3badc9ce02273d7ac0210aa6bcc3634e75cfed2531b30427bf721620452ab2c3). Pillow rejects the malformed meta box and the selected public row passes. Compared with the full report captured before this row, Coverage MCP reports one new observation at samples::parse_meta (samples.rs:471); the refreshed filtered query has no gap there. The report comparison is coordinate-only because it has no source/build receipt or test attribution. The error_meta_nonzero_version AVIF row changes the top-level meta FullBox version from zero to one (input SHA-256 81cbc07cf4cad9653c58c47c7b88fcd3c323d7f749e2c47cbb39995a3a411b9b). Pinned Pillow rejects it as malformed, and the selected public AVIF row passes. The current filtered Coverage MCP query reports no remaining branch gap at samples.rs:449; source/build receipts and test attribution are unavailable. Two more AVIF error rows relabel a later meta child to exercise duplicate tables. error_meta_duplicate_item_info changes iprp to a second iinf (input SHA-256 51045cb251dc8cbbdfa245be7893f8fa54735e16414a71cb77abd0708e4f7aec), and error_meta_duplicate_item_location changes iinf to a second iloc (input SHA-256 8139b4019d1bdaad53622eaa137d0b8987b29b06a1d360df2c1dc0218d546f76). Pinned Pillow rejects both, and both selected public AVIF rows pass. Compared with the saved report before these rows, Coverage MCP shows two new coordinates at samples::parse_meta (samples.rs:478 and :499); the filtered queries have no remaining gaps there. The comparison has no source/build receipts or test attribution. The JPEG row baseline_444_multiscan_duplicate_dqt_after_snapshot duplicates the 69-byte DQT marker between the first two component scans (input SHA-256 a73504634df562811870132182af22730318fa2f4416347770499aa412c71e56). Pillow 12.2.0 returns the 8×8 RGB reference (192 bytes, SHA-256 983025493b251f11b379bbbf15a92cde4e5b9177e63626ff035e0049cc6779b4), and the selected public JPEG row passes. Coverage MCP reports one new coordinate at jpeg/decode/parser.rs:431, with no remaining filtered gap. This comparison also lacks source/build receipts and test attribution. The JPEG row baseline_444_multiscan_duplicate_dht_after_snapshot repeats the first DHT marker twice between the first two component scans (input SHA-256 60ce19025b6c5e78ff18659ffea26dc97a0c628bb29dbc9c78c4d653c8c708f6). Pillow 12.2.0 returns the same 8×8 RGB pixels as the three-scan source (192 bytes, SHA-256 0d4dccc69dc0ee4ae956be8c624186ddb2b5f3d411671361056c51a7ea7f9e66), and the selected public JPEG row passes. Comparison with the saved report before this row shows three new branch coordinates at jpeg/decode/parser.rs:442; the current filtered query has no gap there. This remains coordinate-only evidence without source/build receipts or test attribution. The TIFF parity matrix adds tiled_gray2_deflate_short_tile (input SHA-256 1fb7f7d7d6a281cb667c365fe097bc868d841ec246783bd0b5014f4417127d8) and tiled_palette4_oob_tile (input SHA-256 175f8b4e1c2df6e59d8a758892b8430ddc03cf23c24e26db752faff754435cb6). The first has a valid Deflate stream that expands to a truncated packed tile; the second has a tile offset outside the file. Pinned Pillow opens both headers and rejects pixel loading with decoder/truncation errors, and both active public Rust decode rows pass the expected malformed-input parity. The full all-feature coverage campaign passes with these rows in the matrix.

The tiled_deflate_no_predictor row adds a 128×128 RGB TIFF using Deflate tiles without a Predictor tag (input SHA-256 fddee4f848bfcde2bf9f8064016278ba0d8a755d7f0fc3598c756755e2399f73). Pinned Pillow 12.2.0 produces the exact 49,152-byte RGB reference with SHA-256 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131; its active public matrix row passes. The full local LLVM report records 64 false-arm hits at decode_ifd:454, and the filtered Coverage MCP query no longer lists that predictor branch.

The packed-tile helpers no longer repeat bounds and sample-width checks already guaranteed by their callers; checked bit-offset arithmetic remains. Strict Clippy and the full all-feature suite pass. Removing the two duplicated layout guards reduced the local branch inventory from 32,264 to 32,254 arcs. Filtered MCP queries no longer report gaps at decode.rs:290, :454, or :1141; they still show one header-magic error arm and two LZW output-length guard outcomes. The active error_bad_ifd_lzw_invalid_first row emits code 258 and exercises the separate code >= CLEAR arm in both ordinary and token-aware public decode paths. The remaining output.len() >= expected operands protect an internal state which public TIFF dimensions and capped output writes do not allow. The header magic arm is also unreachable through normal public dispatch: detect_format recognizes only signatures whose magic parse_header considers registered. These MCP locations remain coordinate evidence because source/build receipts and test attribution are unavailable.

On this report, the filtered branch query shows no missing branch groups in src/codecs/jpeg/encode/encode_baseline_422_block_row_streaming. The selected enc_sub_422_streaming_exif_restart_rows public parity row passes and its selected report observes the true EXIF arm at jpeg/encode/mod.rs:1958; the opposite arm remains unobserved in that selection. The report lacks source/build receipts, so it does not bind the observed arm to a source revision or prove test attribution.

The JPEG decode matrix now has 161 active rows. The new baseline_cmyk_aligned_entropy_truncated_tail_64 case uses a 32×8 MCU-aligned CMYK image with 64 entropy bytes removed before EOI (input SHA-256 51f4f76d8a6144572eb0880c5722f290840db23c6fa5a83148ac1a1947d7445c). Its exact 1,024-byte Pillow output has SHA-256 89b4bd202579d6c4c3497dc124d1d45795ffb3dd74bb25a024a40d66f094c718. Public parity passes, and the selected report observes the incomplete-data arm at jpeg/decode/decode.rs:916; the full Coverage MCP query lists no remaining gap there. MCP source/build receipts are absent and test attribution is unknown, so those findings remain coordinate evidence.

The progressive_dqt_redefined_between_scans JPEG row inserts an identical DQT segment after the first DC scan of the 128×128 progressive fixture. The 5,579-byte input has SHA-256 353d4f1b20a5b73e473deef0d401dd91a9d2973c6065b0dfddd005edf21785da; its exact 49,152-byte Pillow output has SHA-256 e92abdc1f9d14fd2491920de98bdcee028788715bebc6ba5d21b20d89b59fd76. The public JPEG decode row passes. Local full LLVM coverage now records three hits for the previously unseen !progressive false outcome at jpeg/decode/parser.rs:431; the filtered MCP query no longer lists that span, though a later conjunction outcome on the same line remains uncovered. MCP source/build receipts are absent and test attribution is unknown.

The animated_lossless_inter_420_b8x16 AVIF row adds a two-frame 8×16 I420 sequence whose public decode selects a lossless B8×16 inter transform. Its 1,152-byte input SHA-256 is 9e3fbac5e42c61413ec8c1f7f4f72bc1338fb7cfd21587e30826855732e369c0; exact 384-byte frame references have SHA-256 201fc960015c0e0974cb9b6aab74c9147694ddfd7876da531b696fc3639257e6 and aebfeaa0e20ab2e7aad44ca321ed0bdebaea085045a02954e55eb63505342659. Both frames have 100 ms durations, and the pinned native loop oracle records infinite repetition. The selected public parity run and refreshed full local report hit the lossless_rect and exact B8×16 outcomes at av1/block.rs:56172. Coverage MCP still lists sibling outcomes and other decoder instantiations at that line; source/build receipt and named test attribution are unavailable.

The active enc_animated_rgba_transparency_composite row decodes a two-page RGBA TIFF (input SHA-256 445c160373a2391d3e090179cf9e5b3959382c1753b9ed762b0a653ec81bf5e6) and encodes both frames through the public GIF sequence API. Its 90-byte Pillow reference has SHA-256 e6fbf77ce827bd01c711a70ea9b48468b3ddf10dcca7bc9635e96eceeee63a7f. The focused GIF matrix test passes, and the fresh filtered Coverage MCP result no longer lists the false arc in composite_image at encode.rs:710. Coverage MCP's report remains coordinate-only because source/build receipts are absent and test attribution is unknown.

The active enc_error_oversized_dimensions BMP row supplies a valid packed L1 image of width 2,147,483,648 (268,435,456 bytes) through the public encoder matrix. Pillow 12.2.0 raises OverflowError: signed integer is greater than maximum; the focused BMP matrix and full coverage campaign pass. The fresh filtered Coverage MCP query no longer lists the width-failure arm in bmp_file_fits. The height-failure arm remains unobserved: a valid 1×2,147,483,648 packed L1 image requires a 2 GiB pixel buffer, so the matrix retains the existing Pillow error row without constructing that buffer. Coverage MCP has no source/build receipt and unknown test attribution, so these locations are coordinate evidence.

The active enc_sub_420_q10_small_image_threshold JPEG row encodes the existing 17×17 RGB input (source SHA-256 cb1632ddf154ea044863205d6b6f6e8249c70791a044debdc2b80b8fae92622e) with quality 10, baseline 4:2:0 subsampling, and optimization disabled. Pillow 12.2.0 produces a 690-byte reference (SHA-256 ff93ff388fa786b630cff562f4052d31de74e9f4d2cdd076b1377f4cf83a8cba). The focused public matrix case passes exact byte parity. Its selected report is target/release-evidence/coverage-jpeg-q10-sub420-small-20261003.json; the full-report query at jpeg/encode/mod.rs:713 now has no missing branch group. The selected report observes the small-image false arm, but the MCP source and test receipts remain unverified/unknown.

The packed FDCT encoder now multiplies all four rounded coefficient numerators by their shared reciprocal with safe u32x4::widening_mul. Both the packed and scalar paths apply the exact possible one-step correction by subtracting the boolean as 0 or 1. The full public JPEG encode matrix passes exact Pillow byte parity. Coverage MCP's filtered full-report queries list no missing branch groups at jpeg/encode/mod.rs:3042 or :3212; the report still has no source/build receipt and unknown test attribution. Three five-round public benchmark runs measured the 512×512 RGB quality-10 4:2:0 case 7.6–8.1% faster than the scalar baseline, with identical encoded bytes and hashes. The full-matrix geometric mean stayed within 1% of baseline, so this is a targeted low-quality workload gain rather than a general JPEG speedup. Artifacts are in target/benchmarks/jpeg/arm64-goal-quantize-simd-{baseline-20261003-b,candidate-20261003-a,candidate-20261003-b,branchless-20261003-c}/.

Coverage MCP still lists the true checkpoint arms at src/codecs/webp/native/encoder.rs:1378 and :1418 as missing in this full report. The experimental large lossless input did not observe either arm and failed exact Pillow parity, so it is not a retained matrix case. The preceding full report's filtered queries found no remaining branch gaps at container.rs:608 or :622, or at jpeg/encode/mod.rs:2201, :2241, and :2283. An earlier filtered query on coverage-after-gif-parity-20261003.json reported no remaining branch gaps in the WebP grayscale/alpha scan. The grayscale RGBA input has 1,024 opaque pixels before varying alpha, so its token-aware scan crosses one checkpoint before selecting the per-tile predictor; alpha classification now shares that grayscale traversal. Two 32×32 partial-alpha RGBA rows exercise the red/green and green/blue early exits. Both match Pillow byte-for-byte at 942 and 954 bytes, respectively, with ordinary and token-aware public encoding. The opaque grayscale shortcut remains available for fully opaque input.

The active decode:gif:valid_frame_missing_trailer row exercises Pillow's acceptance of a complete one-frame GIF that ends at a top-level block boundary without a trailer. Its ordinary and metadata-limited public decode paths match Pillow's 1×1 palette image. The focused GIF matrix passes 80/80, strict lint passes, and the full coverage run above passes. Coverage MCP's filtered branch query reports no missing branch groups in src/codecs/gif/inspect.rs; the report lacks source/build receipts, so this is coordinate evidence only.

Coverage MCP also lists AV1 decode_following_vertical at block.rs:67554, but the full_strict outcome is unreachable through today's public decoder: all four callers use Lossy420Decoder constructors fixed to 4:2:0. The true arm at block.rs:21111 is ordinary nonzero-plane decoding, already represented by active I444 residual rows. Neither coordinate provides a distinct public parity case; the report remains unverified coordinate evidence.

Selected parity and coverage — 2026-10-03

The JPEG public decode matrix passes 174/174 active rows, including valid cases where Cb and Cr use different sampling factors. Those cases exposed a panic in the generic reconstruction path: it cropped Cr using Cb's plane dimensions. Reconstruction now crops and upsamples each chroma plane from its own sampling factors. The existing baseline 4:2:0, 4:2:2, 4:4:4, grayscale, and CMYK direct decoders still return before this generic path.

The four selected baseline_420_chroma_component_sampling_fallback rows pass 4/4. Their LLVM report is target/release-evidence/coverage-jpeg-chroma-component-sampling-all-variants-20261003.json. Coverage MCP's older full report showed missing true arms for the Cb/Cr horizontal and vertical sampling guards at decode.rs:1170-1173; the selected report now observes those true arms. The false arm at line 1173 remains uncovered in that selected run. This is coordinate evidence from reports with no source/build receipts; MCP lists test attribution as unknown.

The selected 4:2:2 sampling, CMYK sampling, and restart rows pass 7/7. Their LLVM report is target/release-evidence/coverage-jpeg-sampling-fallback-guards-20261003.json. Coverage MCP shows the selected 4:2:2 cases reach the component sampling fallback guards at decode.rs:1430-1433 and the CMYK cases reach the non-1x1 sampling guard at lines 962-965. The report does not observe every opposite arm in this selection; source/build receipts are absent and MCP lists test attribution as unknown.

The AVIF ipma_wide_property_associations row passes its selected public parity case (1/1). The selected LLVM report is target/release-evidence/coverage-avif-wide-associations-20261003.json. Coverage MCP reports 2,142/32,164 branches observed in that selected test and leaves the false arm of parse_ipma at container.rs:1077 uncovered. The earlier full report listed the true arm at that coordinate as missing. This is consistent with the selected row exercising the wide-association arm. Both reports lack source/build receipts and MCP lists test attribution as unknown; the incremental comparison is incomparable, so no combined coverage gain is claimed.

The active compression_lzw_lzw_long_phrase_checkpoint_1024 TIFF row adds a Pillow-exact 525,825-pixel grayscale stream whose growing LZW phrase reaches 1,025 bytes and crosses the token-aware output checkpoint. Its input SHA-256 is 0e85b9b6a8f064755ce9f1934d838c5d64c2e8fb5b453a2fe072ba347f2f0; the Pillow pixel reference SHA-256 is e32ad4269a71ed42a3d18578f1e3cbd8ec3a0b026b8215287483b0d47fa9e7bd. The selected TIFF matrix suite and full coverage run pass. Coverage MCP's filtered query reports no remaining branch group in append_lzw_with_token; its coordinate comparison observes the checkpoint's true arm once. The report has no source/build receipt and test attribution is unknown, so this remains local coordinate evidence rather than a managed Coverage MCP claim.

Coverage MCP still reports eight uncovered branch observations in WebP's main optimize_sampling and one in its cross-color sampler, plus two observations each in GIF's split_median_box and token-aware variant. A 16,320×576 token-aware WebP candidate reached 641 row comparisons but still missed the main sampler's row-checkpoint true arm and column pass; it encoded to 222,328 Rust bytes versus 222,334 Pillow bytes, so it remains outside the parity manifest. This report has no source or build receipt and test attribution is unknown, so Coverage MCP comparisons are source-coordinate diagnostics rather than verified coverage gains. For the GIF misses, a 2×1 two-color Pillow control reaches the equal-value fallback, but public-path branch counters confirm that the initial split loop's exhausted condition and the fallback's split > 0 false arm remain unobserved. With positive, nonsaturated per-color counts, the midpoint loop breaks on the last color and the fallback stops at a prior distinct color; no public fixture witness for either false arm was found.

The same full report has a PNG chunk-iterator stop observation. Its raw LLVM branch table identifies the missing arm as Chunks::failed; the position-at-EOF arm is already exercised by the active missing-IEND input. Every public chunk consumer propagates a chunk error immediately, so none requests another item after failed becomes true. TIFF's packed-tile extent checks follow validated tile geometry and bounded source rows. BMP signature guards and ICO size guards are preempted by public dispatch/source validation; reaching the BMP file-size limit with a valid image would require impractically large pixel storage. These remain defensive branches without valid public Pillow parity witnesses, rather than reasons to add private coverage-only tests.

Coverage MCP's TIFF LZW gap at decode_lzw:1888 is the right side of the || check (output.len() >= expected). The active error_bad_ifd_lzw_invalid_first row passes public parity but returns on the left side (code >= CLEAR) before evaluating it. Successful output writes return as soon as they reach expected, so the right-side true outcome remains a defensive state without a valid public input witness.

The new tiled_rgb1_packed_multisample_rejected row preserves Pillow's malformed-error parity for packed 1-bit RGB tiles. It does not reach the decode_ifd tile-sample guard at decode.rs:289-291: layout_and_palette rejects RGB below 8 bits earlier, and every currently supported packed layout uses one stored sample. Its selected LLVM report records no branches at that guard, so the row is an error-parity edge rather than a coverage gain there. A fresh selected run passes 1/1 and is recorded at target/release-evidence/coverage-tiff-packed-tile-control-20261003.json; Coverage MCP likewise reports no observations at that guard or in copy_packed_tile_into/copy_packed_tile_row. The report is selected-test evidence with no source/build receipt and unknown test attribution.

Coverage MCP's remaining JPEG encoder groups include zero-dimension and unsupported-sampling guards in downsample_without_checkpoint, downsample_two_to_one, and downsample_with_checkpoint. Public image validation rejects zero dimensions, and JpegSubsampling exposes only 4:4:4, 4:2:2, and 4:2:0; no-token 4:2:0 uses a separate pre-downsampled path. The encode_six_coefficient_major_edge_raw_blocks helper also receives chroma presence flags set to true at both public call sites, while its absent-luma edge makes the uncovered present[3] outcome unreachable. Existing exact parity rows cover the supported sampling and clipped-edge paths.

The JPEG direct-decoder bailout audit found a valid baseline multi-scan edge: Pillow accepts a 4:4:4 image that encodes Cb, Y, and Cr in separate non-interleaved sequential scans. The active baseline_444_three_sequential_scans fixture is generated by splitting a single 8×8 interleaved Pillow JPEG. The resulting file has SHA-256 b9e3e277c0d05b2df169804236d5f9b72d3a1c8beda33e845f9c6ffd436f424b, and its decoded pixels match the original Pillow JPEG exactly (pixel SHA-256 0d4dccc69dc0ee4ae956be8c624186ddb2b5f3d411671361056c51a7ea7f9e66). The active baseline_444_three_scans_dqt_redefined variant inserts a new 8-bit Cb quantization table between the first and second scans. Pillow's decoded pixels differ from the original when the final table changes (input SHA-256 74d02103e151831846019cbcf009f2d17912988045e8d82e850828e18d1724f7, pixel SHA-256 983025493b251f11b379bbbf15a92cde4e5b9177e63626ff035e0049cc6779b4), so each component latches its quantization table at its first scan; scans retain their SOS Huffman and restart settings. The decoder handles non-interleaved block geometry and resets DC predictors at scan and restart boundaries. Single-scan baseline decoding keeps its existing dispatch and fast paths, and the parser defers per-scan table copies until a later scan or table update requires them.

Coverage MCP surfaced three additional Pillow-tolerated SOF0 cases. The baseline_444_multiscan_ss_nonzero row sets Ss to 1 in the first sequential scan; Pillow returns the same pixels as the ordinary three-scan input (input SHA-256 7a36ce48ba3d15bcefb15ad70b1a5e3f0c70523c84d2cdadade2ed6531e0094d, pixel SHA-256 0d4dccc69dc0ee4ae956be8c624186ddb2b5f3d411671361056c51a7ea7f9e66). baseline_444_multiscan_duplicate_component changes the final scan's component ID from Cr to the already-seen Cb (input SHA-256 76b4d1d36238ff9f92d63a44bb6dc1bcde040e99e0217f15b1c96f4a624668cc, pixel SHA-256 2b73ccd3b62ddd2c645e63cd0d65ed016fc25a461d82e161514ac0d48fb2fb52). Pillow maps that scan back to Cb and leaves the omitted Cr plane neutral. Its coefficient buffer retains earlier AC values where a repeated sequential scan encodes zeros, so the Rust path stores coefficient history only for components that repeat and merges the later block coefficients. This follows libjpeg-turbo's multiscan coefficient buffers and Huffman decoder (jdcoefct.c, jdhuff.c). The baseline_444_multiscan_missing_component row omits the final Cr scan and leaves its neutral plane initialized (input SHA-256 d91a46924a2310aae6a9b7c16fd7f091eaf21bff8a8b74dc99c388d1983e6a8a, pixel SHA-256 669b0f32cd296cd0742d7e9b8e9c25cf7a4f114b6a5788f83af5ed0e89f409b7). The baseline_444_multiscan_empty_entropy row removes the first component scan's entropy while retaining its SOS; Pillow accepts the file and leaves that component neutral (input SHA-256 f8bba1d8f8e8f631f5487349550f64a3bd3438a9789ed293619d7e2553be6192, pixel SHA-256 1b343e02a958d0137fd239618dd0332265457fc011296714fe1a42cf0e35d49d). baseline_444_multiscan_interleaved_restart combines Y and Cb in one scan, leaves Cr in a singleton scan, and places a restart marker between its two MCUs (input SHA-256 ddbcf29eb1549aae0356661ff2b879b7b2b23b7aae924adbb424af22246e20d7, pixel SHA-256 f83545d43c6939ec393b6b8310959b6174fd764b08a12fc22d908408a7e6a43e). The baseline_444_multiscan_restart_overrun variant adds two trailing restart markers; the first creates an empty segment after the final MCU. Pillow accepts it and returns the same pixels (input SHA-256 1aac34523a7e6491744764d84c9c0de21ef9a308d532924e121c7c36229defe6, pixel SHA-256 f83545d43c6939ec393b6b8310959b6174fd764b08a12fc22d908408a7e6a43e). baseline_444_multiscan_duplicate_component_dc_only repeats Cb with blocks containing only DC coefficients, reaching the repeated-component DC-only path (input SHA-256 3a316bfffa1834975e775d7a4dd62f0766919eef85bdd5a44f0401f12f17f429, pixel SHA-256 fa7b78cc215df21d7ce54d8c3c6637c326dab95c10fbc12263101365973f4268). All seven tolerance cases match Pillow. The JPEG decode matrix passes 188/188. The active entropy_all_ones_huffman row is a grayscale baseline JPEG whose SOS prefix is followed by two stuffed all-ones entropy bytes and EOI. Pillow 12.2.0 decodes it; the input SHA-256 is bef219c962289debcec499023a86acf162a5e51c0ccd78309162f845a2544456, and the exact 128×128 L8 reference SHA-256 is f9db8abaac585e058a892932da246a2cd05aec42b862dd931ffee9891577c4de. The fixture reaches the fast decoder's overlong-code sentinel with length 17. Coverage MCP no longer lists the overlong-length guards in either the scalar or fast decoder in the current full report. The active empty_dc_huffman_table row starts from sampling_3x1.jpg and replaces DC0's DHT entry with a zero-symbol table. Pillow 12.2.0 decodes the resulting 617-byte input (SHA-256 c28fa453e06196681ad2815bfe6dd320ee2239e19d9efba3999d0bdc9c5c8d14) to a 24×8 RGB image (pixel SHA-256 65f0bcf872b036301186859680a42be71467f6fd402c47ab2cc20c68e10dee44). Rust now follows IJG's fake-zero recovery for scalar and fast overlong codes while preserving the error for its internal invalid-table sentinel. The empty-table fixture reaches scalar decode_slow at length 17. Remaining filtered gaps are fast ensure true at huffman.rs:373, fast values.is_empty() true at line 390, scalar ensure true at line 329, the invalid synthetic sentinel at line 349, and the missing-symbol arm at line 360. MCP reports source/build identity as unverified and test attribution as unknown. Coverage MCP reported remaining unobserved branches in reconstruct_baseline_multi_scan; its local report has no source/build receipt and unknown test attribution, so it is coordinate-level guidance rather than a managed coverage claim. A header-only SOS component-ID swap remains rejected by Pillow as a broken data stream; no parity case is claimed for that mutation. The final full make coverage run passes all tests and repository floors: 86,169/142,520 lines (60.4610%), 16,492/32,268 branches (51.1095%), 4,810/8,989 functions (53.5098%), and 131,806/220,404 regions (59.8020%). Coverage MCP now reports one branch at decode.rs:2268: an empty extracted segment set with nonempty scan bounds. The JPEG parser ends each entropy range at the first non-stuffed, non-restart marker, so this error arm appears unreachable through manifest-visible inputs. The LLVM report has no source or test receipt; MCP marks both as unverified/unknown.

Coverage MCP also pointed to a valid baseline JPEG with a DQT marker after its only SOS entropy scan and before EOI. Pillow 12.2.0 accepts the full 8×8 4:4:4 input and decodes it identically to the source without the trailing marker (input SHA-256 1b4519e48e1ce711cd1cbb44c3173ef3c97f222b8aa1686f9437df5e5f906372, pixel SHA-256 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f). The public baseline_444_single_scan_trailing_dqt row exercises this case. Single-scan reconstruction now stops entropy extraction at the scan boundary and uses the quantization-table snapshot captured before the marker. Pillow also accepts an empty trailing DQT (input SHA-256 bedd3492ec593158787385c58ec04055ecedd0beb334d1dbcae55716cb3ed9a3) and marker fill before a nonempty trailing DQT (input SHA-256 6f4e22755f714d4fe3dab67e8d9e0154abc33cd80714ba4cd7ba4792abfa18e4); both produce the same pixel hash above. The public baseline_444_single_scan_empty_trailing_dqt and baseline_444_single_scan_dqt_marker_fill rows cover those forms. The code keeps the existing single-scan dispatch and fast paths. The focused public rows and full JPEG decode matrix pass; these are previously unsupported valid inputs.

Coverage MCP identified the false arm of the second comparison at src/codecs/jpeg/decode/huffman.rs:410: a valid AC DHT has the standard luma code counts but a different symbol order. The public baseline_444_unused_custom_ac_table fixture inserts an unused AC table 2 into the complete baseline_444.jpg input, swapping the first two symbols assigned to one code length. Its generator pins the source and generated-input SHA-256 values and verifies Pillow 12.2.0's decoded RGB SHA-256. Pillow accepts the 9,329-byte input as 128×128 RGB and preserves the baseline pixels exactly; Rust matches all 49,152 Pillow bytes. The selected public matrix row passes 1/1. Its LLVM branch report changes the targeted arm from zero observations for decode:jpeg:subsampling_444 to four observations for the new row. The Coverage MCP selected-test comparison reports the line-410 arm as newly observed, but remains limited because source/build receipts are absent. The selected report is target/jpeg-coverage-probe/coverage-public-row.json; this is coordinate-level evidence, not a full-suite coverage claim.

JPEG direct-safe SOF component-count invariant — 2026-10-04

Coverage MCP also showed missing true arms for components.len() != N in the grayscale, CMYK, 4:2:0, 4:2:2, and 4:4:4 baseline direct-safe paths. Those arms are unreachable from public JPEG inputs: parse_sof0 builds the component vector from the SOF count, the parser derives num_components from that vector, and its sole JpegInfo construction stores both values together. The five redundant hot-path checks were removed and the invariant is documented on JpegInfo; no private unit tests or coverage exclusions were added. The public JPEG decode matrix passes 203/203 rows. The selected LLVM report is target/release-evidence/coverage-jpeg-direct-safe-guards-20261004.json; MCP has no source/build receipts, so it is row-local evidence and does not support a verified aggregate coverage-gain claim.

Coverage MCP also lists repeated AV1 specialization observations in decode_inter_translation_impl and decode_following_vertical; specialization counts are not distinct source branches. A selected run of the clipped animated_lossless_inter_420_clipped_b32x32_64x60 row passes public parity and reaches the true outcome at lines 54836–54838 in one of eight compiled decode_inter_translation_impl specializations. Its report has no source/build receipts, so retain this as coordinate evidence.

The 32×32 animated_lossless_inter_420_b32x32_10bit row records no branch counts at lines 54836–54845 across eight compiled specializations. A separate selected run of animated_lossless_inter_420_b32x32_10bit_64x64 passes public parity and records six false outcomes at block.rs:54838 (tools.sample_depth == SampleDepth::EIGHT) in one specialization, with the preceding 32×32 LosslessGrid match reached. This existing full-size case already witnesses the sample-depth false arm. The 28×28 10-bit clipped fixture uses B8×8 leaves; high-depth clipped B32 geometry is rejected by the current planner before this block evaluator, so it does not need a new fixture to cover the false arm. The selected 64×64 coverage report is target/release-evidence/coverage-avif-10bit-64x64-target-20261004.json. Coverage MCP still lists other missing specialization observations, and its incremental comparison with the full baseline is incomparable because exact baseline branch detail is incomplete; this does not claim a marginal full-suite coverage increase.

decode_following_vertical has no observed calls in this report; its production caller requires a lossy 4:2:0 16×16 split in a closed frame context. A 16×16 q76 noisy-quadrant AVIF probe decoded in Pillow but returned NotImplemented from the Rust public decoder, so it was not added. No valid Pillow-parity witness for this remaining gap was established. The reports have no source/build receipts; Coverage MCP marks source unverified and test attribution unknown, so these are source-coordinate diagnostics only.

Coverage MCP reports no remaining branch gap in decode_portable at lines 492, 496, 535, 555, 588, and 606 after adding 10-bit alpha 4:2:0, 4:2:2, and 4:4:4 public parity rows. It reports no remaining gap at webp::inspect::validate_animation_frame line 311 or in the token-aware GIF coalescing group. These are source-coordinate diagnostics; the report has no source/build receipt and marks test status unknown.

Seven public limited-range monochrome parity rows now cover RGB and auxiliary alpha output at 8, 10, and 12 bits, plus BT.2020/PQ CICP. Their selected rows match exact Pillow output and the full AVIF decode matrix passes. The CICP row shows monochrome admission no longer needs a 1/13/6 color declaration. Coverage MCP reports no branch gaps in limited_luma_to_u8; remaining AVIF groups are plane-shape guards at decode_portable lines 457–463 and decode_monochrome_portable lines 676–684, plus the false subsampling_x/subsampling_y check at line 410 of monochrome_primary_sequence_supported. The shape guards follow validated plane assembly, and AV1 monochrome sequences have fixed 4:0:0 subsampling, so these arms have no known public encoded-input witness. The report is unverified for source/build identity and test attribution.

The active enc_rgba_octree and enc_rgba_octree_sorted GIF rows now also call the public encode_with_token API on their existing RGBA inputs. Each token-aware result is compared byte-for-byte with both the exact Pillow reference and ordinary Rust encoding. Both selected parity rows passed, and Coverage MCP reports no remaining branch gaps in gif::encode::apple_qsort_buckets_with_token in the refreshed full report.

The active animated_lossless_inter_420_clipped_b32x32_185x64 AVIF case adds a 185×64 two-frame, lossless 4:2:0 B32 edge input. Its final block has 25 visible columns; the input is pinned by SHA-256 701d247ebbe2666b1f28f447fa1a086573e7dc6d88b0b29405f9f7a6f9460b59, and its two Pillow RGB frames are pinned by SHA-256 ac76c404cf3001f4e087307516e596223e3e5f1c26d7eaf8860bc710b88761a1 and 336f948700529f81199b9d8fb0adcc8da79dcc00b06ffffa5b66d5dee255199e. The selected parity row and full AVIF matrix pass. This edge does not make the AV1 partial-grid false arm observable: the relevant decoded extent is MI padded to a multiple of four.

The active animated_lossless_inter_420_clipped_b32x32_64x60 AVIF row adds a two-frame bottom-edge crop case with exact Pillow frame parity. Its selected LLVM run reports selected=1 active=1 and passes the row. The report records 11 calls to inter_lossless_grid_clipped_b32_geometry_supported; one B32x32 call passes the 32-pixel width check and takes the 28-pixel visible-height arm. decode_inter_transform_size runs 11 times, but the later clipped-plan arm at line 6927 remains unobserved in this selected run. Coverage MCP marks the report's source unverified and test attribution unknown, so these local counters are scoped diagnostics, not managed coverage attribution.

Two active TIFF parity inputs set the separate-planar RGB tile width or height to zero. Pillow opens and verifies both headers, then raises ValueError: tile cannot extend outside image while decoding pixels. Their input SHA-256 values are f8265499d2ee3d4e63e9525a76e70aa88cd9840891267c47aaa840928056617a and 1dc16a0bd0c6b6574ae38c9ed163bf931e343736e41a41f2d81a24331bd08cc0. The public parity run matches all four lifecycle results. These inputs cover both zero-dimension exits in verify_separate_planar_offset_count; the remaining mismatched-tag operand was removed because the preceding directory check rejects that state before this helper runs. Coverage MCP's filtered query now returns no branch gaps for the helper, with the same source/build and test attribution caveat noted above.

The JPEG encode matrix now has 74 passing active rows. The new enc_sub_444_unaligned_subthreshold and enc_sub_444_aligned_subthreshold rows pin exact Pillow bytes for 4:4:4 inputs below the row-streaming size threshold; together they exercise the three-component independent-entropy predicate and the dimension-alignment alternative. The token-aware GIF LZW and BMP raw-pixel paths also run through public parity: GIF passes 79/79 decode rows and BMP passes 106/106. The selected report target/release-evidence/coverage-public-parity-edges-20261003.json records the JPEG three-component arm and both token-aware BMP read paths. Its aggregate covers only the four selected rows, and Coverage MCP reports no source/build receipt and unknown test attribution. A seven-row token-aware GIF selection passes 7/7, covering the existing patterned frame, four LZW boundary cases, and invalid minimum code sizes on both sides of the accepted range. Its report is target/release-evidence/coverage-public-gif-token-lzw-edges-20261003.json; Coverage MCP reports no remaining branch observations at the invalid-size guard in gif/decode.rs:556 or the phrase traversal in append_code_with_token at line 695 for this selection. The full GIF decode matrix passes 79/79. This report also has unverified source/build identity and unknown test attribution, so it supports a selected-path observation rather than a full-suite coverage claim.

The VP8L structural inspector now follows nested VP8L chunks in ANMF frames when no top-level bitstream exists. The property map records the nested 16×16 frame header and color-indexing transform for pillow_tolerated_malformed_animated_vp8l_anmf_width_mismatch; the malformed outer width remains covered by Pillow parity, not by the VP8L parser.

Public parity coverage edges — 2026-10-02

Active Pillow parity cases target codec edges surfaced by Coverage MCP. The WebP row error_malformed_container_animated_frame_bottom_outside complements the existing horizontal frame-overflow case by moving the ANMF top offset down two pixels. Pillow 12.2.0 reports OSError: could not create decoder object, and the selected public parity row passes. The isolated LLVM report target/release-evidence/webp-frame-bottom-outside-isolated.json records four false outcomes for the horizontal operand and four true outcomes for the vertical operand at webp/inspect.rs:311. This is selected local evidence only; it has no managed Coverage MCP source/build receipt or test attribution, so it does not establish full-suite coverage.

The fdat_without_actl_before_idat PNG case uses a valid-CRC fdAT chunk before IDAT with no acTL; Pillow rejects it during inspection, and Rust now rejects it in the independent PNG inspector as well as the decoder. Its input is pinned by SHA-256 6d1a1d4a5fb1e4185b39fe44bd13e489d9a58680b3a5f7490ffcad4854148c4d. The apng_truncated_fdat_before_idat case puts a three-byte fdAT after valid acTL and fcTL chunks but before IDAT; Pillow raises ValueError: APNG contains truncated fDAT chunk. Its CRC-correct fixture is pinned by SHA-256 4f34e6caa28789baa349f5b3ada75f0ad7aae29f617717da9dffd6f906d2312b. The PNG parity matrix passes all 175 active rows, including both malformed cases and the existing valid sequence-only APNG case.

An earlier all-feature make coverage run passed every suite and repository floor with target/release-evidence/coverage-full-webp-tiff-jpeg-20261002.json: 85,519/142,085 lines (60.1886%), 16,254/32,178 branches (50.5128%), 4,788/8,972 functions (53.3660%), and 130,592/219,584 regions (59.4725%). The PNG parity harness decodes each successful row through decode_with_token and compares its exact pixels with Pillow. The existing WebP enc_exif, enc_xmp, enc_icc, and enc_lossy_alpha_exif cases now also run through encode_with_token; the harness checks exact bytes against Pillow and the ordinary Rust encoder. The WebP decode parity lane passes all 230 active rows. Four complete VP8X mismatch files exercise width and height rejection for both VP8 and VP8L, including inspect_basic. The three new files derive from valid generated WebP inputs by changing only one 24-bit VP8X canvas dimension; Pillow reports OSError: could not create decoder object, and Rust reports a structured malformed-image error. The VP8L decoder now checks its signature, dimensions, and version in the frame header and returns typed errors rather than panicking on malformed input. These checks run once before pixel reconstruction; the pixel loops and SIMD kernels are unchanged. Coverage MCP's filtered branch queries no longer list missing branches in inspect_extended_basic or LosslessDecoder::read_frame_header. Other groups remain in WebP inspection and lossless decoding. It still reports the false arm of encoded.len() >= 30 at src/codecs/webp/encode/mod.rs:912; valid public output already contains the 12-byte RIFF header and 18-byte VP8X chunk, so that shorter-buffer arm is unreachable there. The AVIF query still reports missing branch observations at src/codecs/avif/av1/block.rs:54833; the 10-bit fixture validates its sample but does not complete sequence surface reconstruction. These Coverage MCP queries are diagnostic: the full report has no source/build receipt and MCP reports test attribution as unknown. The 100% coverage goal remains open.

The new lossless_copy_out_of_bounds WebP decode row reaches the lossless copy-length bounds rejection: a singleton VP8L copy asks for 25 pixels when only 16 remain. Pillow reports OSError: failed to read next frame; the Rust decoder matches the malformed-input outcome. Its 8×4 fixture is pinned by SHA-256 abb0a3d2b630b23fc5bdd476bb59e9b7790a461ae60522ddc282fd53b27ef075. enc_wide_scanline_checkpoint uses a 1,025×1 RGB BMP row to reach the post-pixel checkpoint at index 1,024 in bmp::encode::write_rows; its exact 3,130-byte BMP output is pinned in tests/fixtures/outputs/jsons/Encode.bmp.json. enc_lossless_palette4_box_chain uses a 4×4,100 four-color WebP source whose packed palette stream reaches the 4,095-sample box-chain match boundary; its exact 62-byte output is pinned in tests/fixtures/outputs/jsons/Encode.webp.json. enc_sequence_raw_final_aligned uses two 4×3 RGB TIFF pages and produces an exact 352-byte encoded sequence ending on a 16-byte boundary. enc_animated_reserved_disposal re-encodes a two-frame GIF with disposal values 4 and 2; its exact 13,328-byte Pillow output exercises the GIF writer's valid FrameDisposal::Reserved(4) conversion. enc_sub_420_aligned_full_mcu_rows encodes a 32×32 RGB source through the complete 4:2:0 MCU-row converter; its exact 1,264-byte Pillow output is pinned with SHA-256 644ec00d071d47f21042a0548a7c2d89387c43039be6af375f7b087ef7c0f3a0. lossy_vp8_delta_segment_values decodes a four-segment VP8 frame whose quantizer and filter strengths use delta syntax. Stock libwebp always emits absolute segment values, so scripts/build_webp_delta_cwebp.py patches a temporary copy of pinned libwebp 1.6.0 and scripts/generate_test_assets.py verifies the resulting stream against its byte and decoded-pixel hashes. Pillow 12.2 decodes the delta and stock absolute-mode streams to the same 49,152 RGB bytes. The input PPM is pinned by SHA-256 9efd98332fada058f0ec106ac5c714b7898d640379b3739a22a1185397604421, the WebP asset by 9f6a1b274d9faf180fd024b962b068d6c4db5fe29e619868e7e4f9e91f12adbb, and decoded RGB by 6b2c202c55d0bf70d9f32b74c1b8705232ae41e0ed24203ea2b1b138dfd914fe. The portable_lossless_monochrome_alpha_17x17 AVIF row adds a 17×17 lossless monochrome color item with an auxiliary alpha plane. Its 900-byte input is pinned by SHA-256 573db25044c9dcbb03f00d623d20a30639d3334ba35feae6d57f115e208741bd; Pillow returns exact RGBA pixels in 1,156 bytes with SHA-256 d0201688c025cda34f274e3187240f35090e3366cb8883d3a3f04c45d03e0319. The case targets the has_alpha path in decode_monochrome_portable; its primary and auxiliary AV1 items are both monochrome. The AVIF decode parity matrix passes all 402 active rows. Coverage MCP no longer lists the true arm at src/codecs/avif/decode.rs:699 in the refreshed full run; source identity is unverified and test attribution is unknown, so this is diagnostic coverage evidence alongside the local parity result.

The bmp_8bit_default_palette ICO row sets the embedded 8-bit DIB's colors_used field to zero while retaining its full palette. Its 1,374-byte input is pinned by SHA-256 4915bb486fdd9b56d0bb200d43dfeb80efe82762a6e02485390b22cabc7f22ad; Pillow returns 16×16 RGBA pixels in 1,024 bytes with SHA-256 d3b82ecad923e39c5007fdae2b42acb59a6dd9d36419a4e1329d53859b824ff5. The ICO decode parity matrix passes all 55 active rows. Coverage MCP's refreshed full report no longer lists the true arm at src/codecs/ico/decode.rs:465; source identity is unverified and test attribution is unknown, so this is diagnostic coverage evidence alongside the local parity result.

The enc_cmyk_small_unaligned_fallback JPEG encode row uses the existing 13×9 CMYK source, below the streaming threshold and outside its alignment constraints. It exercises the baseline generic encode path and matches Pillow 12.2.0 byte-for-byte: 634 bytes, SHA-256 0d8885a6009b46e1f8f066fe90abadf5dac3153dcd11c5c63a8f62c15bf9b03a.

The enc_cmyk_aligned_subthreshold 32×8 row takes the aligned baseline streaming path with only 256 pixels, below the 1,024-pixel threshold; its exact 759-byte Pillow output is pinned by SHA-256 226d495545b556a72558ba6f9b768ef382372b2729eaa6481410313426c18fba. The enc_cmyk_aligned_width_partial_height 32×9 row reaches the aligned-width, partial-height fallback; its exact 809-byte output is pinned by SHA-256 aa5e354fe0ae1c8d072642ea27501f72252648fc1bb52a03bf3ff61d1730709c. Together with the 13×9 unaligned row, these three cases cover both alignment outcomes inside the baseline CMYK dispatch expression.

The enc_cmyk_optimized and enc_grayscale_optimized rows take the generic optimized entropy paths; Pillow's exact outputs are 10,325 bytes (SHA-256 7bb93dc5c122a85aa555e03c9912da5f22d8f5377226d7cb16ceb9af84070d4e) and 3,185 bytes (SHA-256 5612f6c2f016150cde09d9d35f336c8cf9115178772bff3d143a64804908b9ff), respectively. The JPEG encode parity matrix passes with all five rows active. Coverage MCP no longer lists branch gaps at src/codecs/jpeg/encode/mod.rs lines 607, 608, or 631 in target/release-evidence/coverage-full-jpeg-optimized-paths-20261002.json. That full report passes every suite and repository floor: 85,184/142,042 lines (59.97%), 16,037/32,156 branches (49.87%), 4,780/8,972 functions (53.28%), and 130,166/219,556 regions (59.29%). Its source/build identity is unverified and test attribution unknown, so the branch results are diagnostic evidence beside the local parity results.

The error_malformed_structure_apng_fdat_payload_before_idat PNG row places frame-data payload after an fdAT sequence number before the default image's IDAT. Pillow raises OSError: broken data stream when reading image file when decoding and SyntaxError: broken PNG file (chunk b'\x00\x00\x00\x01') when verifying. Its input is pinned by SHA-256 07d84a0ef147069484e49bdb3a63aca3a28d5e863d6af033708c3b186434d783. Parity exposed a static PNG decoder path that previously ignored this invalid APNG state; the decoder now validates the sequence-only exception and rejects early frame payload before IDAT.

The compression_deflate_deflate_predictor_checkpoint_343x2 TIFF row uses 343×2 RGB pixels with Deflate and horizontal Predictor 2. A 1,029-byte scanline reaches the predictor's 1,024-byte cancellation checkpoint. The 194-byte input is pinned by SHA-256 1a0c5c7ce1a80fa071619c138e8702854ece6d7101fcd16cb93db4b8de899cdf; Pillow's 2,058-byte RGB reference has SHA-256 ab69d4afd329ce8d28339663557fdc4a3c66844a0ddde05f87bdf61f1b75574f.

Two AVIF malformed rows cover required meta child validation: error_meta_first_child_not_hdlr changes the first child box away from hdlr, and error_meta_hdlr_non_pict declares a non-picture handler. Pillow raises UnidentifiedImageError for both. Their input SHA-256 values are 21062fa34dab7a259cc7aa47f7960a5c2a0b1b39d28396f361c46c5e4a754a9c and 39d963ae504465535d09d7341de78c1788a752cc528ff5d888a873a5478e85e4.

error_meta_missing_primary_item and error_meta_missing_item_info retag the respective required pitm and iinf children as free. Pillow raises RuntimeError: Failed to decode image: Missing or empty image item for both; their input SHA-256 values are e7eb26add7703e8973c243e22f7b9225ead5292e8e1f051a09ada938824c0ffa and 8551acfec0234028ec989a52f1ceea4ff5666a3bc929e00a5a4946f902ae6dc6. error_meta_missing_item_properties retags the required iprp child as free; Pillow raises UnidentifiedImageError, and the input SHA-256 is 5339cf9635130eee4dcfd7801dd25563b591332b243b137b077a67576ee69436. unknown_extended_size_uuid_box appends a valid top-level extended-size UUID box to the 64×64 I444 fixture. Pillow returns the same 12,288 RGB bytes as the base image; its input SHA-256 is 270ba9556bd21bd85c56b5f7609a5d48e9a255ffc3ec4d1b1fa4c1885a70847d and its pixel SHA-256 is 5e74b862ca69314d8ae9a3aa4b8f3af5651dfbd238ce922a7973c193e338f64a.

error_bad_ifd_zero_tile_height sets TIFF TileLength to zero while retaining a nonzero width. Pillow opens and verifies the header, then raises ValueError: tile cannot extend outside image on decode; the input SHA-256 is 6c83b3e663f810d18db3d9a6a623eeac6ee7f21407d9dd22ad7084f0f626e208. enc_grayscale_small_fallback encodes a 13×9 grayscale JPEG source below the streaming threshold and outside its alignment constraints. Its exact 422-byte Pillow output is pinned by SHA-256 05fae511efea0f239c6d7c59ee24d0e52f993f6d6581ee842b2397ec06cb3442. enc_grayscale_aligned_width_partial_height and enc_grayscale_aligned_subthreshold encode 32×1 and 32×8 grayscale sources. Both stay below the 1,024-pixel threshold with aligned width; their heights take the false and true outcomes of the 8-pixel alignment check. Pillow's exact outputs are 349 bytes (SHA-256 1467cdfb18e2f59ce73814ebfeb2882f6bef77c97990b4b16c3f4182e217b241) and 465 bytes (SHA-256 29c71e3206d0eeebe5428504e2432d5810631508a82d761f7fd3db9fbab3ffec). enc_sub_422_aligned_width_partial_height and enc_sub_422_aligned_subthreshold encode 64×1 and 64×8 RGB sources with 4:2:2 subsampling. They stay below the 1,024-pixel threshold with aligned width; their heights take the false and true outcomes of the 8-pixel alignment check. Pillow's exact outputs are 691 bytes (SHA-256 4afe5fc617557765f13a6806683d757d6bdab6815240556c4192f4f357dc7ea5) and 1,026 bytes (SHA-256 3c6dcb8056b151eb832db29ec8a337e4edaf76a423ba0aefdf4573466d557a01). The JPEG encode parity lane passes all 72 active rows.

The palette_absent_animated_no_palette_second_frame_no_local_table GIF row removes the second frame's local color table while retaining its two-frame palette-less structure. Pillow returns an 8×8 luminance image (64 bytes) with SHA-256 c2a74daea21f6caad6b7794dcfd121cbaa0bddc3407ce5f5fdc1914bd5e7ff90; the input SHA-256 is 440eb36917bab98cd88a53534d87aadb611865999898bc9bbc3503a62a2c9654.

The error_malformed_short_dib_payload_below_eight ICO row contains a seven-byte embedded DIB payload, exercising the short-payload rejection before the DIB header can be read. Pillow raises OSError: Truncated File Read; the input SHA-256 is 585f1feefb2f364c4ecb0b50ac8e3ff414771fde088ec23fe39b44e652caa981.

The incomplete_image_data_no_iend PNG row contains a valid IHDR and IDAT chunk, but its truncated zlib stream does not provide the complete image and the file ends without IEND. Pillow raises OSError: image file is truncated when loading it (and OSError: truncated PNG file during verify). Its 1×2 fixture is pinned by SHA-256 b4c5b83118403fbff8bfa3fe0d4d85f094a79e21a8421de87bd7695c9b2e56e7. The PNG decode parity matrix passes with the row active, and Coverage MCP no longer lists the no-IEND NeedMore mapping at src/codecs/png/decode.rs:678 in the refreshed full report. Source identity and test attribution remain unverified.

The public parity matrix compares every eligible successful non-direct-still row through its shape-matched sink API: stills through encode_to_sink, and animations plus all TIFF cases through encode_sequence_to_sink. Each sink result must match the same pinned Pillow bytes and the regular encoder result. At the time of the selected LLVM report below, the public matrix had 1,334 active decode rows across eight format tests and 386 active encode rows across 19 coverage_matrix_tests functions. All 27 public decode/encode matrix tests passed. The selected LLVM report, target/release-evidence/coverage-public-parity-matrix-vp8-delta-20261002.json, records 14,277/32,072 branches (44.52%) for that earlier matrix. It predates the TIFF rows recorded below, is not a full-suite measurement, and Coverage MCP marks source identity unverified and test attribution unknown. Coverage MCP could not calculate an incremental union with the earlier report because exact baseline branch detail is incomplete, so no marginal percentage gain is claimed.

Coverage MCP lists no remaining branch gaps at WebP Vp8Decoder::read_quantization_indices line 1119 after the delta-mode row was added; the row-only report covers the true outcome, while the full matrix report covers both outcomes. It also lists no remaining gaps for PNG validate_color_chunk_structure, TIFF decode_packbits, or JPEG convert_rgb_420_mcu_row, including its aligned fast path. The earlier edge-case report still predates the delta-mode row. The targeted report target/release-evidence/coverage-webp-copy-overrun-row-20261002.json records the <4> lossless decoder taking the true bounds-rejection outcome at lossless.rs:766; its filtered MCP query no longer lists that arm as a gap. Coverage MCP marks these reports' source/build identity unverified and test attribution unknown, so only the observed locations and aggregates are reported. The latest full local make coverage campaign passes all 56 coverage_matrix_tests, including all eight decode lanes and the 402/402 AVIF parity rows. Its report, target/release-evidence/coverage-full-avif-jpeg-alignment-edges-20261002.json, records 85,328/142,054 lines (60.0673%), 16,076/32,164 branches (49.9813%), 4,785/8,972 functions (53.3326%), and 130,382/219,569 regions (59.3809%). Coverage MCP reports no remaining branch group at src/codecs/avif/container.rs:441 or :444, src/codecs/avif/samples.rs:513, src/codecs/jpeg/encode/mod.rs:632 or :654, or src/codecs/tiff/decode.rs:265. The report has no source/build receipt and test status is unknown, so those coordinates are diagnostic evidence alongside the passing public parity lanes. The 100% coverage goal remains open.

Packed low-bit TIFF tiles — 2026-10-02

Three active Pillow parity rows now cover 1-bit black-is-zero grayscale, Deflate-compressed 2-bit grayscale, and 4-bit palette tiles. Each uses a spec-compliant 16×16 tile over a 17×13 image, so the decoder reconstructs both partial right and bottom edges. Pillow 12.2.0 supplies the exact references. Three more rows use a Pillow-accepted 9-pixel tile width over a 17×1 image, covering unaligned second-tile offsets for 1-bit, 2-bit, and 4-bit samples. Those nonstandard widths record Pillow compatibility, not TIFF-spec conformance. Byte-aligned sample placement stays on a bulk byte-copy path; packed samples with unusual bit offsets use a checked merge path that preserves neighboring samples in the destination byte. No private unit tests were added.

The complete TIFF decode matrix now has 167 active rows. The broader 100% coverage goal remains open. The refreshed local full LLVM run at target/release-evidence/coverage-full-png-incomplete-no-iend-20261002.json passes repository floors: 85,181/142,042 lines (59.97%), 16,027/32,156 branches (49.84%), 4,780/8,972 functions (53.28%), and 130,159/219,556 regions (59.28%). Coverage MCP no longer lists the unaligned-copy arm at src/codecs/tiff/decode.rs:1199 as a gap; it still lists packed-row bounds checks at line 1193 and the defensive sample-width guard at line 1122. MCP marks report source identity unverified and test attribution unknown, so these branch locations remain diagnostic observations rather than source-bound coverage claims. The older full report below predates these rows and the packed-tile decoder.

Separate-planar TIFF parity — 2026-10-02

Manifest parity now covers PlanarConfiguration 2 RGB strips and tiles, including raw data, Deflate with and without horizontal prediction, partial right/bottom tiles, missing final strips and tiles that Pillow zero-fills, one-sample grayscale, and 1:1 YCbCr strips and tiles. The YCbCr cases preserve Pillow's raw component triplets in RGB mode. Malformed rows cover excess strip/tile offsets, out-of-bounds strip/tile payloads, zero rows per strip, invalid planar value 3, and missing, empty, zero, or mismatched compressed byte counts. Pillow accepts inspection for invalid planar value 3 but fails at pixel load; Rust matches that lazy failure. Pillow also rejects extra separate-planar tile offsets during open, while a short final raw tile remains a successful zero-filled decode.

At that measurement, the TIFF decode matrix passed all 161 active rows. The full make coverage campaign passes all suites and repository floors with target/release-evidence/coverage-full-planar-tiles-20261002.json: 84,990/141,861 lines (59.91%), 15,994/32,130 branches (49.78%), 4,768/8,959 functions (53.22%), and 129,857/219,262 regions (59.22%). Coverage MCP returns no remaining branch gaps for decode_separate_planar_tiles; report source identity is unverified and test attribution unknown, so its location results are diagnostic rather than source-bound claims. The current matrix has 1,367 active decode rows and 392 active encode rows at that point. Strict debug, release, coverage-configured, x86-64 SSE2-baseline, and AVX2 Clippy checks pass. The x86 SIMD commands are compile checks and do not measure runtime performance.

pillow_tolerated_post_idat_color_chunks appends PLTE and tRNS chunks after the 1×1 RGB PNG's IDAT data; Pillow and the Rust decoder retain the same exact three pixel bytes. The existing size_1x1 row also exercises decode_with_policy at its exact 57-byte non-pixel metadata budget. The public apng_animated row decodes with a 169-byte metadata budget and compares every frame with its pinned Pillow reference; a 168-byte budget returns LimitExceeded(MetadataBytes) with an observed extent of 169 bytes. The final matrix report above includes these rows. Its Coverage MCP source and test attribution remain unverified.

apng_orphan_fdat_missing_control keeps the orphaned fdAT sequence number valid, so decode_sequence reaches the missing-fcTL outcome at src/codecs/png/decode.rs:1007. Pillow 12.2 decodes the default image to the exact pinned 49,152 RGB bytes, then reports OSError: Truncated File Read when animation playback seeks the orphaned frame data. The paired apng_orphan_fdat_invalid_sequence case retains the original bad sequence number and checks Pillow's SyntaxError: APNG contains frame sequence errors in ordinary decode; it covers the sequence-consumption error at src/codecs/png/decode.rs:568. The short-fdAT row continues to verify truncated-chunk handling before either sequence outcome.

apng_empty_fdat_before_idat adds a sequence-only fdAT before IDAT while preserving Pillow's exact default-frame pixels and both decoded frames. Rust verification rejects the misplaced chunk; ordinary decode retains the default image, and sequence decode consumes the sequence number while ignoring the empty frame-data payload. The follow-up PNG-only public parity run is target/release-evidence/coverage-png-apng-orphan-sequence-parity-20261002.json; its test_decode_matrix_png integration test passes. Coverage MCP reports no remaining branch observations at decode.rs:562 or decode.rs:568. The parse_apng length check at decode.rs:1003 still lacks its non-empty pre-IDAT fdAT outcome; moving compressed frame data before IDAT caused 46,906 of 49,152 decoded bytes to differ, so that case cannot be added as a pixel-parity witness. This selected-test report has an unverified source/build identity and unknown test attribution; its global branch denominator is not a whole-suite measurement.

Coverage MCP also found the unobserved COREHEADER depth-selection arm at src/codecs/bmp/inspect.rs:66. The new error_unsupported_core_depth row uses a complete 1×1 OS/2 COREHEADER with unsupported 2-bit samples, a four-entry palette, and a padded row; Pillow reports Unsupported BMP pixel depth (2). The selected public parity run now observes both outcomes at that branch.

The TIFF decode matrix now invokes both public decode_with_token and decode_prefix for each active TIFF input. Successful token results are checked against the Pillow pixel reference; terminal errors retain the Pillow contract, and resumable results must match the prefix API's exact retry minimum. This keeps the ordinary decode route as the terminal Pillow error-parity assertion. It also exposed two Deflate NeedMore results inside strips whose byte counts already bound the compressed input. Those errors are now terminalized in the TIFF Deflate path, while genuinely truncated TIFF structures and strip spans retain resumable status.

Public boundary-sized TIFF cases cover token-aware sample-conversion checkpoints: the existing 128×64 WhiteIsZero bilevel image contains exactly 1,024 packed bytes; new 32×32 WhiteIsZero Gray8 and Gray2 images reach their 1,024-sample checkpoints; and a new 32×32 YCbCr image reaches its 1,024-byte checkpoint. Coverage MCP reports no remaining branch outcomes in convert_pixels_with_token. The new lzw_extra_zero_output_strip fixture contains one LZW strip that decodes to A plus an extra strip whose geometry requires zero output; pinned Pillow returns the exact one-byte image. The decoder now skips unused compressed strips after checking their declared byte range, while retaining the Pillow error for uncompressed extra strips. The LZW first-code output-length guard at decode.rs:1377 remains unobserved by public inputs because zero-row compressed strips are now skipped before inflation.

TIFF YCbCr LZW parity — 2026-10-17

The public TIFF matrix adds three Pillow 12.2.0 inputs for contiguous 8-bit YCbCr with default 2-by-2 subsampling: the 4×4 Kata candidate, a 3×3 image that clips the right and bottom clump edges while omitting default tags 530 and 531, and a 4×4 image split across two aligned LZW strips with centered positioning. Their input SHA-256 values are respectively d9c3e4b7111658f3b86fdb1f94bf04e03aebe7cb4fbd01a98708ebfd27e65a6c, 67df0dce7b4cab6af8d43f258f7eb1b77ba119e096ad242083baec83ebd585e9, and 1dd542a0a6e22d922f66e0f19e92421dd15fd1108f726af38810a11a6bf13487. An additional full-resolution 1-by-1 LZW row guards the compressed path while the existing uncompressed 1-by-1 rows retain Pillow's RGBX raw behavior; its input SHA-256 is c3ebf5fdd35da227f9ef92cf45b81d726c908a0be1fe3e52c1bd3abfe699f9b6. The 32×32 subsampled control reaches the conversion loop's 1,024-pixel cancellation checkpoint; its input and RGB reference hashes are 655b9b0172e44433b222cc93acdd2e14ca296e22f373e5f073e2e24d33b5111f and c5fc0bdafed814b597605fb7d00ce7510c60e1b45e774d0c71c4850ec39b4ded.

The Kata candidate is 186 bytes and decodes to the exact Pillow RGB byte sequence recorded in scripts/generate_tiff_ycbcr_subsampled_fixtures.py (SHA-256 af15457a9372a158dd276ced4109b650b99def573093a49f70dbb469c2262668). For compressed full-resolution data, the decoder converts each YCbCr triple; the four 2-by-2 cases read six-byte clumps (Y00,Y01,Y10,Y11,Cb,Cr), check clump and output geometry with checked arithmetic, clip odd image edges, and apply libtiff's fixed-point default conversion. Libtiff's RGBA path applies a clump's chroma to all four luma samples for either legal positioning value. The subsampled layout supports contiguous strips with predictor 1 and aligned two-row strip boundaries. Uncompressed files retain Pillow's RGBX raw path, including the existing 1-by-1 rows. The fixture generator pins input hashes, tag claims, and oracle output hashes, and is part of make verify.

The active ycbcr_subsampled_lzw_1x2 row adds Pillow-compatible horizontal full-resolution and vertical 2:1 subsampling. Its 203-byte complete TIFF has input SHA-256 d659443b0f3eb3c6de349a45d3e007e482b6727c4682f82545df0ac5b49971c9; pinned Pillow 12.2.0 decodes it to 4×4 RGB with reference SHA-256 1ddadfe41e070962f7991dda8e8d26efc8c43a7352227b45154387a9991c5fb6. Rust accepts [1, 2] subsampling and keeps the established [2, 2] converter on its existing specialized path. The selected public parity row passes. Two separate target-only fault-contract rows exercise clump-length rejection and RGB output reservation failure on the 1-by-2 path; both declare Pillow not_applicable and are reported outside the parity totals.

The active ycbcr_subsampled_lzw_1x2_odd_height row is a 4×3, 203-byte TIFF with the same 1-by-2 LZW layout. Its input SHA-256 is 00013d30c2155603f592722acf82b52154eb031774453023612d93a8983e2185; pinned Pillow produces 36 RGB bytes with SHA-256 c71479e1cfff0dd7c76fbe5df2c61e80c75405df52c1aa2413e2f4d08a99f1fb. It reaches and passes the new converter's bottom-edge clipping condition. The selected public parity row passes. The focused report target/release-evidence/coverage-tiff-ycbcr-1x2-odd-final.json records both outcomes at decode.rs:2124 (20 clipped and 60 in-bounds observations in the exercised specialization). Coverage MCP calls hung in this run, so the selected report is not unioned with a baseline and establishes no aggregate coverage change.

The full all-format public decode matrix passes all eight integration tests. Its report, target/release-evidence/coverage-public-decode-matrix-parity-final-20261002.json, records 11,386/32,252 branches (35.30%) for this selected decode run. Coverage MCP reports both outcomes covered at BMP inspect.rs:66 and no remaining outcomes at TIFF decode.rs:490 for the zero-row compressed-strip path, decode.rs:599 for bounded Deflate handling, or in convert_pixels_with_token. The report has no source/build receipt and unknown test attribution; its incremental comparison with the earlier selected report is unavailable because that baseline lacks complete branch detail. These measurements do not replace the separate full-suite coverage snapshot or claim 100% coverage.

The AV1 encoder entropy corpus retains eleven complete files from standalone pinned libavif/libaom builds, with Pillow/dav1d decoded pixels. It contains thirteen independently inspected tile payloads: monochrome, 4:2:0/4:2:2/4:4:4, alpha, two-column tiling, lossless, and 8/10/12-bit samples. Original and instrumented builds each encode every file twice with identical results. All thirteen tile payloads bind uniquely to finished native writers; unmodified libaom replay matches every logical state, CDF update and final byte. This is native encoder evidence, not Pillow save() parity or a Rust execution result.

The 83 hashed artifacts total 1,618,610 bytes. Gzip traces retain expanded lengths and hashes; prepared planes, replay inputs, syntax reports, complete files, pixels, instrumentation patch and build identities remain separate. Committed tiles exhibit 292 normalization flushes and 103 carry changes, including a two-byte carry. Separately labelled native models cover alphabets 2–16, probability endpoints, CDF plateaus, frozen adaptation, counter thresholds and empty/short termination. They are not full-file syntax claims. The generator is scripts/generate_av1_encoder_refs.py; its C observers under scripts/av1_encoder_oracle/ are development tools, excluded from the crate. The Rust entropy/tile writer, image analysis and full AV1 compressor remain unimplemented. The 16x16 10-bit I420 case also supplies the active public AVIF decoder parity row high_bitdepth_still_10bit_420_lossy_16x16 in the coverage matrix, with generator and fixture provenance in the AVIF fixture README. Its selected Pillow 12.2.0 check passed for 16x16 RGB8 output (reference bytes, 768 bytes, 55820e29e26b25634c402e57e8b743bb9560666861f5ea07c14a607f31eea38f). A same-source AVIF selected-test Coverage MCP comparison reports 73 newly observed branch coordinates, including seven outcomes in complete_high_depth_420_reconstruction_context. Its source/build receipts are unverified, so this is limited selected-test coordinate evidence and does not claim a full-suite coverage-percentage change. The active matrix row is decoder evidence; it does not promote a Rust AV1 encoder roadmap item.

The 2026-09-17 private still-container candidate has a 28-file native mux corpus. Pinned Pillow/libavif/libaom observations repeat exactly, including complete encoded bytes and decoded pixels. Sixteen files correspond to registered planned still rows; twelve supplemental files cover orientation, combined alpha/metadata and actual media reuse within and across item boundaries. The corpus has 105 hashed artifacts totaling 314,731 bytes and retains clean libavif source, native binary, generator, source image and manifest identities.

The Rust writer consumes semantic descriptors and encoded/metadata payloads; expected serialized boxes and output offsets are excluded from its inputs. Deferred tests compare complete containers, output limits and separate model error/interruption states. The source-derived 10/12-bit descriptor handling has no native encode witness yet; all 28 files are 8-bit. AV1 compression and metadata preparation remain unimplemented, so public encoding is still unavailable and no matrix row is promoted. Rust behavioral execution and managed coverage remain deferred; historical measurements below are unchanged. All 16 strict compile configurations pass across native and both WASM targets, with AVIF-only/all features and ordinary/coverage modes, plus native default and no-codec lanes. Warnings-as-errors rustdoc, formatting and static checks pass. The coverage-origin manifest now classifies 111 exact guards across 16 files; these are provenance records, not coverage exclusions or a new measurement.

Historical release 0.1.2

Version 0.1.2 passed main CI and release CI at 70190214a0711223302c76ab58e76c097288d80b. The published crate matches the GitHub checksum manifest, with SHA-256 e53037e57d0c5cae052ba94851c8cf72a80b9dfe195cd21b166506ab7bdbeb3b.

The 2026-09-15 all-feature release coverage run recorded 95,473/161,451 lines, 14,912/32,258 branches, 4,859/9,244 functions, and 140,609/241,503 regions. The release floors are respectively 59%, 46%, 52%, and 58%. The complete target retains 100%; a floor pass is not complete coverage. All executed comparisons remain mandatory.

Maintained fixture matrix

The retained matrix contains 1,798 total rows: 1,370 decode / inspect / verify rows and 428 encode rows. Of those, 1,370 decode rows and 396 encode rows are active; 32 encode rows remain planned. Planned rows stay outside executed parity numerators. Active rows have operation-specific outcomes, including not-applicable results.

Generated capabilities distinguish declarations and actual native/all-feature fixture observations. A WASM cross-compile does not extend that pixel-evidence scope.

Decoder validation — 2026-09-20

The full public matrix passes all 46 tests, including 343 AVIF rows and exact native comparisons of complete animations. All native, WASI and browser-WASM feature lanes pass. High-depth, HDR and animation additions are on main, awaiting the next release; the 32 AVIF encoder rows remain planned.

A fresh local make coverage run passes every executed test and the unchanged release floors: 99,349/163,373 lines (60.8112%), 15,524/32,418 branches (47.8870%), 5,052/9,372 functions (53.9053%), and 145,689/243,793 regions (59.7593%). This is LLVM evidence, not a new managed Coverage MCP snapshot. The changed-line review observes 274/294 executable lines in the seven changed AV1 modules. Unobserved lines include defensive failures and the Wiener stripe branch; this is not complete line or branch coverage.

The local reports live under target/release-evidence/: coverage.json, coverage.lcov, and avif-fix-coverage.json. The last receipt retains source and input hashes and the exact uncovered line list. CI produces a fresh report for each pushed commit and retains it as the llvm-coverage artifact.

Codec parity and coverage — 2026-10-03

At that point, the matrix contained 1,927 total rows: 1,474 decode / inspect / verify rows and 453 encode rows. Of those, 1,474 decode rows are active; 421 encode rows are active and 32 are explicitly planned. It includes 440 active AVIF decode rows. Twelve new error rows pass the selected public matrix runs: short_marker_missing_eoi (JPEG, input SHA-256 869e30d73346ca502d81c1a04881b3ca8cbb64d980cb73b73cf856d54a8bdcbc), error_ispe_nonzero_version (AVIF, 9caaefec8072bd826607867f9d80c8ce2a10d67f1638bf8c1ac382055d75a791), error_ispe_zero_width (AVIF, 3524b652351b5a668a7a91a7dcd10a376205d5771858d11e073f61bdf96de3da), error_iloc_version_3 (AVIF, 9ce231f76eac5fb15f9da9d12cc34b6e6a59d7eeee8bcad4101a451ee9648dd2), error_sequence_zero_timing_rate (AVIF, 055dea40a69ca9eb7a60a499524a7e563990bccb708f6a9992c1691f304f15e2), error_inconsistent_operating_point_idc (AVIF, 3c81896058305429697219be55ddcaf4fcf5293aca48570c1e7e22f6ebcd0a07), error_sequence_zero_time_scale (AVIF, 92d7882e439adf1430d60460d488d0df2b7feb9f6ba3bb7931898c4f70f25ac0), error_inconsistent_operating_point_idc_low_byte (AVIF, d49e5403f421c1f71140c7442ba4493e51317bd1c9776d0aaf19069e9002fd71), error_ispe_zero_height (AVIF, e93421df7d5d3564f7d297c4deb09a765be702e16aa86de41c3705974d059024), error_vp8_color_space_invalid (WebP, ce6b3a9b8e69194d02cdc0739b9db9cdc668554abc0fe29e28fa902e49eb6e45), error_malformed_container_animated_all_frame_chunks_unrecognized (WebP, cde9d77559e01ef3324fb73f6541c4cd6257b8563595a4ca397fc0ab52f69886), and error_truncated_riff_extent_metadata_preflight (WebP, e84c137505358f37c528aa349b7541971603dae587e5dbfd15e67792ce72da09). The pinned Pillow 12.2.0 oracle rejects each case under the matrix's malformed decode contract. The selected rows and full coverage campaign pass. Coverage MCP reports nine newly observed branch coordinates at AVIF samples.rs:656, :661, :1030, sequence.rs:179, and :223, JPEG parser.rs:609, and WebP vp8.rs:1268; a filtered follow-up reports no missing branch groups at the targeted AVIF height, timing, and IDC operands. The comparison has no source/build receipts and test attribution is unknown, so these are coordinate differences rather than verified causal gains or regressions. The active uniform_tile_rows_monochrome_256 AVIF row uses a 344-byte constant grayscale still with one tile column and four uniform tile rows (input SHA-256 782568b37a63b44e632aee68896bcee3c59c5492081c7ac2ac6a31fc0ca1df37). Its Pillow reference is 196,608 RGB bytes with SHA-256 d5039cbfb3fb9a915614802a721cba155442563d36a6bbf73e582e65f5290890; the selected public parity row passes. The pre-row full report showed the true arm of read_tiling at av1/frame.rs:3647 missing, and the selected report leaves only the false outcome of the tile-row bit read. The active WebP row error_malformed_container_animated_all_frame_chunks_unrecognized changes both nested VP8L frame FourCCs in a valid two-frame lossless animation to JUNK while preserving RIFF lengths (input SHA-256 cde9d77559e01ef3324fb73f6541c4cd6257b8563595a4ca397fc0ab52f69886). Pillow reports could not create decoder object; its selected public matrix row passes the malformed WebP contract. The selected report covers the previously missing true arm of WebPDecoder::new at webp/native/decoder.rs:226. Coverage MCP reports missing source/build receipts and unknown test attribution for these selected runs, so the arm mappings remain coordinate evidence. The new animated_lossless_inter_420_b32x32_10bit_64x64 AVIF sequence adds a animated_lossless_inter_420_b32x32_10bit_64x64 AVIF sequence adds a deterministic 64×64 10-bit 4:2:0 inter-frame case while preserving the prior 32×32 fixture. Its pinned dav1d trace confirms four 32×32 leaves in the second frame; the selected public parity run passed and checked exact Pillow frame bytes. The selected LLVM report records three hits on the previously missing false arm in one decode_inter_translation_impl specialization at src/codecs/avif/av1/block.rs:54836. The fresh full report adds one aggregate branch observation. Coverage MCP comparison remains limited because these reports have no source/build receipts and MCP cannot attribute tests. The active enc_lossless_sampling_multi_group_checkpoint WebP row encodes an 8192×16 RGB PNG with lossless quality 80, method 4, and a cancellation token. Its deterministic 32×1 metadata map alternates two retained Huffman histogram groups. Pinned Pillow 12.2.0 produces the committed 98,388-byte reference (SHA-256 cc92a5c28e780be64ef34a104ddeeb92e76c967f8e3f8f1a16fb42a01ca907a4), and the focused selected row and full encode matrix pass. The current full local report still lists the true checkpoint arms at encoder.rs:1378 and :1418; the filtered query at :1421 has no missing branch group. Because the report lacks source/build receipts and test attribution, this is a fixture-parity result plus coordinate coverage evidence, not source-bound proof that those checkpoint arms were executed. The active enc_animated_non_centisecond_delays GIF row uses two WebP frames with 17 ms and 33 ms source durations. Rust now stores their GIF delays as 1 and 3 centiseconds, matching Pillow's 10 ms and 30 ms output; the 129-byte encoded reference SHA-256 is 52f23eb3646581d4982bed87c11bf63315ddf2e3a4cdf5d73a5b0b80c44e8509. The enc_animated_large_fraction_delay row sets the first duration to the unreduced u64::MAX / u64::MAX rational (one second), exercises GIF's wide scaling path, and matches Pillow's [100, 3] centisecond delays. Its 129-byte reference SHA-256 is df760f2efb3378fd2eb3c46660ebaf5399b11086838ec28f99b5faf5e9a15792. The focused GIF encode parity suite and full coverage run pass. Coverage MCP's filtered gif_delay query now leaves only the zero-denominator arm at line 869; the wide-scaling arm is no longer missing. The local report has no source/build receipt and test attribution is unknown, so this is coordinate evidence. A zero-denominator value is not a valid Pillow frame duration and has no public Pillow-backed fixture witness. The new primary_item_irot row decodes the independently generated 325-byte mux fixture with an associated 270-degree primary-item rotation. Its Pillow 12.2.0 output is 2×3 RGB (18 bytes, efbe5247163f007591d148c7975ad74429fd2282feb0bdec402838155763da38), and the Rust decoder reports the matching counterclockwise 270-degree transform. The Seven portable_lossless_monochrome_limited_* rows cover limited-range monochrome RGB and RGBA at 8, 10, and 12 bits, plus a BT.2020/PQ CICP case. Their selected public parity rows pass against exact Pillow bytes; the preceding all-feature AVIF decode lane included all 415 active rows. Coverage MCP reports no remaining branch gap at container.rs:1367 in coverage-avif-primary-irot-current.json; that selected report has no source/build receipt and labels test status unknown, so this is bounded path evidence only.

The new active ipma_version_1_wide_item_ids still row widens the primary item ID in AVIF's ipma FullBox from 16 to 32 bits and adjusts the following absolute iloc extent. The 3,079-byte fixture is generated from Pillow's baseline still and hashes to 90ac8f0230ddede24a72b73fb120bd46680962d4c0a7facab31e77b088cd82c5. Pillow 12.2.0 verifies and decodes it to the same 128×128 RGB pixels, metadata, and info as the baseline. The focused public AVIF decode matrix passes 416/416 rows. The full local make coverage campaign passes every executed test and reports 85,737/142,131 lines (60.3225%), 16,350/32,170 branches (50.8237%), 4,797/8,975 functions (53.4485%), and 131,045/219,720 regions (59.6418%); all four release floors pass and the 100% target remains open. Its LLVM report is target/release-evidence/coverage-full-ipma-v1-20261003.json. Coverage MCP's coordinate comparison lists two newly observed branch arms in parse_ipma, the version-zero arms in container.rs and samples.rs. That report has no source/build receipt and MCP reports test attribution as unknown, so the comparison is coordinate evidence; the local matrix and full coverage commands themselves passed.

The active iloc_version_2_wide_item_ids AVIF row derives from baseline.avif, widening the iloc item count and ID to 32 bits, adding construction method zero, and relocating the absolute extent after the six-byte box growth. The generated input SHA-256 is 39a494da43edb3e25dcc60c1c51c987452c66a2590e5ac9563d416d922199d87. Pinned Pillow 12.2.0 accepts it and produces the same 128×128 RGB pixels and info as the baseline (49,152 bytes; output SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf). The selected public row passes, and the full AVIF matrix passes 418/418 rows. Its selected LLVM report records four visits to the version-2 path at container.rs:608; the full report has no remaining branches at lines 608 or 622. Coverage MCP reports no gaps at those coordinates, but has no source/build receipt and test attribution is unknown, so that result is coordinate evidence.

The active size_1x1_local_palette_only GIF row moves the exact six-byte palette from the Logical Screen Descriptor's global table into the image's local table, leaving no global table. Its 37-byte input SHA-256 is 2d029f561c59b4bf8c23b46e1acf61a144e16d7ec46901e0c428914801363146. Pillow 12.2.0 returns the one-byte P image 00 and the six-byte RGB palette with SHA-256 b0f66adc83641586656866813fd9dd0b8ebb63796075661ba45d1aa8089e1d44; the focused public parity row passes detect, inspect, verify, decode, and sequence comparisons. Pillow omits info["background"] for this input, so the matrix records the Logical Screen Descriptor's palette index with specification_reference provenance. Metadata-byte scanning runs only when a caller sets a DecodePolicy metadata limit, so the parity-only row does not claim coverage for that policy path.

The ordinary and token-aware GIF LZW paths reject zero-sized frames before decoding and return as soon as the output reaches its expected length. This makes the first-code output-full guards and end-code exact-length success arm unreachable; those redundant conditions are removed. All 79 active GIF parity rows pass. The refreshed Coverage MCP GIF query no longer lists decode_lzw; it still lists the metadata scanner's global-table false arm at line 366 and local-table true arm at line 393. That scanner only runs when a caller sets a metadata-byte policy limit. The new full report has no source/build receipt, so these filtered results are source-coordinate leads.

The active high_bitdepth_still_10bit_420_alpha_lossless_16x16 AVIF row exercises the public 10-bit 4:2:0 color path with an auxiliary 10-bit alpha plane. Its 1,653-byte input SHA-256 is 8c3cb86055e1003d91897d986995dd2ee030d0278b82d3d7c9ddc783189eb76f; pinned Pillow returns 16×16 RGBA8 (1,024 bytes) with SHA-256 a3eec8f3c1e9539ccee71ec2e9d514a46d20d0b93a7b8e5d562379ef4a794dd9. The selected public parity row passes. Its isolated branch report records the 10-bit alpha path at decode_portable lines 492, 535, and 555. The refreshed full report shows no remaining branch gap at those locations.

Two more active 10-bit alpha stills exercise the AV1 4:2:2 and 4:4:4 decode paths. The all-lossless 16x16 4:2:2 input hash is eef1ffae7961354032dad642c1ebfc146cbcb28f7147c4dce6d9b8a4de17d392; Pillow RGBA8 output hash is b7731cca14b3da564883533a5cfd6ddc75aba189b60dbe7795de93711237a457. The 16x16 lossy 4:4:4 input hash is 468bd5af2f96693582d6618572dc353cac4ee16719cebebb8e20ff7e81049548; Pillow RGBA8 output hash is 02e871ddbaa576836e9d486cf36be09efce4f2fef164c7f66af2a579dfb1e67a. Both selected public parity rows pass. Coverage MCP's selected report reaches the 10-bit 4:2:2 sampler path at lines 588 and 606 and the full-resolution alpha conversion at line 496. That report has no source/build receipt and marks test status unknown; the local selected matrix command supplies the pass result.

The active portable_lossless_monochrome_1x1 row exercises a 1×1 8-bit lossless monochrome still. Pillow returns RGB 7f7f7f; the selected public parity test passes, and the Rust reconstruction crops its coded block to the visible canvas. The row's pinned input SHA-256 is 6c4212de07ead445c0b468c39b77f099cc8555e99edd6460806407d7536be305. The WebP decode lane passes all 230 active rows. Two generated 1×1 VP8L cases exercise transformed opaque RGB reconstruction and singleton RGBA color-cache insertion. Their Pillow outputs are RGB 0a141e and RGBA 0a141e80. Coverage MCP reports no remaining branch group at webp/native/lossless.rs:763; it still reports the alpha-used false arm at line 155.

Two JPEG fixtures truncate 64 entropy bytes before EOI in baseline 4:2:2 and 4:4:4 inputs; both selected public parity rows pass. Coverage MCP reports no remaining branch group at the direct-row fallback locations jpeg/decode/decode.rs:1504 and :1697 in the latest full report.

The metadata-policy manifest adds public TIFF cases for a cyclic IFD, empty tile byte counts, and an empty IFD chain. The policy test checks successful metadata accounting and malformed-scan propagation through inspect, still decode, and sequence decode. Coverage MCP reports no remaining branch groups at tiff/decode.rs:133, :150, or :160.

These filtered MCP observations have no source/build receipt or per-test attribution; they are bounded path evidence. The full-report comparison lists seven newly observed branch coordinates at these TIFF, JPEG, and WebP paths, but MCP marks the result limited because source/build identity is unverified. The full local report still passes every repository coverage floor.

The active GIF row enc_rgb_high_color_token_checkpoint adds a 33×33 RGB PNG with 1,089 distinct colors, forcing the token-aware median-cut quantizer across its 1,024-pixel checkpoints in all three mapping passes. The source PNG SHA-256 is a4c488ae9683a7ae782017bf8fc334d67ec43e0f0430a0c2442cfa426dcc82e6; its Pillow GIF reference is 1,862 bytes with SHA-256 7bbedc5d1161b6b8b00a41b9b5f4dc52e7cc2d33a4cc63b30320876a4165e43f. The selected public parity row passed byte-for-byte comparison against Pillow and ordinary Rust encoding. Its isolated LLVM run records one checkpoint hit and 1,087 non-hits at each pass; the fresh full report records no remaining branch gap for quantize_rgb_nearest in Coverage MCP. Both reports lack source/build receipts and test attribution, so local test results and counters are scoped evidence rather than managed coverage attribution.

The active GIF row enc_rgba_high_color_token_checkpoint exercises transparent pixel normalization in token-aware RGBA quantization with 1,088 opaque pixels and one fully transparent pixel. Its 33×33 PNG SHA-256 is 1939c2816f1f56c21c3e672d03df8341a6dcf16181cbaa8035b93ad0e3ae9896; the 1,936-byte Pillow GIF reference has SHA-256 ee584ccbbe4b55eb06a9e2d3ad52ae037d74f2d3ad545cf0e954ef555e8c4e34. The selected public parity test passes exact Pillow byte parity. Its isolated LLVM run records the normalization checkpoint and both alpha outcomes; the full report has no remaining branch group for quantize_rgba in Coverage MCP. Those reports also lack source/build receipts and test attribution.

The active GIF row enc_animated_rgb_full_palette_token uses a lossless, opaque two-frame WebP animation with all 256 grayscale values in each 16×16 frame; the second frame swaps the first and last pixels. The WebP SHA-256 is eda7f7272532e97d362a46a905d3f80dc857c5a5602232dde366f885d9838946. The row requests GIF local color tables and the public token-aware sequence encoder; its Pillow GIF reference is 2,963 bytes with SHA-256 881dfb2f5a8b81575a20ac40350ccb6124bf3ef95df6b9b15c9a9cc5cb98c6f4. The selected parity row passes for both ordinary and token-aware sequence encoding. Its isolated LLVM run records three visits to the false arm at gif/encode.rs:472, where the full 256-entry palette prevents adding a transparency slot. The report has no source/build receipt or test attribution.

The WebP lane's public basic-inspection parity assertion now covers VP8 canvas width and height mismatches and VP8L canvas width and height mismatches. The generated VP8L files are complete VP8X, VP8L, EXIF RIFF images derived from exif.webp; their Pillow outcome is OSError: could not create decoder object. The VP8 width fixture is pinned by SHA-256 9213d677987c5dd684e0d07d09efcb3922a624b8188706f2879b3dbfe385d7ea, the VP8 height fixture by 8d9ebf1b4656176dae2627363d7f73cc99a27b4fdcfc74f14db917def973bf14, the VP8L width fixture by 51127d31ba0f68d73000ffea0a8d962cc5408db4dea2df6188a70302e7b10fa4, and the VP8L height fixture by 79a1c86ebd90824274d792f602d980e6dc1c01bb83a969ceb4e1ffb2b057c3a5. Two more full-file mutations start from the valid two-frame animated_sequence_rgba_keyframes.webp: one clears the first nested VP8L signature byte, and one sets its unsupported version bit while preserving dimensions. Pillow returns the same decoder-object error for both. The public decode matrix passes both rows across detection, inspection, verification, still decode, and sequence decode; their input SHA-256 digests are a40cd40a7f492abe7c086323aefd25edd04e73291618154285e83b85d3ca4a4c and 6e51fc2edee8208762d8faa8e292993f165d715a3ba2e7a5cdaf9e629c2f75c8. Coverage MCP's full report filtered to WebP inspection and VP8L lossless decoding contains no missing group in inspect_extended_basic or LosslessDecoder::read_frame_header, though other WebP groups remain. Source/build identity and test attribution are unverified in that report, so the query is diagnostic evidence alongside the local parity pass. The new portable_i444_quality100_64x64 case checks a 64×64 8-bit 4:4:4 quality-100 frame with fixed 64-pixel partitions. The selected public matrix row passes exact Pillow parity for all 12,288 RGB bytes; its input SHA-256 is 5ceb66b47bda43bec5c421222eeb3ef858c62702bc41833986fdf678f6867737 and its output SHA-256 is 5e74b862ca69314d8ae9a3aa4b8f3af5651dfbd238ce922a7973c193e338f64a. The new animated_lossy_global_halfblend_spatial_i444_b256x256 row pairs identity and RotZoom global references in compound spatial neighbors. Its four complete RGB frames and 100ms timing match Pillow, and the independent loop bundle records an infinite-play sequence. Selected LLVM coverage records five visits to each outcome at motion.rs:1707; the full report records 30/10. Coverage MCP returns no missing branch group at that coordinate. These local reports have no source/build receipt and list test status as unknown; the public matrix row and full campaign pass. The new coverage_h16x4_third_leaf_no_chroma_tx8x4_01 row pins a 16×16 4:2:0 H4 with two TX8×4 luma residuals in its third no-chroma leaf against Pillow output and passes the matrix. Coverage MCP still shows 26 missing branch observations in decode_following_vertical_without_chroma: production decodes this input with the complete partition walker, so the row guards that public reconstruction path without covering the narrower first-partition fallback. Its report has no source/build or test receipt, so those locations remain unverified. Three further AVIF parity rows add a 64x64 TX64-root split and two opposite 512x128 projected-motion window misses. All eleven decoded frames and native loop observations match their pinned references. Coverage MCP reports no missing branch group at entropy.rs:8000 for the TX64 child offsets or at motion.rs:3351 for the temporal x-window checks. These reports have no source/build receipt and label test status unknown; the successful full local coverage run supplies execution evidence. One more public sequence adds a textured 184×64 all-lossless 4:2:0 input with fixed 32×32 AV1 partitions. Its final-frame edge block at pixel (160,0) has a 24×32 visible extent and selects the clipped-lossless plan. The input hash is 0a8c935fe67694fe576e7f21064eec4c428cffc2a05a3ff2d0be33e401a20c1d; both Pillow RGB frame hashes are retained in the AVIF loop oracle and exact public sequence parity passes. The selected LLVM report observes the true outcome at entropy.rs:6925; Coverage MCP reports the false outcome missing in that single-row report. Its source/build receipt is unverified and test status is unknown. The complete coverage run passes, with branch totals unchanged. Two public parity rows exercise the AVIF ICC prof and rICC properties; Pillow 12.2.0 accepts both fixtures with matching RGB pixels and preserved profile bytes. Two further rows assert associated BT.2020/D65 mdcv fields against the property definition while Pillow verifies identical pixels and profile preservation, including when one bounded trailing metadata byte is present. A new two-frame 60×64 lossless I420 sequence pins a B32×32 leaf at pixel (32,32) with 28×32 visible pixels at the right edge; both complete frames match Pillow exactly. New JPEG parity cases cover progressive AC-first run overshoot, AC-refinement EOB runs and scan tails, repeated sparse refinement, a malformed DC Huffman category-16 symbol, and out-of-range spectral starts and ends rejected by Pillow during pixel loading, an oracle-accepted out-of-range DC coefficient case matching signed JCOEF narrowing, plus two DC-only progressive cases that exercise smoothing with ordinary and Pillow-tolerated zero quantization tables. The matrix also includes a 33×33 baseline 4:2:0 encode with partial MCU edges. Five additional encoder rows exercise the fused 4:2:0 batch path at 16×2, 16×1, 17×17, and 17×2 sizes, plus the generic 4:2:2 RGB batch tail at 17×17. Four more JPEG fixtures cover partial baseline grayscale and CMYK blocks, plus progressive 4:2:2 scans at 17×13 and 1×8. The odd 4:2:2 case exposed scan iteration over padded storage blocks; progressive scans now use the logical component block extent while retaining the padded buffer stride. Successful cases compare exact pixels or bytes against Pillow. At that time, the all-feature JPEG decode lane passed all 154 active rows. The new baseline_ac_pair_tail fixture exercises a baseline AC run whose first coefficient position exceeds 63; its exact Pillow pixels pass the public matrix. The bounded overrun path consumes the symbol amplitude and writes to coefficient 63, matching libjpeg-turbo's padded zigzag behavior for corrupted streams. Coverage MCP's query for decode.rs:145 has no remaining missing branch group in the full JPEG lane report. A selected incremental branch union was incomparable because its exports lacked complete branch detail; the parallel region comparison found 10 newly observed regions in decode_block_fast against the other 153 JPEG decode rows. The reports are target/release-evidence/coverage-jpeg-baseline-excluding-ac-pair-tail.json and target/release-evidence/coverage-jpeg-ac-pair-tail-selected.json; the full-lane report is target/release-evidence/coverage-jpeg-ac-pair-tail-final.json. These reports have no source/build receipts, so MCP marks their test status unknown; local selected and full JPEG decode runs passed.

Three more Pillow-generated baseline JPEG rows exercise public restart-marker fallbacks: 4:2:0 with DRI 3, which is not aligned to its eight-MCU row, and 4:2:2 and 4:4:4 with DRI 1. The fixture generator uses Pillow's restart_marker_blocks option; the full 128×128 sampling grids avoid partial MCU edges. All 157 active JPEG decode rows pass exact pixel parity. Coverage MCP reports no remaining branch gaps at decode.rs:1083, 1330, or 1494 in coverage-jpeg-restart-fallbacks-current.json. That selected report has no source/build receipt and marks test status unknown, so the result is bounded path evidence; the local test output confirms 157/157.

A fresh selected all-feature run passes all 60 active JPEG encode rows, including progressive CMYK and the CMYK EXIF cases below.

The public enc_cmyk_progressive row closes a Pillow-supported combination that previously returned an unsupported error. The general progressive scan script now covers each component of non-YCbCr images, and the optimized CMYK row-streaming path remains restricted to baseline output. The exact Pillow reference is 10,364 bytes with SHA-256 53d7b0a56e5156b5b9a7ea14ef13fe5fc0fe88274b1d86efa5e6668fa1592814; all 60 active JPEG encode rows pass. Coverage MCP reports no remaining branch-gap group in default_progression_script for coverage-jpeg-progressive-cmyk-current.json. Its source/build receipt is unverified and test status unknown, so this does not claim a managed coverage delta. The baseline CMYK streaming path remains available unchanged for non-progressive output.

JPEG parity now also covers baseline CMYK streaming with valid and oversized EXIF, restart-marker emission, the 65,536-MCU restart-interval clamp, and restart rows above Pillow's signed limit, alongside the existing row without EXIF. The full all-feature JPEG encode lane passes all 60 active rows. Coverage MCP reports no missing branch at restart_interval_from_rows, and no missing region at the APP1 error-propagation site on line 4813, the restart-marker emission site on line 4866, or in the CMYK streaming function. A 4,096-row setting clamps to DRI 65,535; a setting of 2,147,483,648 omits DRI, matching Pillow. Pillow rejects the 65,534-byte EXIF payload with ValueError: EXIF data is too long, matching the Rust parameter error. The current report has no source/build receipt and MCP marks test status unknown; the local test output confirms 60/60. MCP findings are limited to this JPEG lane and do not establish a full-repository coverage change. At that point, the active JPEG decode inventory had grown to 158 rows. Its new baseline_cmyk_entropy_truncated_tail_64 case truncates 64 bytes of baseline CMYK entropy while retaining EOI. Pillow returns the exact 13×9 CMYK output (468 bytes); the direct-decoder fallback at decode.rs:1065 is covered by the public row. Coverage MCP returns no missing branch group at that coordinate in the current full report, which has no source/build receipt and reports test status unknown.

The JPEG decode inventory now has 159 active rows. The new baseline_cmyk_height_partial_aligned_width fixture is 8×9 CMYK: its width is MCU-aligned while its final MCU row is partial. Pillow's exact 288-byte output has SHA-256 ac10bdd2898d8df3462b1594b15ade2e2a429a61ca2908a31102c64f27b579b9. Exact parity passes, and both outcomes of the AArch64 height-alignment check at decode.rs:1023 appear in the full local report. Coverage MCP returns no remaining gap at that line; the LLVM report has no source/build receipt and MCP labels test status unknown.

The idct_high_horizontal_frequencies row uses a restart-separated, fully valid baseline grayscale JPEG. Six blocks place AC coefficients at horizontal frequencies 3 through 7 and at vertical frequency 1. Its exact Pillow pixel reference passes the public decode matrix. The selected LLVM report observes both outcomes at each scalar IDCT row-shortcut predicate on lines 191–195; Coverage MCP returns no remaining gap for those selected coordinates. The local report has no source/build receipt, so this is selected-path evidence and does not establish a complete-suite coverage delta by itself.

The 2026-10-01 all-feature make coverage run passes every executed test and the release floors: 106,527/162,369 lines (65.607967%), 17,345/32,236 branches (53.806304%), 5,341/9,371 functions (56.994985%), and 156,010/242,524 regions (64.327654%). Its LLVM report is target/release-evidence/coverage.json, measured on macOS ARM64 with nightly-2026-07-16 against the current working tree. It has no source/build receipt: Coverage MCP reports source identity unverified and test status unknown, so its totals cannot establish a source-bound delta or per-row coverage gain. Coverage MCP groups the remaining branch observations in the AV1 lossless partial-grid predicate at block.rs:54830-54831; the targeted decode_following_vertical_without_chroma query still returns 26 observations. A selected 2026-10-04 run of the public 64×64 10-bit fixed-32-partition row records six false outcomes at the current block.rs:54838 sample-depth check, so that outcome is reachable through a valid full-size LosslessGrid. This selected witness does not identify the older report's remaining observations at lines 54830–54831; both reports lack source/build receipts, so their line coordinates cannot be treated as source-bound branch identities. The 100% goal remains open, with 55,842 lines, 14,892 branches, 4,030 functions, and 86,514 regions uncovered.

While validating the three-frame I444 parity row, a DAV1D trace exposed a transposed compound-reference CDF lookup. Rust indexed the AV1 [group][context] tables as [context][group], selecting Last3 where the stream selected Last. The decoder now indexes group then context; the selected animated I444 parity row and the full test campaign pass. Coverage MCP reports 207 newly observed branch coordinates against the prior report, but source/build receipts are missing, so MCP marks that comparison limited rather than a verified gain. Its highest missing group remains Lossy420Decoder::decode_inter_translation_impl, with 1,842 repeated coordinates across monomorphizations, not 1,842 distinct source branches. The 100% goal remains open.

Two odd-sized baseline color JPEG rows now cover right and bottom edges in separate sampling modes: 13×9 4:4:4 and 17×9 4:2:2. Both compare exact decoded pixels with the pinned Pillow oracle. The 4:4:4 row also drives a short RGB conversion tail through the direct row kernel, extending coverage beyond the existing odd-sized progressive 4:2:2 case. The AVIF additions include four-frame 4:2:2 and 4:4:4 sequences. The 4:2:2 case moves a small block across horizontal chroma boundaries; the 4:4:4 case translates a periodic full-frame chroma pattern. A three-frame 4:2:0 sequence with forced 4x4 inter partitions and a small luma/chroma change exercises the subsampled block-width ownership edge. Exact Pillow frame references and pinned libavif loop witnesses pass the public sequence checks.

A 96×96 untransformed VP8L lossless case repeats a four-pixel RGB phrase at short distances. Its exact Pillow reference passes public decode parity. The isolated and full local branch reports observe the short non-overlapping copy arm; Coverage MCP reports new branch coordinates for this input, with source and build identity unverified.

A deterministic 128×64 VP8L stream exercises color-cache lookahead after a cached color, a new literal, and a repeated cached color. The exact RGB output matches Pillow, and the isolated public report observes both outcomes at the three lookahead branches in lossless.rs:828-830; Coverage MCP reports no remaining gap for those selected coordinates, but source/build receipts are unverified. The new active row is lossless_color_cache_lookahead.

The public GIF encode matrix now includes a one-frame sequence with exactly one total play. Its Pillow byte reference is unchanged because no GIF loop extension is required. The selected parity row reaches the Finite { total_plays: 1 } mapping in encode.rs:1734; the selected report has no remaining gap at that coordinate, with source/build identity unverified.

Three complete 3×1, 4-bpp ICO fixtures pin Pillow's grayscale-palette rules: identity grayscale becomes raw luminance bytes, non-identity grayscale remains indexed, and a black/white two-entry palette uses the one-bit interpretation. All three decode, inspect, and verify through the public manifest parity path. The identity fixture's input SHA-256 is de23f5d6d7ec9047cc6103e2991db5b62fde8cbd9b3d95e078ccf3960d1f5b29, and its Pillow RGBA reference SHA-256 is 45add7ffebacd45767e5608c10f43c1aab79268a2645bfe9f5ab759656af4c22. The selected LLVM report observes both outcomes at the odd-nibble guard; Coverage MCP reports no remaining gap there, with source/build identity unverified.

A new two-frame 16×16 4:2:0 AVIF sequence moves a 4×4 patch by one pixel. Both frames match Pillow exactly. Its inter frame is all-lossless and selects the specialized LosslessB16I420 reconstruction path; a branch-instrumented public decode observed the previously missing false arm at decode_inter_transform_size's small-block eligibility check.

A four-frame 256×256 4:2:0 AVIF sequence with moving inter-frame content covers the large-block side of that eligibility check. Its frames match Pillow and pinned native loop witnesses. The row also exposed a decoder-state bug: a skipped transform block inside a non-skipped coding block must propagate its own txb_skipped state to the wide-luma terminal decoder. Passing the enclosing block state could consume coefficient symbols for an empty transform and overread the tile; the corrected path passes the per-transform state.

A new 16×16 lossy WebP fixture uses luma-balanced red and green 4×4 tiles. It reaches the VP8 Y2 residual path with no coefficients, so both neighboring macroblocks receive a zero Y2 complexity context. The exact Pillow RGB output matches the public Rust decoder, and targeted LLVM evidence observes the previously missing false arm at read_residual_data.

A 32×32 four-quadrant lossy WebP row extends the public VP8 chroma decode corpus with a 2×2 macroblock layout and passes exact Pillow output parity. Its selected run reaches the production chroma DC prediction path. The saved full LLVM report coverage-after-adam7-gray16.json already records hits for that arm, and the MCP incremental comparison is incomparable, so no coverage gain is claimed; the row is retained as a decode regression case.

Three further 32×32 lossy WebP rows target VP8 chroma prediction with mixed neighboring blocks, a horizontal color gradient, and a vertical color gradient. All three pass exact Pillow RGB parity. Their isolated reports reach the production Vp8Decoder<Take<&mut Cursor<&[u8]>>> specialization's TrueMotion, Vertical, and Horizontal predictor arms. The aggregate coverage counts did not increase because the existing full matrix already covered those arms; the cases add focused regression inputs, not a claimed coverage gain. Coverage MCP has no source/build receipt for these local reports, so its source identity is unverified and selected-test status is unknown.

The malformed WebP row error_malformed_container_alpha_uncompressed_truncated_payload starts from alpha_uncompressed.webp, shortens the raw ALPH plane from 4,096 samples to one, and updates both chunk and RIFF lengths so the container stays complete. Pinned Pillow 12.2.0 opens and structurally verifies it, then reports OSError: failed to read next frame during load. The public Rust parity row passes with the matching malformed error category. It exercises the Take<&mut Cursor<&[u8]>> production specialization at read_alpha_chunk's read_exact in extended.rs:442; the prior full report listed that exact region as missing. The current full report and selected report show it executed. The row-only LLVM report is target/release-evidence/coverage-webp-alpha-truncated.json. MCP comparison remains coordinate evidence only because its source/build identity is unverified and test status is unknown.

The companion malformed row error_malformed_container_alpha_lossy_gradient_empty_compressed_payload keeps the compressed ALPH header and intact lossy VP8 image while removing the compressed alpha bitstream, then repairs the chunk padding and RIFF length. Its input SHA-256 is dbacedb09b0aec8375255d8d5b509fde9063b018b3497764769e8ea5aa93ba52. Pinned Pillow 12.2.0 opens it as 64×64 RGBA and raises OSError: failed to read next frame on load. Its public parity row passes with the malformed category, and a selected LLVM report records the production Take<&mut Cursor<&[u8]>> specialization without a remaining gap. Comparing the old and refreshed full reports observes one new region at read_alpha_chunk's lossless decoder call in extended.rs:433; that MCP result is limited coordinate evidence because source/build receipts are absent. The selected report is target/release-evidence/coverage-webp-alpha-lossy-truncated.json.

A further malformed WebP row, error_lossless_vp8l_short_backreference_truncated_tail, starts from the active 96×96 RGB lossless_short_backreference.webp stream and removes its final two VP8L payload bytes while repairing both the chunk and RIFF sizes. The complete 13,924-byte container has SHA-256 6c5dac54aae71b6c8e086096acfd00e4370689f955aa66bbe0227eb06198dd83. Pinned Pillow 12.2.0 opens it as RGB and raises OSError: failed to read next frame on pixel load; the public Rust parity row passes. The full coverage totals did not change. MCP's full-report comparison identifies one newly observed region in the direct RGB VP8L pixel path at lossless.rs:754:72, but the report has no source/build receipt and the result remains coordinate-only. The row is retained as a malformed-input regression for a valid header and short-copy stream that fails during pixel reconstruction, not as an aggregate coverage increase. Its full report is target/release-evidence/coverage-after-webp-avif-shortbackref.json.

The AVIF compound-reference investigation found a CDF table-axis error that could panic on a valid context-2 stream. The correction indexes each CDF by branch group then context. A deterministic full-file AVIF mutation preserves the compound-reference prefix and damages only a later coded sample; Pillow and Rust both reject sequence decoding as malformed, while the first image still matches Pillow exactly. An isolated public decode_sequence trace stops at the corrected backward-reference CDF lookup with group 0/context 2; the old transposed access would index beyond that table's two group rows. The selected parity row then returns its structured malformed result. This access occurs in an earlier AV1 sample than the mutation at byte 16098, so it proves the public prefix exercises the fix but does not attribute the eventual sequence error to the changed byte or frame. The valid DIFFWTD stream still reaches other AV1 decoder limitations, so it is not counted as a successful parity case.

An odd-sized 9×9 4-bit grayscale PNG uses Adam7 with all seven passes carrying samples. Exact Pillow L8 parity exercises packed-sample reconstruction in the interlaced pass callback, complementing the existing non-interlaced low-depth fixtures.

A three-page RGB TIFF sequence now uses 9×7, 9×7, and 5×11 pages. The public sequence decoder matches Pillow for all three frames, and the encoder matches Pillow's complete byte stream. This extends IFD traversal and inter-page alignment coverage through a third page with a different extent. The two new rows add regression coverage but leave the full LLVM totals unchanged; the Coverage MCP incremental comparison is incomparable because the prior report does not retain compatible branch detail.

A deterministic 128×64 monochrome AVIF with two tiles now passes exact Pillow RGB pixel parity in both one-group and split-group forms. The split case sends tile 0 and tile 1 in separate tile-group OBUs and exercises the accumulated pending-plus-trailing tile path. A new two-tile AVIF with a monochrome alpha item and CDEF disabled reaches the CDEF-off reconstruction branch; the complete RGBA output matches Pillow byte-for-byte. The new row multitile_monochrome_alpha_zero_loop_filter keeps that two-tile monochrome alpha layout but makes its alpha frame all-lossless, with zero Y/U/V loop-filter levels. Its generator checks both tile indices, CDEF, lossless state, and filter levels before accepting the fixture. Exact Pillow RGBA parity passes; the selected LLVM report observes the missing false arm at assemble_monochrome_tiles in frame.rs:2246. That report has no source/build receipt, so the location remains coordinate evidence. The selected report is target/release-evidence/coverage-avif-monochrome-alpha-zero-loop-filter.json.

A sparse grayscale progressive JPEG pins a 64-ZRL AC-refinement scan with coefficient correction bits and passes exact Pillow L8 pixel parity. A second 8×8 grayscale row, progressive_ac_refinement_refine_zrl, includes refinement symbols with r=15, size=0 and also matches Pillow exactly. Its selected nightly LLVM report records 8 true and 16 false executions at ac_refine_block's r != 15 branch; Coverage MCP lists no remaining gap for the production FastBitReader specialization. The full ARM64 report still lists the generic BitReader monomorphization, which this target does not use for production JPEG decode. The isolated report has no source/build receipt, so its branch location is coordinate evidence; the local public parity run passed. This edge case adds regression value without increasing the aggregate branch count.

An earlier full all-feature make coverage run passes every executed test and remains above all project floors: 100,225/163,401 lines (61.3368%), 15,892/32,398 branches (49.0524%), 5,085/9,372 functions (54.2574%), and 146,750/243,772 regions (60.1997%). The local LLVM report is target/release-evidence/coverage-goal-lossless-inter-420-final.json; it is not a managed Coverage MCP snapshot. It was measured on the macOS ARM64 working tree on 2026-09-30 with nightly-2026-07-16, all Cargo features, and the complete make coverage test campaign; it is not bound to a clean commit or a source/build receipt. Compared with the prior full local report target/release-evidence/coverage-goal-cdef-disabled.json, the measured totals show +171 covered lines, +70 branches, +11 functions, and +203 regions. The new lossless inter-frame AVIF parity row passes the full Pillow pixel check and observes the eligible lossless transform-size branch in the public decoder. Coverage MCP's report-coordinate comparison lists 173 newly observed branch locations across monomorphizations; its reports lack source/build receipts and test status, so the comparison is limited and does not establish verified attribution or regressions. The local full campaign itself reports all tests passing. The 100% target remains open.

The preceding all-feature make coverage run passed 118 library unit tests, 3 binary tests, 4 animation-loop tests, 1 capability test, 59 coverage-matrix tests, 7 decode-policy tests, 1 determinism test, and 68 feature-gate tests. It reports 106,798/165,795 lines (64.4157%), 16,435/32,508 branches (50.5568%), 5,578/9,617 functions (58.0015%), and 156,910/247,495 regions (63.3993%). The local LLVM report is target/release-evidence/coverage-goal-jpeg-jcoef-dc-shortcut-final.json, measured on macOS ARM64 with nightly-2026-07-16 and all features. Unit tests were included after enabling the existing library test target. Coverage MCP queries on this report no longer list branch gaps for JPEG range_limit, ycc_to_rgb_batch, reconstruct_baseline_444_direct_safe, or jpeg_idct_islow. The largest remaining group is AV1 decode_inter_translation_impl: MCP repeats 4,063 observations at the same source spans across specialized monomorphizations, not 4,063 distinct source statements. MCP marks source as unverified and test status unknown, so these are report-coordinate findings; the local Cargo campaign itself passed. All four floors pass, while 100% remains open.

An earlier all-feature make coverage run passes 119 library unit tests, 3 binary tests, 4 animation-loop tests, 1 capability test, 59 coverage-matrix tests, 7 decode-policy tests, 1 determinism test, and 68 feature-gate tests. It reports 106,929/165,923 lines (64.4450%), 16,441/32,508 branches (50.5752%), 5,580/9,619 functions (58.0102%), and 156,956/247,537 regions (63.4071%). The local LLVM report is target/release-evidence/coverage-goal-av1-has-chroma-final.json, measured on macOS ARM64 with nightly-2026-07-16 and all features. The new table-driven AV1 test covers monochrome, 4:4:4, 4:2:2, and 4:2:0 ownership at odd/even origins and one-MI versus larger block axes. Coverage MCP has no remaining branch gaps for inter_block_has_chroma; the rule is #[inline] in release builds. Its next AV1 branch group is lossy_i422_narrow_mode0, the 4:2:2-only 4×8/4×16 mode-0 specialization. That group has 1,916 repeated observations across specialized monomorphizations; they are not distinct source statements. The full report improves by 131 covered lines, 6 branches, 2 functions, and 46 regions over the preceding full report. MCP reports source as unverified and test status as unknown, so its gap listings are report-coordinate findings; the local Cargo campaign itself passed. All four floors pass, while 100% remains open.

An earlier selected LLVM run of the 59-test coverage_matrix_tests integration target records 97,978/163,390 lines (59.9657%), 15,457/32,404 branches (47.7009%), 4,867/9,369 functions (51.9479%), and 143,525/243,760 regions (58.8796%). It clears the line, branch, and region floors and is five functions short of the 52% function floor. Every successful JPEG decode input row also passes through the public token-aware decoder and matches its Pillow pixel reference. Every successful JPEG encode row passes through both ordinary and token-aware encoding, and both byte streams match the committed Pillow output exactly. Every successful JPEG encode roundtrip also passes its encoded output through the token-aware decoder and compares its pixels with the Pillow reference, including the 1,024-MCU checkpoint in the 2048×1024 grayscale case. Coverage MCP reports that checkpoint branch observed. Its selected report also listed the false arm of the AArch64 dequantization-overflow fallback. Source review shows full-file parsing bounds progressive coefficients to i16 and DQT entries to u16; the maximum product, 2,147,450,880, fits in i32. That fallback protects internal states outside the parser path and has no valid full-file JPEG parity witness. The selected report has no branch-gap groups for baseline_frequencies_with_checkpoint, append_ac_refine_events, or encode_baseline_420_mcu_pair. The MCP report has no source/build receipt and marks test status unknown, so these are report-coordinate observations; the local Cargo command itself reported 59/59 passing. A Coverage MCP selected comparison against the previous selected report shows seven newly observed branch observations, including both find_entropy_end arms, the generic CMYK branch in reconstruct_image, and PNG opaque-chunk/reserved-bit paths. The source/build receipts are unavailable, so these are coordinate-only comparisons. The selected target does not describe whole-workspace coverage. The 100% target remains open.

The selected JPEG additions cover baseline CMYK reconstruction with restart markers and two missing-EOI tails: a dangling 0xFF and a stuffed 0xFF00 at EOF. Pillow error contracts remain exact, and the selected comparison observes both find_entropy_end arms plus the generic four-component branch.

The same selected run adds Pillow-parity PNG cases for duplicate gAMA, sRGB, cHRM, and iCCP chunks; invalid and short sRGB payloads; malformed short cHRM; an empty-key iCCP chunk; and valid, invalid, and edge compressed text metadata. It also covers a Pillow-tolerated unknown ancillary chunk with a lowercase reserved bit in static PNG and APNG inputs, preserving exact pixels and frames. text_chunks.png now contains tEXt, zTXt, and iTXt. All active PNG decode rows pass exact pixel comparison. Typed source-color assertions cover valid values and duplicate chunks where Pillow and Rust expose the same declared color. Malformed short sRGB and empty-key iCCP rows assert pixels only because their Pillow metadata differs from the decoder's spec-aware typed SourceColor. Coverage MCP's selected comparison reports 10 newly observed branch observations in retain_color_chunk, with three false arms still uncovered; its gap query lists no remaining branch group for invalid_compressed_metadata_identity. The remaining color-chunk arms require short gAMA data, an iCCP keyword without a NUL terminator, or an iCCP method without profile bytes. Pinned Pillow rejects those images, so they cannot be added as parity fixtures. The coverage report lacks source/build receipts and MCP reports test status unknown; the local run passed 59/59. This remains selected-target evidence, not whole-workspace coverage.

Coverage MCP reports no remaining branch-gap groups in encode_baseline_420_mcu_pair after the edge row and removal of redundant first-column checks implied by the MCU loops. The all-feature run's gap query listed 12 remaining AC-refinement branch observations for BitReader; the FastBitReader group had disappeared after the repeated sparse-refinement row and once-per-scan bound check. AV1 decode_inter_translation_impl groups remained the largest branch gap in that run. After adding the AC-first narrow-tail fixture and matching libjpeg-turbo's padded-table write behavior, Coverage MCP no longer lists the FastBitReader AC-first or AC-refinement gap groups. The malformed category-16 fixture also closes the fast-reader dc_first_block error group. The selected ARM report still shows generic BitReader groups for those functions; the public JPEG path selects FastBitReader. This is selected-run evidence, not a full-suite result. The new Ss=64 and Se=64 JPEG rows reach both scan-range error paths. The larger 128×128 JPEG scan-tail row adds multi-block parity coverage. MCP reports have no source/build receipts, so their comparisons and gap listings are report-scoped evidence, not standalone source-provenance claims.

The selected AVIF report passed all active AVIF matrix rows. Coverage MCP's query at block.rs:55046 dropped from ten to nine missing specialization groups, and the previously unobserved block-width branch recorded both sides in the selected AVIF lane. The local report is target/release-evidence/coverage-parity-avif-current.json; MCP reports lack source/build receipts and report test status as unknown, so this remains scoped coverage evidence rather than a full-suite claim.

The row-selected JPEG encoder report exercised the new micro-image cases. Coverage MCP compares the five-case report with the earlier two-case batch report and reports five newly observed branch arms: the aligned/even-height decision, the 4:2:0 row remainder and even-height fallback, and both arms of the generic RGB conversion loop. Gap queries show no remaining observations at those locations; the fused helper's two zero-dimension guard arms remain. Public zero-sized JPEG inputs fail validation before this helper. These local LLVM reports have no source/build receipts and MCP test status is unknown, so their branch comparison is limited selected-run evidence, not an aggregate coverage or regression claim. Direct all-feature parity runs passed both JPEG decode and encode matrix tests. Reports are under target/release-evidence/coverage-parity-jpeg-kernel-edges-final.json and target/release-evidence/coverage-parity-jpeg-420-batch-cases.json.

The selected decode report's largest group is AV1 decode_inter_translation_impl. Raw LLVM data shows ten monomorphized closure instantiations at the reported location, with execution recorded in two for this run. Coverage MCP's 1,928 observations therefore span unvisited specialized paths; they are not 1,928 distinct source statements. A useful next parity pass needs to identify the missing supported AV1 syntax paths before selecting or generating fixtures.

Two local release A/B runs per source version exercised the public JPEG benchmark matrix on an Apple M3 Pro, with three alternating rounds per run. Across 63×65, 127×129, 128², 512², and 1024² RGB 4:2:0 encodes, the median of the run medians was 5.3–7.8% lower after the MCU-check cleanup; Rust output lengths and hashes matched before and after in all five cases. One baseline run started with a 1-minute load average of 10.7, so these are directional local measurements rather than a cross-machine or release speed claim.

A separate release profile used the public Rust runner for a 1024×1024 RGB 4:2:0 encode (2,000 measured iterations after 100 warmups) on the same M3 Pro. The median was 6.806 ms and P95 was 7.200 ms. A five-second sample capture recorded 3,866 stacks; rgb_to_ycbcr_420_packet appeared in 340 stacks (8.8%) and the four-block FDCT in 221 (5.7%). This is a single-workload diagnostic that points to color conversion for follow-up profiling. It is not a paired speedup measurement, and it provides no SSE2 or AVX2 runtime evidence.

A same-checkout A/B isolated #[inline(always)] on rgb_to_ycbcr_420_packet. Seven alternating release-runner pairs on the M3 Pro measured 128², 512², and 1024² RGB 4:2:0 encodes. The candidate medians were 2.61%, 0.34%, and 3.18% lower, respectively; every encoded length and hash matched. These small local gains support retaining the hint. The run does not measure SSE2 or AVX2 execution. Raw paired results are in the ignored local artifact target/benchmarks/jpeg/goal-continuation-2026-09-29/packet-inline-controlled-ab.json.

A follow-up experiment replaced four overlapping 8-pixel conversions in each 16-pixel RGB row with three 16-byte loads and mask-based channel deinterleaving. The public JPEG encode parity lane passed and all 20 encoded outputs matched the stored baseline hashes and lengths. However, a five-round full JPEG matrix on the M3 Pro measured an encode median ratio of 1.0031 and a geometric-mean ratio of 1.0067 versus baseline; RGB 512² and 1024² 4:2:0 encodes regressed 5.15% and 3.69%. The packet-body change was reverted. This result is directional ARM64 evidence only, not an SSE2 or AVX2 runtime measurement. The local candidate report is target/benchmarks/jpeg/goal-20261001-arm64-3load-candidate.

A bounded public-path CMYK experiment streams each decoded component block into its final channel for aligned baseline 4:4:4 images on AArch64. Five alternating release rounds reduced median latency by 21.13% at 512×512 (6.187 ms to 4.880 ms) and 18.24% at 128×128 (0.254292 ms to 0.207917 ms); output hashes matched in every round. The helper keeps the existing packet path for partial edges and restart scans, and is not compiled for x86, where the existing SIMD path is unchanged. The selected Pillow decode matrix passed all three active CMYK cases, including the aligned fast-path case, odd partial blocks, and restart rows. cargo fmt --check, strict release library Clippy, and git diff --check passed. Round data and the exact candidate patch are in target/jpeg-cmyk-fusion-experiment/; these are local Apple M3 Pro measurements, not SSE2/AVX2 runtime evidence.

The preceding full local make coverage campaign on 2026-09-30 passed every executed test and the unchanged release floors: 100,431/163,617 lines (61.3818%), 15,947/32,444 branches (49.1524%), 5,097/9,395 functions (54.2523%), and 147,132/244,178 regions (60.2560%). Its LLVM report is target/release-evidence/coverage.json; it was measured on macOS ARM64 with nightly-2026-07-16 and is not bound to a clean commit. The fresh Coverage MCP gap query still lists AV1 decode_inter_translation_impl as the largest branch group. MCP source/build receipts are unavailable and test status is unknown, so these locations are report-scoped observations rather than verified test attribution or a managed snapshot.

The AV1 gap query at block.rs:55105 returns repeated decode_inter_translation_impl observations across specializations. The apparent lossy I422 narrow path requires transform mode 0 and a non-lossless segment. Valid frame parsing sets mode 0 only when all_lossless, and derives that flag as the conjunction of every segment's lossless state, so no valid frame can satisfy the helper's !segment_lossless && transform_mode == 0 predicate. This is an unreachable implementation branch, not a missing public fixture; no parity row should be invented to exercise it. A separate reachable candidate is diff-weighted compound prediction at block.rs:57292 and :57310. No candidate is accepted without independent syntax inspection and exact Pillow/native frame parity.

An earlier full make coverage run passes all executed tests and project floors: 101,330/163,618 lines (61.9308%), 16,104/32,444 branches (49.6363%), 5,124/9,395 functions (54.5396%), and 148,460/244,179 regions (60.7997%). This run includes the Adam7 4-bit grayscale PNG and large-motion 4:2:0 AVIF parity rows. The AVIF sequence row exposed and now covers propagation of the per-transform skip flag to the wide-luma terminal decoder; all active AVIF decode rows pass. The 59-test integration target, 68 feature-gate tests, 7 decode-policy tests, 4 animation-loop tests, 3 binary tests, and the determinism test pass. The local report is target/release-evidence/coverage.json, from macOS ARM64 with nightly-2026-07-16; it is not bound to a clean commit. Coverage MCP reports 16,340 uncovered branch observations and keeps AV1 decode_inter_translation_impl as the largest group, with repeated hits across monomorphizations. It reports no remaining gap at the large-block eligibility check in motion.rs:2278. MCP source/build receipts are absent and test status is unknown, so these are report-coordinate findings; the local full campaign supplies the passing test evidence. The 100% target remains open.

The preceding full make coverage campaign on 2026-09-30 passes all executed tests and the release floors: 104,438/163,657 lines (63.8152%), 16,770/32,444 branches (51.6891%), 5,251/9,398 functions (55.8736%), and 152,993/244,210 regions (62.6481%). The local report is target/release-evidence/coverage.json, measured on macOS ARM64 with nightly-2026-07-16; it is not bound to a clean commit. Coverage MCP reports 15,674 missing branch observations, with the largest group at AV1 decode_inter_translation_impl (block.rs:55105); repeated specialization records are observations, not distinct source branches. At the WebP Y2 read_residual_data false edge, LLVM records 57 executions in a covered specialization and a duplicate zero-count generic record, while Coverage MCP still lists missing branch records at that coordinate. Keep that edge marked ambiguous in MCP rather than calling its gap closed. MCP reports source/build identity as unverified and test status as unknown, so its results are report-coordinate findings; the local full campaign supplies the passing test evidence. make lint, make lint-x86-simd, make test-feature-matrix, and make verify also pass. SSE2/AVX2 checks validate formatting and compilation; they do not establish runtime speedups. The 100% coverage and fastest-decoder goals remain open.

A Coverage MCP query against that earlier report found no supportable new non-AV1 parity fixture. Its JPEG ac_refine_block<BitReader> gaps are for the x86 decoder specialization; this ARM64 run uses FastBitReader, whose public progressive ZRL cases are already in the parity corpus. The reported progressive_dequantize_block fallback only follows a DC-times-quantizer overflow, which valid parser bounds prevent. These are target-specific or unreachable observations, not reasons to add duplicate or invalid fixtures.

The AV1 decode_following_vertical gap was checked with selected public parity rows on 2026-09-30. coverage_h4_horizontal_bands and coverage_h16x4_predictor_adst_dct_01 both pass the matrix parity test, but a fresh branch-instrumented run of the latter records zero calls to Lossy420Decoder::decode_following_vertical. The public decoder therefore does not exercise this bounded first-leaf helper for those H4 streams, despite their encoded topology. Source inspection shows its only callers are the bounded 4:2:0 split helpers. Those callers fix chroma sampling to 4:2:0 and pass no full-resolution edges, so the method's Full-only entry checks cannot be covered by a valid public fixture on the current dispatch path. Coverage MCP also reports both outcomes missing for the full_strict condition at block.rs:67502: the 4:2:0 leaf helpers hardcode Subsampled420, and their closed-frame callers require 8-bit input. The generic decoder's Full/high-depth following path uses decode_following_from_edges instead. Keep this gap open until a supported public path can exercise it or the obsolete path is removed with a behavior-preserving refactor; do not add a parity fixture that merely matches the topology label. Selected reports are target/release-evidence/coverage-h4-horizontal-bands.json and target/release-evidence/coverage-h16x4-predictor.json; Coverage MCP marks their source identity unverified and test status unknown.

A fresh 2026-10-01 Coverage MCP read of target/release-evidence/coverage.json reports 1,512 missing-branch groups and 14,972 missing branch observations. The decode_following_vertical group has 342 repeated observations across monomorphizations; filtering to block.rs:67501 isolates the two missing outcomes of its full_strict condition. Fresh selected parity profiles for the H4/H16 fixtures and the 16x16 4:2:0 SPLIT fixtures all passed, yet recorded zero executions across the method and its 102 closure records. This confirms that their encoded partition labels do not reach this helper on the public dispatch path. Coverage MCP still marks report source identity unverified and test status unknown, so these are coordinate-only observations, not a verified coverage gain. No duplicate fixture was added.

On 2026-09-30, a portable u32x4::widening_mul experiment for four-lane JPEG reciprocal quantization preserved Rust output lengths and hashes across all 40 rows of the public JPEG benchmark matrix. Two five-round full-matrix repeats per implementation, run in opposite order on the aarch64-apple-darwin host, showed the candidate's 1024×1024 RGB 4:2:0 encode median 9.63% and 14.02% slower than baseline; the median slowdown across the 20 encode workloads was 10.69% and 15.37%. The candidate was removed. Results are local directional evidence only and do not measure SSE2 or AVX2 runtime performance. Raw reports are under the ignored local artifacts target/benchmarks/jpeg/goal-quantizer-{baseline,candidate,candidate2,baseline2}-2026-09-30/.

A subsequent all-feature make coverage campaign on 2026-09-30 passes every executed test and the release floors: 104,471/163,650 lines (63.8381%), 16,807/32,432 branches (51.8223%), 5,251/9,398 functions (55.8736%), and 153,027/244,201 regions (62.6644%). The local report is target/release-evidence/coverage.json, measured on macOS ARM64 with nightly-2026-07-16; it is not bound to a clean commit or a managed Coverage MCP receipt. The 100% target remains open.

The WebP matrix adds a 32×16 public parity row with a flat macroblock beside a deterministic high-frequency macroblock. Its exact Pillow output passes the selected decoder matrix test. The selected LLVM report target/release-evidence/coverage-webp-macroblock-candidate.json invokes the Cursor<&[u8]> specialization of Vp8Decoder::read_residual_data and records both outcomes at the plane-selection and luma complexity-update branches. Separate selected runs of the existing public rows lossy_vp8_lossy_macroblock_residual_context_edges_32x16_q75_m4 (input SHA-256 9bbe53e9597854a1f5412ab40b1ee9f54bcf56f6c8513d254d69dee85fa74abb) and lossy_vp8_lossy_y2_empty_ac_16x16_q90_m4 (input SHA-256 e5e6cc56cf73aded4521a16de4ef0d08ff4066db75cdcd5527b15e6210d4ea98) both pass exact Pillow pixel parity. Their row-only LLVM reports record n=true and n=false, respectively, at src/codecs/webp/native/vp8.rs:1583-1584 in the production Vp8Decoder<Take<&mut Cursor>> specialization. The reports have SHA-256 4723f808dd1331cf4b0cd92639aaab47958c5f0dee08a0ef356da1dacd146109 and 7c0769e6f8fa66ab048c442e6552b865f128bfabd60d670e2590d4430064f1b9. The aggregate MCP miss is in the separate Vp8Decoder<Cursor<&[u8]>> specialization; MCP source/build identity is unverified and selected-test status is unknown, so this is coordinate guidance rather than a source-bound coverage claim. No private-only coverage test was added.

A 128×64 lossless RGB WebP row, lossless_color_cache_lookahead, covers the VP8L color-cache lookahead branches through the public decoder. Its deterministic 512-color input has SHA-256 920481d0986bf9034730ebdd4678c65540c985dc00c25c0cc293d45167b3e541; the Pillow 12.2.0 RGB8 reference has SHA-256 d35118946b17473c290fc38351acb637a8887d4248de5052a3e6e2f305ddd35c. The independent VP8L inspector finds one untransformed stream, cache width 10, and 6,252 cache lookups. The selected all-feature matrix row passes exact Pillow parity. Its isolated local LLVM report records both outcomes at lossless.rs:828 (10,572/93), :829 (10,113/459), and :830 (8,091/2,022), true/false respectively. This is selected-row evidence, not a refreshed Coverage MCP measurement or complete coverage claim.

The public VP8L cache-boundary corpus also includes a 2×1 RGBA input with color_cache_bits = 11. Its dynamic green tree emits a literal whose cache hash is 2047, then performs a real lookup of that highest entry. The independent structural inspector records both the width and referenced cache index; Pillow 12.2 decodes the exact pixels. The focused matrix test passes. Coverage MCP reports the focused branch profile as 135/31,268 observations, with source identity unverified and test status unknown. Incremental comparison with the saved full baseline is incomparable because its exact branch detail does not match the summary totals, so this case is recorded as a maximum-boundary parity witness rather than a claimed marginal branch-coverage gain.

The same change simplifies AV1 lossless inter-transform selection to use its prevalidated geometry predicate directly, removing a repeated exact-geometry check and duplicate block/layout guards. The matrix adds a two-frame 8-bit monochrome lossless inter sequence with a translated patch. Its generator disables warped motion to stay within the decoder's admitted reconstruction profile; exact Pillow frame/timing parity and pinned native loop evidence pass. Coverage MCP reports no missing branch observation at decode_inter_transform_size line 6950; the true arm at line 6951 remains missing at that checkpoint. The report's source/build identity is unverified and test status is unknown, so this is coordinate evidence rather than an attributed MCP gain. Strict Clippy now denies missing_errors_doc; the eight previously undocumented public Result APIs have # Errors sections, and make lint passes. This lint and documentation add no runtime work. No SSE2 or AVX2 runtime benchmark was available on this ARM64 host, so no x86 speedup is claimed.

The 8-bit color lossless inter-transform gap has public parity fixtures: animated_lossless_inter_420_b32x32.avif uses a translated 4x4 patch inside an exact-visible 32x32 block and is pinned to input SHA-256 65e8617044f7f12db081f65276235296f8dc208a006451210ebb9603f27f20a7; the new animated_lossy_split_inter_420_b16x16.avif exercises a lossy B16x16 transform split and is pinned to input SHA-256 9eb50f5a45dc2eb549c62ac9bcb67abd931a977076685bcf3c0f69e6827ce323. animated_lossy_wide_monochrome_b128x128.avif is a four-frame 8-bit monochrome sequence with three lossy B128x128 inter blocks using switchable transform splits; it is pinned to input SHA-256 eb8dda5000882ffd03c182a817e08fc944ef110afa1e78aaf1678bef5efc65bf. All three fixtures match Pillow frame pixels exactly, and native sequence evidence records each displayed frame.

The three-frame animated_lossy_b16_mixed_topology_inter_420_b16x16 sequence adds an inter B16x16 whose top-right TX8 child splits while the other three children stay unsplit. The deterministic Pillow 12.2.0/libavif 1.4.1 generator is scripts/generate_avif_b16_mixed_topology_fixture.py; its 1,186-byte input has SHA-256 3264482e2a50d80bd39be178b843fdfe9997e947d54b4466c745751837821d74. The exact Pillow/Rust frame hashes are 7f3e5e4e65eca4390e9242558012bc9bdad133d7ac9f6aed53fa156a2288f73b (frames 0 and 1) and e195092d99a776d7638ff75a30825447f6dffd85a04fa845750617ce04a98a79 (frame 2). The selected public row passed 1/1 under branch-enabled isolated coverage in target/release-evidence/coverage-avif-b16-mixed-topology-row-20261004.json. Its entropy.rs:7778 branch counts are true=1, false=0, proving the any(child_split) true arm; at line 7775 they are true=0, false=1, leaving the all-children-split true arm unobserved. The line 7778 false arm is also still unobserved. Coverage MCP comparison to the older full AVIF report is limited and shows zero aligned coordinate gains because the receipts and inventories differ, so this selected-row observation is not an aggregate coverage gain.

The 10-bit public row animated_lossless_inter_420_b32x32_10bit now materializes its sequence instead of returning the former Rust-only Unsupported result. Its header permits warped motion, but the checked-in 32×32 stream has one top-left B32×32 leaf and no overlappable neighbor; the frame flag therefore adds no local-warp mode syntax for this input. The high-depth admission predicate no longer rejects that capability flag, while per-block mode and geometry checks remain in decode_inter_leaf. The existing row passes exact Pillow parity for both RGB frames and sequence timing/loop metadata; no new fixture or unit test was added.

The 2026-10-02 macOS ARM64 all-feature, branch-enabled make coverage run passes all executed tests and the repository floors: 85,551/142,082 lines (60.2124%), 16,248/32,170 branches (50.5067%), 4,791/8,972 functions (53.3995%), and 130,676/219,579 regions (59.5121%). Its report is target/release-evidence/coverage-full-avif-high-depth-parity-20261002.json. Coverage MCP still reports unvisited branches in decode_inter_transform_size; its source/build receipt is absent, so its comparison is coordinate guidance and does not establish a verified coverage delta. The 100% target remains open.

The public row animated_opidc_0x101 transforms the pinned animated AVIF fixture (input SHA-256 25b79a856ea2767e02e5a509f72e7af3f9563202301779be65b0745724ab23be) to use operating-point IDC 0x101 and explicit temporal-0/spatial-0 extension headers for its seven layer-specific OBUs. Its five 150×150 RGB frames match Pillow byte for byte, and the native loop witness confirms all five displays. The selected public parity command reports 1/1 active rows passed; the native repetition witness test also passes. Before this row, Coverage MCP listed the false arm at src/codecs/avif/av1/frame.rs:952 as missing. After the full coverage run, its line-filtered branch query returns no missing group at 952; the function still has gaps at lines 947 and 964. MCP marks source/build identity unverified and test status unknown, so this is coordinate guidance; the local instrumented campaign is the executed test evidence.

A fresh all-feature make coverage run passes every executed test and the release floors: 104,619/163,698 lines (63.9098%), 16,854/32,444 branches (51.9480%), 5,262/9,405 functions (55.9490%), and 153,241/244,291 regions (62.7289%). Compared with the preceding full report, it observes four additional lines, four branches, and four regions; function coverage is unchanged. The new 32×32 lossy I444 AVIF parity row exercises mode-2 and positive qindex outcomes before its geometry excludes the separate 64-axis split path. The full report still has 247 uncovered branch observations in decode_inter_transform_size. Coverage MCP marks source/build identity unverified and test status unknown, so its gap coordinates are guidance. The report SHA-256 is 79cc1056db899cd493dea18492556626d95c8e91bab4da1250ddf96d77d58149. Raw LLVM counters observe six true and 24 false executions at src/codecs/avif/av1/block.rs:65010 in a wide-chunk decoder specialization, and the true arm at block.rs:55789 was reached three times in the lossy decoder specialization. Coverage MCP still lists misses in other monomorphizations. The largest general AV1 gap remains at block.rs:55105, which prior parsed-state analysis found unreachable for legal lossy input. JPEG progressive gaps belong to the non-active BitReader monomorphization on this ARM64 host; the active public FastBitReader path is covered, and parsed JPEG state cannot reach the reported dequantization overflow fallback. MCP reports no remaining ICO decode branch group. The WebP cost/quant interpretation in that report depended on private coverage-hook monomorphizations that have since been removed; those old coordinates are not current evidence. The current public parity report above still lists WebP VP8 segment-delta and VP8L bounds outcomes. Coverage MCP marks source/build identity unverified and test status unknown, so the results are coordinate guidance only. The 100% target remains open.

ICO adds four 3×1 public 4-bpp parity rows for the black-and-white white-bit arm, two distinct two-entry palette predicate failures, and an out-of-range palette reference. Pillow decodes the missing palette index as black; the Rust decoder now uses a fixed 16-entry table with black-filled unused entries. That removes the separate palette-reference scan while preserving the existing short grayscale-palette errors. The selected rows pass 4/4, and Coverage MCP reports no missing decode branch in src/codecs/ico/decode.rs for the full report.

JPEG adds a minimal public parity fixture, progressive_ac_refinement_eobrun_correction_bit, for a 16×8 two-block grayscale progressive stream. Its repeated 8×8 source pattern is pinned to input SHA-256 d1823abbbd3f9b78b440eb25abbb38b73db7dc30be1457d013131d481038c3eb; the selected public decode row matches Pillow pixels exactly. The isolated instrumented run reaches the AC-refinement EOBRUN correction arm through FastBitReader. The full local report remains unchanged because the remaining true arm is the separate BitReader instantiation used on x86, which this ARM64 host does not execute. The existing x86 CI lane runs the public JPEG matrix and retains branch reports; no x86 runtime result is claimed here.

A fresh all-feature make coverage campaign on 2026-09-30 passes every executed tests and the release floors: 104,452/163,691 lines (63.8105%), 16,752/32,454 branches (51.6177%), 5,254/9,404 functions (55.8698%), and 153,135/244,275 regions (62.6896%). It used nightly-2026-07-16 on macOS ARM64. The report is local to the dirty worktree and contains no revision or build receipt. Coverage MCP therefore labels its source identity unverified and test identity unknown; the successful make coverage exit is the local test-run evidence. These floor passes do not meet the separate 100% target. The current report leaves 59,239 lines, 15,702 branch observations, 4,150 functions, and 91,140 regions uncovered. make fmt, make lint, make lint-x86-simd, and make test-feature-matrix also pass. The matrix passes native and WASI runtime lanes plus browser-WASM compile/documentation lanes; its capability tables agree. SSE2-baseline and AVX2 x86 builds pass strict Clippy, which validates compilation but is not an x86 runtime benchmark or speed claim.

Two new public parity rows extend the corpus. JPEG progressive_ac_refinement_zrl_symbol exercises a ZRL across coefficients 1–16 before introducing coefficient 17; its selected row matches Pillow and the instrumented ARM64 run covers both outcomes in the FastBitReader specialization. Coverage MCP still reports the portable BitReader false arm at progressive.rs:209, which the ARM64 public matrix does not exercise. AVIF animated_lossy_wide_i444_b128x128 adds exact two-frame parity for a lossy 4:4:4 sequence with 128×128 superblocks. Its selected run does not satisfy the size predicate at block.rs:65010, so it does not cover the specialized wide chunk branch. The remaining decode_following_vertical observations are in a diagnostic fallback that the current public 4:2:0 decode path cannot reach; no synthetic coverage-only input was added.

On 2026-10-01, the active public row progressive_ac_refinement_zrl_duplicate_tail passed exact Pillow pixel parity (1/1). Its repeated AC-refinement scan is the targeted edge case for the correction-bit no-op at progressive.rs:226. Coverage MCP reports no remaining branch group there for the ARM64 FastBitReader specialization; the listed missing outcomes belong to the portable BitReader monomorphization, which this target's public matrix does not exercise. The selected-format report has no source/build receipt, so the mapping is local coordinate evidence rather than a verified full-suite comparison. This active row already covers the reachable path, so no additional fixture was justified. x86 runtime parity and performance still require matching hardware.

Coverage MCP reports no missing branch observations in JPEG ycc_to_rgb_batch or AV1 inter_intra_context in this report. The public baseline_444_partial_blocks JPEG row exercises the scalar RGB tail. The new deterministic 17×17 two-frame 4:2:0 sequence has exact Pillow references for both frames. Differential decoding exposed and fixed two sequence-path defects: one-intra/two-neighbor inter-intra context selection, which previously overread tile padding, and final-column odd-width chroma upsampling, which blended an out-of-edge sample. Both frame hashes match Pillow after the fixes.

Coverage MCP on the current local report lists 191 missing branch observations in decode_inter_transform_size. Its current full report observes the transform_mode == 0 arm and the TX64 offset_x == 0 decision; clipped-geometry and high-depth guards remain open. Pinned AOM searches still find input geometries that the safe Rust sequence decoder rejects, so those candidates remain outside the Pillow parity corpus. The largest AV1 groups remain the I444 split predicate at block.rs:54939 and the vertical I422 TX4 chroma grid at block.rs:54973; observations repeat across decoder monomorphizations. The new I444 parity row covers the predicate true arm for some instantiations, while the separate terminal body and other monomorphizations remain open. The existing active public row animated_motion_chroma_422 reaches the vertical TX4 predicate's true arm in one decode_inter_translation specialization; its row-filtered LLVM report records 3 true and 0 false evaluations with exact four-frame Pillow parity. Other decoder monomorphizations remain uncovered, so no duplicate I422 fixture was added.

Coverage MCP also reports 114 missing branch observations in high_depth_lossy_i444_superres_restoration_supported, beginning at entropy.rs:13514. The existing 8-bit I444 animated parity fixtures exercise the generic I444 operand, but not the high-depth operand. The pinned Pillow/libavif AOM encoder rejects a 10-bit animated probe, and Pillow's AVIF save interface does not expose a bit-depth option, so there is no reproducible oracle-backed public candidate to add yet. At the time of this historical report, an 8-bit I420 super-resolution/ restoration fixture was blocked because stock pinned libavif rejected the required encoder controls. On 2026-10-04, a reproducible fixture-only patch under scripts/avif_fixture_oracle/ exposed those controls and enabled a public parity case. The active case uses largest-transform mode and 16x16 partitions; its two exact Pillow frame hashes are recorded in tests/fixtures/input/images/avif/README.md. This does not close the separate high-depth I444 restoration gap. Coverage MCP reports four missing branch observations in the defensive empty/zero-size guard at decode.rs:1049 inside the 4:2:0 sampler. No public AVIF fixture has been identified that reaches this helper with an empty plane or zero geometry; the gap remains open instead of adding a private-only test. It also reports repeated observations around decode_following_vertical at block.rs:67502. Source review found its four direct callers inside two bounded 4:2:0 helpers. Both constructors hardcode 4:2:0, and their closed-frame callers require 8-bit input; generic Full/high-depth following blocks use a separate decoder path. The full_strict branch is therefore not reachable through today's public decoder call graph. These MCP coordinates are unverified because the local report has no source/build receipt. The 100% target remains open.

Previous full-suite snapshot before parity-only cleanup — 2026-10-02

The last recorded all-feature make coverage run before removing private coverage sweeps passed its then-current tests and release floors: 108,537/162,403 lines (66.8319%), 17,646/32,238 branches (54.7366%), 5,456/9,374 functions (58.2035%), and 159,061/242,607 regions (65.5632%). It ran with nightly-2026-07-16 on macOS ARM64 and wrote target/release-evidence/coverage.json. This report predates the current source and fixture set and is historical, not a measurement of the current tree. Coverage MCP reports its source identity as unverified and test status as unknown because the report has no source/build receipt. Its branch observations cannot be attributed to current public parity rows. The selected public matrix measurement above is current but does not establish full-suite floors or 100% coverage.

That earlier MCP report listed a missing outcome in an AV1 decoder specialization. Its coordinate (block.rs:21108) predates source cleanup. The format rule still requires delta_q_present = 0 when CodedLossless = 1, so a conforming parity input cannot exercise the opposite state (AV1 bitstream semantics). No synthetic case was added to claim that unreachable state.

The active portable_lossless_filmgrain_i444_64x64 row exercises a 64×64 8-bit all-lossless I444 AV1 still with film grain. The full-resolution I444 admission uses the existing bounded grain-dimension check, then the public decode path applies the grain kernel. The row is one of 393 active AVIF decode cases and passes the current public matrix with exact Pillow parity. Its RGB reference is 12,288 bytes with SHA-256 44f85ee642e036ae8646b40b2a71643f1e74a27d2a5a6af719c938d8aba2dceb, and its AVIF source SHA-256 is 5e40ca71068fdd232d11f356103f53c1fdd7b94356fa91b0004d7307de4cbd25. The historical full coverage run recorded 859 more covered lines, 110 more branches, 64 more functions, and 1,335 more regions than its predecessor. The report has no source/build receipt, so that coordinate change is not a test-attributed gain.

Progressive JPEG reconstruction now selects the existing safe fixed-point wide IDCT on x86_64 as well as AArch64. The x86_64 baseline uses SSE2; the AVX2 configuration is a separate compile-time target-feature build. The all-feature JPEG decode matrix passed all 163 active rows on this ARM64 host, which exercises the AArch64 path only. make lint-x86-simd passed strict Clippy for x86_64 SSE2 and AVX2 builds. CI runs the public JPEG decode and encode parity matrices with branch reports on both x86 configurations, and the benchmark workflow measures both variants on the same AVX2-capable host. No x86 runtime parity or speedup result is claimed until those artifacts are available.

A separate three-round, 40-workload pre-candidate ARM64 JPEG diagnostic compared the then-current build with TurboJPEG. RGB 4:2:0 encode medians were 1.82× slower at 512×512 quality 85 and 1.89× slower at 1024×1024 quality 85; their output lengths and hashes matched. The run is a baseline, not an A/B candidate comparison or an x86 measurement. Its artifacts are local under target/benchmarks/jpeg/goal-baseline-20261002/; the results identified the RGB 4:2:0 encode path for further full-workload profiling.

A 3-second macOS sample capture during 2,000 public 1024×1024 quality-85 RGB 4:2:0 encodes observed 2,320 stack samples: 1,953 ended in encode_baseline_420_mcu_row_streaming, 215 in aligned RGB conversion, and 148 in packed FDCT. The optimized runner reported a 6.569 ms median and 7.004 ms p95, with the same 793,139-byte output and hash d748543a168ce6aa. The row pipeline inlines its transform, quantization, and entropy work, so this sample does not separate those costs enough to justify a stage-specific SIMD change. The run and sample are under target/benchmarks/jpeg/goal-encode-rgb1024-q85-arm64-debuginfo-20261002.*; they are profiling evidence, not a controlled performance comparison.

The aligned RGB 4:2:0 MCU-row fast path reuses the existing packet conversion kernel and keeps the generic edge-replication path for partial dimensions. Its public JPEG encode parity matrix passes all 61 active rows. A 32×33 RGB case reaches the streaming converter with aligned width and odd height; Coverage MCP no longer reports missing branches in this converter. The unreachable padded width comparison was removed because ceil(width / 16) * 16 equals width whenever the preceding width-alignment condition is true. A balanced local baseline/candidate/candidate/baseline comparison, with five rounds per build and the full 40-workload matrix on the same ARM64 Mac15,7, measured a 2.13% lower geometric-mean latency across encode workloads and a 1.65% lower mean across the 512×512 quality-10/85 and 1024×1024 quality-85 RGB 4:2:0 cases. Decoder latency changed by -0.10%; input and Rust output length/hash matched for all 40 workloads. The measurements are directional ARM64 evidence, not an x86 SIMD result or a cross-machine performance claim. Raw runs are under target/benchmarks/jpeg/goal-aligned-ab-{b1,c1,c2,b2}-20261002/.

The JPEG quantizer now omits its upward quotient correction: prepared JPEG divisors are 8–2040 and use ceil(2^32 / divisor), so multiply-high cannot underestimate the quotient. The single downward correction remains, and the public JPEG encode parity matrix passes all 61 active rows. Ten alternating 500-encode captures of the public 1024×1024 RGB quality-85 4:2:0 workload on an Apple M3 Pro measured a 1.14% lower median of run medians (6.271 ms candidate, 6.343 ms baseline); six of ten paired runs were faster. Output size and FNV-1a hash were identical at 793,139 bytes and d748543a168ce6aa. This is a small, directional ARM64 result; raw records are in target/benchmarks/jpeg/goal-quantizer-20261002/, and no x86 runtime speedup is claimed.

Four exact public AVIF sequences now select non-wedge inter-intra mask modes 0, 1, 2, and 3. The mode-3 case has a pinned dav1d syntax trace for the final-frame B16x16 at (16,16), matches all three Pillow RGB frames and 100 ms durations, and is retained in the 60-case, 167-artifact AVIF loop bundle. The current full LLVM report observes both outcomes of mode == 2 at mc.rs:778 768 times each, and Coverage MCP reports no missing branch at that line. Six missing observations remain in fill_inter_intra_mask's invalid-mode and invalid-geometry guards; valid AV1 syntax cannot produce those states, so they remain uncovered without private-only tests.

The new active animated_lossy_wide_i444_mode2_unsplit_b128x128 case is a two-frame 256×256 I444 sequence encoded with fixed 128×128 partitions. Its mode-2 unsplit inter leaf is the public input needed to take the previously unobserved topology.is_none() arm at block.rs:63734. The selected public row passes exact Pillow RGB parity; frame hashes are e9a4e243aaa2832b61a0f8d362ee44e06d67acf653cf0e687c0d3e33099d8e and cd57a87fb5d4d0d896d8dd50b80583ca80780eee160f5d59cd4699283937c4dc, each with a 100 ms duration. Its complete-file loop observation is infinite. The selected LLVM report records one true and three false evaluations at that branch. The full report now records two true and 60 false evaluations in the public decode_inter_leaf specialization (the preceding full report had zero true and 54 false); other monomorphizations still have uncovered observations there. Coverage MCP marks the report source unverified and test status unknown because no source/build receipt accompanies the local report.

The companion animated_lossy_wide_i444_mode2_split32_b128x128 fixture uses a flat gray key frame followed by a row-alternating 32-pixel sinusoid. Its 1,739-byte input hashes to f48a6d235c7ab245e8d57aedcc6135b897cea1bcbc579c3d630aa7c20e1a61aa, and both Rust-decoded frames match the pinned Pillow bytes. The selected public row passes 1/1; its branch report reaches the true all_roots_split && all_children_unsplit LossyWideMode2Split32 arm at entropy.rs:7109 and the true all_roots_split && all_children_split LossyWideMode2Deep16 arm at entropy.rs:7115. Coverage MCP's selected-test comparison reports six newly observed branch coordinates in entropy.rs, including both arms, but marks the comparison limited because source/build identity and test receipts are unavailable. The fresh full AVIF decode-matrix report passes 466/466 and records 9,528/32,200 branch observations; this selected AVIF report does not represent full-project coverage. Reports are target/release-evidence/coverage-avif-mode2-split32-row-20261004.json and target/release-evidence/coverage-avif-goal-full-20261004-rev2.json.

The mode-zero condition in decode_inter_transform_size is covered, but its nested clipped_lossless_grid false arm at entropy.rs:6927 remains missing: the fresh full report records six true and zero false outcomes. The public 17×17 clipped-grid row now changes its bottom-right pixel in frame two and passes exact Pillow parity. Its selected LLVM report exits through the earlier complete-grid guard at line 6881 and records neither outcome at line 6927, so it is retained as an edge-pixel parity regression case rather than coverage evidence for that arm. The selected batch of ten lossless inter rows records two true and zero false outcomes there. Full aggregate coverage remains unchanged at lines 85,551/142,082, branches 16,248/32,170, functions 4,791/8,972 and regions 130,676/219,579. Coverage MCP reports the full-report comparison as limited because source/build receipts are absent. The reports are target/release-evidence/coverage-avif-clipped17-edge-20261002.json, target/release-evidence/coverage-avif-lossless-inter-batch-20261002.json and target/release-evidence/coverage-full-bottom-b32-speed8-edge-20261002.json. Pinned AOM searches found inputs for some clipped B32x16/B64x128 geometries that Rust rejects; no rejected or mismatching file was promoted to the public parity corpus.

The public interlace_adam7_gray_16bit PNG row adds a 9×9 grayscale fixture with 16-bit samples across all seven Adam7 passes. The selected PNG coverage report has no remaining region observations at decode.rs:1654–1655. A full comparison against the preserved pre-row report lists seven newly observed coordinates in that span, with limited status because source/build identity is unverified. Full-suite totals are unchanged, and the incremental comparison could not combine the selected PNG and full-suite report inventories. No aggregate coverage increase is claimed from these reports.

In this snapshot, decode_inter_translation_impl still has its largest grouped branch observations at block.rs:54939 and block.rs:54973, corresponding to the small I444 chroma-split predicate and vertical I422 TX4 chroma-grid path. Coverage MCP repeats observations across decoder monomorphizations, so group counts are not unique source branches. The deterministic public AVIF input animated_lossy_inter_i444_split_b16x32_mode2 now passes exact two-frame Pillow pixel parity. Its SHA-256 is ad7ce564a11440b91237e0dfffedbde1053bc663ae0e9bf0894f87e05e669bd0. The public decoder trace selects SplitB16x32Deep with transform mode 2 and the LLVM report records the true arm of the small I444 predicate at block.rs:54939. This input does not reach the later small-chroma terminal body; other decoder monomorphizations remain uncovered. A Coverage MCP coordinate comparison against the saved pre-rerun report observes 45 additional AV1 block branch observations, including 27 in decode_inter_translation_impl; source/build receipts are absent, so MCP does not verify attribution. A row-filtered run of the existing public animated_motion_chroma_422 case records 3 true and 0 false evaluations at block.rs:54973 in one decoder specialization. Its active input SHA-256 is 5a83530dcc60f75f0bec7d36cb4db67ae7258b2acc481cbb08cc0987247ea66a; the focused report SHA-256 is efe7104321bb07819efe9a9d17194236102e0122594e145aee3056adf76e89e7. This confirms the geometry is publicly reachable, while the remaining repeated MCP observations belong to other monomorphizations. The lossy mode-zero plan families formerly reported as narrow I422 mode-zero cases were removed after source and AV1 syntax analysis showed that they required both a lossy segment and frame transform mode 0. AV1 uses ONLY_4X4 only for coded-lossless frames (AV1 specification), while the parser sets mode 0 only when every segment is lossless. The legitimate lossless plans and mode-zero parsing remain.

A temporary public parity profile of staged 16×16 and 32×16 I444 candidates matched their Pillow frame pixels and durations, but neither reached the plane-nonzero terminal fallback at block.rs:58149; the LLVM report records zero executions for both arms across the eight emitted decoder specializations. A staged 16×32 candidate failed frame-1 pixel parity and was excluded. The candidates did not justify another matrix row; the 100% target and the terminal-body gap remain open.

The thin-64 lossy qindex guard at block.rs:55045 remains without a public parity row. A 128-case staging sweep used the pinned Pillow 12.2.0, libavif 1.4.1, dav1d 1.5.3, and AOM 3.13.2 stack across exact 16×64 and 64×16 canvases, monochrome and 4:2:0, four content patterns, quality 75 and 50, and partition settings from 8/16 minimum to 64/128 maximum. The sweep index is target/oracle-staging/thin64-lossy-search/quality-partition-sweep-index.json; none of its candidates selected a thin-64 inter block. The closest mode-2/non-lossless candidates with positive qindex matched all Pillow frames exactly but selected 16×16, 16×32, or 32×16 inter leaves. This search does not prove the decoder path unreachable for every valid AV1 bitstream, so no coverage-only or synthetic test was added and the gap remains open.

A separate 36-case qindex-zero sweep over 16×64 and 64×16 4:2:0/monochrome sequences also produced no thin-64 inter leaf: every quality-100 segment was lossless with only_4x4, while a quality-99 control used inter qindexes 2 and 4. The pinned three-frame qmatrix-at-qindex-zero input is target/oracle-staging/thin64-zero-qindex/candidates/16x64_420_bands_q100_min64_max64.avif (SHA-256 da19be87bf0952334f6d613e5ad1b15381ecc04f41c3e952dacde25f9cd288ac). A two-frame derivative at target/oracle-staging/thin64-zero-qindex/two-frame-qmatrix/16x64_420_bands_2frame_q100_qm15.avif (SHA-256 80b7e4469118c276fb0478e4f97ea0b319d1b3feb88c9f70d9eb22f3b5cc2f53) uses the same first two AV1 sample payloads and isolates the qmatrix inter frame. Both kept segment_lossless=true and passed independent Pillow/dav1d decoding; the three-frame input also passed Rust still decode. Its first shown key frame reconstructed, but the second shown all-lossless I420 inter frame was rejected by the initial reconstruction admission gate because complete_lossless_inter_color_reconstruction_context requires !quantization.using_matrix. The qmatrix-off control reconstructed that frame, then its third frame was rejected because the same profile excludes skip_mode_references. The AV1 specification assigns lossless segments SegQMLevel=15 and applies matrix scaling only below level 15 (AV1 specification, §§5.9 and 7.12.3); this looks like a future profile-expansion candidate. However, the repo's capability contract declares AVIF sequence_decode not implemented, so the probe does not justify a public parity row or changing that decoder gate under the current scope. deltaq-mode=1 is suppressed at qindex zero by the encoder and its three-frame parity control still selected 16×16/16×32 inter leaves. No bitstream surgery or coverage-only fixture was added.

Earlier coverage measurements reported the true arm of the mode-zero fallback in decode_inter_transform_size at entropy.rs:6888. It can be reached only when lossless_grid_geometry is false, because the preceding geometry path returns a lossless plan or an unsupported result. The public 16×16 lossless inter row and staging-only 17×17, 23×21, and 33×33 lossless edge probes took the geometry path; the odd-size probes passed exact public parity in shadow harnesses but did not cover the fallback. They do not prove that every valid lossless syntax/geometry is covered, so this guard remains open. Three additional monochrome lossless sequences—7×9, 65×67 translated noise, and a 65×67 edge-residual variant—also passed exact public pixel, timing, and loop parity in staging. Their isolated reports still record 0/0 at line 6888; the lossless-grid guard at line 6799 was true for every inter-transform call (true/false counts 1/0, 72/0, and 16/0). These candidates therefore took the complete lossless-grid plan before the fallback. Candidate files and reports remain under ignored target/oracle-staging/mode0-public-{7x9,65x67,edge-65x67}/; they do not prove every valid lossless geometry is covered, and no new row was added. The compound-reference CDF lookup now follows the declared [group][context] table order, including the backward table's two group rows; its parity correction passes the complete matrix and coverage campaign.

The existing public row animated_odd_dimensions_inter_intra_boundary_420 also passes an isolated all-feature parity run on the ARM64 host. Its selected LLVM report leaves both outcomes of transform_mode == 0 at entropy.rs:6888 unobserved, while the current full report still lists the true arm as missing. The row therefore does not reach this fallback, and no duplicate fixture was added. The selected report target/release-evidence/av1-odd-interintra-mode0-arm64.json has no source/build receipt; Coverage MCP marks its source unverified and test status unknown.

Two additional active AVIF parity cases close decoder divergences found while examining public edge inputs. The 20x20 all-lossless I444 sequence exposed an incorrect B8x8 inter-intra size group; it now matches dav1d's group 1 and passes exact two-frame Pillow parity at clipped edges. The three-frame lossy I444 sequence exposed single-reference motion-vector collection from the matching lane of a compound neighbor, plus a mixed B16x32 split that was incorrectly rejected whenever OBMC was present. The decoder now selects the first matching neighbor lane without allocation, accepts the existing OBMC-capable topology reconstruction path, and uses AV1's 8x8 paired-MI metadata rule in the OBMC syntax precheck. The normative check examines the right/lower metadata owner in each 4x4 pair (AV1 specification, §7.10.3). Its three frames match Pillow exactly. The loop bundle now contains 49 complete observations: 41 accepted inputs and eight malformed inputs, with native repetition and complete frame hashes retained. Coverage MCP's remaining true arm in has_overlappable_neighbor at entropy.rs:5608 is defensive: its public caller invokes the helper only when both block axes are at least two MIs. No private-only test was added for this unreachable guard.

A four-frame 256×256 4:4:4 affine-motion AVIF row exercises RotZoom global models on a compound-reference path. Its frame-3 mismatch traced to a second application of compound_mode_context: find_reference_mvs had already reduced the reference stack to the final 0–7 CDF context. The decoder now uses that context directly. All four Rust frames match the pinned Pillow RGB references byte for byte at 90, 110, 130, and 150 ms, and the native libavif loop witness confirms infinite repetition and repeat equality. This fixture also exercises compound spatial-neighbor and affine-motion state through the public decode path.

An earlier local Coverage MCP query on target/release-evidence/coverage.json, before the all-feature snapshot above, reported 17,239/32,240 branch observations covered, with 15,001 missing across 1,513 groups. Its largest decode_inter_translation_impl groups reported 1,870 repeated misses at block.rs:54830–54832; those counts span decoder monomorphizations and are not unique source branches. Coverage MCP marked that report's source unverified and test identity unknown because it had no source/build receipt, so the counters were coordinate diagnostics rather than attributed test coverage. An earlier coordinate comparison reported 84 newly observed coordinates against target/release-evidence/coverage-after-compound-reference-cdf.json, but that baseline file is no longer present in the workspace and the reports lacked receipts. The earlier local test run passed all 59 coverage-matrix tests.

The active intrabc_spatial_neighbor_monochrome_256 fixture now witnesses the IntraBC spatial-neighbor path. Its pinned Pillow 12.2.0/libavif 1.4.1/AOM 3.13.2 input is a deterministic 256×256 monochrome lossless AVIF with neighboring 8×8 IntraBC leaves (input SHA-256 c77c448e3668e90a4de1228c8b44a54fd47caae8e7538e314a1597dcc961795f). Public decode and decode_sequence both match all 196,608 Pillow RGB bytes (SHA-256 ed729898cd63496b4a1aa628686ebff2dd7a0f383dfdae854f7cd77dae54ce22). The fixture exposed that AV1 infers both subsampling flags as true for monochrome; the bounded profile gate now checks those inferred values, and the fallback motion-vector row test is tile-relative. A DAV1D trace confirms the second leaf uses its IntraBC spatial neighbor. The full-report Coverage MCP query still lists three missing observations in add_spatial_candidate at motion.rs:1675, 1678, and 1707; this fixture does not claim to cover every outcome there. That report has no source/build receipt and labels test status unknown, so the remaining locations are diagnostic rather than verified per-row attribution. No coverage-only test was added.

A fresh selected LLVM profile of this parity row passed 1/1 on 2026-10-29 and records six calls to relocate_intrabc_source. The calls follow the in-bounds monochrome path and do not exercise source relocation. The bounded public profile admits monochrome only and supplies has_chroma: false, leaving the chroma-border arms unreachable through public decode. A valid parity fixture for the relocation arms has not been established. The report is .coverage-mcp/local-evidence/selected/av1-intrabc-spatial-current/coverage.json (SHA-256 4618cf1ac9f3143a85c010e155917088ca57b7291f78ad27b556ad49b7f5737b). Its local receipt records no source changes during collection, but Coverage MCP still marks source/build identity unverified and test attribution unknown; this is a reachability note, not a coverage-gain claim.

The targeted temporal-projection candidate is already exercised by the active animated.avif parity row (SHA-256 2f8683d21725261f37f86e115f0c212cc52d0fefd3a2ddfcc4fa648c1859906d). Independent OBU inspection confirms order hints and reference-frame MVs are enabled, including an inter frame whose future ALT slot differs from GOLDEN. The selected public-row LLVM profile invokes load_projected_temporal_field five times and records both outcomes for the ALT/GOLDEN hint comparison (2/3) and positive temporal-distance selector (4/11); the existing row already pins five complete Pillow RGB displays and sequence metadata. The selected report has no source/build receipt, so these are diagnostic counters rather than Coverage MCP attribution. No duplicate parity row was added.

Boundary-focused monochrome probes also passed public pixel and duration parity at 69×73 with 128×128 superblocks, 4×4, 5×8, 8×5, and 5×5. Their isolated profiles took the complete lossless-grid path for every inter transform call and recorded no execution at entropy.rs:6842. The candidates remain under ignored target/oracle-staging/mode0-edge-non4/; no parity row was added because none reached the fallback.

Two additional staging-only 64×64 monochrome lossless inter-sequences matched Pillow's decoded RGB frames and frame durations; the second frame in each sequence was inter-coded. Their isolated LLVM profiles recorded no executions of the large-transform helper or either outcome at block.rs:21105. Pillow's AVIF info does not expose the loop field, so the Rust loop=0 result has no independent Pillow assertion. These candidates do not justify a public parity row, and no row was added.

A later bounded probe exercised four deterministic 64×64 monochrome lossless images and four RGBA images with monochrome lossless alpha items. All eight public decodes matched Pillow exactly, while isolated LLVM profiles still recorded 0/0 at line 21105 and did hit a separate monochrome plane-geometry branch. The target function's production caller is a fallback reached only when the complete streamed monochrome validator declines; these probes followed that complete validator instead. Encoder-option attempts did not find a valid candidate that passes the fallback's narrower admission checks. The route remains open for a bitstream where the first validator declines and the fallback accepts; no coverage-only input or parity row was added.

The selected public rows animated_lossless_inter_420_b16x16 and animated_lossy_split_inter_420_b16x16 passed their Pillow parity checks but did not exercise the luma-extension condition at block.rs:48287. Coverage MCP reports both branch outcomes missing in the selected report target/release-evidence/coverage-goal-vertical420-probe.json; the full and other selected AVIF profiles also show no observations for the helper's extension/fallback arms. No new row was added from these cases.

Coverage MCP also identifies a WebP Vp8Decoder<Cursor<&[u8]>> specialization gap at vp8.rs:1566. Production decode call sites pass bounded readers (Take); the direct Cursor specialization is instantiated only by private decoder tests. The selected public lossy_vp8_lossy_macroblock_residual_context_edges_32x16_q75_m4 parity row exercised the Take specialization six times and did not call the direct specialization. Since a new public row follows the same production reader path, it cannot cover this gap; no parity row was added for it.

The new public encode row enc_lossy_noise re-encodes the 64×64 high-entropy lossless_noise.webp source as lossy WebP through both ordinary encoding and encode_with_token. The 2,888-byte Pillow 12.2.0 output matches exactly (SHA-256 4989ffb95ab4b7bd4f1d5feb61d80d9fe256278a1e8d90070835db628dbb3912). Its pre-cleanup selected LLVM report, coverage-webp-token-noise-selected.json, shows the TokenPartitionCheckpoint::flush_with_checkpoint output.last_mut() Some(previous) arm 15 times in encode_bool and once in the final flush at bool_enc.rs:169. A selected comparison against the q50 token-aware row reports three newly observed branch outcomes at lines 168, 169, and 173. The quality, alpha, palette, grayscale, CMYK, and predictor probes did not hit this carry path. The earlier full profile's eight None outcomes came from the coverage-only hook's empty output vectors, which have since been removed. This public parity row supplies the complementary prior-byte carry case. Its old branch coordinates and the 17,536/32,238 aggregate belong to a pre-cleanup report; they are not current full-suite coverage. Coverage MCP reports no source/build receipt and unknown test status, so the selected comparison is limited coordinate evidence rather than a managed coverage delta.

Public parity rows added — 2026-10-01

Three active decode rows add exact edge-case parity from Coverage MCP findings. unknown_ancillary_after_idat inserts a valid abCd ancillary chunk after PNG image data; Pillow 12.2.0 and Rust return identical 128×128 RGB pixels (49,152 bytes, SHA-256 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131). bmp_1bit_default_palette sets ICO's embedded 1-bit DIB colors_used field to zero and matches Pillow's 16×16 RGBA output (1,024 bytes, SHA-256 1a9eee34c466acd78abb5ad2db2467d3fae0931df64b402f1eaf35a65463b842).

compression_packbits_packbits_zero_strip_byte_count sets TIFF tag 279 (StripByteCounts) to zero. Pillow still returns the exact 128×128 RGB pixels above. The public parity test exposed Rust rejecting this input as a truncated PackBits stream; compressed strips with a zero byte count now derive their bounded payload span from the next strip or file boundary, while positive declared counts keep their existing path. The all-feature TIFF decode matrix passes 129/129 rows.

The PNG, TIFF, and ICO focused decode matrices pass 163/163, 129/129, and 54/54 rows respectively. Coverage MCP reports no remaining branch gaps at png/decode.rs:347, tiff/decode.rs:1180, or ico/decode.rs:699 in their selected reports. Those reports have no source/build receipts and test status is unknown, so these are bounded path observations and do not update the source-bound full-repository coverage totals.

Selected parity coverage probes — 2026-10-03

The existing public GIF row enc_rgba_mixed now also invokes encode_with_token and compares exact Pillow bytes and ordinary/token-aware output. Its selected Coverage MCP report no longer lists the token-present arm in compact_rgba_palette. That 4×2 input is too short to reach the remap checkpoint at 1,024 pixels, so a separate public row enc_rgba_mixed_token_compact_checkpoint uses a 33×33 PNG cycling the same eight-value mixed-alpha pattern. The selected matrix run reports exactly one active row passed, and Coverage MCP's selected comparison observes the true checkpoint arm at encode.rs:2027. The two reports have no source/build receipts and unknown test attribution; this is local coordinate evidence, not a full-suite coverage claim. The remaining has_holes true arm has no public witness under the current FASTOCTREE palette ordering: used indices form a dense prefix, with unused padding at the end.

The public row pillow_tolerated_malformed_missing_iend verifies that PNG decode succeeds while Pillow-style verification reports a truncated-file error. Its selected run exposed a coverage-matrix lifecycle assertion that always required EncodedImage::verify() to succeed for the first selected row of a format. The parity harness now checks the source verification result against that row's recorded Pillow status and error contract. The selected PNG row passes 1/1. Its LLVM report records Chunks::next's clean-EOF condition true 7 times and false 12 times; the other true arm on the same source line, self.failed, remains unobserved. Coverage MCP groups those two short-circuit branches at one line and still lists a true-arm gap. Chunk errors propagate to the current iterator consumers, so a later next() call after self.failed has no known public parity input. The selected report has no source/build receipt and unknown test attribution; these are local path observations, not a full-suite coverage claim.

The selected BMP rows error_not_bmp and error_related_os2_signatures both pass public error parity, but their selected reports do not enter bmp::decode()'s signature branch at decode.rs:363: format detection rejects those signatures before dispatch. Adding another row with the same dispatch path would not cover that decoder guard. Their reports likewise have no source/build receipts or test attribution.

The active WebP row pillow_tolerated_malformed_animated_alpha_anmf_width_mismatch keeps the nested VP8 and alpha streams at 64×64 while declaring the ANMF frame width as 16,385. Pillow 12.2.0 decodes two 64×64 frames; the previous ALPH path trusted the declared width and returned ImageTooLarge. The decoder now reads the bounded VP8 bitstream first and uses its validated dimensions for alpha expansion and compositing, retaining the 16,384 limit on the decoded frame. The selected public parity row passes 1/1. Its report target/release-evidence/coverage-webp-alpha-frame-too-large-20261003-after.json still lists the guard's false arm as unobserved at decoder.rs:705; Coverage MCP has no source/build receipt and unknown test attribution, so this is not a verified full-suite coverage gain. Incremental comparison with coverage-full-gif-lzw-invariants-20261003.json is incomparable because its baseline branch detail is incomplete; no marginal-coverage union is claimed.

The active JPEG row baseline_420_singleton_chroma_width_fallback uses a 1×1 baseline JPEG whose Cb and Cr sampling factors differ. Pinned Pillow 12.2 decodes the pixel as RGB (128, 128, 128), and the selected public parity row passes 1/1 without a decoder change. Its LLVM report target/release-evidence/coverage-jpeg-singleton-h2v2-20261003.json shows the previously missing false arms at upsample.rs:85 and :105 hit; the opposite true arms remain missing. Coverage MCP reports no source/build receipt and unknown test attribution, so this records the selected input's paths rather than a suite-wide gain.

The active WebP row pillow_tolerated_malformed_animated_vp8l_anmf_width_mismatch declares an ANMF width of 16,385 around a 16×16 VP8L stream. Pillow 12.2 decodes two 64×64 RGBA frames. The decoder now reads the bounded VP8L header and uses its intrinsic dimensions before allocating and compositing the frame. The selected row passes 1/1. The active rows error_animated_vp8l_short_header and error_animated_vp8l_short_header_oversized_width cover four-byte nested VP8L payloads with normal and oversized ANMF declarations. Pillow 12.2 rejects both with OSError: could not create decoder object; both selected public parity rows pass 1/1, including the oversized-frame guard's ImageTooLarge path. The WebP decode matrix passes 237/237. Rows error_animated_vp8l_frame_outside_right and error_animated_vp8l_frame_outside_bottom shift a valid 64×64 nested frame two pixels beyond each canvas edge. Pillow 12.2 rejects both; the selected public parity rows pass 2/2 and exercise both short-circuit arms of the frame-bounds guard. The complete decoder matrix ran eight public format tests and passed 1,419/1,419 active decode rows. Coverage MCP report target/release-evidence/coverage-public-decode-matrix-20261003-verified.json records 11,766/32,174 crate-wide branch counters for that decode-only run. The report has no source/build receipt and unknown test attribution, so use it as a path inventory rather than a full-suite coverage measure. Coverage MCP no longer lists gaps in the new WebP VP8L header-size or canvas-bounds paths, or in the JPEG singleton-width upsampler. Its remaining WebP read_frame gap at decoder.rs:734 is the VP8 dimension guard; valid VP8 widths and heights are 14-bit values and cannot exceed its 16,384 limit.

The latest public parity batch adds three malformed AVIF meta cases: duplicate iprp (9a245809b8f3a78aec952c15ee9703973a5d407bbaffe17580c4b6b3aca26ee8), duplicate iref (ec6f361b37447d4abeb047508863c59e60d3aa73721adb4b5a76e7e159295f3e), and empty idat (281c5cf87f6d34f77635924a13384d107111870db7600e10636e4a2735d2c1c7). It also adds JPEG progressive_com_tail_junk (70dd4ed893d23e30d3e5c27ef1ac3f55e6a1a98e3aad166610db48754ee43ed2), which opens and verifies in Pillow but fails during load as a truncated progressive stream. All four selected public parity rows pass. The full make coverage run passes every executed test and the local floors. Coverage MCP reports seven new branch coordinates compared with the saved pre-batch report: five under samples::parse_meta and two in JPEG find_next_marker. The comparison remains limited because source/build identity and test attribution are unverified; these are coordinate changes, not source-bound coverage claims. The 100% goal remains open.

Clipped AV1 lossless inter-grid parity — 2026-10-04

The public AVIF matrix now includes clipped B32 lossless inter-grid witnesses for I444 right and bottom edges, I422 right-edge cases, and I422/I444 dual-edge cases. The new animated_lossless_inter_i444_clipped_b32x32_64x56.avif has SHA-256 9004ec840b2a413c0e15294f52c723ebe5c3689cbe3decbd4afd5575cad78e23; its bottom B32 block exposes 32x24 pixels, and its two decoded RGB frames match Pillow exactly. The selected public row and the complete AVIF native-loop parity test pass. The 52x64 I422 case also passes exact sequence parity with a 20x32 clipped right block. The two 52x60 dual-edge cases pass exact sequence parity with 20x28 luma visibility; I422 chroma visibility is 10x28. For odd-width I422 at 49x64, key-frame pixels match Pillow and sequence decoding keeps an explicit Unsupported expectation because the final chroma sample geometry is not parity-safe. The AVIF matrix now has 454 active decode rows; the full fixture matrix has 1,950 rows.

make coverage passed all executed tests and the local floors. Its LLVM report records 86,804/142,471 lines (60.9275%), 16,766/32,250 branches (51.9876%), 4,849/8,990 functions (53.9377%), and 132,767/220,396 regions (60.2402%). Coverage MCP identified six missing branch outcomes in inter_lossless_grid_clipped_b32_geometry_supported near src/codecs/avif/av1/entropy.rs:5395-5397. The report has no source/build receipt and MCP reports source=unverified, tests=unknown, and no build or revision ID, so these coordinates do not establish named-test attribution or a verified coverage delta. Those false arms are unreachable for valid B32 leaves: tree traversal skips zero-area blocks, and a visible extent over 32 contradicts the coded block size. Malformed inputs may exercise upstream rejection, but defensive-only states do not become Pillow parity fixtures. Strict SSE2-baseline and AVX2 Clippy builds pass, but they are compile checks, not runtime speed measurements. The 100% goal remains open.

The refreshed MCP branch report's largest group is the lossless_partial_grid predicate at block.rs:54838-54847. Source review found seven zero-hit callback-specialization clones; the remaining live clone already observes both outcomes of the clipped-versus-full extent predicate. Existing active parity rows cover admitted clipped B32 grids across I420, I422, and I444. The rejected zero-hit clones and the depth/alignment rejection arms do not provide a new valid Pillow-parity input, so no redundant AVIF row was added. A bounded probe for the 64-axis lossy transform mapping at block.rs:57818 and its topology variant at block.rs:57852 also produced no bitstream that both selected the missing plan and passed public parity. MCP still has no source/build receipts; these are coordinates, not verified test attribution.

PNG post-IDAT ancillary CRC parity — 2026-10-04

The public PNG matrix adds pillow_tolerated_post_idat_ancillary_bad_crc, an unknown ancillary chunk after IDAT with one corrupted CRC byte. Pillow 12.2.0 still decodes the original RGB pixels (SHA-256 8a1d6fcc36f5b5e70fbf949d4e612630a1931279383e7c21db27cd3cbad98131), while verify() reports SyntaxError: broken PNG file (bad header checksum in b'abCd'). The selected public decode-matrix test passes. Coverage MCP could not union its selected report with the saved full baseline: branch totals differ (32,250 versus 32,324), and both reports lack source and build receipts, so no verified coverage gain is claimed.

GIF89a metadata-limit parity — 2026-10-04

The active palette_index_leniency row also decodes its 35-byte GIF89a input with a public metadata limit of exactly 33 bytes; its two compressed image-data bytes are excluded from the metadata extent. The targeted matrix row and full coverage campaign pass, with exact Pillow pixel parity. Coverage MCP now leaves only the malformed-signature outcome at src/codecs/gif/decode.rs:361; public format detection rejects that signature before metadata preflight, so it does not justify another parity fixture. The report remains unbound to source/build receipts and has unknown test attribution.

JPEG 4:2:0 generic small-image encoder parity — 2026-10-17

The active enc_sub_420_generic_mcu_aligned_16x16 row encodes a deterministic 16×16 RGB PNG at quality 85 with baseline 4:2:0 subsampling and Huffman optimization disabled. Its PNG input is 852 bytes with SHA-256 427e0a7d6532ab94abf4ecf3d96d891719c060780eaa9243d161f278d97e9eef; the Pillow JPEG reference is 818 bytes with SHA-256 f8f11806f51915cf5673c8f5732280b24fe53ee7b3c5ef6669ac17ace9e97031, and the roundtrip RGB reference hash is 6fb0c4384dd488fb72663f0799d7591a1fe701165b1ac614a289974139f9696a. The source forms a complete 2×2 luma-block grid below the 1024-pixel streaming threshold. The selected public encode row passes. The focused report target/release-evidence/coverage-jpeg-420-generic-16x16-final.json records the selected row's aligned-grid outcomes at src/codecs/jpeg/encode/mod.rs:4611–4614 (three taken observations per guard). Coverage MCP calls hung in this run, so the selected report is not unioned with a baseline and establishes no aggregate coverage change.

Small JPEG chroma and WebP palette encode parity — 2026-10-04

Two active public encode rows add exact Pillow references using existing source assets: enc_subsample_422_tiny_edge encodes the 1x8 RGB JPEG as baseline 4:2:2 at quality 85, and enc_lossless_palette16 losslessly re-encodes the 64x64 RGB WebP fixture with exactly 16 colors. They cover small-image chroma edge replication and the WebP 5–16-color packed-palette case. The selected public matrix passes 2/2; the full all-feature coverage campaign also passes all 56 matrix tests, 7 decode-policy tests, and 68 feature-gate tests.

Coverage MCP still reports the defensive invalid-geometry arm at src/codecs/jpeg/encode/mod.rs:1507; validated public dimensions cannot reach that arm. The earlier full report for this review recorded 86,804/142,471 lines, 16,766/32,250 branches, 4,849/8,990 functions, and 132,767/220,396 regions; it predates the latest full report at the top of this file. Neither report carries source/build receipts for MCP attribution. The 100% coverage goal remains open.

Historical claim ledger

The following source-bound baseline was measured on 2026-08-27. Its historical percentages must not be relabeled as current-release coverage. The validator checks the historical manifest/matrix bytes at the measured Git revision, Coverage MCP identities, and separately checks current fixture integrity. The public rendering is centralized here so copied prose cannot drift across guides.

After regenerating the manifest, coverage matrix, coverage origin manifest, unreachable contract manifest, or roadmap, run make refresh-fixture-integrity locally. It updates current receipt hashes and the current-integrity line below, then runs make verify-fixture-integrity. It preserves the measured revision, original manifest and matrix hashes, and coverage MCP identity. GitHub CI runs the read-only verifier and never refreshes receipts automatically.

AV1 show-existing unshowable-reference parity — 2026-10-31

The retained local full LLVM report at target/release-evidence/coverage.json (SHA-256 5209ff334213f218cd54ceaacdd0704099532ed63f38aaabc788ac130f2c7281) showed no hits for the non-showable reference arm in parse_reader at src/codecs/avif/av1/frame.rs:3241, while the showable arm was observed 77 times. Coverage MCP returned Transport closed for both the full report and the focused report; these coordinates are local evidence only.

Added active parity row decode:avif:error_animated_show_existing_unshowable_reference. The generator changes the show-existing slot in sample 2 of animated.avif from slot 2 to slot 0, which contains the initial non-showable key frame. It changes one AV1 syntax byte; fixture SHA-256 is bf8daa2a92e16a7c9b12cd5ef6d724b36c30e724d5f8a2952480387ff20ecf9d. Pillow 12.2.0 opens the file and loads frames 0–2, then reports Failed to decode frame 3: Decoding of color planes failed. First-frame RGB parity remains exact at 67,500 bytes, and sequence decoding returns the same malformed-input error.

make coverage-selected COVERAGE_CASES='decode:avif:error_animated_show_existing_unshowable_reference' passed 1/1. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T044137.197296Z-1a9966d9bc4a40d99eb43307d1b87fc0/coverage.json (SHA-256 c240d1c355dd2815cf7b652e1c7b89b72d0bf3b0cd59dd7f500319dce2a3d335); the local receipt SHA-256 is 96b2e7732ec71e0c72d2de96097ebf5807abeadd57e4d041e9c639175f0c76f2. Its executed parse_reader specialization records the previously missing non-showable arm once. Coverage MCP again returned Transport closed, so this is not MCP-confirmed evidence and makes no aggregate coverage claim. No Rust unit tests or target-only fault-contract cases were added.

The malformed-case ledger now includes sequence-only Pillow and Rust error rows, with their sequence status and error details kept separate from first-frame decode status. scripts/generate_malformed_ledger.py --check and scripts/verify_claim_ledger.py pass.

AV1 show-existing empty-reference parity — 2026-10-31

The retained full LLVM report at target/release-evidence/coverage.json (SHA-256 5209ff334213f218cd54ceaacdd0704099532ed63f38aaabc788ac130f2c7281) showed the empty-reference branch in parse_reader at src/codecs/avif/av1/frame.rs:3238 had zero hits; the populated-reference arm was observed 77 times. The prior slot-7 mutation still selected a populated key-frame slot, so it was discarded as evidence.

Added active parity row decode:avif:error_animated_show_existing_empty_reference. Its generator replaces the first color-track sample's key-frame OBU with the same sequence header and a show-existing frame header for slot 7, before any reference slot has been populated. The file opens as a five-frame AVIF; Pillow 12.2.0 reports a malformed decode at frame 0 and a malformed sequence decode at frame 3. The fixture SHA-256 is 4edf1ad3aca5683da9b01569d76381185f6dc057e089337466085f044e786f7c.

make coverage-selected COVERAGE_CASES='decode:avif:error_animated_show_existing_empty_reference' passed 1/1. Its selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T045526.866827Z-33ae152126e94c2aaebd2d59b4b50659/coverage.json (SHA-256 5d62d5d34d26c60eeb9fa3d6ebddf11fea4fb40a491836507a7e55084d599de9); the local receipt SHA-256 is 499c1ce36e92ddc8acfd69942082d6ceb63128c59e120a66457ea55ee058bc50. Its frame.rs:3238 branch record has counts [0, 3], confirming the previously unvisited empty-reference arm ran. The source and fixtures did not change during this selection. Coverage MCP returned Transport closed; this is local selected evidence only and makes no aggregate coverage claim. No Rust unit tests were added.

WebP truncated VP8X metadata fault contract — 2026-11-10

Added target-only fault contract fault-contract:webp:webp_metadata_truncated_vp8x_rejected. Its coverage-only hook truncates an encoded VP8X container to 29 bytes before metadata insertion; the public encoder must return a structured Malformed error without changing the caller's sink. A clean retry is checked against the pinned Pillow encoded bytes and decoded pixels. Source PNG pixels are independently checked against the matching PNG decode parity fixture, so the lossy WebP output reference is not mistaken for the original input pixels.

The focused coverage run passed the fault contract and two existing parity rows, enc_lossy_alpha_exif and enc_lossless_exif_metadata_reuse (3/3 rows). Coverage MCP observed both outcomes of the VP8X identification predicate (6/3), both outcomes of the 30-byte header-size predicate (5/1), and both outcomes of the follow-up extended-container predicate (1/3). The selected report still lists uncovered ICC and XMP insertion arms and the EXIF-absent arm in this helper; this cohort does not exercise those metadata combinations.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261110T133841.363917Z-dcfdb117c150415fa43e685a91a68905/coverage.json (SHA-256 9ed6b9f1fd279e97fc8cc282f9915d3d37e783807be37dd6ea22e4285d609a8f). Its local receipt SHA-256 is a4068ade41a47d5a7c4ec97219b1559cfb87b3cdf26f56c80ec290a8fb3319ec. Coverage MCP marks source identity unverified and test attribution unknown; these are focused local observations, not an aggregate coverage claim.

Current claim-ledger baseline (not current HEAD): - Measured revision: 93ec80ec99c42671dce6cf70694bce27ad8a2ef4. - Coverage MCP run: ec4c4bbd-dbda-4e49-8109-d7da07722dc0; snapshot: 7665cda3-f4a7-4568-b871-a9d34afaa92c. - Coverage: 100,389/110,015 lines (91.2503%), 12,861/14,246 branches (90.2780%), 5,125/5,794 functions (88.4536%), and 150,221/166,375 regions (90.2906%). - Measured manifest SHA-256: c1a1cccd485d066ffbe206a6e1577a1788aff8d4f288e4e8f8a933fa3c62ae7b; measured matrix SHA-256: f26151b3811aaab58556da422f476b714b5fac5925ff5b97807904096b4d2d58. - Current fixture integrity only: manifest 27bdf88806b544a277f6f1388270d8637aba0c943dc7867da0013af4e236f079; matrix eedaf41429ecae773b1527110423c1c70464d84275835f72dc9efb1409ad2d86.

The larger current source denominator and the historical source denominator are not interchangeable. Selected incremental runs cannot substitute for a full fresh report. Keep the original raw reports and context rather than attaching old identities to new measurements.

The ledger's fixture-manifest hashes track current-file integrity. Updating those hashes does not extend the historical coverage run to new code, guards, or unexecuted regressions. The 2026-09-17 AVIF temporal-candidate repair remains unverified by Rust execution, as recorded in the roadmap.

The 2026-09-17 coverage-fixture maintenance passes strict all-feature Clippy with --cfg coverage on native and wasm32-unknown-unknown targets. Native coverage builds also pass with no codecs, default codecs, and each codec individually. Ordinary native Clippy, both WASM library feature matrices, and all-feature rustdoc pass. Fixture setup retains explicit failure assertions, checked bounds, and the original malformed inputs; feature-specific exercises follow the same feature gates as their implementation. The Rust behavioral test suite and coverage measurements remain deferred. The documentation checker inadvertently executed the README quickstart during this maintenance; that example passed, but is not evidence of roadmap or parity completion. The historical coverage totals and open capability statuses remain unchanged.

The 2026-09-17 HDR color candidate has independent full-file native evidence: dav1d and libavif agree on 240,000 YUV bytes, while pinned scalar libyuv, libavif and Pillow agree on 120,000 RGB bytes. The deterministic observation is recorded in the HDR oracle index. This witnesses the native conversion of 10-bit full-range I444 CICP 9/16/9 without alpha. The safe-Rust converter and its full-plane/tail regressions are implemented; their behavioral execution and managed coverage are deferred. Strict Clippy passes for native, wasm32-unknown-unknown and wasm32-wasip1 with AVIF-only and all features, both ordinary and coverage configurations. Native and coverage-enabled unknown-WASM checks include all targets; WASI checks compile the library. Warnings-as-errors rustdoc, formatting and static provenance/roadmap checks also pass. The HDR public row remains planned and historical coverage is unchanged.

The 2026-09-17 high-depth color candidate adds the exact 12-bit limited-range I422 CICP 2/2/2 declaration with auxiliary alpha from 10bit.avif. Independent scalar dav1d and libavif agree on 81,920 color-plane bytes and 40,960 alpha-plane bytes across all five frames. Pinned scalar libyuv, libavif and Pillow agree on 81,920 RGBA bytes, with repeatable native planes, pixels and timing. Source, compiler, default I601 build flags and artifact hashes are retained in the native index. Partial-alpha pixels witness straight output; zero-alpha pixels are absent.

The shared declaration selector and Rust color conversion are implemented, with deferred regressions for every native frame, 25 full-row slices and separate internal admission/sample-buffer checks. Strict Clippy passes all 12 native/WASM, AVIF-only/all-feature, ordinary/coverage lanes used for the HDR candidate, and warnings-as-errors rustdoc, formatting and static checks pass. This is compile-only Rust verification. Public reconstruction, sequence presentation, Rust pixel execution and managed coverage remain unverified; the existing sequence gates, planned matrix rows and historical coverage totals are retained.

The 2026-09-17 sequence presentation candidate processes matching color and alpha samples with persistent reference state, converts each complete display before advancing, and publishes frames only after all samples succeed. It reserves later output transfer bytes before reconstruction and requires the inspected frame count, output mode and actual frame geometry to agree. Missing reconstruction surfaces remain capability gaps; malformed tile envelopes and empty reference slots retain precedence. That revision retained the frame-ID sequence presentation gate; the later candidate below removes it.

The sequence native index retains five complete RGB displays, six decoded frames, two hidden frames and one show-existing display from the unchanged animated.avif. Unmodified and instrumented pinned scalar dav1d agree on 168,750 YUV bytes; repeated native libavif/Pillow observations agree on 337,500 RGB bytes. Native durations are exactly 1/30 second; Pillow reports rounded 33 ms durations. Independent libavif repetition observations distinguish this one-play animation from the infinitely repeating high-depth fixture. Pillow omits its loop field for both. The bundle notes retain the native metadata origin and required matrix reconciliation.

Deferred regressions compare every public display, first-image pixels, timing, native repetition and output-budget boundaries for both fixtures. Internal defensive cases remain Rust model assertions. All 12 strict Clippy lanes described above, warnings-as-errors rustdoc, formatting and static provenance/roadmap checks pass. Rust behavioral execution and managed coverage remain deferred; no row or finding is promoted. Output transfer limits do not bound retained AV1 references or scratch memory, and variable frame geometry and primary-item/track declaration disagreements remain unsupported.

The later 2026-09-17 frame-ID candidate corrects interleaved reference index and delta parsing in Rust and the syntax inspector. Seven pinned native reads establish the ordering and values independently of either implementation. The frame-ID oracle retains both native RGB displays, native YUV noninterference, exact timing and repetition, a full-file 32767-to-0 wraparound success and a full-file reference delta rejection. The latter preserves the first image in both native/Pillow observations and Rust's deferred regression. Native CLI diagnostics and actual frame outputs establish rejection even though that CLI returns exit code 0. Strict Clippy passes in all 12 native/WASM, AVIF-only/all-feature, ordinary/coverage lanes. Warnings-as-errors rustdoc, formatting, artifact hashes and static provenance/roadmap checks also pass. These are compile-only and static Rust checks; the native observer runs execute only pinned oracles.

The frame-ID-only presentation gate is removed, while repeated-current-ID validation retains precedence over reference-delta failures. Behavioral Rust execution and managed coverage remain deferred. Short-signaling fallback, stale-reference behavior, broader reconstruction and native-versus-Pillow loop reference reconciliation remain unfinished. The bundle's README separates these limitations from the bounded evidence; no matrix row or finding closes.

The 2026-09-17 short-reference candidate removes the no-future rejection and corrects the Python inspector's maximum-distance tie handling. The shared production helper preserves native fallback order, duplicate anchors and repeated earliest-slot reuse. Its normal parser wrapper still requires all eight reference headers.

The short-reference oracle contains six complete AVIF mutations with independently repeated native traces, 4,608 YUV bytes and 9,216 RGB bytes. Unmodified and instrumented dav1d agree byte for byte. Pillow/libavif observations repeat with exact native timing, and the corrected inspector agrees on all selected indices. Equal reference pixels make index comparisons necessary; the deferred coverage test invokes the same production selection helper. Invalid adapter arguments are separately identified as internal model assertions. No coverage exclusions were added.

All 12 strict native/WASM, AVIF-only/all-feature, ordinary/coverage compile lanes pass. Rust behavior and managed coverage remain deferred. This corpus does not establish every mixed-distance history or complete sequence/resource parity; planned rows, finding counts and historical coverage remain unchanged.

The 2026-09-17 repetition candidate aligns the container parser with native edit-list handling and replaces the matrix's absent-Pillow-loop inference with explicit native provenance. The loop index retains 28 complete inputs, 41 hashed artifacts and 420,956 RGB/RGBA bytes. Twenty accepted observations preserve all frames; eight malformed files fail native parsing and Pillow opening. All observations repeat identically.

The native signed-count boundary preserves 2,147,483,648 total plays as finite, then normalizes larger values to infinite. Absent edit lists stay unspecified; nonrepeating lists stop after flags. Repeating lists validate count, version and nonzero segment duration but ignore media fields. Color repetition wins over a different alpha value, while malformed alpha metadata still rejects.

The generator and Rust matrix harness bind loop evidence to the complete input, case, native source, index hash and normalized value. The Python static validator rejects a valid witness substituted from a different file. Existing row statuses and deferred Rust capability contracts remain unchanged pending the final behavioral campaign. All 16 strict native/WASM compile configurations, warnings-as-errors rustdoc and static provenance checks pass. The guard inventory remains 540 across 89 files. No current-source coverage claim is made.

The later 2026-09-17 display-retention candidate replaces the per-sample vector of shown completions with one selected completion. Online maximum selection preserves temporal-unit/spatial/temporal precedence and latest-tie behavior. Losing candidates still commit their reference/CDF/current-ID state. A hidden sample cannot reuse an earlier display as its current presentation. Failed flushes preserve the last completed-frame commit, not a whole-sample rollback.

Two deferred internal ownership regressions use Weak references to check immediate release of losing/superseded surfaces and survival of independently referenced surfaces. They also cover selection axes, exact ties, a winning missing-surface gap, hidden-unit filtering, pending frames and counter overflow. Existing complete native animation/high-depth/frame-ID witnesses retain pixel authority. No input acceptance boundary or oracle output is changed. Rust behavior and managed coverage remain deferred; aggregate memory limits and peak-allocation measurements remain unfinished. All 12 strict native/WASM, AVIF-only/all-feature, ordinary/coverage compile configurations pass, along with rustdoc, formatting and static provenance gates. The coverage-origin inventory records 147 exact guards across 24 Rust files.

TIFF FillOrder rational field parity — 2026-10-13

The TIFF decode matrix now includes complete-file Pillow cases for SHORT, LONG, BYTE and RATIONAL tag 266 values. The RATIONAL cases cover valid 1/1 and 2/1 values, first-value behavior with a later 0/0 value, zero-count defaulting, zero denominators, fractional values, and unsupported 3/1. BYTE(2) and invalid rational values match Pillow's open-time rejection. These are public input parity cases; no target-only fault contract was added, and the 27 typed fault contracts remain separately reported.

The focused TIFF run selected 14 matrix rows, including the default FillOrder-absent miniswhite row, all seven new FillOrder rows, and the existing strip and tiled cases. It passed (1 passed; 0 failed; 56 filtered out). Formatting and strict all-target/all-feature Clippy also pass. The focused Coverage MCP report is .coverage-mcp/local-evidence/20261013/tiff-fillorder2/focused.json; coverage_gaps reports no missing branch outcomes in validate_fill_order and summarizes the selected report as 201/31,308 branch observations. Coverage MCP marks source identity unverified and test attribution unknown. Its incremental comparison with .coverage-mcp/local-evidence/20261013/main-full-baseline/coverage.json is incomparable because the reports' branch details do not match their totals, so this focused run does not establish a suite-wide gain or regression. The last full baseline remains 89,277/135,839 lines, 17,418/31,268 branches, 4,992/8,690 functions and 136,575/210,976 regions; no full coverage campaign was run for this change.

AV1 film-grain output allocation fault contract — 2026-10-13

The target-only row fault-contract:avif:avif_film_grain_output_reservation_failure uses the active Pillow parity input decode:avif:portable_lossless_filmgrain_i444_64x64 as deterministic stimulus. A coverage-only reservation-size override reaches the real Vec::try_reserve_exact error path; the public result is ImageError::Dimensions for AVIF at StillDecode, and a clean retry must match a fresh uninjected decode. The row is recorded with oracle_status: not_applicable, separate from Pillow parity. In normal builds the fault hook is absent and the reserve path has no additional branch; the behavior change classifies allocation failure as a dimensions/resource error instead of malformed input.

The focused target-only run selected and passed this one contract. Coverage MCP reports no remaining region at apply_plane line 1059; the historical full report showed two unobserved regions in the prior allocation-error mapping at line 1048. Its incremental comparison is incomparable because the historical baseline detail differs from its totals. Both reports are source-unverified with test attribution unknown, so this is focused coverage evidence rather than a quantified suite-wide gain. No full coverage campaign was run.

The adjacent target-only row fault-contract:avif:avif_film_grain_points_reservation_failure injects a failure into AV1 film-grain point-array reservation while parsing the same active Pillow parity fixture. It expects the decoder's existing structured ImageError::Malformed result at StillDecode, then verifies that an uninjected retry matches a fresh decode. The fault row is marked oracle_status: not_applicable; it is not Pillow parity. Coverage MCP's saved full report marks the error arm of the increasing-point validation in read_points as unobserved. The reservation fault returns before that check, and the focused selected report still shows that arm as unobserved, so this row does not claim to close that branch gap. The incremental comparison with the full report is incomparable because baseline branch details differ from its totals. Both reports lack source receipts and have unknown test attribution; the focused run verifies this fault contract only. No full coverage campaign was run for this row.

AVIF stts timing fallbacks — 2026-10-13

Six active parity rows mutate the pinned animated.avif source: the original zero-sample_delta case plus empty, zero-count, under-filled, over-filled, and wrapped-count timing tables. The deterministic writer pins each output hash and preserves all media payload bytes. The four incomplete-table mutations keep the complete file length; the empty table is a size-16 stts box followed by an 8-byte free sibling. The wrapped-count case inserts an additional run, updates enclosing sizes and stco/iloc offsets, and grows the input from 1,235 to 1,243 bytes. Pillow 12.2.0 returns five 150×150 RGB frames with unchanged pixels for every mutation. The zero-delta case has five zero-ms durations, the four incomplete-table cases have five 33-ms durations, and the wrapped-count case has durations 33, 67, 67, 67, and 67 ms. Pinned libavif 1.4.1 parses each file and decodes all five frames.

The Rust sequence decoder now mirrors libavif's uint32_t timing-run accumulation, final-run fallback, and one-tick empty-table default while preserving zero deltas. The wrapped-count row reaches the defined u32 sum wrap on all Rust targets. The decoder still checks conversion of Rust sample indices and downstream timing arithmetic. These are public Pillow parity cases, not target-only fault contracts.

The five new incomplete- and wrapped-table rows passed one focused public decode-matrix run (5/5 selected rows; one integration test, 56 filtered). Its Coverage MCP report is .coverage-mcp/local-evidence/20261013/avif-stts-incomplete/current-selected.json, SHA-256 9b27edbd93dacf007c9d6cb7492d56078c558b9bf40382f02feeca38cb9bc50c. The selected report records 3,297/31,302 branches and 20,014/135,914 lines; Coverage MCP found no missing branch observations at samples.rs:2503 for this selection. MCP marks the report source unverified and test attribution unknown. The earlier split-run reports remain in the same local directory; their comparison with the saved full baseline is incomparable because baseline branch detail differs from its reported totals. No suite-wide coverage gain or regression is claimed. No full coverage campaign was run. Exact commands, local test output, report digests, and oracle identities are in .coverage-mcp/local-evidence/20261013/avif-stts-incomplete/receipt.md.

AVIF metadata reservation faults and iinf entry-count parity — 2026-10-13

Two target-only contracts now exercise AVIF metadata-table reservations for iinf items and iloc locations. The coverage-only fault hooks force the real Vec::try_reserve capacity-error path; normal builds contain no injection branch. Each selected fault row returns a structured AVIF ImageError::Dimensions at StillDecode, and a clean retry matches a fresh decode. These rows use oracle_status: not_applicable and stay outside Pillow parity.

The public parity row error_iinf_entry_count_exceeds_children changes only the v0 iinf.entry_count in baseline.avif from one to two while retaining the single valid infe child. Its fixture SHA-256 is 651cb3bd4e3d0f6202d1b9caddd11470f518d05c978e5d38cc5d66423a60dde8. Pillow 12.2.0 detects the AVIF signature, then reports PIL.UnidentifiedImageError: cannot identify image file <bytes> for inspection, verification, decode, and sequence decode. It reaches the normal missing-child parse error and is not a target-only fault case.

The complementary public row error_iinf_entry_count_zero_with_child changes that count from one to zero while retaining the same child. Its full-file fixture SHA-256 is 951efe4031639fc3cda52ba994de66b93b028892cae96e4e0efb2f83d79677ef. The pinned Pillow 12.2.0 reference generator classifies inspection, verification, decode, and sequence decode as malformed builtins.RuntimeError: Failed to decode image: Missing or empty image item. The single-row coverage run passed 1/1. Coverage MCP's selected report .coverage-mcp/local-evidence/20261013/avif-iinf-zero-count/coverage.json (SHA-256 45c831e568a85c30b2895f0ad7343d523bafe0b7138f7ac78b73f59f876c0bf8) lists the false arm as missing at src/codecs/avif/samples.rs:599; the trailing-child true arm is observed in this selection. The test command ran from source revision 43a94a55ea39cb53115749a60ebef757ea6e3b48 with the generated manifest and references. The report has no build ID or recorded revision, and MCP labels source identity unverified and test attribution unknown. Incremental comparisons with the selected iinf report and saved full baseline are incomparable because their exact branch detail is incomplete; no aggregate coverage gain is claimed.

For the count-exceeds selection, the focused public run passed 1/1 row and Coverage MCP returned no missing branch location at src/codecs/avif/samples.rs:589; that path is distinct from the trailing-child branch measured by the zero-count selection above. The selected fault run passed the baseline plus both contracts (3/3 rows), with no missing branch observations at the iinf reservation hook (samples.rs:576) or the exercised parse_iloc::<true> hook (samples.rs:1095). Both reports are selected-only; MCP labels source identity unverified and test attribution unknown. The full baseline comparison is incomparable because its exact branch detail is incomplete, so no aggregate gain or regression is claimed. No full coverage campaign ran. Reports and receipts are in .coverage-mcp/local-evidence/20261013/avif-iinf-parity/ and .coverage-mcp/local-evidence/20261013/avif-metadata-fault-contracts-selected/.

make fmt and make verify pass; strict all-feature Clippy passed with RUSTC_WRAPPER= after the default sccache wrapper was denied by the local sandbox. The broad asset command .oracle-venv/bin/python scripts/generate_test_assets.py --format avif still stops at its existing pinned ICC fixture-hash check before reaching the new generator block. The new fixture bytes were produced from the pinned baseline with the single-field mutation and verified against the recorded digest.

Diagnostic provenance

The separate defensive-model contract has 61 diagnostic cases: 38 use committed bytes that also have a Pillow parity row; 23 cases construct runtime mutations. Diagnostic identities and messages remain Rust model observations, not Pillow parity fields. The provenance verifier checks the original input hashes and supporting baseline route for every case.

Contract catalog: behavior Pillow cannot prove

This is the separate Rust-only list. “Cannot prove” means Pillow may have a similar idea internally, but it cannot return this crate's exact field, token, target, sink, or typed result for comparison.

The bounded v1 map is machine-checked by make verify against tests/fixtures/unreachable_contract_manifest.json. covered means that the manifest names an existing fixture-backed integration contract or fixture verifier; planned means that no such contract is claimed yet. The map is an evidence index, not a claim that every legal format state is implemented.

The verifier also parses this ten-row table. It requires each row's status and Pillow-parity column to match the manifest, every covered row to name the exact manifest evidence paths, the release-package row to name its exact fixture verifier, and the planned allocation/stack/coverage row to say that no category-specific evidence is claimed while naming its bounded context paths. This is documentation-integrity evidence only: it does not promote the planned category to covered and does not add any Rust-only result to Pillow parity.

The separate fault_contract_cases index maps target-only injected failures and defensive parser branches to their structured-diagnostics requirement and shared matrix selector. The AVIF, BMP, JPEG, and TIFF fault cases reuse active Pillow parity inputs as reproducible stimulus, while each injected result is recorded with verification: fault-contract and oracle_status: not_applicable. The new AVIF monochrome alpha case shortens one sample only under cfg(coverage), expects NotImplemented at StillDecode, and compares a clean retry with a fresh decode. It is target-only diagnostic evidence, not Pillow parity. The runner reports this lane separately from Pillow decode/encode counts. The TIFF ignored-sample contracts exercise zero row bytes and a short assembled buffer. The TIFF YCbCr contracts also exercise zero horizontal and vertical subsampling after valid-layout selection, then verify a clean Pillow-parity retry. The YCbCr cases force clump-length failures in the 1-by-2, 2-by-2, and general converters, full-resolution sample-length failures, and RGB-output reservation failures in the 1-by-2, 2-by-2, and general converters. They assert the expected typed decode error followed by a successful retry against the same Pillow-backed input.

Map ID Rust-only contract Why Pillow cannot prove it v1 status Separate evidence Pillow parity
decode-encode-policy-limits DecodePolicy and EncodePolicy limits Pillow does not expose this crate's pre-detection, canvas, metadata, decoded-byte, encoded-output, or work-budget result with the same boundary/error fields covered Manifest evidence: tests/decode_policy_tests.rs, tests/feature_gate_tests.rs excluded
cancellation-work-budgets Cancellation and work budgets Pillow has no caller-owned CancellationToken, checkpoint budget, or EncodeWorkUnits result covered Manifest evidence: tests/feature_gate_tests.rs excluded
output-sink-delivery OutputSink delivery Pillow does not accept this crate's dependency-free sink, expose delivered prefixes, flush failures, or rollback semantics covered Manifest evidence: tests/feature_gate_tests.rs excluded
caller-owned-destination-buffers Caller-owned destination buffers Pillow does not expose decode_into capacity, short-destination rejection, or no-partial-write guarantees covered Manifest evidence: tests/feature_gate_tests.rs excluded
source-provenance Source provenance SourceDescriptor, FileTypeBox facts, AVIF item/property identity, raw source relationships, and declared-versus-confirmed fields are not Pillow result fields covered Manifest evidence: tests/feature_gate_tests.rs excluded
structured-diagnostics Structured diagnostics Rust diagnostic kind, offset, consumed extent, recovery status, and provenance are not Pillow's ordinary return shape covered Manifest evidence: tests/feature_gate_tests.rs, scripts/verify_diagnostic_provenance.py; target-only fault cases: fault-contract:avif:avif_segment_map_reservation_failure, fault-contract:avif:avif_10bit_i444_alpha_plane_length_mismatch, fault-contract:avif:avif_12bit_i444_generic_alpha_plane_length_mismatch, fault-contract:avif:avif_10bit_i444_alpha_invalid_sample, fault-contract:avif:avif_10bit_i444_alpha_output_reservation_failure, fault-contract:avif:avif_12bit_i444_generic_rgb_output_reservation_failure, fault-contract:avif:avif_subsampled_rgb_output_reservation_failure, fault-contract:avif:avif_12bit_i420_alpha_sample_count_mismatch, fault-contract:avif:avif_12bit_i420_alpha_zero_width, fault-contract:avif:avif_12bit_i420_alpha_nondivisible_luma_length, fault-contract:avif:avif_12bit_i420_alpha_zero_height, fault-contract:avif:avif_12bit_i420_alpha_u_plane_length_mismatch, fault-contract:avif:avif_12bit_i420_alpha_v_plane_length_mismatch, fault-contract:avif:avif_portable_y_plane_length_mismatch, fault-contract:avif:avif_portable_u_plane_length_mismatch, fault-contract:avif:avif_portable_v_plane_length_mismatch, fault-contract:avif:avif_portable_alpha_plane_length_mismatch, fault-contract:avif:avif_subsampled_identity_conversion_rejected, fault-contract:avif:av1_inter_translation_sample_depth_mismatch, fault-contract:avif:av1_motion_predictor_zero_width_rejected, fault-contract:avif:av1_motion_reference_mv_geometry_guard_sweep_rejected, fault-contract:avif:av1_difference_mask_first_plane_length_mismatch, fault-contract:avif:av1_difference_mask_second_plane_length_mismatch, fault-contract:avif:av1_difference_mask_output_plane_length_mismatch, fault-contract:avif:av1_difference_mask_scratch_length_mismatch, fault-contract:avif:av1_wedge_mask_fill_empty_width, fault-contract:avif:av1_wedge_mask_fill_empty_height, fault-contract:avif:av1_wedge_mask_fill_scratch_length_mismatch, fault-contract:avif:av1_inter_intra_mask_invalid_mode, fault-contract:avif:av1_inter_intra_mask_empty_width, fault-contract:avif:av1_inter_intra_mask_empty_height, fault-contract:avif:av1_inter_intra_mask_scratch_length_mismatch, fault-contract:avif:av1_inter_intra_mask_non_normative_width, fault-contract:avif:av1_inter_intra_mask_non_normative_height, fault-contract:avif:av1_wedge_mask_reduce_empty_width, fault-contract:avif:av1_wedge_mask_reduce_empty_height, fault-contract:avif:av1_wedge_mask_reduce_scratch_length_mismatch, fault-contract:avif:avif_12bit_i444_generic_u_plane_length_mismatch, fault-contract:avif:avif_12bit_i444_generic_v_plane_length_mismatch, fault-contract:avif:avif_12bit_i444_generic_invalid_sample, fault-contract:avif:avif_10bit_i444_u_plane_length_mismatch, fault-contract:avif:avif_10bit_i444_v_plane_length_mismatch, fault-contract:avif:avif_display_plane_copy_allocation_failure, fault-contract:avif:avif_display_plane_copy_sequence_allocation_failure, fault-contract:avif:avif_film_grain_output_reservation_failure, fault-contract:avif:avif_film_grain_points_reservation_failure, fault-contract:avif:avif_temporal_motion_field_reservation_failure, fault-contract:avif:avif_sequence_frames_reservation_failure, fault-contract:avif:avif_sequence_frame_count_declaration_mismatch, fault-contract:avif:avif_sequence_mode_declaration_mismatch, fault-contract:avif:avif_superresolution_positions_reservation_failure, fault-contract:avif:avif_superresolution_plane_reservation_failure, fault-contract:avif:avif_superresolution_header_geometry_mismatch, fault-contract:avif:avif_superresolution_chroma_u_plane_reservation_failure, fault-contract:avif:avif_superresolution_chroma_v_plane_reservation_failure, fault-contract:avif:avif_sgr_restoration_output_reservation_failure, fault-contract:avif:avif_sgr_intermediate_reservation_failure, fault-contract:avif:avif_restoration_stripe_scratch_reservation_failure, fault-contract:avif:avif_restoration_stripe_output_reservation_failure, fault-contract:jpeg:jpeg_multiscan_coefficient_reservation_failure, fault-contract:jpeg:jpeg_huffman_table_slot_reservation_failure, fault-contract:jpeg:jpeg_ycck_output_reservation_failure, fault-contract:jpeg:jpeg_ycck_component_plane_count_mismatch, fault-contract:jpeg:jpeg_ycck_component_height_missing, fault-contract:jpeg:jpeg_fast_reader_marker_prefix_eof_fallback, fault-contract:jpeg:jpeg_fast_reader_scan_count_mismatch_fallback, fault-contract:jpeg:jpeg_fast_reader_entropy_start_mismatch_fallback, fault-contract:jpeg:jpeg_fast_reader_entropy_end_after_eoi_fallback, fault-contract:jpeg:jpeg_fast_reader_eoi_marker_mismatch_fallback, fault-contract:jpeg:jpeg_fast_reader_trailing_marker_position_mismatch_fallback, fault-contract:jpeg:jpeg_h1v2_upsample_plane_reservation_failure, fault-contract:jpeg:jpeg_h1v2_upsample_empty_geometry_rejection, fault-contract:jpeg:jpeg_h1v2_upsample_source_length_mismatch, fault-contract:jpeg:jpeg_h1v2_upsample_zero_width_rejection, fault-contract:jpeg:jpeg_fancy_upsample_row_invalid_geometry, fault-contract:jpeg:jpeg_fancy_upsample_row_zero_height_rejection, fault-contract:jpeg:jpeg_fancy_upsample_row_zero_horizontal_ratio_rejection, fault-contract:jpeg:jpeg_fancy_upsample_row_zero_vertical_ratio_rejection, fault-contract:jpeg:jpeg_fancy_upsample_row_short_stride, fault-contract:jpeg:jpeg_row_upsample_source_length_mismatch, fault-contract:jpeg:jpeg_fancy_upsample_row_destination_y_out_of_bounds, fault-contract:jpeg:jpeg_fancy_upsample_row_last_row_start_overflow, fault-contract:jpeg:jpeg_fancy_upsample_row_required_source_length_overflow, fault-contract:jpeg:jpeg_fancy_upsample_row_destination_height_overflow, fault-contract:avif:avif_monochrome_tile_reservation_failure, fault-contract:avif:avif_monochrome_group_buffer_reservation_failure, fault-contract:avif:avif_color_tile_reservation_failure, fault-contract:avif:avif_tile_cell_reservation_failure, fault-contract:avif:avif_tile_block_metadata_reservation_failure, fault-contract:avif:avif_partition_node_reservation_failure, fault-contract:avif:avif_partition_context_above_reservation_failure, fault-contract:avif:avif_chroma_tile_cell_reservation_failure, fault-contract:avif:avif_assembled_loop_filter_metadata_reservation_failure, fault-contract:avif:avif_projected_temporal_field_reservation_failure, fault-contract:avif:avif_grid_cell_reservation_failure, fault-contract:avif:avif_monochrome_grid_cell_reservation_failure, fault-contract:avif:avif_monochrome_loop_filter_metadata_reservation_failure, fault-contract:avif:avif_monochrome_cdef_region_map_reservation_failure, fault-contract:avif:avif_monochrome_cdef_active_map_reservation_failure, fault-contract:avif:avif_monochrome_cdef_invalid_sample_depth_rejected, fault-contract:avif:avif_monochrome_cdef_direction_invalid_sample_depth_rejected, fault-contract:avif:avif_monochrome_cdef_input_guard_sweep_rejected, fault-contract:avif:avif_color_cdef_active_map_extent_mismatch_rejected, fault-contract:avif:avif_color_cdef_active_strength_index_out_of_range_rejected, fault-contract:avif:avif_color_cdef_invalid_y_strength_count_rejected, fault-contract:avif:avif_color_cdef_invalid_uv_strength_count_rejected, fault-contract:avif:avif_retained_temporal_sample_reservation_failure, fault-contract:avif:avif_tile_group_temporal_sample_reservation_failure, fault-contract:avif:avif_assembled_cdef_region_map_reservation_failure, fault-contract:avif:avif_tile_cdef_region_map_reservation_failure, fault-contract:avif:avif_tile_cdef_active_map_reservation_failure, fault-contract:avif:avif_assembled_cdef_active_map_reservation_failure, fault-contract:avif:avif_item_table_reservation_failure, fault-contract:avif:avif_item_table_inspection_reservation_failure, fault-contract:avif:avif_item_location_table_reservation_failure, fault-contract:avif:avif_item_location_table_inspection_reservation_failure, fault-contract:avif:avif_item_extent_span_reservation_failure, fault-contract:avif:avif_item_extent_span_inspection_reservation_failure, fault-contract:avif:avif_container_inspection_invariant_guards, fault-contract:avif:avif_duplicate_minf_inspection_contract, fault-contract:avif:avif_duplicate_stbl_inspection_contract, fault-contract:avif:avif_missing_minf_inspection_contract, fault-contract:avif:avif_missing_stbl_inspection_contract, fault-contract:avif:avif_missing_stsz_inspection_contract, fault-contract:avif:avif_missing_stsd_inspection_contract, fault-contract:avif:avif_container_meta_full_box_version_rejected, fault-contract:avif:avif_sgr_source_reservation_failure, fault-contract:avif:avif_monochrome_alpha_plane_length_mismatch, fault-contract:bmp:bmp_palette_reservation_failure, fault-contract:bmp:bmp_decoded_pixels_reservation_failure, fault-contract:bmp:bmp_rle_entry_work_budget_exceeded, fault-contract:bmp:bmp_rle_command_work_budget_exceeded, fault-contract:png:png_decoded_sample_buffer_reservation_failure, fault-contract:png:png_chunk_iterator_failure_stops_iteration, fault-contract:png:png_apng_sequence_counter_exhaustion, fault-contract:png:png_apng_inspection_sequence_counter_exhaustion, fault-contract:png:png_inspect_invalid_signature_rejected, fault-contract:tiff:tiff_lzw_zero_expected_output_rejection, fault-contract:tiff:tiff_lzw_zero_expected_output_token_rejection, fault-contract:tiff:tiff_header_registered_magic_rejection, fault-contract:tiff:tiff_strip_assembly_reservation_failure, fault-contract:tiff:tiff_unaligned_strip_assembly_reservation_failure, fault-contract:tiff:tiff_rgb16_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_general_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_general_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_full_resolution_length_mismatch, fault-contract:tiff:tiff_ycbcr_full_resolution_length_mismatch_custom_tags, fault-contract:tiff:tiff_ycbcr_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_custom_table_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_custom_table_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_rational_index_out_of_range, fault-contract:tiff:tiff_ycbcr_floating_index_out_of_range, fault-contract:tiff:tiff_directory_numeric_value_width_invalid, fault-contract:tiff:tiff_directory_numeric_value_width_remainder, fault-contract:tiff:tiff_directory_numeric_value_remainder_nonempty, fault-contract:tiff:tiff_ycbcr_custom_general_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_custom_general_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_custom_1x2_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_custom_1x2_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_1x2_clump_length_mismatch, fault-contract:tiff:tiff_ycbcr_1x2_rgb_output_reservation_failure, fault-contract:tiff:tiff_ycbcr_tile_assembly_reservation_failure, fault-contract:tiff:tiff_ycbcr_tile_prefix_limit_failure, fault-contract:tiff:tiff_ignored_sample_row_bytes_zero, fault-contract:tiff:tiff_ignored_sample_assembly_length_mismatch, fault-contract:tiff:tiff_ycbcr_horizontal_subsampling_zero, fault-contract:tiff:tiff_ycbcr_vertical_subsampling_zero, fault-contract:tiff:tiff_ycbcr_custom_horizontal_subsampling_zero, fault-contract:tiff:tiff_ycbcr_custom_vertical_subsampling_zero, fault-contract:avif:avif_monochrome_portable_subsampling_x_rejected, fault-contract:avif:avif_monochrome_portable_subsampling_y_rejected, fault-contract:avif:avif_monochrome_portable_u_plane_nonempty_rejected, fault-contract:avif:avif_monochrome_portable_v_plane_nonempty_rejected, fault-contract:avif:avif_monochrome_portable_y_plane_length_mismatch, fault-contract:avif:avif_monochrome_portable_alpha_plane_length_mismatch, fault-contract:avif:avif_monochrome_portable_y_sample_out_of_depth, fault-contract:avif:avif_monochrome_portable_alpha_sample_out_of_depth, fault-contract:avif:avif_monochrome_portable_output_length_mismatch, fault-contract:webp:webp_hash_chain_index_overflow_rejected, fault-contract:webp:webp_riff_header_too_short_rejected, fault-contract:webp:webp_riff_signature_mismatch_rejected, fault-contract:webp:webp_form_type_mismatch_rejected, fault-contract:webp:webp_riff_declared_size_mismatch_rejected, fault-contract:avif:av1_unfiltered_copy_source_x_end_overflow_falls_back, fault-contract:avif:av1_lossless_i444_first_partition_fallback_matches_parity, fault-contract:bmp:bmp_encode_height_over_signed_limit_rejected, fault-contract:bmp:bmp_direct_decoder_invalid_signature_contract, fault-contract:bmp:bmp_metadata_extent_invalid_signature_contract, fault-contract:gif:gif_sequence_decoder_invalid_signature_contract, fault-contract:gif:gif_metadata_extent_invalid_signature_contract, fault-contract:webp:webp_metadata_riff_signature_contract, fault-contract:webp:webp_metadata_webp_signature_contract, fault-contract:webp:webp_metadata_truncated_vp8x_rejected, fault-contract:webp:webp_inspect_riff_signature_contract, fault-contract:webp:webp_inspect_webp_signature_contract, fault-contract:bmp:bmp_inspect_invalid_signature_rejected, fault-contract:ico:ico_reserved_header_nonzero_rejected, fault-contract:ico:ico_unsupported_header_type_rejected, fault-contract:ico:ico_inspect_reserved_header_nonzero_rejected, fault-contract:ico:ico_inspect_unsupported_header_type_rejected, fault-contract:jpeg:jpeg_inspect_invalid_signature_rejected, fault-contract:jpeg:jpeg_ycck_component_stride_too_short, fault-contract:jpeg:jpeg_ycck_component_height_too_short, fault-contract:jpeg:jpeg_ycck_component_plane_samples_too_short, fault-contract:jpeg:jpeg_ycck_component_stride_overflow, fault-contract:avif:avif_sequence_mode_declaration_mismatch_alpha excluded
feature-target-capability Feature and target capability Pillow does not model this crate's Cargo feature-disabled errors or native versus wasm32-wasip1 capability table covered Manifest evidence: tests/feature_gate_tests.rs, tests/capability_table.rs excluded
cache-concurrency-api-lifecycle Cache/concurrency/API lifecycle Pillow does not expose EncodedImage lazy-cache states, Rust clone sharing, bounded native concurrent verification, or this crate's frame/page lifecycle covered Manifest evidence: tests/feature_gate_tests.rs excluded
release-package-surface Release package surface Pillow cannot inspect this crate's Cargo archive, included source/legal files, or deliberate exclusion of parity fixtures and repository-only integration targets covered Manifest evidence: tests/fixtures/package_surface_manifest.json, scripts/verify_package_surface.py excluded
allocation-stack-coverage-models Allocation/stack/coverage models Pillow cannot witness Rust allocator checkpoints, stack measurements, or private defensive branches planned No category-specific evidence is claimed. Planned context: scripts/benchmark_fixture_workloads.py, scripts/verify_coverage_origins.py, tests/fixtures/coverage_origin_manifest.json excluded

Rust-only results do not belong in Pillow parity rows. The shared matrix has a separate fault_contracts lane for deterministic target-internal failures and defensive parser branches that public API routing cannot exercise. Each such row is typed as fault-contract, uses oracle_status: not_applicable, and shares the matrix selector and case-index machinery without contributing to parity counts. Its input may be an existing Pillow parity fixture; that keeps the stimulus reproducible but does not turn the target-only result into Pillow parity. The PNG signature inspection contract decodes the 1×1 Pillow fixture, flips one signature bit on a copy under cfg(coverage), then calls the codec inspector directly and checks its structured malformed result. Public format detection rejects that copied input before dispatch, so the defensive check cannot be exercised by the public parity row.

AVIF monochrome group-buffer allocation fault contract — 2026-10-15

fault-contract:avif:avif_monochrome_group_buffer_reservation_failure reuses the active decode:avif:multitile_monochrome Pillow parity input. The fixture reaches the per-tile-group complete-monochrome buffer reservation, while the coverage-only fault point forces its fallible reserve to report a structured Dimensions error. The public fault-contract runner checks the AVIF format, still-decode stage, exact diagnostic, and a successful retry matching a fresh decode. The injected fault remains separate from Pillow parity and compiles out of normal library builds.

The targeted parity and fault-contract runs passed 1/1 each. Coverage MCP's LCOV incremental comparison found 52 newly observed lines overall, including five in src/codecs/avif/av1/frame.rs at lines 3076 and 3085–3088 (0.0396 percentage points against the selected baseline). This is a limited coordinate estimate: the local reports have no source/build receipts or test receipts. Coverage MCP could not provide the branch-level delta because these reports do not contain exact branch observations. No full coverage campaign was run. Reports: target/release-evidence/coverage-avif-monochrome-group-baseline-current.info, target/release-evidence/coverage-avif-monochrome-group-fault-current.info. The coverage-origin inventory now records 149 exact guards across 25 Rust files; this is a static provenance count, not a new full-coverage measurement.

BMP RLE4 edge parity and palette-reservation fault contract — 2026-10-15

Two active Pillow parity rows cover BI_RLE4 odd-length absolute runs: one ends at end-of-line with the omitted low nibble, and the other places the pixel stream at an odd file offset to exercise word padding. Their input SHA-256 values are e126b4422eb23399b411090b0a9928b7f4f46467ea6847fbd9c0da522b6a33fb and 39a7b1fbc8d09716958cd9ad55f72fb477e69c40d20afceabb357807d39fff03. Both selected public rows pass the pinned Pillow pixel parity. The BMP fixture generator reproduces their inputs and reference provenance.

The target-only row fault-contract:bmp:bmp_palette_reservation_failure reuses the first fixture. Its coverage-only failpoint forces the palette's fallible reservation to fail before palette entries are read. The public contract checks the BMP StillDecode error decode: unable to allocate BMP palette and confirms that a clean retry equals a fresh decode. The selected fault row passed 1/1; the normal allocation path compiles without the fault hook. Coverage MCP found no missing branch observation at src/codecs/bmp/decode.rs:173, but its selected reports have no source/build receipts or test attribution, and branch-level incremental comparison is incomparable because exact detail is incomplete. No aggregate coverage gain or full-coverage result is claimed. Selected reports: target/release-evidence/coverage-bmp-rle4-odd-eol-current.json, target/release-evidence/coverage-bmp-rle4-odd-offset-current.json, and target/release-evidence/coverage-bmp-palette-fault-current.json.

JPEG SOS frame-order parity and fast-path predicates — 2026-10-15

The public parity row decode:jpeg:baseline_420_reversed_chroma_sos_order uses a pinned baseline 4:2:0 input (baseline_420.jpg, SHA-256 c669c42fcf388430afd4400bbdcbc66f30165d50e4b162ed77e1f67392cce4ef) with only the SOS component records changed. The candidate hash is d2c2d756ed55c4cf7b6af6ee4a614edd53b261d72d3b1c4beadcf784c20bd26d. Pillow 12.2.0 opens and structurally verifies the input, then reports a broken data stream when pixels are loaded. Rust now preserves marker-only inspection and verification while returning a malformed decode error for the invalid frame-order scan.

The current fixture matrix contains 2,243 total rows: 1,762 decode / inspect / verify rows and 481 encode rows. Of those, 1,762 decode rows and 449 encode rows are active.

The selected control, malformed case, and multi-scan control passed 3/3; the complete JPEG decode matrix passed 252/252. After the final CMYK direct-index simplification, the CMYK control and partial-block cases passed 2/2. Coverage MCP reports no missing branch observations in validate_scan_component_order or the 4:2:0 direct reconstruction helper for the complete JPEG workload. Its local report has no source/build or test receipts, and comparison with the historical full-suite baseline is incomparable because exact detail does not match. This evidence does not claim an aggregate coverage gain or a full-suite coverage result.

Pillow-tolerated iTXt without a keyword separator — 2026-10-16

The input-only row decode:png:pillow_tolerated_malformed_itxt_missing_keyword_separator uses a complete 1×1 RGB PNG with a valid-CRC iTXt chunk whose payload contains no NUL byte. Its reproducible generator pins the fixture SHA-256 to ef5663b10dd1bef8481a1f73bee3283038fc41a3bd928cd0ba7945654efb98cd. Pillow 12.2.0 opens and verifies the file, loads the same three RGB bytes as the base image, and omits the malformed metadata. The selected public parity row passed 1/1 across detection, inspection, verification, decode, and sequence decode. The fixture is an ordinary malformed-input case, not a target-only fault contract; runtime code is unchanged.

Coverage MCP's focused report records 2,315/211,155 observed regions for the selected test process and still reports a missing observation at src/codecs/png/decode.rs:119 in invalid_compressed_metadata_identity. The incremental comparison with the earlier PNG matrix report is incomparable because the selected report contains observations outside the baseline inventory. Both local reports lack source/build receipts and test attribution. No aggregate coverage gain or full-suite result is claimed, and no full coverage campaign was run. The selected report is target/release-evidence/coverage-png-itxt-missing-keyword-separator-selected.json.

The same gap review identified redundant fast-path predicates. Component order is checked once at decode materialization; per-component sampling records determine their maxima, and the reconstruction table vector is built once per frame component. The 4:2:0, 4:2:2, 4:4:4, grayscale, and CMYK direct paths now avoid rechecking those derived facts. CMYK also uses the validated frame order directly instead of rebuilding a scan-order map. The new JPEG input remains ordinary Pillow parity evidence; it is not a target-only fault contract. Reports: target/release-evidence/coverage-jpeg-direct-safe-cleanup-current.json and target/release-evidence/coverage-jpeg-cmyk-order-regression-current.json.

JPEG active chroma AC Huffman table parity — 2026-10-16

The public row decode:jpeg:baseline_444_custom_ac_chroma_values changes two unused codeword symbols in AC DHT table 1, which the first scan selects for both chroma components. The generated input is pinned to SHA-256 157f83e6e9a3f0d41dde66adf35dc156d1efaa1acfd77c64a83c782214059799; Pillow 12.2.0 returns the baseline 128x128 RGB pixels with SHA-256 2288f8f3cb6dafaa523538760165f2a4634b9a269e03175b8fbc284158dbb94a. This is valid-input public parity, not a target-only fault contract. The selected matrix test passed 1/1.

Coverage MCP's selected-row comparison with the subsampling_444 control observed two additional false-arm coordinates in standard_huff_table (huffman.rs:95) and standard_ac_general_pair_table (huffman.rs:428). The focused report is target/release-evidence/coverage-jpeg-active-ac-chroma.json; the control is target/release-evidence/coverage-jpeg-baseline444-control.json. The reports lack source/build receipts and test attribution, so this is limited coordinate evidence. Comparison with the saved full baseline is incomparable because its branch inventory differs (31,268 versus 31,276 outcomes). No aggregate coverage gain or full-suite result is claimed, and no full coverage campaign was run.

Pillow-tolerated zTXt without a keyword separator — 2026-10-16

The input-only row decode:png:pillow_tolerated_malformed_ztxt_missing_keyword_separator uses a complete 1×1 RGB PNG with a valid-CRC zTXt chunk whose payload contains no NUL byte. The compressed text is valid, but the PNG text keyword separator is absent. Pinned Pillow 12.2.0 opens and verifies the file, then loads the same three RGB bytes as the unmodified input. The selected public parity row passes 1/1 across detection, inspection, verification, decode, and sequence decode. The decoder already preserves this tolerated input; this change adds an independent malformed-metadata parity witness without altering runtime code.

Coverage MCP's branch comparison with the earlier PNG matrix report is incomparable because the exact branch detail differs. A focused incremental comparison against the earlier full PNG matrix report is incomparable because the selected report contains observations outside that baseline inventory. Comparing the selected row with the invalid-compression control reports no new region observations and 17 control observations absent from the selected report; source/build identity is unverified, so those differences cannot establish a coverage gain or regression. The selected report still shows unobserved PNG regions, including in invalid_compressed_metadata_identity; no full-suite coverage campaign was run. Reports: target/release-evidence/coverage-png-ztxt-invalid-compression-control-final.json and target/release-evidence/coverage-png-ztxt-missing-separator-final.json.

Odd-width 1-bit PNG encode parity — 2026-10-16

The public row encode:png:enc_1bit_odd_width uses a complete 9×3 mode-1 PNG saved by pinned Pillow 12.2.0. Its source SHA-256 is ab470446e941a51011e157e861e3f920b911686d3e592e1b7cb1d6a683bdd675; Pillow decodes pixels 5980a6000080 with SHA-256 36e3c5d288415910fd696272299e53b64a80b66782e965c506b57e7dd2d8d203. The rows exercise unused packed tail bits while setting the ninth pixel to both zero and one. The exact 74-byte encoded reference is byte-identical to Pillow's output. The selected manifest parity test passed 1/1. Its fixture generator checks the pinned PNG without importing Pillow; the optional --verify-pillow path checks the pinned save and pixel roundtrip.

The selected branch report records 230/31,276 observations and reaches the 1-bit row packing plus non-palette encoder paths at encode.rs:70 and :107/:429. Coverage MCP's selected-test comparison reports 28 newly observed branch coordinates, including the false arms at lines 107 and 429. This is limited coordinate evidence: source/build receipts and test attribution are unavailable. The saved PNG baseline is 559/31,314 branches; its exact detail differs from the selected report, so the incremental union is incomparable. No aggregate coverage gain, full-suite result, or full coverage campaign is claimed. The selected report is target/release-evidence/coverage-png-1bit-odd-width-final.json.

PNG decoded-sample reservation fault contract — 2026-10-16

fault-contract:png:png_decoded_sample_buffer_reservation_failure reuses the active decode:png:size_1x1 Pillow input. decode_scanlines now reserves the checked sample count fallibly, then initializes the buffer; a reservation failure returns a structured PNG Dimensions error at StillDecode. The one-shot png.scanline.sample_buffer_reservation injection exists only in coverage builds. The shared runner verifies the error and confirms that retry produces the same decoded image as a fresh decode. The ordinary parity row and the selected fault row each passed 1/1; the injected result remains in the oracle_status: not_applicable lane.

The ordinary-row baseline and fault-row reports were collected separately from the same checkout. Coverage MCP reports 163/31,278 observed branch outcomes for the selected ordinary row and 91/31,278 for the selected fault row. Its incremental comparison is incomparable because exact baseline detail is incomplete; both reports also lack source/build receipts and test attribution. A focused gap query still identifies unobserved decode_scanlines branches at decode.rs:1583 and decode.rs:1605; the selected 1×1 case does not cover the Adam7 path. No aggregate coverage gain or full-suite coverage result is claimed, and no full coverage campaign was run. Reports: target/release-evidence/coverage-png-sample-buffer-baseline.json and target/release-evidence/coverage-png-sample-buffer-reservation.json.

BMP RLE8 delta crossing the row boundary — 2026-10-16

compression_rle8_rle8_delta_row_boundary adds an input-only Pillow parity case based on the existing 4×2 RLE8 fixture. Its compressed payload contains a delta (dx=5, dy=0), end-of-line, a four-pixel run, and end-of-bitmap; the complete file declares its 1,088-byte size and 10-byte compressed payload. The pinned Pillow 12.2.0 oracle opens and verifies it as a 4×2 palette image and decodes eight zero indices. The selected matrix test passed 1/1. The active matrix now contains 2,243 rows: 1,762 decode and 481 encode rows.

The selected branch report is target/release-evidence/coverage-bmp-rle8-delta-boundary.json. Coverage MCP reports 115/31,278 branch outcomes observed and groups 16 missing branches in decode_rle. Its incremental comparison against .coverage-mcp/local-evidence/20261014/github-ci-613ac4e0/coverage.json is incomparable: both reports are source-unverified, test attribution is unknown, and the baseline branch detail is incomplete. No aggregate coverage gain is claimed; no full coverage campaign was run.

TIFF normal-order byte-aligned 2-bit tile parity — 2026-10-16

The active row decode:tiff:tiled_gray2_byte_aligned_edge adds a normal-order companion to the existing FillOrder=2 tiled 2-bit grayscale case. The pinned input tiled_gray2_byte_aligned_edge.tiff has SHA-256 f3fcb7652e0eda354ec21bee46fbfedbc4c0a47476d5ae9d5147ca382c3cbce7. Pinned Pillow 12.2.0 decodes it as a 16×1 L8 image; its 16-byte pixel reference has SHA-256 d6591e2f9c5c4f4156323d28bb19ac453d1ac5f4d0ede89805b7ce5316e6fc2e. The existing scripts/generate_test_assets.py generator builds it with write_low_depth_tiled_tiff as two 8×1 tiles and checks equal Pillow pixels against the FillOrder=2 counterpart. The input-only parity row passed 1/1 across its selected matrix operations; Rust implementation code is unchanged.

The current fixture matrix contains 2,244 total rows: 1,763 decode / inspect / verify rows and 481 encode rows. Of those, 1,763 decode rows and 449 encode rows are active.

The selected branch report is target/release-evidence/coverage-tiff-gray2-byte-aligned.json and records 156/31,278 observed branch outcomes. At decode.rs:1339, Coverage MCP reports the tail_bits != 0 arm as unobserved for copy_packed_tile_row::<false>, so the byte-aligned false arm is present in this selected report. Both arms of the <true> specialization remain unobserved under this selection. Comparison with the saved local baseline is incomparable because branch detail is incomplete; the reports also lack source/build receipts and test attribution. No aggregate coverage gain or full-suite coverage result is claimed, and no full coverage campaign was run.

AVIF iinf wrong-child-kind parity — 2026-10-16

The active row decode:avif:error_iinf_child_not_infe adds a complete-file malformed-input case for the parse_iinf child-kind rejection. The deterministic generator scripts/generate_avif_iinf_child_kind_fixture.py checks the pinned 3,077-byte baseline.avif source (d4327b7ab11ed8f11d86978258fc04e5505bcfe511ca2c4efa4838c85d226fd2), verifies the sole version-zero iinf entry is an infe box, and changes only its type to free. The output hash is ee95c49866ddcf2bf1fd4f2f3a0e4c1d2c768bb5ccbf8f675555691298225d76. Pinned Pillow 12.2.0/libavif 1.4.1 rejects the complete input as PIL.UnidentifiedImageError: cannot identify image file <bytes>; the public matrix records successful format detection and that normalized error for inspection, verification, decode, and sequence decode.

The current fixture matrix contains 2,245 total rows: 1,764 decode / inspect / verify rows and 481 encode rows. Of those, 1,764 decode rows and 449 encode rows are active.

The selected parity test passed 1/1. Coverage MCP's focused branch query at src/codecs/avif/samples.rs:590 lists only the false arm of child.kind != infe as unobserved, so the selected report records the wrong-child rejection arm. The report target/release-evidence/coverage-avif-iinf-child-wrong-kind.json has SHA-256 1c852014db08a06b706a2bffed3ec63230c032c6070a0fb86616dc6e26412edb and records 77/31,278 observed branch outcomes. Coverage MCP's incremental comparison with .coverage-mcp/local-evidence/20261013/avif-iinf-zero-count/coverage.json is incomparable because branch detail is incomplete and the inventories differ (31,278 versus 31,306). Both reports lack source/build receipts and test attribution. No aggregate coverage gain or full-suite result is claimed; no full coverage campaign was run.

make verify now includes the generator's hash-only --check and passes; the refreshed malformed-input ledger contains 609 classes across eight formats.

JPEG multiscan positive-size AC tail overrun parity — 2026-10-16

The active input-only row baseline_multiscan_ac_pair_tail adds a 172-byte SOF0 4:4:4 JPEG with three single-component scans. Its Y scan places a positive size-eight AC symbol after a run that advances past coefficient 63; the scalar multiscan decoder consumes its amplitude and stores the value at the final coefficient. The pinned Pillow 12.2.0 oracle verifies the input as 8×8 RGB. The input SHA-256 is ab2f907a724ae03917b169c72868ae43dfc9e6d38dece1c5521039bebc5f26f6; the exact 192-byte RGB reference SHA-256 is ef3e84f55ebfea3a4470bedbe9341f5145b718d560f870428ab76bb6dc9f43dc.

The focused public matrix test passed 1/1. It exercises detection, inspection, verification, still decode and sequence decode against Pillow references. The fresh GitHub x86 CI artifact for source commit 7c32909e recorded zero hits for the k >= 64 true arm at src/codecs/jpeg/decode/decode.rs:89; Coverage MCP groups that arm as missing. The extracted CI report is target/release-evidence/coverage-jpeg-x86_64-ci.json (SHA-256 f8423fa474f19658377965edcb1ca63e3b69bf973389e06e34399f11105b6208). The selected local LLVM report records four true-arm and four false-arm hits, and Coverage MCP finds no remaining gap at that location. Its report is target/release-evidence/coverage-jpeg-multiscan-ac-pair-tail.json (SHA-256 0cd67a75fadaa4237422b8a448b72274fcc781fd10b6f690507d2041ce86be07). The baseline and selected reports have different branch inventories (302 and 308), and both lack source/build receipts and test attribution, so their incremental comparison is incomparable. This is bounded selected-path evidence, not an aggregate coverage gain or a full coverage result. No Rust decoder or SIMD code changed.

The current fixture matrix contains 2,246 total rows: 1,765 decode / inspect / verify rows and 481 encode rows. Of those, 1,765 decode rows and 449 encode rows are active. No full coverage campaign was run.

JPEG multiscan invalid DC category parity — 2026-10-16

The active public error row error_baseline_multiscan_dc_category_16 adds a complete 165-byte SOF0 4:4:4 JPEG with three single-component scans. Its first scan contains DC category 16, which is invalid for baseline JPEG. The input baseline_multiscan_dc_category_16.jpg has SHA-256 807a3da9cac05080e6182c047e551652eeee8e94653ef030a4c60775e4c4c4ea. The generator mutates the existing deterministic three-scan fixture; pinned Pillow 12.2.0 verifies the file structure and rejects pixel loading with OSError: broken data stream when reading image file.

The focused public matrix test passed 1/1 for this row. Coverage MCP's selected branch report is target/release-evidence/coverage-jpeg-multiscan-dc-category-16-local.json (SHA-256 b3048e2376faa1a96b4c130653b6d6177540a1c502187c82d51064263ebcdcac). It records 160/31,278 observed branch outcomes. At src/codecs/jpeg/decode/decode.rs:57, Coverage MCP lists only the false arm of dc_cat > 15 as unobserved, so this selected report observes the invalid category arm in scalar decode_block. The previous selected multi-scan AC report shows the complementary arm. The incremental comparison is incomparable because exact branch detail is incomplete; both reports lack source/build receipts and Coverage MCP test attribution. These are selected path observations only, not an aggregate coverage gain or full-suite result.

The current fixture matrix contains 2,255 total rows: 1,774 decode / inspect / verify rows and 481 encode rows. Of those, 1,774 decode rows and 449 encode rows are active. The regenerated malformed-input ledger contains 611 classes across eight formats. The Rust AV1 decoder gained the 12-bit clipped B32 lossless inter path; no SIMD code changed, and no full coverage campaign was run.

APNG sequence-counter exhaustion fault contract — 2026-10-16

fault-contract:png:png_apng_sequence_counter_exhaustion reuses the active decode:png:apng_sequence_controls Pillow fixture, which has five sequence-bearing chunks. Its coverage-only virtual-prefix fault makes the first control consume u32::MAX, then verifies that the following sequence chunk returns ImageError::Malformed for PNG at SequenceDecode with decode sequence: APNG sequence number overflows. The sequence counter now uses an exhausted Option<u32> state, so accepting MAX cannot wrap to zero. The shared runner also retries without injection and compares the result with a fresh sequence decode. The injected outcome remains oracle_status: not_applicable, separate from Pillow parity.

The selected public fault row and the unchanged APNG parity row each passed 1/1. Coverage MCP measured 154/31,280 branch outcomes in the selected report and found no missing branch observation at the exhaustion guard in src/codecs/png/decode.rs:1233; it still reports the independent sequence mismatch arm at line 1238 as uncovered by this selected fault run. The incremental comparison with the saved October 13 baseline is incomparable because exact branch details differ; neither report has source/build receipts or test attribution. No aggregate coverage gain or full-suite result is claimed, and no full coverage campaign was run. Report: target/release-evidence/coverage-apng-sequence-counter-exhaustion.json. The static coverage-origin inventory now records 151 exact cfg(coverage) guards across 26 Rust files; this does not change the historical full-coverage baseline.

APNG inspector sequence-counter exhaustion fault contract — 2026-10-17

fault-contract:png:png_apng_inspection_sequence_counter_exhaustion reuses the active decode:png:apng_sequence_controls Pillow fixture. The coverage-only fault models a valid prefix through u32::MAX before the inspector's next frame-control chunk. It verifies a public ImageError::Malformed for PNG at Inspection with inspect: PNG animation sequence number overflows, then retries img::inspect without injection and compares its metadata with a fresh inspection. The row uses oracle_status: not_applicable; the separate decoder sequence-exhaustion contract remains unchanged.

The selected run included decode:png:apng_sequence_controls, fault-contract:png:png_apng_sequence_counter_exhaustion, and this inspection fault row. The matrix test binary passed. A fault-only selected rerun reported two selected and executed fault contracts, both passing (2/2), with zero failures and oracle=not_applicable. The selected branch report is .coverage-mcp/local-evidence/20261017/png-apng-inspect-selected/coverage.json, SHA-256 c82b8cc6f2b90b1a75f5af5ca9bac0f281a8423c50602ecf875b5dae80c518c2. Coverage MCP found no missing branch observation at the exhaustion guard in src/codecs/png/inspect.rs:195; the independent sequence-mismatch arm at line 200 remains unobserved. The report is source-unverified, has no build ID or recorded revision, and reports test attribution as unknown. These selected results do not establish aggregate coverage or a full-suite result. No full coverage campaign was run.

AV1 partition-context above reservation fault contract — 2026-10-16

fault-contract:avif:avif_partition_context_above_reservation_failure reuses the active decode:avif:baseline Pillow input. A coverage-only one-shot fault requests an impossible capacity for PartitionContexts::new's above buffer. The public decode returns ImageError::Dimensions for AVIF at StillDecode with decode: AVIF AV1 validation failed: unable to allocate AV1 partition context. The shared runner then verifies that an uninjected retry equals a fresh decode. The injected result is oracle_status: not_applicable and stays outside Pillow parity counts.

The selected fault-contract row passed 1/1. Its JSON report is target/release-evidence/coverage-avif-partition-context-above.json, retained for Coverage MCP inspection. No aggregate coverage gain is attributed to this individual case. A later full all-feature local run and its attribution limits are recorded above. The exact coverage-origin inventory now records 152 cfg(coverage) guards across 26 Rust files.

BMP palette-less indexed encoding parity — 2026-10-16

encode:bmp:enc_indexed_missing_palette reuses the 67-byte PNG asset palette_missing_plte.png (SHA-256 6e78b381ae98aa9a5bdb1e50179a74073cdb0d567b2d55c6e48e4b6c8faeb7c3). Pinned Pillow 12.2.0 loads it with PIL.ImageFile.LOAD_TRUNCATED_IMAGES enabled as a 1×1 P image without a palette and preserves sample 00. It saves a 58-byte 8-bit BI_RGB BMP with offset 54, both palette counts zero, and four zero raster/padding bytes; the encoded SHA-256 is 64850622123ceb124c80eca8ee8c8f4a3ec3026580501d9ba44a7c256e5ba747. Pillow reopens the file under the same load setting and preserves the P-mode sample.

The new public row first reproduced a Rust/Pillow mismatch (1,082 bytes versus 58). The BMP encoder now omits the absent palette table and copies indexes unchanged. The decoder admits the corresponding 8-bit BI_RGB layout only for INFO-or-later headers whose pixel offset equals the end of the DIB header; other indexed BMP files retain their existing palette requirements. The reference generator records and restores the row-scoped Pillow load setting for both source and roundtrip images.

The selected all-feature matrix run passed seven rows: BMP decode depth_8, os2_v1, and error_malformed, plus encode enc_indexed_missing_palette, enc_8bit, enc_grayscale, and enc_24bit. Formatting and strict workspace Clippy passed. Coverage MCP's selected report is target/release-evidence/coverage-bmp-no-palette-controls-20261016.json; its queries report no unobserved branch outcomes at the new palette omission predicate and the encoder's optional-palette branch. The report has no source or test receipt, and its incremental comparison with the saved historical full report is incomparable because that report's branch detail is incomplete. No aggregate coverage gain or full-suite claim is made; no full coverage campaign or SIMD change was made.

AVIF wide-I444 mode-2 mixed topology parity — 2026-10-16

The active animated_lossy_wide_i444_mode2_mixed_b128x128 row adds a two-frame 256x256 lossy I444 input with fixed 128-pixel partitions. Only the top-left 128x128 mode-2 inter leaf has one TX64 root split once to TX32; its other three roots and the remaining leaves stay unsplit. No TX32 child splits. The pinned generator double-encodes the input and checks its SHA-256 0e72f7d47e8e83e0a6e13a76a816cb98974cdb2976fff72857901712e2633d61 and both Pillow RGB frame hashes. The complete-file loop observer reports infinite repetition. The selected public row passes exact Pillow parity 1/1.

The selected branch report records the mixed-plan fallback at entropy.rs:7152. In block.rs:57706, one decoder monomorphization observes both topology.is_some() outcomes (8 true and 24 false); the remaining six monomorphizations have no hits in this selected-only run. Coverage MCP reports 3,308/31,296 branch observations for the selected measurement, with source identity unverified and test attribution unknown because no source/build or test receipt accompanies the LLVM report. This is selected-path evidence, not an aggregate coverage gain or full-suite result. Report: target/release-evidence/coverage-avif-mode2-mixed-selected-20261016.json. No full coverage campaign or SIMD change was made.

At this 2026-10-16 checkpoint, the fixture matrix contains 2,262 total rows: 1,779 decode / inspect / verify rows and 483 encode rows. Of those, 1,779 decode rows and 451 encode rows are active; 32 planned encode rows remain.

AV1 segment-map reservation fault contract — 2026-10-17

The active decode:avif:mixed_lossless_clipped_b32_i420_60x60 fixture is a 321-byte still AVIF whose key frame enables segmentation without temporal segmentation. Pinned Pillow 12.2.0 decodes it to 60×60 RGB8 pixels (10,800 bytes). Its source SHA-256 is ea8d484e1cde6819d1c98a64ff58db1bec7937fd929a835cf9c13c2da8430d1b; the Pillow pixel reference SHA-256 is a3b4b27575bef66a5eb058529aee5cac545d4d43a9bace07421cea066b4d59b8.

fault-contract:avif:avif_segment_map_reservation_failure reuses that public parity input to reach SegmentMap::new. Its coverage-only hook forces try_reserve_exact to reject an impossible capacity before the map is initialized. The public result is ImageError::Dimensions with format: Some(Avif), message decode: AVIF AV1 validation failed: unable to allocate AV1 segment map, stage: Some(StillDecode), offset: None, and identity: None. The shared fault runner checks the structured result, then confirms retry succeeds and matches a fresh decode. oracle_status: not_applicable keeps the injected failure separate from Pillow parity.

The selected parity row and selected fault-contract row each passed 1/1. Coverage MCP's branch-gap query for src/codecs/avif/av1/entropy.rs:855 returned zero missing groups for this selected report. The incremental comparison with coverage-main-full-20261016.json was incomparable because its baseline detail does not match the reported totals; neither report has source/build receipts or test attribution. No aggregate coverage gain is claimed and no broad codec or full-coverage campaign was run. Report: target/release-evidence/coverage-avif-segment-map-fault-current.json. The static coverage-origin inventory now records 161 exact cfg(coverage) guards across 26 Rust files. The current fixture matrix contains 2,269 total rows: 1,786 decode / inspect / verify rows and 483 encode rows. Of those, 1,786 decode rows and 451 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 45 rows.

AVIF 10-bit I444 alpha plane-length fault contract — 2026-10-17

fault-contract:avif:avif_10bit_i444_alpha_plane_length_mismatch reuses the active decode:avif:high_bitdepth_still_10bit_444_alpha_lossy_16x16 Pillow input. Its cfg(coverage) hook shortens only the full-resolution alpha plane before the converter's plane-length guard. The existing Option failure path returns ImageError::Unsupported with AVIF, NotImplemented, and StillDecode, with diagnostic decode: AVIF input is outside the supported pure-Rust decode subset. The contract checks that exact structured result, then confirms an uninjected retry equals a fresh decode. The injected outcome uses oracle_status: not_applicable and remains separate from Pillow parity.

The selected fault-contract case passed 1/1. Coverage MCP's selected branch report, target/release-evidence/coverage-avif-10bit-i444-alpha-mismatch-20261017-final.json, shows the alpha-plane mismatch outcome at decode.rs:948 was observed. Its function query still lists four missing branch outcomes: the split_last empty-plane path, true outcomes for the preceding U/V length checks, and invalid sample-depth rejection. The incremental comparison with target/release-evidence/coverage-avif-10bit-444-alpha-16x16.json is incomparable because baseline branch detail does not reconcile with totals; both reports lack source/build receipts and test attribution. No aggregate coverage gain or full-coverage claim is made, and no full coverage campaign or SIMD change was run.

AVIF 10-bit I444 U/V length and sample-domain fault contracts — 2026-10-17

The target-only selectors fault-contract:avif:avif_10bit_i444_u_plane_length_mismatch, fault-contract:avif:avif_10bit_i444_v_plane_length_mismatch, and fault-contract:avif:avif_10bit_i444_alpha_invalid_sample reuse the active decode:avif:high_bitdepth_still_10bit_444_alpha_lossy_16x16 Pillow input. Coverage-only hooks independently shorten the U or V plane, or inject an out-of-range sample into the helper's existing sample validation. Each case asserts the established ImageError::Unsupported / NotImplemented / StillDecode result and exact diagnostic, then confirms that a clean retry matches a fresh decode. Their oracle status is not_applicable; none is reported as Pillow parity.

The selected three-case fault runner passed. Coverage MCP's branch query on target/release-evidence/coverage-avif-10bit-i444-three-faults-20261017.json no longer lists the U-plane, V-plane, or invalid-sample true outcomes as gaps. It lists three remaining outcomes in this helper: the alpha-fault hook, the alpha-plane length guard, and the output-length guard. A same-source selected alpha control passed in target/release-evidence/coverage-avif-10bit-i444-alpha-control-20261017.json. The incremental comparison between those selected reports was incomparable because branch detail was incomplete or differed; source/build receipts and test attribution are absent, so no additive coverage gain is claimed.

The output-length guard at decode.rs:1004 remains a coverage limitation: the helper reserves exactly four bytes per sample and emits one RGB triplet plus one alpha byte for each sample. Injecting a shortened local output would test an artificial private state rather than a reachable decode contract.

JPEG baseline post-scan COM parity — 2026-10-17

Added decode:jpeg:baseline_444_single_scan_trailing_com, a Pillow 12.2.0 parity row using the deterministic 8×8 baseline 4:4:4 input with a valid COM segment inserted between the entropy scan and EOI. The fixture SHA-256 is cf8e4443dcff4df7858b6573664aa3fe73dd401827aa293d0eca84eb0667f666; its 192-byte RGB reference SHA-256 is 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f.

The first focused run exposed a public decode failure: the single-scan fast boundary check rejected COM as a non-DQT marker, then generic entropy extraction treated COM as entropy and returned no segment. The parser had already recorded the end of scan entropy. The decoder now reuses that boundary for a single baseline scan when parsed COM or DQT segments precede EOI. This keeps entropy extraction bounded at the scan and avoids additional pixel processing. The selected matrix row passes.

The selected LLVM report is target/release-evidence/coverage-jpeg-postscan-com-selected.json. Coverage MCP reports 271/31,378 selected branch outcomes; its function query shows only the input-rejection arms of the helper remain unobserved for this selection. The incremental comparison with target/release-evidence/coverage-main-full-20261016.json is incomparable because the baseline branch detail does not reconcile with its totals. Both reports lack source/build receipts and test attribution, so no aggregate coverage gain is claimed.

The current fixture matrix contains 2,273 total rows: 1,790 decode / inspect / verify rows and 483 encode rows. Of those, 1,790 decode rows and 451 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 47 rows.

JPEG entropy-boundary regression guard — 2026-10-17

GitHub CI #658 exposed two regressions in the initial COM fix on x86-64 and Windows: a fill byte before an RST marker shortened entropy extraction, and an unexpected FF02 marker after entropy was accepted by the fast path. The boundary helper now walks the post-scan tail and only accepts well-formed COM and DQT segments. Restart markers and other marker codes fall back to generic entropy extraction, which preserves RST splitting and malformed-marker rejection.

The selected matrix run passed the COM parity case, the restart-marker-fill case, and the malformed unexpected-marker case. Its LLVM report is target/release-evidence/coverage-jpeg-tail-regressions.json; Coverage MCP reports 367/31,392 branch outcomes for this selection. Its source receipt and test attribution are absent, and comparison with the historical full report is incomparable because the baseline detail does not reconcile with its totals. This is selected-run evidence only; it does not establish aggregate coverage change.

BMP DIB header parity — 2026-10-17

Added three full-file BMP parity cases: reject unknown DIB size 41 and retain Pillow-supported INFO-family sizes 52 and 56. The fixtures derive from a 1×1, 24-bit BMP and adjust the DIB size, pixel offset, and file size together. Pillow 12.2.0 reports Unsupported BMP header type (41) for the 41-byte fixture; the successful 52- and 56-byte references decode to the same 1×1 RGB pixel with SHA-256 25ff297dd78c82468376d6e2c93b672b49c01fb125a2812b94f8f9693a51b67e. The 41-byte input SHA-256 is 331c249550844cee20e0230baaceecbe2f8b58f2ddacbfefe5c8bf9b0f680295.

Decoder and inspector now share an explicit check for Pillow's supported Windows INFO-family DIB sizes (40, 52, 56, 64, 108, and 124). This check runs once while reading the header; pixel loops are unchanged. The selected matrix run passed all three rows. Coverage MCP reports 95/31,392 observed branch outcomes in target/release-evidence/coverage-bmp-dib-variants-selected.json. Source and test receipts are absent, and the comparison with the historical full report is incomparable because its branch detail does not reconcile with totals. No aggregate coverage gain is claimed.

PNG zero-width encoder parity — 2026-10-17

Added the active public row encode:png:enc_error_zero_width, using the existing rgb.png source transformed to dimensions [0, 1]. The pinned Pillow 12.2.0 oracle reports ValueError: cannot write empty image; the Rust encoder reports the structured Dimensions error. The PNG reference generator added the case to the input index and coverage matrix without adding a binary asset. The focused selected row passed 1/1. The existing zero-height control also passed 1/1.

Coverage MCP reports 120/31,392 branch observations for target/release-evidence/coverage-png-zero-width-20261017.json. Its query for src/types/mod.rs:2727 identifies the missing outcomes in DecodedImage::validate; the width predicate's true outcome is absent from the missing branch list, so the zero-width input reaches that path. Comparison against both the historical full report and the selected zero-height control is incomparable because report identities and branch detail do not reconcile. The reports have no source/build receipts or test attribution, so no aggregate coverage gain is claimed. No full coverage campaign or Rust source change was made.

The current fixture matrix contains 2,274 total rows: 1,790 decode / inspect / verify rows and 484 encode rows. Of those, 1,790 decode rows and 452 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 47 rows.

TIFF big-endian Gray16 Predictor=2 parity — 2026-10-17

Added the active public row decode:tiff:compression_deflate_be_unsigned16_wraparound_predictor. The 4×2 Deflate TIFF is unsigned 16-bit grayscale, big-endian, and uses horizontal Predictor=2. Its rows include modulo-65,536 underflow and overflow deltas. The input SHA-256 is 465f00da37c237c0b94fd6537a6cd2888c1bb1aa88c95821dcda4f0c98bd36a8. Pinned Pillow 12.2.0 returns mode I;16B and 16 reference bytes with SHA-256 b6e268aab4491c42fd095133f3ea44c6dd1c4c455c027a7571943f6e1c93259a.

The public ImageMode::L16 transfer contract stores samples little-endian and the decoded source descriptor retains the TIFF's big-endian provenance. The sample values have equal high and low bytes, so Pillow's raw I;16B reference also matches the public little-endian L16 bytes exactly. Their predictor deltas still include non-symmetric 0xfeff and 0x0102 values, so correct big-endian delta reconstruction is required for the sample comparison to pass. The selected public LLVM coverage run passed 1/1. Its report records one execution of reverse_horizontal_predictor_with_token and observes the 16-bit predictor path. The 1,024-byte checkpoint outcome is not exercised by this small fixture. Coverage MCP's incremental comparison could not complete because its local daemon was unhealthy. The saved full baseline also lacks source/build receipts and test attribution, so no aggregate coverage claim is made.

The current fixture matrix contains 2,275 total rows: 1,791 decode / inspect / verify rows and 484 encode rows. Of those, 1,791 decode rows and 452 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 47 rows.

TIFF big-endian Gray16 LZW Predictor=2 parity — 2026-10-17

Added active public row decode:tiff:compression_lzw_be_unsigned16_predictor. The fixture is a 4×2 big-endian unsigned Gray16 TIFF using LZW compression and horizontal Predictor=2. The generated LZW stream contains the predictor bytes as literal codes; exact Pillow decoding validates the TIFF LZW stream and predictor reconstruction together. The input SHA-256 is 3599d2593242e2176e074e192728c47b4c0fe22ca57ed1bf58533affcb93cee8. Pinned Pillow 12.2.0 reports mode I;16B and 16 output bytes with SHA-256 b6e268aab4491c42fd095133f3ea44c6dd1c4c455c027a7571943f6e1c93259a.

The palindromic samples preserve exact raw-byte parity between Pillow's big-endian mode and the public little-endian L16 transfer representation; the Predictor=2 deltas still exercise byte-asymmetric wraparound values 0xfeff and 0x0102. The selected public parity row passed 1/1. Coverage MCP's incremental comparison against the saved full report is incomparable: branch inventories differ (31,282 versus 31,392) and source/build receipts are absent. A selected-tests comparison against the matching big-endian Deflate case is limited and observes 32 additional branch locations, including TIFF LZW decode paths, but both reports have unverified source identity and unknown test attribution. These coordinates do not establish an aggregate coverage gain.

The current fixture matrix contains 2,277 total rows: 1,793 decode / inspect / verify rows and 484 encode rows. Of those, 1,793 decode rows and 452 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 49 rows.

WebP lossless options — 2026-10-17

Added ten active Pillow-backed WebP encode rows for quality 0/100, method 0, partial and transparent alpha, method 5 quality boundaries, and method 6. The lossless path now forwards its quality and method options into the VP8L encoder. A histogram clamp correction matches libwebp's single-tile rule for small power-of-two frames. The exact selected option rows passed after reference generation.

Coverage MCP identified the large-image histogram-growth path as an open gap. The attempted method-5 wide high-entropy row differed from Pillow by eight encoded bytes and was removed. A passing method-4 sampling fixture did not exercise the growth body. Focused LLVM reports have unverified source identity and unknown test attribution; they are useful for locating code only and do not establish aggregate coverage gains.

The current fixture matrix contains 2,287 total rows: 1,793 decode / inspect / verify rows and 494 encode rows. Of those, 1,793 decode rows and 462 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 49 rows.

AVIF generic 12-bit I444 alpha length guard — 2026-10-17

Added the target-only fault-contract row fault-contract:avif:avif_12bit_i444_generic_alpha_plane_length_mismatch. It reuses the active Pillow-backed input decode:avif:high_bitdepth_still_12bit_444_alpha_9x9. A coverage-only hook shortens a present full-resolution alpha plane by one sample immediately before the generic plane-length guard. The shared runner checks the structured Unsupported / NotImplemented result at StillDecode and then confirms that a retry equals a fresh decode. The injected state is target-only (oracle_status: not_applicable) and is not counted as Pillow parity.

The selected fault-contract test passed 1/1, and the selected Pillow-backed source parity control passed 1/1. Their branch reports are target/release-evidence/coverage-avif-i444-generic-alpha-mismatch-verified-20261017.json and target/release-evidence/coverage-avif-i444-generic-alpha-control-20261017.json. The selected fault report records the generic alpha-length predicate as one true and two false branch outcomes across the injected decode, retry, and fresh decode. Coverage MCP could not load because its local daemon did not become healthy; there is no MCP gap or incremental comparison result for this run, and no aggregate coverage gain is claimed.

The static coverage-origin inventory now records 165 exact cfg(coverage) guards across 26 Rust files. The parity fixture matrix remains at 2,277 rows (1,793 decode / inspect / verify and 484 encode); the separate target-only fault lane now contains 49 rows.

AVIF 10-bit I444 alpha output reservation fault — 2026-10-17

Added the target-only fault-contract row fault-contract:avif:avif_10bit_i444_alpha_output_reservation_failure. It uses the active Pillow-backed input decode:avif:high_bitdepth_still_10bit_444_alpha_lossy_16x16 and injects a failure at the AVIF 10-bit I444 alpha RGBA output reservation. The public contract is a structured Dimensions error at StillDecode; a subsequent decode must succeed and equal a fresh decode. This deterministic allocation failure is target-only (oracle_status: not_applicable) and is not counted as Pillow parity. A real try_reserve_exact failure now preserves the same structured allocation error.

The selected target-only fault-contract test passed 1/1, and the selected Pillow-backed AVIF parity row passed 1/1. A grouped fault-control run also passed for the new reservation case and the four existing I444-alpha unsupported cases; its report is target/release-evidence/coverage-avif-10bit-i444-alpha-fault-controls-20261017.json. The first two reports are target/release-evidence/coverage-avif-10bit-i444-alpha-output-reservation-20261017.json and target/release-evidence/coverage-avif-10bit-i444-alpha-parity-20261017.json. Coverage MCP's focused branch query finds the new reservation and error outcomes observed at the updated conversion lines. The selected report still lists other fault-injection branches in the conversion helper as missing. Source/build identity is unverified and test attribution is unknown, so these reports are coordinate evidence only; no aggregate coverage gain is claimed.

The current fixture matrix contains 2,277 total rows: 1,793 decode / inspect / verify rows and 484 encode rows. Of those, 1,793 decode rows and 452 encode rows are active; 32 planned encode rows remain. The separate target-only fault lane contains 48 rows.

AVIF generic 12-bit I444 RGB output reservation fault — 2026-10-17

Added fault-contract:avif:avif_12bit_i444_generic_rgb_output_reservation_failure using the active Pillow-backed source row decode:avif:high_bitdepth_still_12bit_444_alpha_9x9. In coverage builds, the one-shot fault point supplies usize::MAX as the reservation length so try_reserve_exact itself reaches the same typed Dimensions error mapping used for a real reservation failure. The retry contract then verifies that an uninjected decode equals a fresh decode. Normal builds reserve the exact output length, and allocation failure remains reported at StillDecode. The injected fault is target-only with oracle_status: not_applicable; the source parity row remains independently Pillow-backed.

The selected fault-contract row passed 1/1 under coverage instrumentation. The selected Pillow parity row passed 1/1 both under coverage instrumentation and in a normal all-feature build. Reports:

  • target/release-evidence/coverage-avif-12bit-i444-generic-rgb-output-reservation-20261017.json (SHA-256 0fdb2f13f84756b5cee435730e2b0555daf6a90c360021c072d92a4a22480d15)
  • target/release-evidence/coverage-avif-12bit-i444-generic-rgb-parity-20261017.json (SHA-256 17d701a1015f4cb74011a93f0643f48f6a724b7ce8cad9a645c769a6f8415d40)
Selected report Lines Branches Functions Regions
Fault contract 10,302 / 136,668 1,629 / 31,444 667 / 8,735 13,045 / 211,995
Pillow parity 11,526 / 136,668 1,832 / 31,444 792 / 8,735 14,851 / 211,995

Coverage MCP's selected-tests branch comparison reports two newly observed coordinates in convert_full_resolution_rgb: the injected reservation arm and the try_reserve_exact(...).is_err() arm at lines 927 and 936. Its focused query found no missing branch outcomes at line 936. Both reports have unverified source/build identity and unknown test attribution, so this is selected coordinate evidence only. The incremental comparison with the saved 2026-10-16 full report is incomparable because its detailed branch inventory does not reconcile with its totals. No aggregate coverage gain or full-suite coverage claim is made.

The coverage-origin inventory now records 166 exact cfg(coverage) guards across 26 Rust files. The parity matrix remains at 2,287 rows (1,793 decode / inspect / verify and 494 encode); its separate target-only fault lane contains 50 rows.

AVIF generic 12-bit I444 U/V and invalid-sample fault contracts — 2026-10-17

Added target-only rows for generic I444 U-plane length mismatch, V-plane length mismatch, and an out-of-range sample. They reuse the active Pillow-backed source row decode:avif:high_bitdepth_still_12bit_444_alpha_9x9. The U/V faults shorten their respective slices inside convert_full_resolution_rgb, after container validation, so each short-circuit predicate is reached independently. The invalid-sample hook appends u16::MAX to the same iterator consumed by the real SampleDepth::validate guard. All hooks are compiled only with cfg(coverage); the shared runner checks the public Unsupported / NotImplemented result at StillDecode and verifies a clean retry against a fresh decode. These states are target-only (oracle_status: not_applicable) and remain separate from Pillow parity.

The selected fault-contract run passed 1/1 for all three rows. The selected Pillow parity control passed 1/1 under coverage instrumentation. Reports are target/release-evidence/coverage-avif-i444-generic-guards-20261017.json and target/release-evidence/coverage-avif-i444-generic-rgb-control-20261017.json. Coverage MCP found the U, V, and sample-validation true arms missing in the control report, and no missing branch outcome at their source lines in the fault report. A selected-tests comparison reported six newly observed branch coordinates, but is limited because source/build identity and test attribution are unverified. Incremental union is incomparable because the selected report branch detail does not reconcile with aggregate totals. No aggregate coverage gain or full-suite coverage claim is made.

The parity matrix remains at 2,287 rows (1,793 decode / inspect / verify and 494 encode); the target-only fault lane now contains 54 rows. The coverage-origin inventory records 171 exact cfg(coverage) guards across 27 Rust files.

AV1 super-resolution geometry and chroma allocation faults — 2026-10-19

Added three target-only fault-contract rows against the active Pillow-backed AVIF sequence input decode:avif:animated_lossy_inter_420_superres_sgr_8bit_160x56: decoded-leaf geometry mismatch, chroma U output-plane reservation failure, and chroma V output-plane reservation failure. Each verifies the public sequence-decode error and a clean retry. The injected conditions are compiled only with cfg(coverage) and are recorded with oracle_status: not_applicable; they do not count as Pillow parity. The existing source row and luma/position fault contracts remain controls.

The selected run passed the AVIF source parity row and all five selected fault contracts (6/6 total). Its report is target/release-evidence/selected/20261019T_av1-superres-fault-contracts-final.json. Coverage MCP reports the selected report's source/build identity as unverified and test attribution as unknown, so the result establishes test execution but not an aggregate coverage gain. Its focused branch query still lists uncovered branch coordinates in upscale_subsampled_leaf; those coordinates require a later source-and-measurement-matched investigation before making a coverage claim.

The parity matrix remains at 2,287 rows (1,793 decode / inspect / verify and 494 encode); its separate target-only fault lane now contains 65 rows. The coverage-origin inventory records 184 exact cfg(coverage) guards across 27 Rust files.

AVIF clipped mixed-lossless inter B32 parity — 2026-10-20

Added the public Pillow parity case decode:avif:animated_mixed_lossless_inter_b32_i420_60x60. Its 60×60 I420 two-frame animation has a frame-1 inter B32 at the bottom-right, clipped to a 28×28 visible extent. The frame uses both qindex-zero lossless and lossy segments with a spatial segment map update. The deterministic input is tests/fixtures/input/images/avif/animated_mixed_lossless_inter_b32_i420_60x60.avif (1,083 bytes; SHA-256 618e40d92c2dd80005f841b5af4907e8f328512960621c6f1eb7e267c24b23ce). Pinned Pillow 12.2.0 produced two 10,800-byte RGB frame references with SHA-256 a3b4b27575bef66a5eb058529aee5cac545d4d43a9bace07421cea066b4d59b8 and 6b6f92c82d4962e2f59502cd76f454527f3a213fafa10130620e601812aa918c.

The selected make coverage-selected parity run passed 1/1 for this row. Its report is target/release-evidence/selected/avif-clipped-mixed-inter-b32-20261020.json (SHA-256 c3db40108516a8db2f4c57b3241949671e944bb83da562b5e2812b6df4865824), and the local run receipt records source_changed_during_run: false. Coverage MCP reports 3,070 / 32,044 branches covered and groups the largest missing AV1 entropy observations under validate_complete_lossy_420_partition, decode_inter_transform_size, and decode_inter_leaf. MCP source/build identity remains unverified and test attribution is unknown, so these are coordinate-only gaps and do not establish a coverage gain. The incremental comparison with target/release-evidence/coverage-main-full-20261020.json is incomparable because exact branch detail in the baseline does not reconcile with its reported totals. No aggregate coverage gain is claimed.

An already-started selected run of the existing 64×64 companion row also passed 1/1, but its receipt detected a source change during execution; that report is excluded from comparisons.

AVIF per-tile CDEF active-map reservation fault contract — 2026-10-20

fault-contract:avif:avif_tile_cdef_active_map_reservation_failure reuses the active decode:avif:multitile_color_split_groups Pillow input. Its coverage-only hook forces the per-tile CDEF active-map reservation to fail. The selected target-only contract passed 1/1 with an AVIF StillDecode Dimensions error and the exact message decode: AVIF AV1 validation failed: unable to allocate AV1 CDEF active map. Retry output matches a fresh uninjected decode. The case remains oracle_status: not_applicable and is excluded from Pillow parity counts.

The selected report is target/release-evidence/selected/avif-tile-cdef-active-map-reservation-20261020.json (SHA-256 030816355baa3a0fd76fd5d85dd2baf5ab2c14622deb271d773412dc570ef0f9). Its local receipt records source_changed_during_run: false. Coverage MCP's branch query at entropy.rs:11343 returned no missing branch locations for the active-map hook in this selected report. Source/build identity remains unverified and test attribution is unknown; no aggregate coverage gain is claimed.

TIFF separate-planar YCbCr subsampling error parity — 2026-10-20

Added decode:tiff:ycbcr_separate_subsampling_unsupported_pair_lzw_1x1 using the complete 253-byte LZW TIFF tests/fixtures/input/images/tiff/ycbcr_separate_subsampling_unsupported_pair_lzw_1x1.tiff (SHA-256 7c8a656e6d7a72c19a284b19260f5bf021f406526a17606f4f36bfaa96426905). The fixture changes only tag 530 from (1, 1) to (2, 2) in a separate-planar file. Pinned Pillow 12.2.0 opens and verifies the image, then reports builtins.OSError: decoder error -2 when pixels are loaded. The selected public parity case passed 1/1 and matched the expected TIFF malformed error contract.

The selected report is target/release-evidence/selected/tiff-separate-ycbcr-unsupported-pair-20261020.json (SHA-256 75d3297b5ac77da0568eb9c3cf0fce33943776ae3990e0b450e50e5a4ef57860). Its local receipt records source_changed_during_run: false. Coverage MCP queried src/codecs/tiff/decode.rs:317; its report remains source-unverified and does not support aggregate or regression claims. The exact branch comparison with target/release-evidence/coverage-main-full-20261020.json is incomparable because the saved baseline's detailed branch observations do not reconcile with its reported totals.

Token-aware WebP method-0 run-cap parity — 2026-10-20

Added encode:webp:enc_lossless_method_0_run_cap_token using the existing 4,356×1 PNG run-cap source tests/fixtures/input/images/png/webp_lossless_run_cap_4356x1.png (SHA-256 038d4a47bb2b7f22b62eaac823a897c74607b20ee0ab6999e30b5dc84f6a1a93). The new row calls encode_with_token with a fresh non-cancelled token on the 4,096-pixel repeated run, exercises cancellation checkpoints, and matches the same 186-byte Pillow output as the existing non-token row. The selected case passed 1/1 and re-decoded to the expected 4,356×1 RGB pixels.

The selected report is target/release-evidence/selected/webp-lossless-run-cap-token-20261020.json (SHA-256 5915498715e1c2e1e7271885fdd02b4dcce0eec2c963db1538c0bf2b067fc490). Its local receipt records source_changed_during_run: false. Coverage MCP's query at backward_refs.rs:241 returned no missing branch locations for the token checkpoint call, while the run-check and cap conditions at lines 240 and 244 still have candidate gaps in other monomorphizations. MCP source/build identity remains unverified and test attribution is unknown; no aggregate coverage gain is claimed.

The same selected report for the existing WebP run-cap case and three GIF median-cut parity rows passed 4/4. Their exact Pillow outputs were unchanged. Coverage MCP still reports an unobserved split > 0 outcome in GIF's median tie fallback; the valid median-cut rows keep each candidate box nonempty, so that remaining state is not represented as Pillow behavior.

The current fixture matrix contains 2,619 total rows: 2,091 decode / inspect / verify rows and 528 encode rows. Of those, 2,091 decode rows and 497 encode rows are active; 31 planned encode rows remain. The separate target-only fault lane contains 67 rows. The coverage-origin inventory records 213 exact cfg(coverage) guards across 28 Rust files.

JPEG baseline grayscale nonzero SOS spectral-start parity — 2026-10-26

Added decode:jpeg:grayscale_sampling_420_17x9_sos_ss_nonzero. Its maintained generator starts with the deterministic 17×9 grayscale 4:2:0 input and changes only the baseline SOS Ss byte from zero to one. The complete 468-byte input has SHA-256 52dbda00c3f20563251d3db1f4ec77debe55b90fc8838dce9bfee05e5730e5d0. Pinned Pillow 12.2.0 accepts the input and returns the same 17×9 L pixels as the zero-Ss source: 153 bytes with SHA-256 6cb8bf5ca5f3ecb5e63af750426a1af7823ef95743d030651deb9e7b9366728c. The selected public parity case passed 1/1.

The selected report is .coverage-mcp/local-evidence/selected/jpeg-gray-spectral-start-20261026/coverage.json (SHA-256 eeb0c61f1fe34f8299909c756dc70050cce65ed3435ee9faf99f4b364852ac8f). The active LLVM function instance records four true observations and zero false observations for scan.ss != 0 at src/codecs/jpeg/decode/decode.rs:2676; the full baseline had zero true observations. Coverage MCP lists duplicate zero-execution function instances for this location, and its incremental comparison is incomparable because baseline branch details do not reconcile with its totals. MCP source identity is unverified and test attribution is unknown, so no aggregate coverage gain is claimed.

JPEG grayscale SOS spectral-end and approximation parity — 2026-10-26

Added three public Pillow parity rows for grayscale 4:2:0 JPEGs derived from the deterministic 17×9 source: Se=62, Ah=1/Al=0, and Ah=0/Al=1. The generator changes only the corresponding SOS byte. Pinned Pillow accepts all three inputs and returns the same 153-byte L pixel output as the source (SHA-256 6cb8bf5ca5f3ecb5e63af750426a1af7823ef95743d030651deb9e7b9366728c). The three new public parity cases passed 3/3; the combined selection including the earlier nonzero-Ss row passed 4/4.

The selected LLVM report is .coverage-mcp/local-evidence/selected/jpeg-sos-boundary-fields-merged-main-20261026/coverage.json (SHA-256 2d10a141a5273a83ff5f179e9a21709f148e373dfcd1d912f5a8477900573084). Its active grayscale direct-path function instance recorded true outcomes for scan.ss != 0 (4 true, 9 false), scan.se != 63 (3 true, 6 false), scan.ah != 0 (3 true, 3 false), and scan.al != 0 (3 true, 0 false) at decode.rs:2676–2679. These are selected-case counters, not full-suite totals. The earlier full LLVM report recorded 0 true / 74 false for each guard.

Coverage MCP marks this report's source unverified and test attribution unknown. Its incremental comparison with the full baseline is incomparable because the baseline branch details do not reconcile with reported totals; no aggregate coverage gain is claimed. No Rust source or unit tests were added.

JPEG baseline grayscale empty-entropy parity — 2026-10-26

Added decode:jpeg:grayscale_sampling_420_17x9_empty_entropy. Its maintained generator starts from the deterministic 17×9 grayscale 4:2:0 JPEG and removes only the entropy payload, leaving a complete SOS header followed immediately by EOI. The generator is now part of make verify, which checks the full fixture family for deterministic regeneration. The complete 330-byte input has SHA-256 142f0ed4c9dc5dc0210a866d14702644f8dc5ae756b9bd4442eba518a8089afc. Pinned Pillow 12.2.0 accepts it and returns 153 L bytes with SHA-256 563114a366c030ebb8171aa3a92559ddbb650cebcee185eaa10c9bae576c44c5. The selected public parity case passed 1/1.

The selected LLVM report is .coverage-mcp/local-evidence/selected/jpeg-gray-empty-entropy-20261026/coverage.json (SHA-256 da0b989df51a88089ce8dff61e90300ac6ec6da304afb9f5cdd4c85fbbd77609). The active grayscale direct-path function recorded four true observations and no false observations for scan.entropy_start == scan.entropy_end at src/codecs/jpeg/decode/decode.rs:2681. This confirms the edge input reaches the empty-entropy guard. Coverage MCP reports the opposite arm as missing in this one-row selection; the existing all-JPEG selected run recorded 60 false observations. MCP source identity remains unverified and test attribution is unknown, so no aggregate coverage gain is claimed.

JPEG trailing DHT length-one parity — 2026-10-26

Added decode:jpeg:baseline_444_single_scan_trailing_dht_length_one, a complete JPEG whose trailing DHT marker declares the invalid one-byte segment length. The deterministic generator replaces the anchored trailing COM in the 8×8 baseline image. Pillow 12.2.0 verifies the file structurally and reports OSError: broken data stream when reading image file during pixel decoding; the selected Rust parity row passes with the same malformed result. The input SHA-256 is ce200aef72bb9a259f48cf9f154a51ca8ba16280601b39c7076c8c4c6df07b0a.

A clean full make coverage run on origin/main at 0d72fbda5757d1ff878bfeaa9d9d56d62d3110c3 passed all executed tests and reported 67.2685% lines, 58.0959% branches, 58.5237% functions, and 66.1997% regions. Its report is .coverage-mcp/local-evidence/full-20261026-main/coverage.json (SHA-256 552996f85421077b702606d73e00d71ef2943b724c5f68a665c27306bb312931). The full report had no true outcome for the segment_length < 2 branch at src/codecs/jpeg/decode/decode.rs:2900. The exact selected run passed 1/1 and its receipt records three true outcomes for that branch, with no source or fixture change during execution. Its report is .coverage-mcp/local-evidence/selected/20261025T213051.396026Z-4fd74cd709074907b76d0e5e0dfb41ca/coverage.json (SHA-256 97f41f835b3b1d5030c96f032235c4c3e7f465cf5084ecf3b90a13d13d237ccb).

Coverage MCP could not provide a grouped or incremental result: its shared daemon did not become healthy at 127.0.0.1:59471. The retained LLVM report and local receipt support this one source-bound case observation; no MCP snapshot or aggregate coverage gain is claimed. No Rust source or unit tests were added.

WebP two-node Huffman color-cache lookahead parity — 2026-10-26

Added decode:webp:lossless_vp8l_two_node_cache_peek. Its maintained generator writes a 4×1 RGB VP8L stream with a one-bit color cache and a dynamic green tree containing only the one-bit symbols 280 and 281. The code sequence 280, 280, 280, 281 makes lookahead select both leaves in HuffmanTree::peek_symbol. The 66-byte input has SHA-256 388dc731d98c2f58a7e0842ee1efaeff168047f6a336539a29fbbc8e22001f19. Pillow 12.2.0 returns twelve black RGB bytes with SHA-256 15ec7bf0b50732b49f8228e07d24365338f9e3ab994b00af08e5a3bffe55fd8b; the selected public parity row passes. The independent VP8L parser reports a one-bit cache, four lookups, and both cache indices.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261026T080421.416756Z-7e5ea112674c4bd4af32ee11130c7622/coverage.json (SHA-256 5b76ebfcaf47b835f62b7014119afb8fbb77d1e5f4f40bb168f2b780c3cdab60). Its source-hashed local receipt records three observations for each branch outcome at src/codecs/webp/native/huffman.rs:505; the preceding full WebP selection recorded zero for both outcomes. The report is selected-case evidence rather than a Coverage MCP snapshot or an aggregate coverage claim. No Rust runtime code or unit tests were added.

AV1 lossy intra I420 super-resolution parity — 2026-10-26

Added the public Pillow parity row decode:avif:superres_actual_upscaled_i420_no_restoration_17x17. It retains the existing 17x17 full-range 8-bit I420 input shape and denominator-9 super-resolution, with AV1 restoration disabled. The pinned fixture generator checks both byte-identical encodes, AV1 geometry, absent restoration on all three planes, and Pillow 12.2.0 RGB pixels. The input SHA-256 is 175f4eed6919458cd0f3af455f20e6a0be83bfd059b2e63e745ad8fab3e46c35; the 867-byte RGB reference SHA-256 is 36b2cbf4958b72a92a936b63d8b905bfd49dfb49b18511cc01723e880576b57b. The selected public parity case passed 1/1.

Coverage MCP previously identified the unobserved true arm at src/codecs/avif/av1/entropy.rs:10614 in the full report for source revision 3d918164137833338d5272430b17e224ceb4ea40. The exact selected LLVM report records 3 true and 0 false observations for that arm; the full baseline recorded 0 true and 166,368 false observations. The selected report is .coverage-mcp/local-evidence/selected/avif-superres-i420-intra-no-restoration-20261026/coverage.json (SHA-256 8ab75d7737b8becd18f26c4179e84ea225889e508155f608e8e39400230e8bf4). Its local receipt records unchanged source and fixtures during execution. This establishes the selected branch hit, not a refreshed full-suite percentage or a Coverage MCP incremental snapshot. No Rust source or unit tests were added.

AV1 lossless qmatrix sequence parity — 2026-10-26

Added active row decode:avif:animated_lossless_inter_420_qmatrix_level15_qindex0_16x64. The maintained generator reproduces a two-frame 16x64 8-bit I420 AVIF sequence with pinned libavif 1.4.1/libaom 3.13.2, qindex zero, qmatrix level 15 on all planes, and all-lossless key/inter frames. The 6,144-byte input SHA-256 is b76924ec8cf9fa01ad27e48dec5990332b089d75460fa7bf37d9fa00108100de; Pillow 12.2.0 reference frame hashes are 44c3002ad58c2b063ac9c560c8baf279052e13d007eaeb84fef33c77a81b9d39 and e121e6212ae783e1d2a9c83c99f0fe931df1682b045e772cce7f60e693b3f7e5, each with a 100 ms duration.

The focused selected parity run passed the qmatrix case, the no-restoration super-resolution case, three existing all-lossless inter controls, and three existing mixed-lossless controls (8/8). It retains exact RGB output, including 3,072 bytes for the qmatrix sequence. The narrow decoder admission change threads the parser-proven all-lossless frame flag into lossless inter reconstruction; ordinary and mixed-segment paths keep matrix admission disabled. Strict native Clippy and both x86-64 SSE2/AVX2 cross-Clippy lanes pass.

The selected LLVM report is .coverage-mcp/local-evidence/selected-worktree/qmatrix-superres-20261026/coverage.json (SHA-256 592a535961454465120de20c6230a95cd0d71454b521a291b5103fc58b8b8990). Its local receipt records all eight selected cases passing and unchanged source and fixtures during execution. Coverage MCP read the selected report and reported 4,452/45,193 branch observations for the selected binary; a gap query at src/codecs/avif/av1/block.rs:49247 shows unobserved generic monomorphizations in this selected run. Source identity is unverified and test attribution is unknown. Its incremental comparison to the older full baseline timed out, so no aggregate coverage gain is claimed. No unit tests were added.

AVIF lossy I422 split-transform neighbor context parity — 2026-10-26

Added active row decode:avif:animated_lossy_inter_422_tx_context_checker_b64x32. The maintained generator verifies the 64x32 two-frame lossy 4:2:2 input, pinned Pillow 12.2.0 RGB frame hashes, and reproducible AVIF bytes. The input SHA-256 is 38c94eed681628437dd11423d62573fee3b1325a749ffc9f74dda1301c6acd56; the frame hashes are 3268f29921f0c622303b8fcf16c10c8bcd25500338944422ea4c18ced0ae821e and aac1dfe4688ff506cb0b3eca55ae4094f8bee4b12100c1b2d7c2b962cf90aa1f. A pinned native libavif observation supplies the sequence-loop evidence.

The decoder now records coded block dimensions for an inter neighbor's tx_intra context while preserving the per-cell split-transform plan. The selected public parity run included the existing 32x32 I422 control and passed 2/2 exact RGB rows; the full AVIF decode matrix passed 605/605. Strict formatting, workspace Clippy, and the x86-64 SSE2 and AVX2 cross-Clippy lanes passed.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261026T120515.229922Z-c65a47bf1a7d4389bb5433ac3fa13f53/coverage.json (SHA-256 05482db667104e09730b44bf5cb0192e6bbb96165cbb0b0b4b94e3f35ba074c2). Coverage MCP measured 4,066/32,134 branch observations for this selected binary and still reports uncovered branches in TileState::commit_with_metadata. Source identity is unverified and named-test attribution is unknown, so this is targeting evidence rather than an aggregate coverage claim. No unit tests were added.

AVIF lossy I422 B32x64 vertical-split parity — 2026-10-26

Added active public row decode:avif:animated_lossy_inter_422_vertical_split_b32x64. The maintained generator checks a deterministic two-frame 32x64 lossy 4:2:2 AVIF, pinned Pillow 12.2.0 RGB output, and reproducible encoded bytes. The input SHA-256 is 0eb45159064b3f1c30919d0062afa19056415f76be203278cd3ddd7174e8a798; the 6,144-byte RGB frame hashes are f1aab4fdf740e5726556337b0287ec940079cc48a4f1995d5f2b8fb5fbc9348c and c72b8082dac958d7aeda2637782f8226e7238711a7e967959100d25ad270e39d. The independent pinned libavif record observes both frames and infinite repetition.

The selected public parity and LLVM coverage run passed 1/1 and matched all 6,144 RGB bytes. Its report is .coverage-mcp/local-evidence/selected/avif-i422-vertical-split-final-2-20261026/coverage.json (SHA-256 43b475948a8c5558b479d8a1a1b86e711cecadd194a5d2d81389df16f34f9f90). Raw branch counters at src/codecs/avif/av1/block.rs:48348 recorded true-arm counts of 2 and 6 in two selected specializations. The full run still has unobserved arms in other specializations at that source span, so the template-wide gap remains open.

A refreshed make coverage run passed its executed suites, including 57/57 coverage-matrix tests, 69/69 feature-gate tests, and the AVIF loop-evidence integrity test. Its LLVM report is .coverage-mcp/local-evidence/full-20261026-avif-i422-vertical-split/coverage.json (SHA-256 cd94d83e8f342f831f88b92523bc6329862e02f423581940b82d1678b7b6150e). Totals are 93,661/139,561 lines (67.1112%), 18,558/32,056 branches (57.8924%), 5,220/8,928 functions (58.4677%), and 143,043/216,607 regions (66.0380%). Coverage MCP reports source identity unverified and test attribution unknown; the full-report comparison is limited and the selected incremental comparison is incomparable because baseline detail is incomplete. No aggregate coverage gain is claimed. No production Rust code or unit tests were added.

AVIF high-depth monochrome inter parity — 2026-10-27

Added the active public parity row decode:avif:animated_lossless_inter_monochrome_b32x32_10bit. Its pinned 10-bit all-lossless key/inter sequence uses a full-size B32x32 monochrome leaf. The 1,114-byte input SHA-256 is 28427120f6a0e9de71d0abcfe36bbeaae4d701dacefb62f852dfd71eeb82d624; Pillow 12.2.0 RGB frame hashes are 9eb4dc1f2ea4eb4cd5bc4dca1bc035a1eeee1d08248a527348e3be8cb5d25129 and c40bb457a52128f753525937c909cd08ebd8f96d7a5431a4e9751392dc5b487f. The fixture generator checks deterministic bytes, monochrome AV1 sequence headers, and exact Pillow frame pixels. The complete AVIF loop-witness parity test also passed with the new two-frame case registered.

The focused make coverage-selected row passed 1/1. Its report is .coverage-mcp/local-evidence/selected/avif-hi10-monochrome-20261027/coverage.json (SHA-256 c4bd568056ec0057874090638622796c26ed583d601551307bb18ac0f91263a7). Raw LLVM branch counters record one false outcome at src/codecs/avif/av1/entropy.rs:10787, where the older full report recorded zero. Coverage MCP still lists the span because the selected report also has a zero-count branch record at that same coordinate. Both reports have unverified source identity, and the incremental comparison is incomparable because the baseline detail is incomplete; no aggregate coverage gain is claimed. No production Rust code or unit tests were added.

At the monochrome parity row, the fixture matrix contained 2,641 total rows: 2,113 decode / inspect / verify rows and 528 encode rows. Of those, 2,113 decode rows and 497 encode rows were active; 31 planned encode rows remained.

AVIF I422 compound-reference parity — 2026-10-27

Added the active public parity row decode:avif:animated_lossy_inter_422_compound_refs_b64x32. Its deterministic three-frame 64x32 8-bit I422 sequence uses compound prediction from both prior references on the final inter frame. The pinned generator verifies repeated encoding, AV1 4:2:2 headers, the selectable reference list, and exact Pillow 12.2.0 RGB frames. The 5,565-byte input SHA-256 is 58179bf4eec6cd6a78dc575646dc3db0fa30b0d8c844f74a1dbf02694c785350; frame hashes are aff58d48982f1c9f12bc4e1161fed09f6128f2f786b5d2c43c9f50f0fa0ec7b9, b971221eb15826e56645181490b7db5eb89625680368ea7d9453809714e30ecb, and df257674ce899a4c3fba6125261fd00827a9d1b551d4f8e1c55cc86f34b34491. The independent pinned libavif observation decodes all three frames and reports infinite repetition.

The selected public parity and branch-coverage run passed 1/1, matching all 6,144 RGB bytes per frame. Its LLVM report is .coverage-mcp/local-evidence/selected/avif-i422-compound-20261027/coverage.json (SHA-256 e5abd916ac03cf71c3656647b300abfa1b915b71c5ffcc3e505fdc13392e0bea). Raw branch counters at src/codecs/avif/av1/block.rs:48348 record eight true-arm hits in the decode_inter_compound_translation specialization; the saved full baseline had zero true-arm hits there. This is branch-specific selected evidence. Coverage MCP marks source identity unverified and test attribution unknown; its incremental comparison is incomparable because baseline detail is incomplete. No aggregate coverage gain is claimed. No production Rust code or unit tests were added.

The current fixture matrix contains 2,653 total rows: 2,117 decode / inspect / verify rows and 536 encode rows. Of those, 2,117 decode rows and 505 encode rows are active; 31 planned encode rows remain.

WebP alpha filter no-win parity — 2026-10-27

Added active encode parity row encode:webp:enc_lossy_rgba_alpha_filter_no_win. Its deterministic 512x512 RGBA PNG uses a seeded 32-color alpha palette whose sampled residuals favor horizontal filtering while the full-plane encoder keeps the unfiltered alpha representation. The generator checks the PNG bytes; the exact Pillow 12.2.0 encoded reference is 157,078 bytes. The input SHA-256 is 343008603074288cbdad755679e6e6f0c78e9cb8b96b73cffcb7b316f7229210, and the encoded reference SHA-256 is 715914879a0bcc255e9e736fbe69ce3f395be11bf7d9685cec7406079b7f5bac.

The selected public parity run passed 1/1 and matched the decoded 512x512 RGBA pixels. Its report is .coverage-mcp/local-evidence/selected/webp-alpha-filter-no-win-512-20261027/coverage.json (SHA-256 3b123e8d36d2b00410ede33334638ec523e0e00a6d8be9520fa5076c7e1065ef). Raw LLVM branch counters at src/codecs/webp/native/encoder.rs:3082 record 0 true and 3 false outcomes for this row, reaching the full-plane no-win arm. Coverage MCP returned I/O error: No such file or directory for this report path, so this is local selected-run evidence without an MCP source/build receipt.

The refreshed full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its retained report is .coverage-mcp/local-evidence/full-20261027-webp-alpha-filter-no-win/coverage.json (SHA-256 33574fd55eee1fca407017c16864582f83583eb6e5327de32078e17cfda1982e). Totals are 93,818/139,562 lines (67.2232%), 18,627/32,042 branches (58.1331%), 5,224/8,928 functions (58.5125%), and 143,268/216,612 regions (66.1404%). At line 3082, the full report records 23 true and 3 false outcomes. Relative to the preceding retained full report with the same denominators, the local LLVM totals add one covered line, branch, and region. Coverage MCP has not verified that incremental comparison or source/build identity. All four repository floors pass. No Rust implementation change or unit test was added.

WebP VP8L box-chain max-match parity — 2026-10-27

Added active parity rows encode:webp:enc_lossless_method_6_box_chain_max_match and encode:webp:enc_lossless_method_6_box_chain_max_match_token. Their pinned PNG source contains three rows of six colors arranged so palette packing gives the box-chain search a match longer than 4,095 packed pixels after a shorter hash-chain match. The source SHA-256 is c07464a1965f2fd029193f05cb0f1da90740d046570b30a66bd86dd2d2ea5df3; its RGB pixels hash to 809865969461d792ec552fbe8040f3f59abc39fa4f4da222d3b715d058f2dfe6. Pillow 12.2.0 produces the same 76-byte encoded reference for both API paths, SHA-256 d012caba3e51c61643abd86874b13d55c5a178de871c5469896f01bab7bc46c2.

The selected public parity run passed 2/2 and re-decoded exact 8,196x3 RGB pixels. Its LLVM report is .coverage-mcp/local-evidence/selected/webp-box-chain-max-match-3row-20261027/coverage.json (SHA-256 75812713bbe7aaf9fac5e426cf8d037c620837a739d780a0af6fedca0fd62a60). The selected report records both outcomes for the token-aware and ordinary search guards in src/codecs/webp/native/encoder/backward_refs.rs: line 655 has 4 true and 28,677 false outcomes, and line 695 has 24 true and 172,062 false outcomes. Coverage MCP returned I/O error: No such file or directory for this report, so source/build identity and incremental attribution remain unverified. This is local selected-case evidence; it does not establish an aggregate coverage gain. No Rust implementation change or unit test was added.

The refreshed full make coverage run passed 57/57 integration tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full-20261027-webp-box-chain-max-match/coverage.json (SHA-256 1dbec9f10af5d98aa82689d1af36930c2cc3ae62066689503fdd2d790b0eb500). Totals are 93,818/139,562 lines (67.2232%), 18,629/32,042 branches (58.1393%), 5,224/8,928 functions (58.5125%), and 143,268/216,612 regions (66.1404%). The full report records 4 true / 53,426 false outcomes at line 655 and 24 true / 4,396,437 false outcomes at line 695. Against the preceding full report with the same denominators, two additional branches are covered; the line, function, and region totals are unchanged. All four repository floors pass. Coverage MCP also returned I/O error: No such file or directory for this full report, so the new totals remain local LLVM evidence without MCP source/build attribution.

The current matrix contains 2,649 rows: 2,117 active decode rows, 501 active encode rows, and 31 planned encode rows.

WebP token-aware input preparation parity — 2026-10-27

Added active parity rows encode:webp:enc_lossless_bilevel_token, encode:webp:enc_lossless_luminance_alpha_partial_token, and encode:webp:enc_lossy_opaque_rgba_token, reusing the pinned Pillow source assets 1bit.png, gray_alpha_partial.png, and rgba.png. The exact Pillow 12.2.0 encoded references were generated; all three selected public parity rows passed and re-decoded their expected pixels.

The selected LLVM report is .coverage-mcp/local-evidence/selected/webp-token-adapter-branches-20261027/coverage.json (SHA-256 7e9e27eb60d88568a069c048b70c0c7dd11b3a00c7aa98e4fabb578daeeb398f). It records the token arms in src/codecs/webp/encode/mod.rs: line 533 has 1 true and 3 false outcomes, line 620 has 1 true and 3 false, line 731 has 1 true and 3 false, and line 738 has 1 true outcome for partial-alpha expansion. Coverage MCP returned I/O error: No such file or directory for this report, so these remain local selected-case observations without MCP source/build attribution. No codec implementation change or unit test was added; no aggregate coverage gain is claimed from this selected run.

The current matrix contains 2,652 rows: 2,117 active decode rows, 504 active encode rows, and 31 planned encode rows.

WebP token-aware CMYK preparation parity — 2026-10-27

Added active row encode:webp:enc_lossless_cmyk_token using the existing Pillow CMYK source baseline_cmyk.jpg. Its pinned Pillow 12.2.0 output matches the ordinary lossless CMYK case exactly: 16,780 encoded bytes with SHA-256 6f7509153181e2346a376b97c4b15e00ed5fe1fd0b19f74d25dcf93c5fe3ead1.

The selected public parity run passed 1/1 and re-decoded 128x128 RGB pixels. Its LLVM report is .coverage-mcp/local-evidence/selected/webp-cmyk-token-preparation-20261027/coverage.json (SHA-256 4341b9d2378483979a675bbd833fdaa0f811ff9f85ea3264fe2e916184dc1829). It records the token arm in src/codecs/webp/encode/mod.rs:1090 (1 true and 3 false outcomes). Coverage MCP still cannot access reports in this managed worktree; local selected evidence has no MCP source/build attribution. No codec implementation change or unit test was added, and no aggregate coverage gain is claimed from this selected run.

The current matrix contains 2,653 rows: 2,117 active decode rows, 505 active encode rows, and 31 planned encode rows.

The refreshed full make coverage run passed 57/57 integration tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full-20261027-webp-token-adapters/coverage.json (SHA-256 14c849230bf7f07e8403ed3ce5f3920ec7cec658a2fdb8d1547bc9a2a94f80cc). Totals are 93,858/139,562 lines (67.2518%), 18,633/32,042 branches (58.1518%), 5,224/8,928 functions (58.5125%), and 143,363/216,612 regions (66.1842%). The preceding full report has the same denominators; the four token parity cases add 40 covered lines, 4 branches, and 95 regions. All four repository floors pass. Coverage MCP still returns I/O error: No such file or directory for reports under this managed worktree, so the refreshed full totals are local LLVM evidence without MCP source/build attribution.

WebP encoder dimension boundary parity — 2026-10-27

Added five active parity rows at the WebP encoder's maximum side dimension, using deterministic one-row RGB PNGs. Both lossless and lossy Pillow 12.2.0 accept width 16,383 and reject 16,384; lossless also rejects 16,385. The Rust encoder had accepted width 16,384 in both modes. A shared maximum of 16,383 now guards the lossless and lossy paths. The accepted output matches Pillow at 44 bytes for lossless (SHA-256 8a4796055658062fb87856f6d048f1cf9b3944961b9e5b8e1d58357abcf1263f) and 542 bytes for lossy (SHA-256 e67238025de2835593afe703635fa8c58a220e7818affee2ce8a309b1a37608b).

The final-source selected parity run passed 5/5 with no panic. Its LLVM report is .coverage-mcp/local-evidence/selected/webp-dimension-boundaries-final2-20261027/coverage.json (SHA-256 4fef195cc7a038f679ac5013c39ee2d23326c4bf1b1a2f8db18db9a97ec8fe06). The lossless check at src/codecs/webp/native/encoder.rs:2765 records 2 true and 3 false selected outcomes; the lossy check at src/codecs/webp/encode/vp8/encoder.rs:117 records 1 true and 3 false.

The final full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its LLVM report is .coverage-mcp/local-evidence/full-20261027-webp-dimension-boundaries-final/coverage.json (SHA-256 0ccc09fbdd03827e4afa312b7373e8558dc5618a4528fe472d235b463fd65025). Totals are 93,875/139,578 lines (67.2563%), 18,639/32,050 branches (58.1560%), 5,225/8,929 functions (58.5172%), and 143,380/216,629 regions (66.1869%). All four repository floors pass. Coverage MCP previously returned I/O error: No such file or directory for a report under this managed worktree, so these totals are local LLVM evidence without MCP source/build attribution.

The current fixture matrix contains 2,673 total rows: 2,120 decode / inspect / verify rows and 553 encode rows. Of those, 2,120 decode rows and 522 encode rows are active; 31 planned encode rows remain.

WebP lossless EXIF output-reuse parity — 2026-10-27

Added active row encode:webp:enc_lossless_exif_metadata_reuse using the existing 1x1 PNG and EXIF bytes. The 74-byte output matches Pillow 12.2.0 (SHA-256 10418c63af7178aff19eb7b9f6ebe473621543f4e3dadee3e839b3747814cd35). The selected public parity run passed 1/1, including sink output parity and exact re-decode. Its LLVM report is .coverage-mcp/local-evidence/selected/webp-lossless-exif-reuse-20261027/coverage.json (SHA-256 53c006d7abb0a28366c24fd8ef38b45a77ffc100275dbf3cea4bcc618cf9069b). It reaches the VP8L base-container fallback in src/codecs/webp/encode/mod.rs:919; the full report now records both sides of that VP8X check (3 true, 16 false).

The refreshed full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. Its report is .coverage-mcp/local-evidence/full-20261027-webp-metadata-reuse/coverage.json (SHA-256 2931c9883d1de559c9fea7a00bd32fddf837d7a2f4bd159a2664a2d82563016d). All four repository floors pass. Coverage MCP has returned I/O error: No such file or directory for worktree-local reports, so this is local LLVM evidence without MCP source/build attribution.

WebP VP8 plane-padding helper cleanup — 2026-10-27

Local LLVM coverage showed an unobserved height == padded_height outcome in pad_plane. Its only caller, pad_plane_with_token, returns the input plane when both dimensions are already padded and calls pad_plane only otherwise. Renamed the helper to pad_plane_unaligned and removed that redundant guard; the aligned direct-return path remains in the caller. The existing aligned 32x32 and unaligned 17x17 Pillow parity cases passed 2/2, including exact encoded-byte parity, re-decode, and sink checks. Their selected LLVM report is .coverage-mcp/local-evidence/selected/webp-plane-padding-helper-final-20261027/coverage.json (SHA-256 d4616e5f21d26ffdf915317e561643c5a783b48e0f2360f4de1e01b462b0b740); its local receipt says the source did not change during the run.

The refreshed full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. All four repository floors pass. The report is .coverage-mcp/local-evidence/full-20261027-webp-pad-plane-cleanup/coverage.json (SHA-256 6f5d837cedc8937e160500758b142bde50e3c2e12f6685b94aa7d52be24355cf). Totals are 93,879/139,581 lines (67.2577%), 18,636/32,046 branches (58.1539%), 5,225/8,929 functions (58.5172%), and 143,377/216,624 regions (66.1870%). Coverage MCP still cannot read reports under this managed worktree, so these are local LLVM measurements without MCP source/build attribution. After the source change, make fmt, make lint, and make lint-x86-simd passed; make test-feature-matrix passed every native, wasm32-wasip1, and wasm32-unknown feature lane, and the generated capability tables agreed.

An exploratory exact-parity row for quality 80/method 4 on the same 32x32 source initially exposed a VP8 encoder difference: Rust produced 76 bytes while Pillow produced 80 bytes, although both decode to the same RGB pixel SHA-256 (0c1680535c7baa47105185e3f379d36376fd4b3be62cc9e76aceb696829f2d2d). That probe was not retained. An exhaustive public-API sweep over quality 0 through 100 and method 0 through 6 found no parameter pair matching Pillow's output. The follow-up below fixed the mode decision and added two active parity rows.

WebP quality-80 method-4 flat-block parity — 2026-10-27

The mismatch came from libwebp's PickBestIntra16 scoring rule: for a uniform source macroblock, it doubles distortion and spectral distortion while the quantized luma AC coefficients remain flat, then stops applying the rule once a candidate is no longer flat. The Rust encoder omitted that ordered update and could select Intra16 where Pillow/libwebp selected Intra4. The Rust path now applies the method-3-or-higher rate-distortion rule in candidate order.

Added active Pillow rows encode:webp:enc_lossy_quality_80_method_4_uniform_rgb_32x32 and encode:webp:enc_lossy_quality_80_method_4_nonuniform_rgb_17x17. The uniform 32x32 output is 80 bytes (SHA-256 d5b33a6a4452d87928c7956be970a09f66bf33b024f91df67b61222017617f3d); the nonuniform 17x17 edge-padded output is 380 bytes (SHA-256 9c01cd551254909ec5028d6470d2f83af7ab936fc0146c9b9738432d40f6df10). Both selected public parity rows passed, including exact reference bytes and re-decode pixel parity: 2/2 rows, 8 encode calls, no failures or panics. The selected LLVM report is .coverage-mcp/local-evidence/selected/webp-flat-intra16-q80-m4-final-20261027/coverage.json (SHA-256 441c71287eb33384d45ac980f60ab81306037d03c68dff1672e878aabbf595ec). Coverage MCP still returns I/O error: No such file or directory for reports inside this managed worktree, so the report is local LLVM evidence without MCP source/build attribution.

WebP shifted-row lossless cost-manager parity — 2026-10-27

Added active parity rows encode:webp:enc_lossless_cost_manager_shifted_rows and encode:webp:enc_lossless_cost_manager_shifted_rows_token. The deterministic 2,048x512 RGB input is generated by scripts/generate_webp_cost_manager_shifted_rows_fixture.py; its PNG SHA-256 is c190d493dc2f746a76d1b73be5aa7232ab2fddf4fbd496d54fc7691cc93a303f. Both Pillow 12.2.0 outputs are 5,336 bytes with SHA-256 16cbe243b738c77fd6f21ac77157fbb1de47ce129d36d4bec7ef304f40c32240.

The selected public parity run passed 2/2 rows, with 9 encode calls and no panics. The selected LLVM report is .coverage-mcp/local-evidence/selected/webp-cost-manager-shifted-rows-20261027/coverage.json (SHA-256 ad1166369ea05545d32d9ff20704b0688495712d57bdfa0d0061d3a2f56eb285). A local branch-coordinate comparison against the preceding full report found one newly covered token-aware histogram checkpoint outcome at src/codecs/webp/native/encoder.rs:1684. The input does not reach the cost-manager 500-interval fallback at backward_refs.rs:1604 or backward_refs.rs:1712; the separate fragmented-stream run below also stays below saturation. Coverage MCP cannot read reports in this managed worktree, so this selected result has no MCP source/build attribution. No unit test or codec implementation change was added.

WebP fragmented-stream lossless cost-manager parity — 2026-10-27

Added active rows encode:webp:enc_lossless_cost_manager_fragment_stream and encode:webp:enc_lossless_cost_manager_fragment_stream_token. Their seeded 1,024x1,024 RGB source is generated by scripts/generate_webp_cost_manager_fragment_stream_fixture.py; the PNG SHA-256 is a435566d1b22d8405e38ff5588213b5492050a180633586a3d67c673879aef40 and the pixel SHA-256 is 5afff9a4bc1b81d0f066a1f75fd2284cb1405cd28abfa0ffa01c17451e83146a. Both Pillow 12.2.0 outputs are 46,436 bytes with SHA-256 466d1a901e783a9fda34b3af56767991c2fc2be0d4cfc055403bf594d7b6c9a8.

The selected public parity run passed 2/2 rows, with 9 encode calls and no panics. These cases do not reach the ordinary or token-aware 500-interval fallback true arms. The counts previously reported at backward_refs.rs:1604 and :1712 were executions of the below-saturation false arms, not fallback hits. The selected LLVM report is .coverage-mcp/local-evidence/selected/webp-cost-manager-fragment-stream-final/coverage.json (SHA-256 8166475636b977c51ddd13195d8914cebda29767b5240f0f380128f022dd461e). Coverage MCP still cannot read reports in this managed worktree, so this selected result has no MCP source/build attribution.

Parity exposed an encoder limit mismatch: libwebp 1.6.0 caps MAX_COLOR_CACHE_BITS at 10, while the Rust writer allowed 11. The writer and palette candidate path now share the 10-bit cap, matching the upstream definition in libwebp 1.6.0. No unit tests were added.

Full parity coverage refresh — 2026-10-27

The final full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, and 69/69 feature-gate tests. The retained LLVM report is .coverage-mcp/local-evidence/full-20261027-webp-cost-manager-final/coverage.json (SHA-256 b7b2637a7f78c6134bf9d266c42be0a3ce1e6e7c2f6999d615d910aac86c22e). Totals are 93,914/139,613 lines (67.2674%), 18,647/32,056 branches (58.1701%), 5,229/8,933 functions (58.5358%), and 143,413/216,663 regions (66.1917%). All four repository floors pass; the 100% coverage goal remains open.

The selected WebP fragmented-stream parity run does not reach either cost-manager saturation arm at src/codecs/webp/native/encoder/backward_refs.rs:1604 or :1712; it reaches only the below-saturation arms. The earlier claim that its 175,224 and 29,204 branch counts represented saturated fallback hits was incorrect. The existing Rust feature-gate work-budget contract was rebased to the lower 6,547/6,548 boundary after the pinned libwebp cache limit was corrected. No unit tests were added. make fmt, strict stable/nightly make lint, make lint-x86-simd, and the native/WASI/WASM make test-feature-matrix all passed. The SSE2 and AVX2 checks compile their target lanes; no new x86 runtime benchmark was run.

WebP Huffman, predictor-grid, and full coverage recheck — 2026-10-27

After adding the WebP singleton copy-symbol and one-cell predictor-grid parity rows, the full make coverage run passed 57/57 coverage-matrix tests, 7/7 decode-policy tests, 1/1 determinism test, 69/69 feature-gate tests, and all four repository coverage floors. The report .coverage-mcp/local-evidence/full-20261027-predictor-grid-final/coverage.json has SHA-256 985db53124f1c6f35102a8908ba2b98aa247750332487bffd7cb051973b01f10 and totals 93,966/139,636 lines (67.293535%), 18,674/32,068 branches (58.232506%), 5,230/8,934 functions (58.540407%), and 143,479/216,699 regions (66.211196%). This report is local LLVM evidence; it has no Coverage MCP source/build receipt.

The fragmented-stream pair was rerun with the exact selected-coverage command. Both parity rows passed with 9 encode calls and no panics. Its report .coverage-mcp/local-evidence/selected/webp-cost-manager-fragment-stream-current-check/coverage.json has SHA-256 26833aaf106f46d219020a6aa4260b4da989c3226a27140ca3f63e4a0207ce56. Raw LLVM branch counters show zero true-arm hits and 175,224 false-arm hits for the ordinary saturation condition, and zero true-arm hits and 29,204 false-arm hits for the token-aware condition. The full report likewise records zero true-arm hits for both conditions. Coverage MCP identifies the token-aware true arm as missing; source and test attribution remain unverified because no MCP receipt is available. The 500-interval fallback therefore remains an open coverage gap, and 100% coverage is not achieved.

The new enc_lossless_tiny_predictor_grid pair uses a pinned 8×3 RGBA PNG with 24 colors to reach the one-cell predictor-grid case. Its selected parity run passed 2/2 rows with 9 encode calls and no panics; both encoded references are 74 bytes and decode to the expected RGBA pixels. Its local report .coverage-mcp/local-evidence/selected/webp-tiny-predictor-grid-final-20261027/coverage.json has SHA-256 66e3ba306b74eb39836b9bd790f30dbab3dc3698878d1f6253d0662d72133369. Coverage MCP's branch query on the refreshed full report now shows the one-cell clamp_transform_bits arm at line 497 as covered. The remaining missing arms at lines 493 and 501 are defensive under the public method-five and method-six configurations: they cap the initial bits at four and step histogram bits down while the next finer grid would still contain one cell. Under the parity-only test policy, these remain documented coverage gaps rather than being relabeled as Pillow-reachable behavior. Coverage MCP still identifies the ordinary and token-aware 500-interval saturation true arms at backward_refs.rs:1604 and :1712 as missing. These reports have no MCP source/build receipt; MCP results are limited to branch coordinates.

AVIF zero decoder-model tick parity — 2026-10-27

Coverage-guided inspection identified the AV1 sequence-header branch that rejects a zero decoder-model timing tick. Added active row decode:avif:error_sequence_zero_decoder_tick and a deterministic full-file mutation of the pinned animated.avif input. The generated AVIF SHA-256 is 5287aa51ceac1e2128487a90caf3b5b12fcb30348a866ae700da42ccd4d08b49. Pinned Pillow 12.2.0 and Rust produced matching public decode failures; the selected parity run passed 1/1.

The selected local LLVM report is .coverage-mcp/local-evidence/selected/avif-zero-decoder-tick-20261027.json (SHA-256 865eefe0a3fb17031a01002584a8914babacf13c2fdc23154f4d907317802d5b). Its branch record for src/codecs/avif/av1/sequence.rs:169 has 3 hits on the zero-tick true arm. This is selected-run evidence: its receipt marks Coverage MCP source/build attribution as unverified, and the full coverage suite was not rerun. The last full report remains the 2026-10-27 baseline recorded above; the 100% four-metric coverage goal remains open.

WebP token-aware sampling row-mismatch parity — 2026-10-27

Added active row encode:webp:enc_lossless_sampling_row_mismatch_early_stop with a deterministic 8×16,383 PNG source (SHA-256 262b8efe57c954caf1068ea6e63969fbc205b667e85ce4788cc34aa5a75098d6). The selected parity run passed 1/1; Pillow and Rust agree on the 41,090-byte WebP output and decoded pixels. The token-aware encoder enters optimize_sampling and exercises both outcomes of the row-equality check before stopping on a mismatch. It does not reach the 1,024-symbol compaction checkpoint; that checkpoint remains an open coverage gap.

The selected report is .coverage-mcp/local-evidence/selected-20261027-webp-sampling-row-mismatch-final/coverage.json. Coverage MCP identifies the remaining optimize_sampling branch gaps, but reports source attribution as unverified and test status as unknown. These selected-run observations do not establish a full-suite coverage gain or regression. An incremental comparison against the last full report was incomparable because that baseline lacks exact branch detail. No Rust production code or unit tests were added.

The current fixture matrix contains 2,674 total rows: 2,120 decode / inspect / verify rows and 554 encode rows. Of those, 2,120 decode rows and 523 encode rows are active; 31 planned encode rows remain.

WebP token-aware sampling copy-checkpoint parity — 2026-10-27

Added active row encode:webp:enc_lossless_sampling_copy_checkpoint with a deterministic 16,376×8 RGB PNG source (SHA-256 cded007438a8422352d2ff0caa0032487c139d0e594347af511409884cea32b6). The selected parity run passed 1/1: Pillow and Rust produced matching 135,770-byte WebP output and decoded RGB pixels. No Rust production code or unit tests were added.

The selected local LLVM report is .coverage-mcp/local-evidence/selected/20261027T114128.993076Z-96cc277b76a54dfeb8fc72bc3ad5e92e/coverage.json (SHA-256 e82178fd456a82daf739934e84835c25a5f81383bd119608c45b694fbd7b6db5). Its raw branch record at src/codecs/webp/native/encoder.rs:1521 has one true-arm hit and 1,023 false-arm hits, exercising the token-aware copy checkpoint at the 1,024th retained symbol. Coverage MCP's line-targeted query reports no missing arms there. The local receipt records the selected row passing and no source change during the run; Coverage MCP still marks source attribution unverified and test status unknown because no MCP source/build receipt is available. The incremental comparison with the saved full report remains incomparable because that baseline lacks exact branch detail. No aggregate coverage gain is claimed.

The fixture matrix now contains 2,676 total rows: 2,121 decode / inspect / verify rows and 555 encode rows. Of those, 2,121 decode rows and 524 encode rows are active; 31 planned encode rows remain.

AVIF compound I422 direct chroma-grid parity — 2026-10-27

Coverage MCP queried the latest full report, .coverage-mcp/local-evidence/full-20261027-predictor-grid-final/coverage.json (SHA-256 985db53124f1c6f35102a8908ba2b98aa247750332487bffd7cb051973b01f10), and identified the missing true arm at src/codecs/avif/av1/block.rs:48348 in the compound direct-chroma-grid instantiation. Added active row decode:avif:animated_lossy_inter_422_compound_direct_grid_b64x64 with a pinned three-frame 64x64 I422 AVIF. Its largest-transform final frame uses compound prediction and full B64x64 geometry; the fixture generator verifies that frame header and exact Pillow output.

The selected command make coverage-selected COVERAGE_CASES='decode:avif:animated_lossy_inter_422_compound_direct_grid_b64x64' passed 1/1 parity rows. Its local LLVM report .coverage-mcp/local-evidence/selected/20261027T122708.591697Z-83f49fcd5bb145d4ad2dc85e698646b0/coverage.json has SHA-256 0e921871eceaae79ae7db763299f0ae968d5f1b24d86f7525fa7fce6fa935675; the exact compound direct-chroma monomorph records one true-arm hit and zero false-arm hits at that condition. Coverage MCP's selected report query no longer lists that true arm as missing. The local run receipt records the row passing, while Coverage MCP marks source attribution unverified and test status unknown. An incremental comparison against the saved full report is incomparable because exact baseline branch detail is unavailable; no aggregate coverage gain or regression is claimed. No Rust production code or unit tests were added.

WebP token-aware lossy RGBA sequence parity — 2026-10-27

Extended active row encode:webp:enc_sequence_lossy_rgba_keyframes to invoke encode_sequence_with_token and compare its bytes with the ordinary public sequence encoder. The selected Pillow parity case passed 1/1: both APIs produce the same 224-byte WebP, and the decoded two 9×7 RGBA frames match the pinned Pillow pixels. No Rust production code or unit tests were added.

The selected LLVM report .coverage-mcp/local-evidence/selected-20261027-webp-lossy-sequence-token-parity2/coverage.json (SHA-256 2a02bd8fda59310e79190475255378b7a21a1e1230ae8dd5ca9a6e531fc019e7) records two hits on the VP8X true arm at src/codecs/webp/encode/mod.rs:376. The fresh full report .coverage-mcp/local-evidence/full-20261027-after-webp-token-sequence/coverage.json (SHA-256 5f880d21417505dd2a2a5cedd5406c3e17986cc966a5b606f3d2556058fff383) passed all 57 coverage-matrix tests and the full all-features campaign. Coverage MCP reports no missing arms at line 376 and one newly observed true arm versus the previous full report. Overall branches moved from 18,677/32,068 to 18,678/32,068; lines moved from 93,970/139,636 to 93,973/139,636; regions moved from 143,484/216,699 to 143,490/216,699; functions remained 5,230/8,934.

Coverage MCP marks source/build attribution unverified and test status unknown, so its comparison is limited to report coordinates. The local selected receipt records the parity test passing and fixture inputs unchanged during execution.

WebP dense-fragment cost-manager parity — 2026-10-27

Added active row encode:webp:enc_lossless_cost_manager_deep_fragment_stream_token over a deterministic 2,048×1,024 RGB input with a high-cardinality literal palette and overlapping copy fragments. The PNG SHA-256 is c3b7842b11dd2e67ce401cb095a354fd49cdb15ea1c934ca90bddca022995d16. Selected parity passed 1/1; Pillow and Rust produced matching WebP output, and Rust re-decoded the 2,048×1,024 RGB pixels. The local LLVM report .coverage-mcp/local-evidence/selected-20261027-cost-manager-deep-fragment/coverage.json has SHA-256 0d83782cd4a57ef67df85aee73c12b795bd9bf1a4240d6cac9f40b5b4169dada.

The line-targeted Coverage MCP query still reports the true arm of checkpoint_cost_manager_work at src/codecs/webp/native/encoder/backward_refs.rs:72 as missing. A selected-run comparison with the existing fragment-stream row observed four branch arms in the deep-fragment report that were absent from that row, while two arms seen by the existing row were absent from the candidate report. Coverage MCP marks source/build identity unverified and test status unknown, so this comparison is limited to report coordinates and does not establish a verified coverage gain. The larger input remains useful as a method-six token-aware parity stress case; no Rust production code or unit tests were added.

The fixture matrix now contains 2,677 total rows: 2,121 decode / inspect / verify rows and 556 encode rows. Of those, 2,121 decode rows and 525 encode rows are active; 31 planned encode rows remain.

AVIS-only animated sequence without top-level metadata — 2026-10-28

Added active decode row decode:avif:animated_sequence_only_no_meta for a five-frame AVIS sequence with no top-level still-image meta box. The fixture is derived deterministically from the existing animated track-only input and retains its pinned SHA-256. Pillow and pinned libavif 1.4.1 both decode all five 150×150 RGB frames with matching pixels and 33 ms durations; native libavif reports one play. The Rust inspector now accepts this valid sequence without weakening the requirement for an AVIS movie box. Selected parity passed, including exact metadata-limit enforcement.

The current fixture matrix contains 2,680 total rows: 2,124 decode / inspect / verify rows and 556 encode rows. Of those, 2,124 decode rows and 525 encode rows are active; 31 planned encode rows remain.

The local all-feature coverage run passed its configured floors: 94,040 / 139,653 lines (67.34%), 18,705 / 32,072 branches (58.32%), 5,235 / 8,937 functions (58.58%), and 143,580 / 216,726 regions (66.25%). Coverage MCP's report comparison is limited because source/build attribution is unverified; its coordinate query shows the newly exercised no-still-metadata branch and three remaining missing branches in pixel_payload_bytes.

Lossy I444 B8x16 transform-terminal parity — 2026-10-28

Added active row decode:avif:animated_lossy_inter_i444_b8x16_mode_select_64x64 for a deterministic two-frame 64x64 8-bit I444 sequence. The fixture-only libaom encoder controls force vertical B8x16 inter partitions while preserving positive qindex and TX_MODE_SELECT; the Rust decoder remains unchanged. Both exact Pillow RGB frame hashes and the independent pinned libavif one-play observation are retained. The selected parity run passed 1/1 rows and recorded 16 true and 30 false outcomes for the targeted branch at src/codecs/avif/av1/block.rs:51531. Coverage MCP still labels source/build identity unverified for this selected report, so the counts are local LLVM coordinate evidence rather than a verified full-suite coverage claim.

The current fixture matrix contains 2,729 total rows: 2,158 decode / inspect / verify rows and 571 encode rows. Of those, 2,158 decode rows and 540 encode rows are active; 31 planned encode rows remain.

Lossy I422 small-partition parity — 2026-10-28

Added active row decode:avif:animated_lossy_inter_422_small_partitions_32x64 for a deterministic two-frame 32×64 8-bit I422 AVIF sequence. Selected parity passed 1/1 cases with exact Pillow RGB hashes for both frames. The input SHA-256 is f150bd51312eee0a9e7dccc57b3d26fc08899c400d82565b839d704e98c6c029; pinned libavif independently decoded both frames and confirmed one-play sequence metadata.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T133544.038328Z-910da45580dc4afbb9dfcbc62b0a9e48/coverage.json. Raw branch coordinates show 14 branch-record outcomes at previously unhit AV1 block-decoder coordinates. Coverage MCP's older all-active report flagged both arms of decode_inter_split_luma_small_rect_topology at src/codecs/avif/av1/block.rs:52771 as missing; the selected report records one hit for each child_split arm at that span. Coverage MCP could not combine the reports because the older report's detail does not match its aggregate totals; both reports also lack verified source/build receipts. Treat this as targeted coordinate evidence, not a verified full-suite coverage gain. The fixture generator check and fixture-integrity gates pass. No Rust production code or unit tests were added.

The current fixture matrix contains 2,729 total rows: 2,158 decode / inspect / verify rows and 571 encode rows. Of those, 2,158 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF sequence decode A–B–B–A — 2026-10-28

Compared the committed 69a79d4c46b3c8598de020e47345ade1b0e1d304 source (A) with the current AVIF Rust edits (B; diff SHA-256 7f6e6279137c15c28608147ee7e20d2fe13b0bb4e743a3c5494f540aad04df1b) using the release avif-only public sequence-decode probe. The workload is animated_motion_temporal_mv_range_2048x128.avif (SHA-256 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a). Its exact parity row passed 1/1 before timing.

On an Apple M3 Pro running macOS 15.7.7 with rustc 1.96.1, two A–B–B–A cycles collected 48 timed decodes per version after one warm-up decode each. Median latency was 15.466 ms for A and 12.848 ms for B (16.93% lower for B). The timer covers decode_sequence plus dropping decoded output; compilation and input I/O are excluded. The local report is target/oracle-staging/avif-perf-abba-69a79d4c.json (SHA-256 788dcac0f3131a5d8ee292b5b03ce507608e72c8bf50e392f70f56341d32f146). This is one ARM64 workload and does not establish SSE2/AVX2 runtime speed or a general decoder speedup.

Lossy I420 B8x16 mixed-transform parity — 2026-10-28

Added public row decode:avif:animated_lossy_inter_420_b8x16_mixed_topology_64x64 for a deterministic two-frame 64x64 I420 sequence. The fixture-only libaom encoder patch forces vertical B8x16 inter leaves and a mixed transform tree: one TX8x8 child splits into TX4x4 blocks while the other stays TX8x8. Exact Pillow RGB parity passed for both frames, and the independent pinned libavif observer confirms a complete two-frame sequence.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T152427.654345Z-1ec332db4d9543b2a7651e6693cdda2a/coverage.json. Coverage MCP's selected comparison against the retained 32x64 I422 row reports six newly observed branch coordinates in decode_inter_split_luma_small_rect_topology, including the along_rows = true arm at src/codecs/avif/av1/block.rs:52753. The selected raw report records both child_split arms at line 52771. Source and build receipts are unverified, and other generic instantiations still have missing arms, so this is limited coordinate evidence rather than a verified aggregate gain or full branch closure. Two temporary 64x32 variants were removed after their selected reports showed no distinct branch observations. No production Rust code or unit tests were added.

The current fixture matrix contains 2,731 total rows: 2,160 decode / inspect / verify rows and 571 encode rows. Of those, 2,160 decode rows and 540 encode rows are active; 31 planned encode rows remain.

TIFF selected coverage and directory-count audit — 2026-10-29

Coverage MCP's retained TIFF report highlighted Directory::numeric_values_are_nonempty_and_uniform and the raw packed FillOrder path. Exact selected parity runs passed the active decode:tiff:multi_page, decode:tiff:multi_page_multipage_three, decode:tiff:later_ifd_mixed_bits, decode:tiff:later_ifd_empty_bits, and decode:tiff:cyclic_ifd_leniency rows (5/5), plus decode:tiff:fill_order_2_miniswhite_1bit and decode:tiff:fill_order_2_minisblack_2bit (2/2). A third run passed decode:tiff:ycbcr_coefficients_float_type_lzw_2x2, decode:tiff:ycbcr_coefficients_double_values_lzw_2x2, decode:tiff:ycbcr_reference_float_type_lzw_2x2, and decode:tiff:ycbcr_reference_double_type_lzw_2x2 (4/4). The first group compares first-page pixels while exercising multipage and later-directory behavior; the second compares raw 1-bit and 2-bit FillOrder 2 pixels; the third compares float and double YCbCr values against Pillow.

The selected reports are .coverage-mcp/local-evidence/selected/tiff-ifd-uniformity-20261029/coverage.json and .coverage-mcp/local-evidence/selected/tiff-fill-order-packed-20261029/coverage.json, and .coverage-mcp/local-evidence/selected/tiff-ycbcr-floating-values-20261029/coverage.json. Coverage MCP's branch query found no missing groups for Directory::floating_value in the selected float/double report. Coverage MCP still marks source/build identity unverified and test status unknown for these local reports. Its comparison with the retained full report is limited or incomparable, so no aggregate coverage gain or regression is claimed.

The current Directory::parse constructs each numeric entry's byte length as count * type_size, where supported types have a nonzero width. After the count == 0 early return, division by the count therefore yields that exact nonzero width, and the byte length is divisible by the count. The later chunks_exact remainder check is consequently false for entries produced by the public parser. These arithmetic rejection branches do not describe reachable malformed-file behavior; no private unit tests or duplicate parity rows were added. The active mixed-width and empty-field rows cover Pillow's first-page output and record its sequence-enumeration failures for unusable later-page metadata.

The current fixture matrix contains 2,746 total rows: 2,175 decode / inspect / verify rows and 571 encode rows. Of those, 2,715 rows are active (2,175 decode / inspect / verify and 540 encode); 31 planned encode rows remain.

Coverage gap disposition — AVIF, JPEG, and WebP paths — 2026-10-29

The retained full branch report .coverage-mcp/local-evidence/full/current-final-after-compound-tall-lossless-20261028/coverage.json (SHA-256 b12fbc40994d3cf94b6d730e7517e9d2209d7a89d4559f416c82bf97861b362f) lists missing arms in the generic WebP write_token_stream, apply_palette, and encode_alpha_stream helpers. The public frame encoder dispatches Some(token) together with TokenBitWriterCheckpoint, and None together with NoopBitWriterCheckpoint. The reported missing arms pair the no-op checkpoint type with a token or the token checkpoint type without one; that combination is not reachable through the public encoder, so no parity case can exercise it.

The same report lists the vertical_rows == 2 arm in the no-token JPEG downsample_two_to_one helper as unobserved. Public 4:2:0 encoding uses the already-downsampled batch conversion on that path; 4:2:2 reaches this helper with one vertical row, 4:4:4 bypasses it, and token-bearing encoding uses the checkpoint-aware helper. Adding a parity row cannot select the missing no-token 4:2:0 combination.

The report also lists invalid-input arms in container.rs::parse_iloc. The existing decode:avif:error_iloc_version_3 public parity case passed 1/1 under selected coverage. Its local LLVM counters reached the earlier samples.rs::parse_iloc rejection; the container.rs::parse_iloc specialization had zero calls because inspection receives an already-extracted AVIF. The selected report is .coverage-mcp/local-evidence/selected/iloc-version-3-20261029/coverage.json (SHA-256 ba0375814aeb3477ab9880b15dee54c513ef42dc253238648216ee16145d0439); the local receipt records one selected, executed, and passed parity case with no source change during the run. These repeated validation failures are therefore not additional public input paths for this case.

Coverage MCP marks both the retained full report and the selected report as having unverified source/build identity. This is a gap disposition only: no aggregate coverage gain is claimed, and no duplicate fixture or code change was made for these unreachable combinations.

AVIF parser parity and full coverage refresh — 2026-10-28

The full make coverage campaign passed after the AVIF sample-table, property, track, and top-level container parity changes. Its retained report is .coverage-mcp/local-evidence/full/current-final-avif-parser-and-decode-20261028/coverage.json. The configured floors passed: 95,063 / 139,980 lines (67.91%), 18,936 / 32,088 branches (59.01%), 5,272 / 8,955 functions (58.87%), and 145,016 / 217,240 regions (66.75%). All existing test suites in the campaign passed.

Coverage MCP returned no missing branch groups for the targeted samples::parse_stsc, samples::parse_iprp, container::parse_iprp, track_plane, and Meta::transform queries on this report. Public AVIF parity rows exercise the Pillow-compatible trailing stsc payload, malformed property-child cases, zero description index, and duplicate first-wins transforms. The presentation parser's second iprp pass now relies on the already validated InspectedAvif metadata and extracts the first two validated children without repeating structural guards. The full report still has large AV1 gaps, led by Lossy420Decoder::decode_inter_translation_impl.

Coverage MCP marks this local report's source/build identity unverified and its test status unknown because it has no matching receipt. The run output confirms the local suite passed, but no verified aggregate coverage gain is claimed. No unit tests were added. cargo fmt, strict debug/release/coverage Clippy, and the AVIF decode and loop-evidence parity selections passed on this source state; the broader 100% coverage goal remains open.

AVIF sample-table tail and property-child parity — 2026-10-28

Coverage MCP identified an unobserved trailing-payload rejection in samples::parse_stsc and unknown/duplicate-child guards in samples::parse_iprp. Added active rows decode:avif:animated_stsc_trailing_payload, decode:avif:error_iprp_unknown_child, and decode:avif:error_iprp_duplicate_ipma. The trailing-byte fixture preserves both original stsc mapping rows and encoded samples, rebasing iloc and stco offsets by one byte. Its input SHA-256 is afd53fee7738e9b4fe280bb0ff1a19f938cdaad326977abf2cb4266c8e376e4b. Pillow 12.2.0 and pinned libavif 1.4.1 both decode the same five exact frames with 33 ms timing and one play. The two malformed iprp fixtures replace ipma with an unknown child or append a duplicate ipma; Pillow rejects both at open. Their input SHA-256 values are 1d67de2af3d30be3ef552e461fb3a74c3badacd6c6fd84e1e8fb9937fa3d3580 and d6e09f8fcc13fd62817793463188f12b2583ec044a967368af9c977f4cf2b65f.

The Rust stsc parser now matches Pillow and libavif by ignoring bytes remaining after the declared mapping entries. The exact selected parity run passed 3/3 rows: .coverage-mcp/local-evidence/selected/20261028T170536.363506Z-613cb8b3d44c468c9ae3364f9fa65afc/coverage.json. Coverage MCP reports that selected LLVM source/build identity is unverified; these branch observations are targeted local evidence and do not establish a verified full-suite coverage gain. Other AVIF parser branches and the broader decoder coverage goal remain open. No unit tests were added.

The current fixture matrix contains 2,744 total rows: 2,173 decode / inspect / verify rows and 571 encode rows. Of those, 2,173 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF sample-table edge and zero-description-index parity — 2026-10-28

Coverage MCP's saved full report highlighted branches in parse_stsc, parse_iprp, and track_plane. Added five malformed-input parity rows for a nonzero stsc version, an empty stsc table, zero samples per chunk, an empty stco offset table, and a missing ipma association box. Added a successful two-chunk AVIF row whose first stsc description index is zero. The deterministic fixture recipes preserve the encoded mdat samples and are checked by the fixture-integrity command.

Pinned Pillow 12.2.0 and native libavif 1.4.1 both accept the zero-index file, decode five exact RGB frames with 33 ms durations, and report one play. The selected parity run first reproduced Rust's rejection in track_plane; mapping index zero to the first description fixed the mismatch without adding a new allocation or a test-only code path. The same six-case selection then passed 6/6, including exact 67,500-byte frame parity. No private unit tests were added.

The native loop observation uses clean libavif source commit 6543b22b5bc706c53f038a16fe515f921556d9b3; the input SHA-256 is c6f3ff4272a7ade6f51cd77a3c643fb7301e416e4e5ebbd75e4fca4397c5db64. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T164343.283144Z-22e94f916a054e708790594c69aacce7/coverage.json. Coverage MCP can locate the selected parser functions, but marks source/build identity unverified. The selected subset does not establish an aggregate coverage gain; a fresh full report is required for that comparison.

The current fixture matrix contains 2,741 total rows: 2,170 decode / inspect / verify rows and 571 encode rows. Of those, 2,170 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF malformed stsc ordering parity — 2026-10-28

Added active malformed-parity rows decode:avif:error_animated_stsc_first_chunk_not_one and decode:avif:error_animated_stsc_non_increasing_chunk. The first changes the first stsc mapping from chunk 1 to chunk 2; the second changes the later mapping from chunk 3 back to chunk 1. The deterministic generator preserves file length and all mdat bytes. Their input SHA-256 values are 9b54a6a24989c3ca9feaffb1779ced9407a9cad3f864415d0742e9def89eb46a and a6032faac42c6646befcb10470541495702600e98d70fc56dcde3c7fde787f73. Pillow 12.2.0 recognizes both files as AVIF and rejects them at open with UnidentifiedImageError; both exact public parity rows passed.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T162733.149537Z-e8b91d4448be45bb8fa8265ea2c14bfa/coverage.json. Raw counters for the exercised samples::parse_stsc specialization show both outcomes for the first-entry and increasing-chunk guards. A second generic specialization remains unexecuted in this selected run. Coverage MCP marks source/build identity unverified; the incremental comparison with the retained full report was incomparable because its branch detail did not reconcile with the totals, so no aggregate coverage gain is claimed.

The current fixture matrix contains 2,734 total rows: 2,163 decode / inspect / verify rows and 571 encode rows. Of those, 2,163 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF property-association order error parity — 2026-10-28

Added active malformed-parity row decode:avif:error_iprp_ipma_before_ipco. It moves the complete ipma box ahead of ipco in the baseline still AVIF without changing box bytes, file length, or encoded samples. The input SHA-256 is 06d3fa832ab0b96b7108926c8973b30d578617e75aa57a7bbcaabdd53ac2cdd7. Pillow 12.2.0 recognizes the full file as AVIF and rejects it at open; exact public parity passed 1/1. The selected report is .coverage-mcp/local-evidence/selected/20261028T162733.149537Z-e8b91d4448be45bb8fa8265ea2c14bfa/coverage.json. Raw LLVM counters record the first-child ipco ordering rejection in the exercised samples::parse_iprp specialization. Coverage MCP leaves other parse_iprp branches and a second specialization unobserved; source/build identity is unverified, so this is local coordinate evidence only.

The current fixture matrix contains 2,735 total rows: 2,164 decode / inspect / verify rows and 571 encode rows. Of those, 2,164 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF duplicate primary-item transform parity — 2026-10-28

Coverage MCP's saved AVIF branch report identified unobserved duplicate transform guards in Meta::transform. Added active parity row decode:avif:primary_item_duplicate_transform_properties_first_wins with conflicting duplicate irot, imir, pasp, and clap properties. The input SHA-256 is c6b9cfc406f9fd210aa2817d6311791ce27929ef0b0173c06e9b2945b82eeae7. Pinned Pillow 12.2.0 preserves the first property of each kind and produces 49,152 RGB bytes (SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf). The Rust inspection and sample-metadata paths now retain the first associated transform rather than rejecting later duplicates. Selected public parity passed 1/1 rows.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T160458.670138Z-5c88cb05a1594eff9b02085896c7ff5f/coverage.json. Its raw counters record eight true and eight false outcomes for each of the four samples.rs::Meta::transform duplicate guards in the exercised generic specialization. Coverage MCP marks source/build identity unverified and still lists the other specialization without observations. Its incremental comparison with the retained full report was incomparable because baseline branch detail did not match the reported totals. This is targeted local evidence rather than a verified aggregate coverage gain. No unit tests were added.

The current fixture matrix contains 2,732 total rows: 2,161 decode / inspect / verify rows and 571 encode rows. Of those, 2,161 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF monochrome grid 32-bit dimension descriptor parity — 2026-10-28

Added active public parity row decode:avif:portable_lossless_monochrome_grid_32bit_dimensions_73x64 for the 12-byte grid descriptor form that stores both canvas dimensions as 32-bit values. Its input SHA-256 is 40991aa9bee645ee683cb8c562d9db17e3c834e0c6998db90890dc0a498cd2f3. Pinned Pillow 12.2.0 parity passed 1/1 rows and produced the same 18,688 RGBA bytes as the 16-bit-form grid fixture (SHA-256 a553e8c265e29b0644101cff0da8cb54ac351ac4541b86d095ad960445cea987).

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261028T154651.754351Z-3331105e58824b8c952a25e791396dd6/coverage.json. Its local branch counters record eight outcomes for the complete descriptor prefix at src/codecs/avif/samples.rs:1727 and eight outcomes on the 32-bit dimension arm at line 1741. Coverage MCP reports source/build identity as unverified and its comparison does not establish a verified aggregate gain; these counters are targeted local coordinate evidence only. No production Rust code or unit tests were added.

The current fixture matrix contains 2,731 total rows: 2,160 decode / inspect / verify rows and 571 encode rows. Of those, 2,160 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF pasp compatibility parity — 2026-10-29

Coverage MCP's retained full AVIF branch report identified three unobserved invalid-value outcomes in each container::parse_pasp and samples::parse_pasp: zero horizontal spacing, zero vertical spacing, and a nonempty trailing payload. The report has no source/build receipt, so these coordinates were treated as candidates and checked against pinned Pillow 12.2.0 / libavif 1.4.1 before adding parity rows.

Added three deterministic public inputs from primary_item_irot_pasp_4x3.avif. They set horizontal spacing to zero, set vertical spacing to zero, or append one 0xff payload byte while rebasing the file-backed iloc extent. Their input SHA-256 values, in that order, are 1d8ad709f18d1bed97ca2e44178a8b9580aeb79763ea9543d4bc3ef73d62d799, 3f8eef88f63387e8de633f5783d56e3ca8ae6d0ccc5a397969377c2bda3f220a, and e62a08cb8bcb753fcae35739316bfc5ee4c0943879f4d9f6d0ecf087dee2f5c7. The pinned oracle accepts all three and returns the same 18 RGB bytes as the source fixture (SHA-256 efbe5247163f007591d148c7975ad74429fd2282feb0bdec402838155763da38). The encoded mdat bytes remain unchanged.

Both Rust pasp parser paths now preserve these unusable values as opaque properties, matching Pillow's behavior. The sample parser copies bytes only on this ignored-property path; valid pasp parsing retains its existing borrowed span. The three new manifest cases pass selected public parity 3/3. No unit tests were added.

The selected LLVM report is .coverage-mcp/local-evidence/selected/avif-pasp-compat-20261029-retry1/coverage.json. Coverage MCP records the report's source/build identity as unverified and its comparison with the retained full report as incomparable because baseline branch detail does not match its totals. These results are targeted local coordinate evidence; no aggregate coverage gain is claimed.

The current fixture matrix contains 2,749 total rows: 2,178 decode / inspect / verify rows and 571 encode rows. Of those, 2,178 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF truncated top-level header parity — 2026-10-29

Added active parity inputs for a one-byte partial box header after a complete AVIF and for a signature-recognized AVIF containing only its ftyp box followed by that partial header. Pinned Pillow 12.2.0 accepts the complete image with the trailing fragment and returns the same 49,152 RGB bytes as baseline.avif (SHA-256 f1a2555b1c61036af2bd1d3d125a6a1343993873d9e5d58e3caee79989095dcf). It recognizes the incomplete still's AVIF signature and rejects image open as malformed. Both inputs are generated and hash-checked by scripts/generate_avif_container_edge_fixtures.py.

The two new rows and the three existing pasp compatibility rows passed the selected parity run 5/5. Its report is .coverage-mcp/local-evidence/selected/avif-pasp-and-short-tail-20261029/coverage.json. Coverage MCP compared it with the selected over-budget trailing-box report and returned status=limited: source/build identity is unverified and test status is unknown to MCP. The selected reports contain 2,144/32,088 and 2,233/32,088 covered branch observations; the comparison reports 22 newly observed coordinates overall and six in the two extract_inner_with_metadata specializations, including the false meta.is_some() outcome. These are report-coordinate differences, not a verified aggregate coverage gain or regression. No full coverage run was performed for these selected additions.

The current fixture matrix contains 2,751 total rows: 2,180 decode / inspect / verify rows and 571 encode rows. Of those, 2,180 decode rows and 540 encode rows are active; 31 planned encode rows remain.

AVIF stsz branch parity follow-up — 2026-10-29

The retained full report .coverage-mcp/local-evidence/full/20261029-after-stsz-branch-cases/coverage.json had no remaining reported branch gaps in container::parse_stsz or samples::parse_stsz after two public parity rows were added: decode:avif:error_animated_stsz_nonzero_version exercises the samples parser's nonzero-version rejection, and decode:avif:error_animated_sequence_only_stsz_common_size_short_samples exercises the container parser's nonzero common sample-size path. Both rows passed the selected parity run (2/2).

The full all-feature coverage campaign passed all integration executables: animation loop 4/4, capability table 1/1, coverage matrix 57/57, decode policy 7/7, determinism 1/1, and feature gates 69/69. Its totals are lines 95,073 / 139,981 (67.918503%), branches 18,944 / 32,084 (59.045007%), functions 5,272 / 8,955 (58.872138%), and regions 145,030 / 217,242 (66.759651%).

Coverage MCP reports zero remaining parse_stsz branch gaps and two newly observed coordinates against the earlier full report: the false arm in container.rs:1774 and the true arm in samples.rs:2437. The comparison is limited because source/build identity and test attribution are unverified; the coordinate delta is not a verified aggregate gain. No production Rust code, unit tests, SIMD implementation, or benchmark changes were added, and the full 100% coverage goal remains open.

The current fixture matrix contains 2,759 total rows: 2,188 decode / inspect / verify rows and 571 encode rows. Of those, 2,188 decode rows and 540 encode rows are active; 31 planned encode rows remain. AVIF has 688 decode rows.

AVIF stsz trailing-payload parity — 2026-10-29

Coverage MCP's retained full report highlighted missing branch outcomes in container::parse_stsz and samples::parse_stsz. Added the active public parity row decode:avif:animated_stsz_trailing_payload. Its deterministic fixture appends one bounded byte after the declared five sample-size entries, rebases stco and iloc offsets, and preserves the encoded mdat payload. The input SHA-256 is ec5869776d517f36dcbd9d19eb05e8a87dd709b3651a2b2ca00a826cf546f8c3. Two malformed-input rows also exercise an empty sample-size table and a zero-sized sample entry. Pillow rejects both complete files at open; their input SHA-256 values are 00a12f15bb8a108afd79d4a8c3a38f03e2a00180b513c32ecc3c18a2544deffd and 6bf0b1208f1043014565adbfa368a46ac60462faaea837da36fe240604fd6b72.

Pillow 12.2.0 and pinned libavif 1.4.1 both accept the complete input, decode five exact RGB frames with 33 ms timing, and report one play. The two Rust sample-size parsers now stop after the declared entries while keeping all existing bounds checks. The selected public parity run passed 3/3: the valid sequence matched all five 67,500-byte Pillow frames, and both malformed rows matched Pillow's open-time rejection.

The selected report is .coverage-mcp/local-evidence/selected/20261029-stsz-edges/coverage.json. Coverage MCP reports its source identity as unverified and test attribution as unknown. Comparison with .coverage-mcp/local-evidence/full/current-after-loop-hash-fix-20261029/coverage.json is incomparable because the baseline branch detail does not reconcile with its totals. No aggregate coverage gain is claimed; the full 100% goal remains open. The current fixture matrix at that point contained 2,754 total rows: 2,183 decode / inspect / verify rows and 571 encode rows. Of those, 2,183 decode rows and 540 encode rows are active; 31 planned encode rows remain. No unit tests, SIMD implementation, or benchmark changes were added.

AVIF grid descriptor and ftyp parity — 2026-10-29

Coverage MCP's full report .coverage-mcp/local-evidence/full/20261029-after-avif-iref-parity/coverage.json identified three unobserved public grid-descriptor outcomes in samples::Meta::grid_properties: version one, zero output width, and zero output height. Added active rows error_grid_version_1, error_grid_zero_width, and error_grid_zero_height. Their input SHA-256 values are 6d75c008f18bf3c509c79ba810656a0e71d0f1da05c890456af598e51172ddeb, 37b53b695d8d8a97ddba92087ad15de6c75635c970c2dd94d037b6ad6f754bf2, and 3f2fd4d6f618c5527c25a1750b508c5ed7122f69b4a7c44a7c3bd9c4fb5292b6. The deterministic generator verifies that each mutation changes only the eight-byte descriptor and preserves all other file bytes and AV1 media. Pillow 12.2.0 rejects version one with Failed to decode image: Not implemented and both zero dimensions with Failed to decode image: Invalid image grid. The selected public parity run passed 3/3. Rust now classifies the unsupported descriptor version as malformed at the public boundary, matching Pillow's recorded RuntimeError contract.

Coverage inspection also motivated error_ftyp_misaligned_compatible_brand_payload. It appends one byte to the compatible-brand list in ftyp; the generator pins its SHA-256 as ada44e071b8609bc68b65ce123df4dac04b21e4b64d0865ec699bc7425400fc3 and checks that the encoded mdat and idat payloads are unchanged. Pillow rejects the file at open, and selected parity passed 1/1. A 1,025-brand input was also probed: Pillow accepts it, so the parser's existing resource cap was retained and that input was not recorded as an error parity case.

All four public rows were rerun together in this checkout and passed 4/4. The selected LLVM report, local receipt, and captured output are under .coverage-mcp/local-evidence/selected/avif-grid-ftyp-parity-20261029/. Coverage MCP could not combine that selection with the saved full report .coverage-mcp/local-evidence/full/20261029-final-stsd-parity/coverage.json: its baseline branch detail does not reconcile with its totals, and neither report has a verified source/build identity. No aggregate coverage gain is claimed from this selected run.

The final all-feature LLVM run is .coverage-mcp/local-evidence/full/20261029-after-avif-ftyp-parity/coverage.json. All integration executables passed: animation loop 4/4, capability table 1/1, coverage matrix 57/57, decode policy 7/7, determinism 1/1, and feature gates 69/69. Totals are 95,050/139,928 lines (67.927791%), 18,947/32,056 branches (59.105940%), 5,271/8,953 functions (58.874120%), and 145,009/217,183 regions (66.768117%); repository floors pass and the 100% objective remains open. Coverage MCP reports no remaining branches in samples::Meta::grid_properties. Its full-report comparison is coordinate-only because both reports lack verified source/build identities. The additional ftyp row did not change aggregate coverage coordinates. Duplicate private container-parser branches that public inspection rejects earlier remain unclaimed; no private unit tests were added. No SIMD implementation or performance benchmark changed in this batch.

The current fixture matrix contains 2,774 total rows: 2,203 decode / inspect / verify rows and 571 encode rows. Of those, 2,203 decode rows and 540 encode rows are active; 31 planned encode rows remain. AVIF has 703 active decode rows.

AVIF unterminated infe item-name parity — 2026-10-29

The saved full report .coverage-mcp/local-evidence/full/20261029-current-after-av1-inter-translation-depth-contract-final/coverage.json listed both missing branch outcomes in samples::Reader::c_string. Added the active parity row decode:avif:error_infe_missing_item_name_terminator. Its fixture changes the infe item-name terminator in baseline.avif to X, keeps the complete file and AV1 media payload intact, and has SHA-256 b8609cd7fd3acd8c4f7eacad072ed85dcce52c65df9ebd9760ab1e1a8328620d. Pinned Pillow 12.2.0 rejects the full input at open. The selected public parity run passed 1/1.

The selected report is .coverage-mcp/local-evidence/selected/20261029-avif-infe-unterminated-name/coverage.json. Coverage MCP shows one Reader::c_string branch outcome still missing in this measurement; the prior full report showed both outcomes missing. The incremental comparison is incomparable because baseline branch detail does not reconcile with its reported totals. Both reports lack verified source/build identity, so this is coordinate-level evidence and no aggregate coverage gain is claimed. No Rust code, unit tests, SIMD implementation, or benchmark changes were made. No full matrix rerun was performed.

The current fixture matrix contains 2,801 total rows: 2,229 decode / inspect / verify rows and 572 encode rows. Of those, 2,229 decode rows and 541 encode rows are active; 31 planned encode rows remain.

High-depth I422 super-resolution/restoration parity slice — 2026-10-29

The new animated_lossy_inter_422_superres_sgr_10bit_160x56.avif input is a two-frame, full-range 10-bit I422 sequence. Its inter frame is coded at 128x56, super-resolved to 160x56, and applies SGR restoration to all planes. The generator selects TX_MODE_LARGEST, which is required by the existing high-depth I422 restoration admission path. The pinned file hash is 60748f33355d8f8b54f48942e319c1791e75c75c94da55a1568fd6679edf578a; both Pillow 12.2.0 frame hashes and an independent pinned native loop observation are retained.

The focused public parity command make coverage-selected COVERAGE_CASES='decode:avif:animated_lossy_inter_422_superres_sgr_10bit_160x56' passed 1/1. Coverage MCP reports remaining branch gaps in high_depth_lossy_i422_superres_restoration_supported for the selected report at .coverage-mcp/local-evidence/selected/20261029T102753.700076Z-51b908da01e449298ea39b421d64e7de/coverage.json. That report has unverified source/build identity and unknown test attribution, so it does not support an aggregate coverage delta or a full-coverage claim. The fixture matrix now contains 2,801 rows, including 729 AVIF decode rows. This fixture-only slice made no decoder hot-path, SIMD, or benchmark changes.

AVIF inter-frame decoder profile baseline — 2026-10-29

The public workload decode:avif:animated_motion_temporal_mv_range_2048x128 passed its exact three-frame RGB parity case (1/1). On the current ARM64 host, the release avif_perf_probe measured 21 warmed calls at a 12.331 ms median, 12.090–13.661 ms range, and 12.617 ms nearest-rank p95. Host and toolchain details are in .coverage-mcp/local-evidence/perf/20261029-avif-motion-mv-arm64-control/metadata.txt; raw runs are in control-a1.txt.

A separate eight-second macOS sample profile recorded 6,775 stack samples. The largest visible AV1 path was tile entropy/partition reconstruction through validate_tile_entropy_prefixes, validate_complete_lossy_420_partition, and decode_inter_translation_impl; RGB materialization was a smaller path. This profile guides the next experiment but does not provide precise timing by function. The profile is retained as sample.txt beside the run data. This is a single diagnostic baseline from the dirty tree at commit 69a79d4c46b3c8598de020e47345ade1b0e1d304; the candidate comparison is recorded below. This ARM64 profile does not establish SSE2 or AVX2 performance. The repository's strict make lint-x86-simd compile/lint lanes passed for the SSE2 baseline and AVX2 flags on x86_64-unknown-linux-gnu; native x86 runtime parity and timing remain to be measured.

AV1 integer-motion block copy — 2026-10-29

put_unscaled_kernel now copies complete in-bounds rows when both interpolation filters are absent, which is the integer-motion path. The checked PlaneView row slices feed copy_from_slice; filtered blocks and any block touching a plane edge keep the existing replicated-sample kernel. This adds no unsafe code or allocation. It leaves the existing wide SIMD kernels intact; compiler lowering and runtime speed on x86 still need native measurement.

The public sequence probe was rebuilt with all features and measured the same three-frame motion-range input in sequential A-B-B-A order, 51 decoder calls per run and two runs per build. Across 102 measured calls per build, the control median was 13.224 ms and nearest-rank p95 was 14.527 ms; the candidate median was 12.666 ms and p95 was 13.406 ms, a 4.22% lower median on this ARM64 host. The candidate and control binary hashes, toolchain, host, and raw runs are retained in .coverage-mcp/local-evidence/perf/20261029-avif-motion-mv-copy-candidate/. This is one workload on a dirty tree, not a world-record or x86 SIMD claim.

The final candidate passed six selected Pillow parity rows covering the same motion-range workload plus left/right search-window and positive/negative motion on both axes. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261029-avif-motion-copy-final/coverage.json. Coverage MCP identifies the in-bounds copy and clipping fallback as exercised; one checked-add overflow outcome remains unseen. That outcome is unreachable for valid bounded AV1 block geometry on supported 32/64-bit targets, so no synthetic private-line test was added. Coverage MCP marks this selected report's source identity unverified and test attribution unknown; it is not full-suite coverage evidence.

AV1 unfiltered-copy fallback parity and coverage — 2026-10-30

The current candidate passed 13 selected Pillow sequence-parity rows covering multi-tile and large 4:2:0 motion, both temporal search-window sides, four motion-vector range directions, and five lossy inter partition layouts. A separate target-only fault contract forces the unfiltered copy's source-X end addition to overflow; scalar fallback output matched the source row's Pillow reference, and a clean retry matched the injected result. The contract has oracle_status: not_applicable and is reported separately from parity.

The selected report is .coverage-mcp/local-evidence/selected/20261029T215408.343449Z-d50845debbda49bf9b661ade0ca99b9c/coverage.json (SHA-256 3e9ed70bd6994e75a40fe190e1306300880c963ea4e6beff770294ea76ae8900). The selected run passed all 14 rows: 13 parity cases and one fault contract. Coverage MCP's line-filtered queries at the copy helper's checked conversion, addition, and bounds-check locations returned no missing branch groups; the file-level query still reported 29 missing branch groups elsewhere in mc.rs. Its report source identity is unverified and test attribution is unknown, so these results are local coordinate evidence and do not establish an aggregate coverage increase.

A blend-focused selection also passed 15 public inter-inter, inter-intra, and OBMC parity rows alongside 12 target-only fault contracts for motion geometry, copy fallback, difference-mask buffer validation, and wedge-mask validation. All 27 rows passed; the 12 contracts have oracle_status: not_applicable and remain separate from the 15 Pillow parity results. Coverage MCP reports no missing branch groups for fill_wedge_mask; it still reports seven in difference_mask_and_blend, three in reduce_wedge_mask, six in fill_inter_intra_mask, seven and four in the left and top OBMC blends, and one in copy_unfiltered_block_if_in_bounds for this different selection. The report is .coverage-mcp/local-evidence/selected/20261029T220325.244183Z-61b23febdf5b4888a48400724dd680ef/coverage.json (SHA-256 94736238319fa515a57e8f2090d3eb190d9a21301703b926394edd1f4d9a6457). Its source identity and test attribution are unverified, so these remaining function groups are selected coordinate findings rather than aggregate coverage results.

The public three-frame motion-range decode was also measured with five A–B–B–A cycles and five reverse-order B–A–A–B cycles. The baseline and fast-copy candidate medians were 13.428 ms and 12.552 ms in the first order (6.53% lower candidate latency), then 13.952 ms and 12.897 ms in the reverse order (7.56% lower). Raw reports are target/avif-motion-abba/results.json (SHA-256 c084409af23eb1f8541fe9b6fd09a081721cb6bdc68817959d178b47257f13c6) and target/avif-motion-abba/confirmation.json (SHA-256 f2fcd26c528763a4146998d47d9ea3377d3a389972d8072210b5634f29df5966). This repeatable result is for one workload on an Apple M3 Pro ARM64 host; it is not an x86 runtime, SSE2/AVX2, encoder, or project-wide speed claim.

AV1 inter-inter wedge parity — 2026-10-29

Added animated_lossy_interinter_wedge_i420_b16x16_64x64, a deterministic quality-99 64x64 I420 sequence whose sixteen B16x16 inter blocks select masked compound references. The fixture uses the pinned Pillow 12.2.0 / libavif 1.4.1 / libaom 3.13.2 encoder, exact timestamp-normalized input bytes, and retained native loop evidence. Its selected public parity case passed 1/1 with all three RGB frames matching Pillow.

The final selected LLVM report is .coverage-mcp/local-evidence/selected/20261029-avif-interinter-wedge-q99-final/coverage.json. It records 16 calls each to MotionScratch::blend_wedge, fill_wedge_mask, and reduce_wedge_mask, plus 32 retained chroma-mask blends. This confirms the public input reaches inter-inter wedge reconstruction and 4:2:0 mask reduction. Coverage MCP reports no missing branch groups for blend_wedge; it still shows three unobserved failure branches in fill_wedge_mask and ten in reduce_wedge_mask, including empty geometry and short scratch checks that valid bitstream geometry does not reach. The report has no verified source/build receipt and unknown test attribution; comparison with the earlier candidate was incomparable. This is selected-case evidence only, not an aggregate coverage gain or full-coverage claim.

AV1 difference-weighted inter-inter parity — 2026-10-29

Added four deterministic quality-100 64x64 AV1 sequences with B16x16 compound-selectable references: normal I420, inverted I420, I422, and I444. The final source frames follow the difference-weighted blend pattern, and all four selected public Pillow parity rows passed with exact RGB output. Their complete inputs and native repetition observations are retained.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261029-avif-diffwtd-masks-all-layouts/coverage.json. It records 64 calls to difference_mask_and_blend across the four cases and observes both mask-inversion outcomes and the supported I420, I422, and I444 mask-layout paths. Coverage MCP still reports 11 branch observations missing inside that helper, including short-buffer and short-scratch rejection paths. An isolated inverted-I420 run also passed 1/1; its line-filtered query leaves only the non-inverted mask arm missing, while the combined report has no missing observation there. Its source/build receipt is unverified and test attribution is unknown; comparison with the earlier single-case report was incomparable. This is selected-case evidence, not an aggregate coverage delta or full-coverage claim.

Added four target-only fault contracts for first-reference, second-reference, output-buffer, and mask-scratch length guards. The selected run .coverage-mcp/local-evidence/selected/20261029-avif-diffwtd-parity-and-buffer-contracts/coverage.json passed four parity rows and all four contracts. Each contract injects a short internal buffer through the public sequence decoder, checks its Unsupported(NotImplemented) outcome, then retries cleanly and matches the stored sequence parity references. The AV1 block layer maps these internal guard failures to the public unsupported result. Coverage MCP line filters show no missing branch arm at mc.rs:2207, 2212, 2217, 2223, 2230, or 2246; seven other branch observations remain missing inside the helper. The report's source/build identity is unverified and MCP test attribution is unknown; its local log records four parity rows and four contracts passing. This remains selected-case evidence, not an aggregate coverage delta or a full-coverage claim.

AV1 wedge layout parity and mask fault contracts — 2026-10-29

Added deterministic quality-99 I422 and I444 variants of the existing inter-inter wedge sequence. The selected public parity run passed all three supported layouts (I420, I422, and I444). Their three decoded frames match the pinned Pillow outputs, and native loop observations are retained in the AVIF loop bundle.

The same selected run passed six target-only public fault contracts for empty width, empty height, and short scratch in both wedge-mask fill and reduction. Each injected failure returns Unsupported(NotImplemented) through sequence decode, then a clean retry succeeds. Their oracle is not_applicable because the injected invalid private scratch states have no reference input behavior.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261029T084251.538350Z-c5d4841fbb01496daf0b359b4902bd64/coverage.json; its local log records three parity rows and six contracts passing. Coverage MCP reports no remaining branches in fill_wedge_mask and three in reduce_wedge_mask, at mc.rs:704, 707, and 725. A limited selected-test comparison against the I420-plus-contract run observes four additional branch outcomes in this helper and leaves those three. All three require the y-only 4:4:0 subsampling layout, which ChromaSampling::from_subsampling(false, true) rejects. The supported I420, I422, and I444 layout branches are observed; no synthetic private test was added for an unsupported bitstream layout.

Coverage MCP marks both reports' source identity unverified and test attribution unknown, so that comparison is a report-coordinate change rather than a verified coverage gain. This is local selected-case evidence, not a full-suite coverage result or a 100% coverage claim.

Full local coverage refresh and nclx parity contract correction — 2026-10-29

The full local LLVM coverage campaign passed after removing a stale feature contract that treated any bounded nclx tail as malformed. Its byte insertion also enlarged meta, shifting the media extents, so it did not isolate the property. The existing colr_nclx_trailing_payload_ignored parity row moves a tail byte from clap into nclx while preserving container sizes and matches Pillow. The reserved-bit and truncated-field checks remain. The focused avif_primary_cicp_color_matches_the_container_contract integration check passed, and the full AVIF matrix passed with the parity row active.

The full report is .coverage-mcp/local-evidence/full/20261029-current-tree/coverage.json. All coverage-run integration tests passed (139 tests). The repository's current coverage floors pass at 95,217/140,121 lines (67.953412%), 19,032/32,140 branches (59.215930%), 5,279/8,962 functions (58.904262%), and 145,320/217,552 regions (66.797823%). This is a refreshed local baseline, not 100% coverage.

Coverage MCP marks the report source unverified, build ID absent, and test attribution unknown. It reports 13,108 branch observations and 72,232 regions missing. A focused decode_inter_transform_size group has 174 missing branch observations.

A maintained five-frame wide-I444 mode-2 sequence now reaches the true all_roots_split && all_children_split LossyWideMode2Deep16 path at entropy.rs:7165. Its flat gray key frame is followed by checkerboards with 2-, 4-, 8-, and 16-pixel periods. The pinned generator produces a deterministic 62,628-byte input with SHA-256 a806f4585aa11699bc831fff1b02b7f1eacbd2089a88a2578bb6933afbcbdaf0; all five Rust-decoded RGB frames match Pillow exactly at 100 ms each. The selected public parity run passed 1/1. Its LLVM report records four true evaluations for each condition in the Deep16 branch. The independent native loop witness decodes all five frames and reports infinite repetition.

The selected report is .coverage-mcp/local-evidence/selected/20261029T093646.778150Z-c0c438e07bb3402189ec175efd2af3c8/coverage.json. Coverage MCP marks its source unverified and test attribution unknown. The incremental comparison with the preceding full report was incomparable because the baseline branch detail is incomplete. No aggregate coverage gain is claimed, and the full report above remains the pre-row baseline. Other specializations of decode_inter_transform_size still have missing outcomes. The report also leaves seven observations in difference_mask_and_blend; the y-only 4:4:0 mask path remains unavailable through supported AV1 chroma layouts. No synthetic unit test was added.

A deterministic two-frame 10-bit I444 super-resolution/SGR sequence adds input-driven parity for the narrow high-depth I444 restoration profile. Its largest-transform inter frame uses denominator 10, coded size 128x56, upscaled size 160x56, and SGR on all three planes. The 1,656-byte input hashes to d0f13c712995e0464efb51575ca353aabd26c8ff6e3001c415fd98f239c8221c; its two exact Pillow RGB frame hashes are 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 855f30260049bc5f85a057fa91223c85259acc4a55c4ae2d4ec66e45d88e4be6. The selected public parity run passed 1/1 and its LLVM report records the specialized restoration admission path reaching its successful return. The report's source identity is unverified and test attribution is unknown; the incremental comparison with the saved full report is incomparable because its branch detail is incomplete. No aggregate coverage gain is claimed. Native loop evidence confirms two decoded frames and infinite repetition.

The focused report is .coverage-mcp/local-evidence/selected/20261029T095423.557742Z-9a9e5275a438434a93802b8df7b4c102/coverage.json.

8-bit I422 super-resolution/SGR parity — 2026-10-29

Added the active public parity case decode:avif:animated_lossy_inter_422_superres_sgr_8bit_160x56. Its pinned 1,601-byte sequence uses an 8-bit I422 inter frame coded at 128x56, upscaled to 160x56, with largest-transform mode and SGR on all three planes. The two exact Pillow RGB frames match SHA-256 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 06f17713c7758faaac74cd5cabd7d441aed55a41e8e03322a3e339b4a345ac2f. The focused public parity selection passed 1/1. The independent pinned native loop observation decodes both frames and reports infinite repetition. No private unit tests were added.

The public fixture matrix now contains 2,802 total rows: 2,230 decode / inspect / verify rows and 572 encode rows. Of those, 2,230 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 730 active decode rows.

The refreshed full report is .coverage-mcp/local-evidence/full/20261029-avif-i422-superres-refresh/coverage.json. All 139 coverage-run integration tests passed, including the 57-test matrix and 69 feature-gate tests. Totals are 95,700/140,121 lines (68.298114%), 19,286/32,140 branches (60.006223%), 5,299/8,962 functions (59.127427%), and 145,995/217,552 regions (67.108094%), above the current floors. Coverage MCP still reports 12,854 missing branch outcomes overall and 59 in lossy_i422_superres_restoration_supported (with additional outcomes missing in its closures and the high-depth sibling).

The report-coordinate comparison with the preceding full report observed 58 new branch locations, including the accepted I422 restoration path. Source and build identity remain unverified and test attribution is unknown, so this is limited coordinate evidence, not a verified aggregate coverage gain or regression. The 100% coverage objective remains open.

12-bit I422 super-resolution no-restoration parity — 2026-10-29

Added the active public parity case decode:avif:animated_lossy_inter_422_superres_12bit_160x56. Its deterministic 1,675-byte sequence has a 12-bit I422 inter frame coded at 128x56 and super-resolved to 160x56 with restoration disabled. The two exact Pillow RGB frame hashes are 69db76fd576323ba0a068072e8473ed16740c868e8c8c7199063056f97b4f9ed and 3acbd991ecc3cdbea09be468ef346e16f3413c9766e2cc6ebb8690b8e2f69ab6. Its selected public parity run passed 1/1, and the independent native loop observation confirms two decoded frames with infinite repetition.

The selected report is .coverage-mcp/local-evidence/selected/20261029T110505.345865Z-ed4be997988b4adcb851447db40fcd5b/coverage.json. The selected LLVM report records the no-restoration early-return outcome at entropy.rs:13909; Coverage MCP still reports missing outcomes across other function instances. The report's source identity is unverified, build ID is absent, and test attribution is unknown. Its incremental comparison with the full report is incomparable because baseline branch detail is incomplete, so no aggregate coverage gain is claimed. No private unit test was added. The public fixture matrix now contains 2,803 total rows: 2,231 decode / inspect / verify rows and 572 encode rows. Of those, 2,231 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 731 active decode rows.

AVIF trailing incomplete top-level payload parity — 2026-10-29

Added the active public parity case decode:avif:trailing_truncated_top_level_payload. It appends a complete eight-byte free box header declaring an absent eight-byte payload after the complete baseline still. Pinned Pillow accepts the file and preserves the baseline image information and RGB pixels. The selected public parity run passed 1/1 with exact 49,152-byte RGB output.

The selected report is .coverage-mcp/local-evidence/selected/20261029T111854.337976Z-0f0d7202ea63491bb66094fa5e668f57/coverage.json. Its LLVM data records four true-arm hits for the completed-image predicate at container.rs:364. Coverage MCP still reports missing outcomes at that location in other function instances. The report has unverified source identity, no build ID, and unknown test attribution; incremental comparison with the full report is incomparable because its branch detail is incomplete. No aggregate coverage gain is claimed, and no private unit test was added.

The public fixture matrix now contains 2,804 total rows: 2,232 decode / inspect / verify rows and 572 encode rows. Of those, 2,232 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 732 active decode rows.

AVIF animated stss table parity — 2026-10-29

Coverage MCP highlighted samples.rs::parse_u32_records. The public input animated_stss_trailing_payload.avif declares zero stss entries and retains the original sync-sample index as bounded trailing payload. Pillow 12.2.0 and the pinned libavif 1.4.1 observer both preserve five exact 150x150 RGB frames at 33 ms and report one play. The parser now ignores bytes after the declared entries, matching Pillow while continuing to validate each declared index. Two companion full-file cases exercise its failures: a table declaring two indices with only one present, and an unsupported FullBox version. Pillow and Rust both reject each case.

All three selected public parity runs passed 1/1: .coverage-mcp/local-evidence/selected/20261029T113039.761715Z-e28eafef2ac349d7b51623100a843110/coverage.json. .coverage-mcp/local-evidence/selected/20261029T113805.902403Z-ee899468e25f447ead25b495183a3c67/coverage.json, and .coverage-mcp/local-evidence/selected/20261029T113956.214247Z-b670f5556b244611b47ed48cf5a71e1d/coverage.json. The fresh error-case reports show no remaining missing branch at the removed trailing-byte check; their per-case reports still omit the opposite FullBox version outcome. Coverage MCP marks source identity unverified, and the saved full-report comparison remains incomparable because its branch detail is incomplete. No aggregate coverage gain is claimed. No private unit test was added, and no full matrix refresh was run.

The public fixture matrix now contains 2,807 total rows: 2,235 decode / inspect / verify rows and 572 encode rows. Of those, 2,235 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 735 active decode rows.

AVIF track-reference zero target parity — 2026-10-29

Coverage MCP identified missing branches in samples.rs::parse_tref. Added a full-file animated AVIF whose sole auxl reference targets track ID zero. Pillow 12.2.0 and the pinned libavif 1.4.1 observer ignore that target and preserve all five exact RGB frames, 33 ms timing, and one play. The Rust parser now treats target zero as no auxiliary-track mapping while still rejecting duplicate auxl children within one tref box. A companion input with two such children is rejected by Pillow at image open and Rust as well.

The selected parity run included both new rows and the existing duplicate hint reference control; all three passed. Coverage MCP's branch query reports no remaining branch groups in either AVIF parse_tref function for this selected report. The report is .coverage-mcp/local-evidence/selected/avif-tref-auxl-parity-with-hint-20261029/coverage.json (SHA-256 993394543e9bf7fa1b657e211adb1cce6cae87bc67898cbdc4165d422c0f13e8). It has unverified source identity and unknown test attribution, so this is focused parity and branch evidence, not a verified aggregate coverage gain or a 100% coverage claim. No private unit tests were added.

The public fixture matrix now contains 2,809 total rows: 2,237 decode / inspect / verify rows and 572 encode rows. Of those, 2,237 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 737 active decode rows.

AVIF alpha-track timescale parity — 2026-10-29

Coverage MCP highlighted samples.rs::sequence_payload. Added the active sequence_alpha_timescale_mismatch case by changing the alpha track timescale while preserving the color track timescale. Pillow and the pinned libavif observer accept the input and preserve all five RGBA frames with color-track timing. The parser pairs alpha samples by position and keeps color-track timing, matching those observations. No unit test was added.

The focused parity selection, including alpha timescale, duration, and sample count controls, passed 3/3. A wider six-case selection also passed 6/6 and included ordinary animation, a missing-handler track, and an unknown sample entry hint-track control. Its report is .coverage-mcp/local-evidence/selected/avif-sequence-payload-coverage-controls-20261029/coverage.json (SHA-256 6406b51b55b6f39ade719f73b9848fb3517af24fcaeeeeb38a45c1836bceabf9). For this selected report, Coverage MCP still identifies an uncovered false arm in the fallback color-track configuration search and an uncovered true arm at duplicate-alpha-track rejection. The report has unverified source identity and unknown test attribution, so it is focused branch evidence only; no aggregate coverage gain or 100% coverage claim is made.

The public fixture matrix now contains 2,810 total rows: 2,238 decode / inspect / verify rows and 572 encode rows. Of those, 2,238 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 738 active decode rows.

AVIF sequence track selection parity — 2026-10-29

Coverage MCP's sequence_payload query showed the duplicate-alpha rejection and fallback color-track selection branches were still missing. Added sequence_duplicate_alpha_tracks, which duplicates the auxiliary alpha track under a distinct ID while preserving its color reference and sample payloads. Pillow preserves all five exact RGBA frames, and the pinned libavif observer parses and decodes five frames. The parser now selects the first matching auxiliary alpha track, matching Pillow's tolerance of the repeated track. Added error_sequence_no_color_track_candidate, which changes the color handler to soun and its sample entry to zzzz; Pillow and Rust reject this file at open, exercising the fallback search's no-configuration path.

The selected public parity run included these inputs and six alpha/handler controls; all eight cases passed. Coverage MCP reports no missing branch groups for sequence_payload in this selection. Its report is .coverage-mcp/local-evidence/selected/avif-sequence-selection-parity-20261029/coverage.json (SHA-256 92332bda21fc210daeee3530b6d955e64ef49d112492b026ae006797dee0704b). The report has unverified source identity and unknown test attribution, so the result is selected branch evidence only and does not establish aggregate coverage or 100% coverage. No private unit tests were added.

The public fixture matrix now contains 2,813 total rows: 2,241 decode / inspect / verify rows and 572 encode rows. Of those, 2,241 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 741 active decode rows.

The new error_iloc_empty_extent_list parity row uses a primary item with no declared extents. Pillow and Rust both report the public malformed empty-item outcome, and the selected parity run passed 1/1. Its LLVM report records the empty-span branch for both inspection and decode validation. The report is .coverage-mcp/local-evidence/selected/20261029T123329.798172Z-04c836bc22f94f2da32991ea26cf410e/coverage.json (SHA-256 c2514e9acc58d5b2b7b28f37c522d1a518b485f94be34f2379786a9bb7e00b4a). Its local receipt records that the source and fixtures did not change during the run. Coverage MCP returns source=unverified and tests=unknown for this local report, so this is focused branch evidence rather than an aggregate coverage claim.

The current full coverage_matrix_tests run passed 57/57 tests after this row was added. Its report is .coverage-mcp/local-evidence/full/20261029-post-iloc-empty/coverage.json (SHA-256 034c832b488168bfeeb12ffc0642f3097f9d0ef664117a25df20024d8f05fdbc). The local full report records 19,094/32,132 branches; the preceding full report recorded 19,093/32,132 at the same denominator. Coverage MCP now reports no missing groups at the no-payload span check. Its remaining validate_plane gaps are the empty-plane guard, which current AVIF payload construction cannot reach, and opposite READ_PAYLOAD arms in each const-generic specialization, which are compile-time impossible. Coverage MCP still marks this full report source=unverified and tests=unknown, so the aggregate comparison remains local exploration evidence.

AV1 motion predictor geometry fault contract — 2026-10-29

Coverage MCP showed the invalid-geometry arm in MotionScratch::length was unreached by valid AV1 block geometry. Added the target-only fault contract fault-contract:avif:av1_motion_predictor_zero_width_rejected on the existing three-frame motion-range input. The coverage-only hook forces zero width; the public sequence decode reports failure and a clean retry succeeds. The selected case passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261029T124959.015899Z-07eb1054576b4506bdb98a761e97beb1/coverage.json (SHA-256 6abf896b7f0ff32d20ea89d5b0e2d8a84a40fa03964f2598a471b85aef101dc0). The release decoder has no fault branch or added work. Coverage MCP still reports the empty-height and over-limit geometry arms as missing; these are defensive states unavailable from valid AV1 block geometry, so no additional private-line cases were added.

The refreshed all-feature LLVM coverage run passed all six integration executables (139 tests total), including all 57 coverage-matrix tests and every active parity and fault-contract row. Its report records 95,703/140,116 lines (68.302692%), 19,291/32,134 branches (60.032987%), 5,300/8,962 functions (59.138585%), and 146,001/217,543 regions (67.113628%). The report is .coverage-mcp/local-evidence/full/20261029-av1-motion-geometry-contract/coverage.json (SHA-256 d1915b964edb1ada03b98b17024a15933e61795f5d40205413c53261e632670c). Coverage MCP reports 12,843 missing branches, led by 1,574 outcomes in the AV1 inter translation decoder. It marks report source identity unverified and test attribution unknown; the measured totals are local exploration evidence, not a verified aggregate gain or a 100% coverage claim. No private unit tests were added.

AV1 reference-MV geometry fault contract — 2026-10-31

The retained full parity report showed the invalid geometry arms in motion::find_reference_mvs were not reached by active public parity inputs. The report's source identity is unverified, so it served as a local gap hypothesis. Added the target-only fault contract fault-contract:avif:av1_motion_reference_mv_geometry_guard_sweep_rejected using the existing distance-compound AVIF sequence fixture. Its coverage-only hook sends 17 malformed geometry requests through the same validation path; the public sequence decode fails and a clean retry succeeds. The selected fault-contract case passed 1/1 with the oracle marked not applicable. Its source- and fixture-bound local LLVM report is .coverage-mcp/local-evidence/selected/20261031T021111.257732Z-a74c34f89e5e4881b3fdefc6617d5931/coverage.json (SHA-256 05438e46a209acf1d632e40f7c992bd4f7c864fd84cad01f1a7ddb88a9965301). Coverage MCP returned Transport closed, so no managed comparison or coverage gain is claimed.

The normal decoder no longer compares absolute tile starts with ends after checked additions: the shared nonnegative origin preserves relative ordering, and overflow already returns an error. End-versus-frame checks also reject a zero frame extent. The fault hook and sweep compile only for coverage builds; normal decode has no added runtime work. No unit tests were added.

AVIF compatible-brand list parity — 2026-10-29

Pinned Pillow 12.2.0 / libavif 1.4.1 decodes a complete AVIF with 1,025 compatible brands, while the Rust still-image and sequence parsers previously rejected lists above 1,024 entries. Removed that arbitrary cap in both parsers and reserve space for the validated list length, reporting allocation failure through the existing codec error contract. Added the deterministic ftyp_1025_compatible_brands fixture and an active input-only decode parity row; the fixture retains the original metadata and AV1 payload.

The selected exact parity run passed 1/1 with a 128x128 RGB8 output matching the pinned reference (49,152 bytes). Its report is .coverage-mcp/local-evidence/selected/20261029-avif-ftyp-1025-compatible-brands/coverage.json (SHA-256 c65c9306d674d9414289a5fb7f1905f12184a3edc921d4fc0cc6c94a7891232b). Coverage MCP marks this local report's source identity unverified and test attribution unknown; it is focused parity evidence, not an aggregate coverage claim. No unit tests were added.

The existing error_ftyp_misaligned_compatible_brand_payload parity row also passed 1/1 in a separate exact selection. Its report is .coverage-mcp/local-evidence/selected/20261029-avif-ftyp-misaligned-brands/coverage.json (SHA-256 2dc36188e9a1575fed124ed9cd9e5e7e90c6a9fd11aa1c7fe81799b5f8409392). Coverage MCP still returns missing parse_ftyp branch locations for that selection. Both selected reports have unverified source identity and unknown test attribution, so this run confirms the public malformed-input result but does not establish branch closure.

At this coverage refresh, the fixture matrix contained 2,817 total rows: 2,245 decode / inspect / verify rows and 572 encode rows. Of those, 2,245 decode rows and 541 encode rows were active; 31 planned encode rows remained. AVIF had 745 active decode rows.

AV1 wide lossless inter parity and coverage refresh — 2026-10-29

The existing public cases animated_lossless_inter_420_b128x128_10bit, animated_lossless_inter_420_wide_grid_b128x128, and animated_lossless_compound_wide_i420_b128x128 passed exact Pillow parity (3/3). Their selected LLVM report is .coverage-mcp/local-evidence/selected/20261029-av1-wide-inter-parity/coverage.json (SHA-256 a67c69e6591ca2f9a7711f13ad0784461e08de61b908cf8672bf74d8c6713995). Coverage MCP still reports branch outcomes in decode_inter_translation_impl around lines 48437 and 48469 for other compiler specializations. The report has unverified source identity and unknown test attribution; selected-case gaps do not establish a full-suite regression or justify adding cases that only force internal state.

The refreshed all-feature LLVM coverage run passed all six integration executables (139 tests total), including all active parity and fault-contract rows. Its report records 95,704/140,121 lines (68.300968%), 19,286/32,126 branches (60.032373%), 5,300/8,964 functions (59.125390%), and 146,001/217,547 regions (67.112394%). make coverage passed the owner-approved alpha floors. The report is .coverage-mcp/local-evidence/full/20261029-exporter-refresh-retry/coverage.json (SHA-256 17555db046f3ecd2425703abdcdc971217d460bdc7da67c06cf1b4205a18138a). Coverage MCP reports 12,840 missing branches, led by 1,574 outcomes in the AV1 inter translation decoder. Its source identity remains unverified and test attribution unknown, so these totals are local exploration evidence rather than a verified aggregate gain or a 100% coverage result.

AVIF I444 direct-chroma-grid parity — 2026-10-29

Coverage MCP identified missing branch outcomes around the direct chroma-grid sampling decisions in decode_inter_translation_impl. Added the active parity case animated_lossy_inter_444_direct_grid_mode_select_mixed_b128x64, using a pinned 8-bit I444, three-frame 128x64 AVIF fixture (SHA-256 8eb2916792a241372d03d5ccf1802549363ad61325c3ec3489b36752aaa7cfc2). The fixture generator verifies deterministic bytes, AV1 profile/frame syntax, and all three pinned Pillow RGB frame hashes. The native loop bundle independently records three decoded frames and the infinite-repeat observation.

The selected public parity run for the existing I422 companion and new I444 case passed 2/2, with exact RGB comparison for both sequences. Its LLVM report records both branch outcomes at source lines 48335 and 48369 in the executed single-reference lossy direct-grid specialization. Coverage MCP still reports other groups at those source coordinates; the report is local-only, its source identity is unverified, and test attribution is unknown. This is focused parity/coverage evidence, not verified aggregate branch closure. Report: .coverage-mcp/local-evidence/selected/20261029T144419.910177Z-a2f04b18bae841c2889af2239472a0ed/coverage.json (SHA-256 8a03cfb5aa1a23c238763fdbb8c0af88f0971c852c496243987d482599917fca). No Rust unit tests or runtime decoder changes were added.

AV1 clipped-wide monochrome parity and lossless-grid invariant — 2026-10-29

Added the input-only parity row animated_lossless_inter_monochrome_clipped_b128x128_124x128, a two-frame monochrome AV1 sequence with a 124x128 frame and a B128x128 lossless inter grid. The deterministic generator checks the AV1 syntax and pinned Pillow 12.2.0 RGB hashes. The fixture is 21,898 bytes (SHA-256 7553404e35f1583e5bb2e785acb4908de5a4bbfa8d888054b163cc8da32391e8); its two Pillow frame hashes are f503c9af04a4099c03bedb1461014aa8e4ef8668506fd169c523d7a862e22b87 and 6717767046bca15b0c19c8ef51ad4abd60dbc6d1effacd520dd2398f2d572f1a. The selected matrix parity run passed 1/1, and the native loop witness check passed with two decoded frames and infinite repetition.

The coverage audit found allow_clipped short-circuit arms in decode_inter_lossless_wide_grid. Its only caller passes lossless_partial_grid, whose predicate permits B32x32 plans, while this wide path requires a dimension above 64. Those arms were therefore unreachable in this function. Removed the redundant parameter and retained full coded-raster validation; the call graph has the same accepted inputs and fewer runtime conditions. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261029-av1-lossless-wide-invariant/coverage.json (SHA-256 00b0137fc00b8f54042a0572c6a19574a6502a178318c7dabb2b6170d434dc8c). Coverage MCP marks its source unverified and test attribution unknown, so the report is focused local evidence only. No Rust unit tests were added.

The current fixture matrix contains 2,821 total rows: 2,249 decode / inspect / verify rows and 572 encode rows. Of those, 2,249 decode rows and 541 encode rows are active; 31 planned encode rows remain. AVIF has 749 active decode rows.

The refreshed all-feature LLVM run passed all six integration executables (139 tests total), including 57 coverage-matrix tests and every active parity row. make coverage-check passed the maintained floors. The strict 100% gate still fails: lines are 95,701/140,117 (68.300777%), branches 19,284/32,122 (60.033622%), functions 5,300/8,964 (59.125390%), and regions 145,999/217,544 (67.112400%). Report: .coverage-mcp/local-evidence/full/20261029-cwd-wide-grid-invariant/coverage.json (SHA-256 aab419bd797f37e5128618e4d37f5e618b6176e4ae1ee5b0be84ec1441f4b8a2). Coverage MCP reports 12,838 missing branches, led by 1,574 outcomes grouped under decode_inter_translation_impl. It marks source identity unverified and test attribution unknown; these aggregate totals remain local exploration evidence, not a verified coverage gain or 100% result.

10-bit mixed-lossless AV1 inter parity — 2026-10-29

Added the active input-only parity row animated_mixed_lossless_inter_b32_i420_10bit_impulse_residual_64x64. Its deterministic fixture generator proves a 10-bit I420 sequence, a TX_MODE_SELECT inter frame with mixed lossy and lossless segments, and one residual in the non-skipped B32 ROI. The 2,948-byte AVIF input SHA-256 is 9a136b442ee7f742259cabc9bb1b2ce68004f9831eb4b169f08fa507f6dabbce; its Pillow RGB frame hashes are dcf046d69b3aa8558665fb2b20eddc466cd6a3c1cacc05104345a251a302b0b2 and 4d19f63fcc4cbee56812b9cca517b4d27f5fadfb3c75e9dad84543026f430e32. The native loop bundle records two decoded frames and infinite repetition.

The selected public parity row and the existing av1_inter_translation_sample_depth_mismatch fault contract passed together (2/2). Coverage MCP reports no remaining branch locations in mixed_lossless_inter_transform_mode_enabled for that selection, including the high-bit-depth arm. The selected report is .coverage-mcp/local-evidence/selected/20261029T174202.868798Z-42d5ff2298c64d26896c06a1cf4e078d/coverage.json (SHA-256 ec7ef2862f0b54fc447d39dc8e92f026b70d97edbbb6174b1d023045c609beaf). Its source identity is unverified and test attribution is unknown, so it proves focused branch reachability only; no aggregate coverage gain is claimed. No Rust unit tests were added.

make lint and make lint-x86-simd pass, including strict debug, release, coverage-configured, SSE2-baseline, and AVX2 Clippy lanes. The fixture matrix now has 2,820 rows, including 748 active AVIF decode rows. A seven-iteration local AVIF probe on Darwin 24.6 arm64 and Rust 1.96.1 decoded animated_motion_temporal_mv_range_2048x128 (input SHA-256 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a) in a median of 11,936,583 ns (range 11,740,500–12,998,583 ns). This is a current working-tree diagnostic without an A/B comparison, so it does not establish a speedup. The broader 100% coverage and SIMD performance goals remain open.

AV1 chroma-mask sampling type and parity check — 2026-10-30

Motion-compensation wedge and difference-mask helpers now take the existing ChromaSampling enum instead of independent X/Y booleans. This prevents the unsupported 4:4:0 y-only layout from entering private mask code. Wedge reduction handles 4:2:0 and 4:2:2 explicitly, while full-resolution and monochrome masks remain unchanged. Difference-mask reconstruction copies full-resolution rows directly for those layouts. No buffer allocation or per-sample arithmetic was added, and odd-width edge replication remains preserved.

The selected run passed eight input-only Pillow parity rows for inter-intra wedge and inter-inter wedge/difference masks across 4:2:0, 4:2:2, and 4:4:4, including both difference-mask polarities. It also passed ten existing target-only fault contracts for difference-buffer and wedge-mask guards. The LLVM report is .coverage-mcp/local-evidence/selected/20261029T221912.083316Z-455f985281524acfb822fc5455c1f664/coverage.json (SHA-256 d114342f524ea8e90e55b9566af46fb07fe608d729802abf1c29d11afcf69e7f). Coverage MCP reports no remaining branch locations in reduce_wedge_mask or fill_wedge_mask. difference_mask_and_blend retains two unobserved branch outcomes at mc.rs:2369 and mc.rs:2378, both in its odd-height vertical-pair fallback. Public AV1 luma transform and grid dimensions are multiples of four, so those outcomes are outside valid input geometry; the defensive fallback remains in place.

The report has no verified source/build receipt and unknown test attribution. It is selected-case evidence only and does not establish an aggregate coverage increase. No Rust unit tests were added. The broader 100% coverage and SIMD runtime-performance goals remain open.

AV1 compound distance-ratio parity edge — 2026-10-30

Added active parity row decode:avif:animated_lossy_interinter_distance_ratio_edge_i420_b16x16_64x64. Its deterministic six-frame 4:2:0 sequence makes the final order-hint-5 frame select references at order hints 3 and 6, exercising both outcomes of the distance-weight ratio comparison. The pinned AVIF input SHA-256 is abc38ca334493341926ff5f728ece919a1b71569cd8bfd4dec08f18d180811ba.

The focused selection of this row plus the existing distance and altref controls passed 3/3, including exact RGB parity for all frames. Its LLVM report is .coverage-mcp/local-evidence/selected/20261030T043729.219398Z-22cec4c3371d46c7a64064a122cb0d51/coverage.json (SHA-256 7c7aba9ce90f4c41821af8426169a555bc20c20ba4700cdfc263eea4da4f9b27). Coverage MCP reports 4,033/47,825 selected-binary branch observations. The executed distance_weight instance has nonzero true and false counts for both distance orderings and both threshold comparisons. Its remaining gap result points to a zero-count symbol at reported line 2427, while the current function is at line 2459; with source identity unverified, this coordinate is not treated as a reachable current-source gap. No aggregate coverage gain is claimed. The case's pinned native loop evidence validates independently. No Rust unit tests were added. The broader 100% coverage and SIMD runtime-performance goals remain open.

AV1 inter-translation invariant cleanup — 2026-10-30

Removed two redundant admission checks from AV1 inter reconstruction. The ChromaSampling check listed every variant of its closed internal enum, and the SampleDepth check listed every value constructible through its private fields and checked constructor. The common-geometry helper no longer accepts the unused sampling argument; reference depth/layout, nonzero visible dimensions, valid block layout, and inter-intra prediction constraints remain validated. This removes impossible rejection paths without adding work to the reconstruction hot path.

The current selected run passed six active input-only Pillow parity rows: 4:4:4 lossless B8x8 inter-intra plus 4:2:0 inter-intra mask modes 0–3 and wedge blending. Report: .coverage-mcp/local-evidence/selected/20261030T044233.969762Z-624584168adf48dab456ee01184379fc/coverage.json (SHA-256 e5966408e973c841c4d820e177c898445341426eae3f684cfd4d0a1a09743e63). Coverage MCP measured 4,170/47,825 selected-binary branch observations. The valid inter-intra modes exercise both sides of the mode and mask-coordinate branches. Remaining gaps in fill_inter_intra_mask are its coverage-only invalid-mode and geometry injections; inter_translation_common_geometry_is_valid still has defensive invalid-reference/depth/layout and zero-dimension arms. Those private invalid states were not made into unit tests or claimed as Pillow behavior. Source identity remains unverified and test attribution unknown, so no aggregate coverage gain is claimed.

make lint and make lint-x86-simd passed, including strict debug, release, coverage-configured, SSE2-baseline, and AVX2 Clippy lanes. cargo fmt --all -- --check and git diff --check also passed. No Rust unit tests were added. The broader 100% coverage and measured SIMD performance goals remain open.

AVIF CLLI trailing-payload parity and coverage refresh — 2026-10-30

Coverage MCP's preceding full-report gaps pointed to trailing-payload handling in both AVIF parse_clli paths. Added active parity row decode:avif:clli_trailing_payload_ignored, derived from hdr.avif. Its deterministic generator appends one zero byte to the four-byte primary-item CLLI property, rebuilds the enclosing boxes, and rebases all five file-backed iloc extents. It verifies that every item extent and the complete AV1 media payload remain byte-identical, then compares Pillow's full image information, frames, and decoded RGB bytes with hdr.avif. The fixture SHA-256 is 7862991cf4424c784f22d4a27ef128949eea8ad927c8ad05eed23a6e9effd108.

Both bounded CLLI parsers now read the two required 16-bit fields and retain the entire payload, including a Pillow-tolerated tail. The existing empty-CLLI contract still rejects a payload too short to contain those fields. The obsolete Rust-only assertion that treated a one-byte tail as malformed was removed; no Rust unit tests were added. The selected hdr plus trailing-CLLI parity run passed 2/2. Its report is .coverage-mcp/local-evidence/selected/20261030-clli-trailing-payload-ignored/coverage.json (SHA-256 31cac774f7d784d1644a33fc2e70e04ca5e1599dd49dbcc0b87037fcc22ea706).

The full make coverage refresh passed the all-feature suite and configured coverage floors: lines 98,440/140,272 (70.178%), branches 19,932/32,128 (62.039%), functions 5,426/8,974 (60.464%), and regions 150,262/217,749 (69.007%). Report: .coverage-mcp/local-evidence/full/20261030-after-clli-trailing-payload/coverage.json (SHA-256 37564d07f005c02dbf856809dcdeecae09a08cbeb5d2ead38878c7ad8bac659a). Coverage MCP returns no grouped branch gaps for parse_clli in this report, but marks source identity unverified and test attribution unknown. Treat it as local full-suite evidence, not a verified aggregate comparison. The incremental union with the selected report was incomparable because the baseline branch detail did not reconcile with its reported totals. make lint, make lint-x86-simd, make test-feature-matrix, and fixture integrity checks pass. No SIMD implementation or performance benchmark changed in this slice; the 100% coverage and measured SIMD speed goals remain open.

AVIF nested property size below its header — 2026-10-30

Added active parity row decode:avif:error_ipco_property_size_below_header. Its full-file fixture changes the first ipco/ispe size from 20 to 4 while preserving the file length and AV1 mdat bytes. Pillow 12.2.0 rejects it at open with UnidentifiedImageError. The fixture SHA-256 is 1376cc7d7360eae6b03c97b6d3808dc95bfa945aa8578e4443c540489ea2ed20. The focused selection with the existing nested zero-size control passed 2/2; its local LLVM report SHA-256 is 4afa4957216bb3b0dbf5a4486e683fd3fa95b0094ca3e48c885aea97e4b35565. An isolated selection of the new row also passed 1/1. Its report SHA-256 is 0aee1e9a43a7955af56b653dfeef57dab40c7421cce38d22ddc3156637b77308.

The full all-feature coverage run passed its configured floors: lines 98,441/140,272 (70.179%), branches 19,933/32,128 (62.042%), functions 5,426/8,974 (60.464%), and regions 150,264/217,749 (69.008%). Report: .coverage-mcp/local-evidence/full/20261030-after-ipco-size-below-header/coverage.json (SHA-256 1cfaf61e3920b8ad8b0491aea153cf77e190bcfd9160a53f8647f9ba57fa3ebe). Coverage MCP's comparison against the preceding full report observes one new branch coordinate, the true arm of samples::next_box at samples.rs:325. MCP marks this limited because source/build identity is unverified and test attribution is unknown; it is not a verified aggregate gain or proof that this specific selected case caused the full-report observation. In the one-case LLVM export, one samples::next_box function record at that location has six true-arm and 80 false-arm counts; a second record for the same source span has zero counts. The MCP gap grouping surfaces that unexecuted record. This is local branch evidence for the selected fixture, while source identity and MCP-level test attribution remain unverified.

The public matrix now has 2,848 rows: 2,276 active decode rows and 541 active encode rows, with 31 planned encode rows; AVIF has 776 active decode rows. Fixture integrity, the roadmap count, and generated capability documentation verify. No Rust unit tests were added. No SIMD implementation or runtime benchmark changed; 100% coverage and measured SIMD speed remain open.

AV1 frame-canvas completeness accounting — 2026-10-30

The AVIF sequence profile showed repeated full-canvas completeness scans in FrameCanvas::finish_with_filters_inner. The frame canvas now counts copied samples in coded and visible extents and compares the relevant count at finish. The written bitmap remains in place for overlap rejection and intra-edge availability. Counts update only after a placement passes geometry and overlap validation. No Rust unit tests were added.

On ARM64, the pre-change five-second sample profile recorded 3,768 stack samples; its collapsed stacks include 351 samples in validate_plane_placement and 333 in finish_with_filters_inner. The profile is retained at .coverage-mcp/local-evidence/perf/20261030-framecanvas-counts/arm64-profile.txt. An A–B–B–A comparison used 60 decode calls per block, the same release settings, and public decode_sequence on both binaries. For animated_motion_temporal_mv_range_2048x128, the pooled median fell from 11.524 ms to 10.502 ms (8.9%). For animated_motion_temporal_mv_range_negative_y_128x2048, it fell from 11.793 ms to 10.461 ms (11.3%). Raw timing blocks and host/build metadata are in framecanvas-counts-abba.json and framecanvas-counts-tall-abba.json in that directory. These are local ARM64 results for two workloads, not a claim of general AVIF speedup or x86 SSE2/AVX2 runtime performance.

The five-row focused parity selection passed baseline, grid, alpha, odd-sized I420, and the profiled sequence cases. make lint, make lint-x86-simd, and make test-feature-matrix passed. The post-change full all-feature coverage run passed configured floors: lines 98,466/140,300 (70.182%), branches 19,936/32,132 (62.044%), functions 5,423/8,973 (60.437%), and regions 150,305/217,795 (69.012%). Report: .coverage-mcp/local-evidence/full/20261030-after-framecanvas-counts/coverage.json (SHA-256 484dfbb0d856f2394c73953db847af9b5a397b6ed89e795817cf122230a4393b). Coverage MCP finds no missing branch observations in the changed finish and copy-count spans, but the report has unverified source identity and unknown test attribution. The four-metric 100% goal remains open.

AVIF lazy item-table inspection reservation contract — 2026-10-30

Coverage MCP identified the uncovered fault-injection true arm in parse_iinf::<LazyItemExtentPolicy> at src/codecs/avif/samples.rs:623. The existing item-table reservation contract exercised decode's bounded policy, while inspection uses the lazy policy. Added the target-only matrix row fault-contract:avif:avif_item_table_inspection_reservation_failure using inspection_error_then_retry_succeeds; its oracle status is not_applicable. No Rust unit test was added.

The exact selected fault-contract run passed 1/1. Its report is .coverage-mcp/local-evidence/selected/20261030-avif-item-table-inspection-reservation/coverage.json (SHA-256 60b3c648218b41c3912ffaffe8dee24a174d81f308dfa9fc29bf9f0cf9276d94). The raw LLVM record for the lazy-policy specialization shows one injected true-arm count and two false-arm counts. The refreshed all-feature make coverage run passed configured floors: lines 98,467/140,300 (70.183%), branches 19,936/32,132 (62.044%), functions 5,423/8,973 (60.437%), and regions 150,306/217,795 (69.013%). Report: .coverage-mcp/local-evidence/full/20261030-after-item-table-inspection-fault/coverage.json (SHA-256 c6960d031d0d4250cb6a34499c5194d22e44fd4672dce4120457e7cd262e17ce).

Coverage MCP now reports no missing branch observations at line 623 and one newly observed coordinate there in the full-report comparison. It marks that comparison limited because source/build identity is unverified and test attribution is unknown; treat this as local report evidence, not a verified aggregate coverage gain. The selected-report incremental union was incomparable because its instrumented inventory differs from the full report. The 100% coverage goal remains open.

AVIF duplicate item IDs use policy dispatch — 2026-10-30

Coverage MCP reported the opposite missing arms of the generic constant check in parse_iinf for its lazy-inspection and bounded-decode specializations. Those arms cannot occur for either policy. Replaced the constant condition with ItemExtentPolicy::on_duplicate_item_id: bounded decoding lazily constructs the existing parse error, while lazy inspection retains the first entry. Valid inputs do not call this handler, and inspection does not allocate an error for a tolerated duplicate. No Rust unit test was added.

The existing parity case decode:avif:error_iinf_duplicate_item_id passed 1/1. make lint passed, and the full all-feature make coverage run passed the configured floors. At local HEAD 69a79d4c4 plus working-tree changes, coverage measured lines 98,473/140,305 (70.185%), branches 19,935/32,130 (62.045%), functions 5,426/8,976 (60.450%), and regions 150,312/217,801 (69.013%). Report: .coverage-mcp/local-evidence/full/20261030-after-static-duplicate-policy/coverage.json (SHA-256 f8a1843b26bdc468ddfa96b605f34cfe73a56f4bd44918040f0587d205c7cf02).

Coverage MCP reports no missing branch observations at the changed duplicate handler line in this full report. Its source identity is unverified and test attribution is unknown, so this is local coordinate evidence and does not establish a verified aggregate coverage gain. The four-metric 100% goal remains open.

AVIF incomplete auxiliary-alpha declarations — 2026-10-30

Coverage MCP's retained full report listed missing arms in samples::Meta::non_primary_item_plane_properties for an alpha item with no extent dimensions and no pixel-depth declaration. Added the input-only parity row decode:avif:error_alpha_auxiliary_missing_ispe_and_pixi, derived from alpha.avif by clearing item 2's ispe and pixi associations while keeping its av1C and auxC associations. Pillow rejects the complete file at open. The existing missing-ispe row retains pixi, so it checks a distinct input.

The exact selected parity/coverage run passed 1/1. The new full make coverage run passed all integration targets and configured floors: lines 98,483/140,309 (70.190%), branches 19,929/32,118 (62.049%), functions 5,430/8,980 (60.468%), and regions 150,311/217,794 (69.015%). Report: .coverage-mcp/local-evidence/full/20261030-after-alpha-missing-ispe-pixi/coverage.json (SHA-256 4db19dad61747ab23c1c8bc8616668a16272be3aaa9658c4547db11da12b65dd). Its raw LLVM branch record at samples.rs:1668 records both outcomes, including the missing-dimensions arm. Coverage MCP no longer lists a missing branch for the samples::Meta projection, while three branches remain listed for the parallel container::Meta projection.

Coverage MCP marks this report's source identity unverified and test attribution unknown; its comparison with the preceding full report is limited because source/build identity and instrumented coordinates differ. The counts are local run evidence, not a verified aggregate gain. No Rust unit tests were added, and the four-metric 100% coverage goal remains open.

AV1 inter-translation admission coverage consolidation — 2026-10-30

Coverage MCP had grouped the common admission result as a missing branch in multiple decode_inter_translation_impl callback specializations. Moved that shared validation into validate_inter_translation_admission, keeping the coverage build out of the generic callback and using inline(always) in non-coverage builds. This retains the checked behavior and avoids a release call boundary; no runtime speedup is claimed.

The existing target-only contract fault-contract:avif:av1_inter_translation_sample_depth_mismatch passed 1/1 after the refactor, using decode:avif:animated_mixed_lossless_inter_b32_i420_impulse_residual_64x64. Its oracle status is not_applicable; it checks the structured sequence failure and successful retry. The selected report is .coverage-mcp/local-evidence/selected/20261030T154722.946987Z-46548de26e36400a9572d428bf2d2980/coverage.json (SHA-256 efb3fbc23221bea012dad02fcb9ace6b3b7162599a0e42b4daa1d7b37800b252).

The refreshed full make coverage run passed all integration targets, including 57/57 matrix tests, and cleared all configured floors: lines 98,521/140,311 (70.216163%), branches 19,955/32,102 (62.161236%), functions 5,435/8,984 (60.496438%), and regions 150,354/217,796 (69.034326%). The retained report is .coverage-mcp/local-evidence/full/20261030-after-inter-translation-admission-refactor/coverage.json (SHA-256 fe85ca54330771a0dd0a1dc72e8352a5ff009600c998f0eae221da7ea36a49bb). Coverage MCP groups the admission helper as one function group and still reports 12 missing branch outcomes within it. Its largest remaining AV1 group is the lossless-small prediction guard in decode_inter_translation_impl; the generic callback specializations still produce repeated missing branch groups there.

Coverage MCP marks the full report's source identity unverified and test attribution unknown, so the totals are local measurements and do not prove an aggregate coverage gain. No Rust unit tests were added. The four-metric 100% coverage goal and measured SSE2/AVX2 runtime goals remain open.

AV1 lossless-small inter-translation branch — 2026-10-30

Added the input-only parity row decode:avif:animated_lossless_inter_420_fixed_b4x4_64x64, backed by a deterministic 64×64, two-frame, all-lossless 8-bit I420 AVIF whose inter frames use fixed 4×4 AV1 partitions. The selected parity run passed 1/1 with full 12,288-byte Rgb8 pixel parity. Its raw LLVM branch record at src/codecs/avif/av1/block.rs:49501 records the lossless_small true arm 256 times and its false arm zero times for the executed specialization.

Command: make coverage-selected COVERAGE_CASES='decode:avif:animated_lossless_inter_420_fixed_b4x4_64x64'. Selected report: .coverage-mcp/local-evidence/selected/20261030T171950.823465Z-74d2144025a34b419ed8b0c513cd704f/coverage.json (SHA-256 d55e9f56e15e6864f831c253710dbfab1f155d2cd53d375fe81353bab48cd8de). The local evidence receipt is stored alongside it; fixtures were unchanged during the run. Coverage MCP marks source identity unverified and test attribution unknown for this report. Its grouped query still lists both arms across callback specializations; the executed specialization's raw LLVM record is the direct local evidence for this input. This does not establish a verified aggregate coverage gain. The incremental comparison against the preceding full report is incomparable because its branch detail does not reconcile with reported totals. No Rust unit tests were added; the four-metric 100% coverage and measured SSE2/AVX2 runtime goals remain open.

8-bit I422 inter-frame CDEF parity — 2026-10-31

The current public evidence matrix contains 2,889 total rows: 2,316 decode / inspect / verify rows and 573 encode rows. Of those, 2,316 decode rows are active, alongside 542 active encode rows and 31 planned encoder rows.

Added the input-only parity case decode:avif:animated_lossy_inter_422_cdef_8bit_16x16. Its deterministic two-frame AVIF is 8-bit I422 at 16×16 with inter-frame CDEF enabled, the largest transform, and no loop restoration. The fixture generator's --check passed, and the exact selected parity run passed 1/1 with both 768-byte RGB frames matching pinned Pillow references. Independent loop evidence verification passed for all 185 AVIF sequence references.

The retained local LLVM report, .coverage-mcp/local-evidence/selected/20261031T034145.456411Z-c691778d52534010a603a42424df8cdb/coverage.json, contains two emitted records for complete_bounded_i422_cdef_inter_reconstruction_context in entropy.rs; each records all seven branch pairs with an observed arm. Its adjacent local receipt records the selected case passing and fixtures unchanged. Coverage MCP returned Transport closed; the receipt therefore marks MCP source identity unverified and test attribution unknown. This is local selected-case evidence, not an MCP-confirmed gap closure or aggregate coverage gain. The 100% coverage goal remains open. No Rust unit tests were added.

AVIF duplicate sample-table container parity — 2026-10-31

The local full LLVM report at target/release-evidence/coverage.json showed the duplicate-child arm of samples::parse_minf at samples.rs:2391 unobserved (0 hits versus 2,061 for the non-duplicate arm). Existing duplicate-minf and duplicate-stco cases do not exercise a second stbl inside one minf. Added the input-only parity row decode:avif:error_animated_duplicate_stbl and a deterministic complete AVIS mutation. The generator rebases the item and sample offsets, verifies the box structure, and confirms that pinned Pillow 12.2.0 rejects the file at open. Its SHA-256 is 82117e58d5518cead7a53bc76cb705b3b02261558c6d5b34cf90328700b8bb4d.

make coverage-selected COVERAGE_CASES='decode:avif:error_animated_duplicate_stbl' passed 1/1. The selected report is .coverage-mcp/local-evidence/selected/20261031T040311.313482Z-379056a26e2d456a834a2dc8f6d2fa3b/coverage.json (SHA-256 e9d80cea32b6fcd80b1cf627998f29c654b577924ced961553e033c208d0951e). Its raw branch record at samples.rs:2391 records both outcomes six times in the executed parser specialization. Coverage MCP returned Transport closed for both the full and selected reports, so this is local LLVM evidence, not an MCP-confirmed gap closure or aggregate coverage gain. No Rust unit tests were added; the 100% coverage goal remains open.

AVIF zero track-ID parity — 2026-10-31

The local full LLVM report at target/release-evidence/coverage.json showed the zero-ID arm of samples::parse_tkhd at samples.rs:2264 unobserved (0 hits versus 2,143 for nonzero IDs). Added the active public parity row decode:avif:error_track_tkhd_zero_id. Its complete animated AVIF fixture sets the version-one tkhd track identifier to zero without changing box sizes or sample offsets; the pinned Pillow 12.2.0 oracle rejects the file at open. The fixture SHA-256 is 5b9718040db403bad0122fd59426e3e4d61652b88cea1a5654435075475180a3.

make coverage-selected COVERAGE_CASES='decode:avif:error_track_tkhd_zero_id' passed 1/1. The selected report is .coverage-mcp/local-evidence/selected/20261031T041022.555957Z-73491296284247a79160e36436e5a8fd/coverage.json (SHA-256 959daca7b66e8ad99b86cc4a3505d13d600309384e1f318be61e4651e53b0ec6). Its raw parse_tkhd branch record at samples.rs:2264 records six hits on the zero-ID arm in the executed parser specialization. Coverage MCP returned Transport closed for the full report, so this is local LLVM evidence, not an MCP-confirmed gap closure or aggregate coverage gain. No Rust unit tests were added; the 100% coverage goal remains open.

JPEG ZRL batching trial — 2026-10-31

A release sample of RGB 512×512 Q10 4:2:0 encoding identified repeated AC zero-run-length (ZRL) Huffman writes in encode_raw_ac_value. A candidate combined two adjacent ZRL codes into one RawBlockWriter::write call; each code is at most 16 bits, so the combined call stays within the writer's 32-bit bound and emits the same bit sequence. The candidate was built with CARGO_TARGET_DIR=target/jpeg-zrl-batch-arm64-20261031 cargo build --manifest-path benchmarks/jpeg-production/rust/Cargo.toml --release --locked. Baseline and candidate binary SHA-256 values are ae481f7245766a33ebda4d46826a09540a3fe0820822a824590b691c4ddadd64 and 5229207069b68731555a9d9f96f473dfbed999a6103975fa90bc4422b0686d69.

Three A–B–B–A cohorts ran the same generated 512×512 RGB, quality-10, 4:2:0 workload for 1,200 iterations per process with 100 warmups. The input FNV-1a was 75efb3d33c9418ec; all twelve runs emitted 29,341 bytes with FNV-1a 4280bc9f48852fbe. Candidate paired medians were about 1.5%, 3.2%, and 2.6% slower than their controls. Across all six runs per build, the medians were 1,523,813 ns baseline and 1,554,063 ns candidate. Host load averages started at 8.44 and remained above 6.8, so these timings do not establish the exact regression size; they provide no evidence of a gain. The candidate was rejected and the JPEG source was restored without a retained code change.

Selected public parity passed 2/2 for encode:jpeg:enc_q10 and encode:jpeg:enc_optimize, including exact reference outputs and 128×128 re-decode pixel parity. Its local LLVM report is .coverage-mcp/local-evidence/selected/20261031T041842.324296Z-50f829c2b4e840e880e9b21fe4ba988e/coverage.json (SHA-256 834c2de6261d4445fbe65bec3eb2f5edce478c1d1da1de3bd2c9eb730f7189ae). Coverage MCP returned Transport closed for both this selected report and the latest full report, so no MCP gap attribution or aggregate coverage claim is made. No Rust unit tests were added.

Current-checkout AVIF 12-bit alpha parity recheck — 2026-10-31

In /Users/lazytrot/work/image-slash-star, the selected public parity run passed 3/3 for decode:avif:error_12bit420_alpha_ispe_extent_mismatch, decode:avif:high_bitdepth_still_12bit_420_alpha_odd_edge_17x9, and decode:avif:high_bitdepth_still_12bit_444_alpha_9x9. The two valid controls matched Pillow RGBA pixels (612 and 324 bytes); the auxiliary extent mismatch was rejected like Pillow. The fixture generator --check reproduced the 1,436-byte mismatch fixture with SHA-256 9150d49f7f499f86c9e778a70d6525bd06a5509e409366d082097e6d7c4a2be6.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T042316.942023Z-fef06ba59ea74e81b92facd7af50a39c/coverage.json (SHA-256 43f507358c3305eac3d3f52d5822488dc47264ed658d0fffdf4288292cc9646c); its local receipt SHA-256 is 878b4495ec297f43d45b2335e625311be1d1211aec240768f94ae83ba2313322. Coverage MCP returned Transport closed for the targeted branch query, so this remains local selected evidence and does not establish aggregate coverage gain or MCP attribution. No unit tests or fault-contract cases were selected.

JPEG progressive restart interval cleanup — 2026-10-31

The latest local full LLVM report showed an unobserved true outcome for current_restart_interval.is_some() at src/codecs/jpeg/encode/mod.rs:5127 in both Noop and token checkpoint instantiations of encode_progressive_scans_exact. Coverage MCP returned Transport closed for the full report and the focused report, so this finding is local LLVM evidence, not MCP attribution.

Source inspection established the state invariant: restart_rows is fixed for one encode; every scan interval is zero when row restarts are disabled (or the row count exceeds Pillow's limit), and positive otherwise because every valid scan has at least one MCU column. The current interval can change between positive scan intervals, but cannot transition from nonzero to zero. The redundant current_restart_interval.is_some() fallback was removed, leaving the direct restart_interval != 0 marker condition.

Selected Pillow parity passed 4/4 for encode:jpeg:enc_progressive, encode:jpeg:enc_progressive_restart_rows, encode:jpeg:enc_progressive_restart_rows_partial_mcu_420, and encode:jpeg:enc_cmyk_progressive_restart_rows. The LLVM report is .coverage-mcp/local-evidence/selected/20261031T042845.528400Z-c9ee384b906148218addd16aee84ace7/coverage.json (SHA-256 6f9a9f9bb79f9a232c22a59344c73e1c5fec1e5635eaac1c37560da59faa0437); both outcomes of the simplified condition were observed in the no-token and token instantiations. make lint and make lint-x86-simd passed, including strict debug, release, coverage-hook, x86-64 SSE2, and AVX2 Clippy builds. No fixture, unit test, or fault-contract case was added; no benchmark speedup is claimed for this small branch simplification.

AV1 frame-ID continuity boundary and wrap parity — 2026-10-31

Added the input-only parity cases decode:avif:error_animated_frame_id_outside_continuity and decode:avif:error_animated_frame_id_wrapped_outside_continuity. Both mutate only the second 15-bit frame ID in a deterministic full-file AVIF. The half-range case changes 4,627 to 21,010, exactly 16,384 (1 << 14) after its predecessor ID 4,626. The wrap case changes 4,627 to 4,625, producing modulo difference 32,767. Pillow 12.2.0 decodes the first 16×16 RGB frame exactly (768 bytes), then rejects frame 1 in both inputs with RuntimeError: Failed to decode frame 1: Decoding of color planes failed.

The selected command passed 2/2:

make PYTHON=.oracle-venv/bin/python coverage-selected \
  COVERAGE_CASES='decode:avif:error_animated_frame_id_outside_continuity decode:avif:error_animated_frame_id_wrapped_outside_continuity'

The combined LLVM report records both outcomes of frame_id > previous and two hits on the true outcome of difference >= 1 << (frame_id_bits - 1) at src/codecs/avif/av1/frame.rs:3415. The local receipt reports no source or fixture changes during the run. The report is .coverage-mcp/local-evidence/selected/20261031T051142.471584Z-c82168dbbbc34b5b945223b981408b23/coverage.json (SHA-256 11545f9f7e7a9ba4c128bb15d76800597c7c81c5add8776769bc62d885896c40); the receipt SHA-256 is ed01739fc7e1ff58e4472c1ac2ba50777988790c729782a75c78002314dd6be2. Coverage MCP returned Transport closed, so this remains local selected evidence and makes no aggregate coverage or MCP-attribution claim. No unit tests were added.

The existing parity case decode:avif:error_animated_repeated_frame_id was also run by itself to confirm the equality guard. It passed 1/1 with exact 768-byte RGB8 pixel parity for ordinary decode and the expected malformed sequence result. LLVM recorded true=1, false=0 for frame_id == previous at src/codecs/avif/av1/frame.rs:3412. The local receipt records unchanged source and fixtures during the run, with source manifest SHA-256 ce9d7365fe646859675988242f990ee3cda3944542a70f0e5b74330f340f7fb8. Report: .coverage-mcp/local-evidence/selected/20261031T051747.695923Z-799a4334b17e4532a2766e519fe61a36/coverage.json (SHA-256 9d36f14c824f33aefdae160d4f4ce5ba4ce053b5e0c80522ae6e56d496d5fcb4); its receipt SHA-256 is 0d114c78117329909be0e0154ec13a129d09abc0ffcd921f372985f2df4777dd6. Coverage MCP again returned Transport closed; this single-case report does not update or claim aggregate coverage totals.

JPEG MCU offset arithmetic trial — 2026-10-31

A targeted experiment replaced saturating arithmetic for MCU-derived offsets inside encode_baseline_420_mcu_row_streaming with ordinary addition and multiplication. Allocation sizing and restart countdown saturation were left unchanged. Release binaries on Apple M3 Pro with Rust 1.96.1 ran the public 512×512 RGB Q10 4:2:0 encode with the same deterministic input (FNV-1a 75efb3d33c9418ec), 100 warmup calls, and 1,000 measured calls per process. Two A–B–B–A sequences produced these per-process medians:

Sequence Baseline A (ms) Candidate B (ms) Candidate B (ms) Baseline A (ms)
1 1.462709 1.499000 1.481000 1.450667
2 1.464709 1.437875 1.454417 1.454542

The median of the four baseline process medians was 1.458626 ms; the candidate was 1.467709 ms, 0.62% slower. The direction reversed between sequences, so there was no stable speedup. Every run produced 29,341 bytes with FNV-1a 4280bc9f48852fbe, matching the retained TurboJPEG comparison for this input. The candidate was rejected and the source restored. This targeted ARM64 diagnostic does not establish SSE2 or AVX2 runtime performance.

AV1 stale reference-slot invalidation parity — 2026-10-31

Added the active public parity row decode:avif:animated_frame_id_stale_reference_invalidation. Its deterministic AVIF uses frame IDs 0, 8,000, and 17,000. The middle inter frame refreshes one reference slot, leaving seven slots at ID 0; the independently decodable final key frame reaches the stale-reference invalidation branch. The input SHA-256 is 3b8ce1b8ddccf7b114f2ceac3505c254d73bc823d2138cae01106ce04029dd6d.

Pillow 12.2.0 and the pinned native libavif observer decode three 16×16 RGB frames with hashes 9ce641a4c1891e5972484b17881d0eb60763ca14bff21762a7b4e1abaf17ea9b, 6d4525df688f4dbfe6ecf5b6ae3c8764f01941441bbade31be70e0be766579d7, and 9ce641a4c1891e5972484b17881d0eb60763ca14bff21762a7b4e1abaf17ea9b; both observers report an infinite loop. Selected Rust parity passed 1/1 with exact pixel output.

The selected LLVM report records seven taken and nine untaken outcomes at src/codecs/avif/av1/frame.rs:846 in the active decoder instance, matching the seven stale slots. Its source and fixture receipts remained stable during the run. The report is .coverage-mcp/local-evidence/selected/20261031T070510.612353Z-57deae32ab7a4b5cbf5471e0abcb3bd1/coverage.json (SHA-256 6d481d7e8ba52ec733dbd901283e664875607bfdd18a3c8fa8109366f613ebaf); the local receipt SHA-256 is d523bd7b3a6c02e82c838d4086d2bba7964fa44ba3e49bd709371e72c45a725d. Coverage MCP returned Transport closed for the incremental comparison, so this is local selected evidence and makes no MCP attribution or full-suite coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 future-reference invalidation parity — 2026-10-31

Added active parity row decode:avif:animated_frame_id_future_reference_invalidation. Its frame IDs are 30,000, 10,000, and 20,000. The second frame wraps by a valid 12,768-step delta and refreshes one slot; seven retained slots still identify frame 30,000 when frame 20,000 arrives. The final independent key frame must invalidate those higher-ID references. The input SHA-256 is ebe40d4c20e39723979ac8fc5968c846b54f30045739af26d8d91974d7492cbb.

Pillow 12.2.0 and pinned libavif preserve the same three exact 16×16 RGB frames as the stale-ID case and report an infinite loop. Selected Rust parity passed 1/1 with exact output. The LLVM report records seven taken outcomes for retained.header.frame_id > frame_id at src/codecs/avif/av1/frame.rs:837, plus seven taken outcomes in the slot-clear branch at line 846. Source and fixture hashes remained stable during the run. The report is .coverage-mcp/local-evidence/selected/20261031T071007.884581Z-0f19927ef06c4bd3b3dadc65e4e7c286/coverage.json (SHA-256 43acb87dee5ed2984f010e43a1e1a25cd81226485084ae35ec721a27a61f2ae6); the local receipt SHA-256 is ccc3d4fe814a144a7d32451ce97b57879bc874cc6a6745cb5c4bf6ed749a38d4. Coverage MCP remains Transport closed, so this is local selected evidence, not MCP attribution or an aggregate coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 timing without decoder-model parity — 2026-10-31

Added the active input case decode:avif:animated_timing_without_decoder_model. It enables valid AV1 timing information while leaving decoder_model_info_present_flag clear in the sequence header. The complete AVIF input is 1,243 bytes with SHA-256 7978ad21887be7ec5e74b13ab9555e2c2caef9911b900947b67c231b74f1f5cf.

Pinned Pillow 12.2.0 and libavif 1.4.1 decode five 150×150 RGB frames at 33 ms each; all five pixel hashes match animated.avif. The independently compiled libavif loop observer decodes all five frames and reports one play. Selected Rust parity passed 1/1 with exact 67,500-byte RGB pixel parity.

The retained 835-row active AVIF report previously recorded only the true outcome for decoder_model_present at src/codecs/avif/av1/sequence.rs:166 (15 true, 0 false). This isolated case records the false outcome three times (0 true, 3 false). The source-file hash for sequence.rs is identical in both receipts, so this is a reachable new branch outcome against the same implementation source. The selected report is .coverage-mcp/local-evidence/selected/20261031T085355.229370Z-7ac58d73edac40399e1ec7c1f3e21f0d/coverage.json (SHA-256 517ad9c0dd3f6e835bb89e503ef4c096553edb58ac31e116b87b278bbe56c991); its local receipt SHA-256 is dcf15147325daeecb6cc7c9ac16caee4f22335f53d0f5d41b4c8936237395473. Coverage MCP returned Transport closed, so the branch evidence is local and does not claim MCP attribution or an aggregate coverage increase. No unit tests or Rust decoder-source changes were added.

Maximum valid AV1 initial-display-delay parity — 2026-10-31

Added active parity case decode:avif:animated_initial_display_delay_10. Its deterministic AVIF enables timing and display-model syntax and sets the valid initial display delay to the boundary value 10. The input is 1,244 bytes with SHA-256 aa95d8f4b6f2576f91a010fd0cc1cd5ed10ea826b89f8aba661c3dd6a9fa1b7d.

Pillow 12.2.0 preserves all five 150×150 RGB frames and their 33 ms durations. The pinned native libavif observer decodes five frames and reports one play. Selected Rust parity passed 1/1 with exact 67,500-byte pixel parity. The selected LLVM report records the previously unhit false outcome of initial_display_delay > 10 at src/codecs/avif/av1/sequence.rs:212 three times; the retained 835-row AVIF selection recorded only the true outcome (3 true, 0 false). Both receipts have the same source manifest and sequence.rs hash. Combining that baseline with the two selected timing cases yields 91/106 covered branch outcomes in this file, up from 89/106; this case adds the valid-delay false outcome.

The report is .coverage-mcp/local-evidence/selected/20261031T090520.372596Z-910f9113b03b4926a53091b4ca1efbf2/coverage.json (SHA-256 60e37cd8067e6c97d9591ccd445b9018ad3cddf69d07d12b1dd8abbd15f738d9); its local receipt SHA-256 is 0673fa5bc8ed29d1f16b2c7721ca259d103f3923f244346e7932674ae968617a. Coverage MCP returned Transport closed, so this is local selected evidence and makes no MCP attribution or whole-repository coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 identity-matrix profile parity — 2026-10-31

Added three active public parity cases around the AV1 identity-matrix profile guard. decode:avif:animated_identity_matrix_profile1_444 covers the valid 8-bit 4:4:4 profile-1 path, and decode:avif:animated_identity_matrix_profile2_12bit_444 covers the valid 12-bit 4:4:4 profile-2 path. Their fixture SHA-256 values are 4535db4548ddf82d23c72ef970b01f1632f4db4c9f7ddfd392bf0d5d011bdd4a and d0079f47a1f7709a373191d2248d42daec16d01132b6aaf1cdb1d7dc613fb1da. Pillow and the pinned native libavif observer decode five frames from each; the selected Rust parity rows passed with exact RGB output.

The error row decode:avif:error_animated_identity_matrix_profile0_8bit_420 uses a complete 8-bit 4:2:0 profile-0 AVIF whose sequence header and both nclx declarations carry matching identity CICP values 1/13/0. Pillow opens the five-frame container and reports RuntimeError: Failed to decode frame 0: Decoding of color planes failed on load; Rust rejects the same public input. The deterministic mutation hashes to a88b8b552040ea93afb486c17efca9c7cdb0e7151854e1a0e350375489cd5526, and its selected parity row passed 1/1.

All three fixtures pass their generator --check commands. The selected profile-1 report is .coverage-mcp/local-evidence/selected/20261031T100757.418610Z-369dea0685974d72b38e05cafd8858a4/coverage.json (SHA-256 57fc9eb6df96ad48aec4d7ff7bc85288086a5bf4ebef464b1dac4f88474fd6dc); its local receipt SHA-256 is cfc102cd22402a989f70ac817f5aa3548cceb54f3b5106fb7ca4c792b63f62c8. The selected profile-2 report is .coverage-mcp/local-evidence/selected/20261031T101259.691540Z-369a087c36e742c38f70064c0ce0326f/coverage.json (SHA-256 54fb071ff8602add6f916af5a36ab921b2b0301476f3bcace458f57d90cc1e68); its receipt SHA-256 is 01c22d8612950c10651a9fdbaa518f1f7fd9c49e89dfb35fa4000b77166cf404. The profile-0 report is .coverage-mcp/local-evidence/selected/20261031T101941.683743Z-82b18ce5cd534ef1b633a8edc16b61fd/coverage.json (SHA-256 9481bd2fb5999e91f1c5a1c117de7b87059f7ec2e54df7bb489420918e95be12); its receipt SHA-256 is 0bc5acb192c97adff018755a65f174c758258c2f5c6927194dc74b4f0fbdd2d5.

The profile-0 report adds the previously unobserved false outcome for profile == 2 at src/codecs/avif/av1/sequence.rs:326 (column 30), three hits. A local union of 14 passing selected reports with matching sequence source and manifest hashes now observes 99 of 108 branch outcomes in that file, up from 98 of 108 before this row. This is a coordinate-level union of selected LLVM reports, not full-suite coverage. Coverage MCP returned Transport closed for the report query, so it could not verify attribution or the aggregate. The local receipt records the selected case passing 1/1 and the source and fixture hashes unchanged during execution. No unit tests or Rust decoder-source changes were added.

AV1 high-tier operating-point parity — 2026-10-31

Added active parity case decode:avif:animated_operating_point_high_tier. It sets seq_level_idx to 8 and inserts the required main-tier bit in the first AV1 operating point. The resulting input is 1,235 bytes with SHA-256 bb06afad6c56b58389eede0bdda980ca42ee36ca045eb92e39de7f5a85e19fb0.

Pillow 12.2.0 and the pinned native libavif observer decode five 150×150 RGB frames at 33 ms each and report one play; their frame pixels match exactly. Selected Rust parity passed 1/1 with exact 67,500-byte RGB pixel parity. The selected LLVM report records the true outcome of level > 7 at src/codecs/avif/av1/sequence.rs:199 three times. The source-matched baseline records the false outcome 456 times and no true outcome. Combining that baseline with the timing-without-model, maximum-display-delay, and high-tier selected reports covers 92/106 branch outcomes in sequence.rs, up from 89/106; all four reports have the same source manifest and sequence source hash.

The report is .coverage-mcp/local-evidence/selected/20261031T091247.190127Z-b5e574d00ae1410e9414e5adb1b0b319/coverage.json (SHA-256 2f77f5f09206b7762199f1dac4a3b119e78aa23132976930a245373d427f35cb); its local receipt SHA-256 is 885229c975e9a1d7bfcf69dacbf66251cca7c68e5a1ae3cd68debba8fab63068. Coverage MCP returned Transport closed, so this is local selected evidence and makes no MCP attribution or whole-repository coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 decoder-model parameters absent parity — 2026-10-31

Added active parity row decode:avif:animated_decoder_model_without_operating_point_parameters. It enables valid sequence-level decoder-model timing, leaves decoder_model_present_for_this_op clear, and adds the required false buffer-removal flags to the frame headers. The resulting input is 1,249 bytes with SHA-256 e220130a0614df8c5fce0acf525c2c69a9fccaa8ec140373eac1f91d424d757d.

Pillow 12.2.0 and the pinned native libavif observer decode five 150×150 RGB frames at 33 ms each, preserve the source pixels, and report one play. Selected Rust parity passed 1/1 with exact 67,500-byte RGB pixel parity. The selected LLVM report records the false outcome of the per-operating-point decoder-model flag at src/codecs/avif/av1/sequence.rs:200 three times; the source-matched baseline records only the true outcome (9 true, 0 false). Combining that baseline with the four selected sequence-header cases covers 93/106 branch outcomes in sequence.rs, up from 89/106. All reports have the same source manifest and sequence.rs hash.

The report is .coverage-mcp/local-evidence/selected/20261031T092252.124788Z-54854731d7fb407797b0bdbd3e805573/coverage.json (SHA-256 7f2b7394fae0b7b17e336dece774eeaa234c87c1fe019a89a6e7aa086b7741c7); its local receipt SHA-256 is 6889b846843287c3bc3d97b2d7fb58ad03efa68d8d8017503c91c3e7c6a9457e. Coverage MCP returned Transport closed, so this is local selected evidence and makes no MCP attribution or whole-repository coverage claim. No unit tests or Rust decoder-source changes were added.

AV1 equal-picture interval UVLC parity — 2026-10-31

Added active parity case decode:avif:animated_equal_picture_interval_two_ticks. It enables AV1 equal-picture-interval timing and encodes num_ticks_per_picture_minus_1 as uvlc(1) (010), reaching the valid leading-zero path while leaving BMFF sample timing and encoded frame payloads unchanged. The 1,243-byte AVIF has SHA-256 e49851e6d94c721525f3b4130d7279c2ed2329a68032ea81f3714ae68119db7d.

Pillow 12.2.0 and the pinned native libavif observer decode five 150×150 RGB frames with exact pixels, 33 ms timing, and one total play. Selected Rust parity passed 1/1 with exact 67,500-byte pixel parity. The selected LLVM report records both outcomes of the while !self.bit()? loop at src/codecs/avif/av1/bit_reader.rs:241 three times each. The source-matched selected report for animated_decoder_model_without_operating_point_parameters recorded only the false outcome (0 true, 3 false); their local union covers 15/50 bit-reader branch outcomes versus 13/50 in that prior report. Both receipts have the same source-manifest hash.

The report is .coverage-mcp/local-evidence/selected/20261031T111225.003911Z-577217dab3d74d4ea69c4b514c7ad684/coverage.json (SHA-256 54ded30bab283f79977404c76c40b1e9370e22bf86fc5a9c055ff0b7c3c3ada3); its local receipt SHA-256 is 9ef554d0bceff5a8289fefeb8eddb40b73f5367bded577249a3090ecb13d5c23. Coverage MCP returned Transport closed, so this remains local selected evidence and makes no MCP attribution or whole-repository coverage claim. The public evidence matrix now contains 2,916 total rows: 2,343 decode / inspect / verify rows and 573 encode rows. Of those, 2,343 decode rows and 546 encode rows are active; 27 encode rows are planned. AVIF has 843 active decode rows. No unit tests or Rust decoder-source changes were added.

BMP signed-dimension encoder guard — 2026-10-31

Added target-only case fault-contract:bmp:bmp_encode_height_over_signed_limit_rejected to the shared coverage matrix. It decodes the active decode:bmp:depth_24 fixture, checks its pixels against the pinned Pillow reference, and arms a cfg(coverage) fault point that presents a copied image height of i32::MAX + 1 to the BMP file-size guard. The public img::encode call must return a BMP Dimensions error at the StillEncode stage. The case has oracle_status: not_applicable and does not add a Pillow parity row.

The selected coverage run passed 1/1. Its LLVM report records the false outcome of the height limit at src/codecs/bmp/encode.rs:269 once. The previous local baseline recorded no false outcome at the same guard before the coverage hook was added. Because the source revisions differ, these reports are not combined into a coverage total.

WebP VP8 method-one lossy encoder parity — 2026-10-31

Added active parity row encode:webp:enc_lossy_method_1_intra16_candidate_pruning for the existing 128×128 RGB WebP source at quality 80, method 1. The first run exposed a mismatch: Rust produced 4,056 bytes while Pillow produced 4,088. Tracing the fast VP8 path showed that method 1 must choose its chroma mode from pixel distortion and fixed mode cost before quantization. The Rust encoder now uses that search and evaluates only the selected chroma candidate, following libwebp 1.6.0's RefineUsingDistortion path in quant_enc.c.

The clean selected parity run passed 1/1. Regular and token-aware public encode calls matched Pillow's exact 4,088-byte output, and re-decoded pixels matched for all 128×128 RGB pixels. Its LLVM report observes both outcomes of the Intra16 candidate-pruning branch at src/codecs/webp/encode/vp8/intra16.rs:332. The current evidence matrix contains 2,917 rows: 2,343 decode / inspect / verify rows and 574 encode rows, with 2,343 decode rows and 547 encode rows active and 27 encode rows planned. This is a single-case local report, not an aggregate coverage claim; Coverage MCP attribution was not verified. make lint passed, including formatting, strict Clippy, release Clippy, and coverage-configured Clippy. No unit tests were added, and no performance benchmark was run.

The report is .coverage-mcp/local-evidence/selected/20261031T142557.000511Z-9251eddb912c45e98db9f3df888ca217/coverage.json (SHA-256 97ee518be68b721ef25fc729337c4aa0e26d808e42b47aba51faad603ca18f8a); its local receipt SHA-256 is a343a547c7e3d4671962cf49382cbe3efdfd9fbe29f77fa18f256da8d1a3c139.

WebP VP8 method-four search parity — 2026-10-31

Ran the existing active parity row encode:webp:enc_lossy_quality_80_method_4_nonuniform_rgb_17x17. It passed 1/1 with the exact 380-byte Pillow output and re-decoded 17×17 RGB pixel parity; the row made four public encode calls and reported no panics. The selected report covers both outcomes of the method threshold at src/codecs/webp/encode/vp8/frame.rs:303 and :431, plus both Intra4/Intra16 selection outcomes at :309 (9 and 3 hits).

The method-0, method-1, and method-4 reports share source-manifest hash 638eb4f23ea7bae92f6497e82a546f8073484d0a00d8e9b42bc5bcb5477309c5 and frame.rs hash a6750749e4c5b07cd66e6367c7d8486748867099ea0ee46b8d0fa3cd251708de. A local coordinate-level union covers 20/22 branch outcomes in that file, up from 16/22 for method 0 plus method 1; method 4 adds four outcomes. This is selected file-level evidence, not a whole-repository coverage result. Coverage MCP returned Transport closed for the report query, so managed attribution was not verified. The source and fixture inventories were unchanged during the run. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T143500.811534Z-71c33d3019db41d5abd73d75228f7eee/coverage.json (SHA-256 5826a5862ce4c25ef5f668d83622e86050f32364449332ba341ec9a9256ccfc9); its local receipt SHA-256 is 4835f9787c1a0aa4f18c7a1afd1ca6cec0825f64d558256d4208833a536994b1.

WebP VP8 method-six token-aware parity — 2026-10-31

Ran the existing active parity row encode:webp:enc_lossy_method_6_token_checkpoint on the 128×128 RGB lossless.webp source. It passed 1/1 with the exact 3,570-byte Pillow output and re-decoded pixel parity; the row made five public encode calls and reported no panics. Across matching local reports for the method-0, method-1, method-4, and method-6 cases, method 6 adds 58 distinct branch outcomes in src/codecs/webp/encode/: 28 in vp8/quant.rs, 22 in vp8/cost.rs, five in vp8/partition.rs, and one each in vp8/intra16.rs, vp8/intra4.rs, and vp8/encoder.rs. The method-6 report observes all 34 branch outcomes reported for vp8/quant.rs.

All four reports have source-manifest hash 638eb4f23ea7bae92f6497e82a546f8073484d0a00d8e9b42bc5bcb5477309c5; source and fixture inventories were unchanged during this run. The union is local coordinate-level evidence for selected cases, not full-suite coverage. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T143813.451293Z-cbbaa85c96594a22982449b69ec5c727/coverage.json (SHA-256 899455084dcda2996233a51e98d6539aa0ce7100681ac43a8acc2da39b7814b5); its local receipt SHA-256 is a412ef77798d83cf2a1e822ac67b6be1e42e49b1c5fe0f712e9af79cc7a32271.

WebP VP8 large-frame parity — 2026-10-31

Ran the existing active parity row encode:webp:enc_lossy_quality_0_method_0_large_frame_skip_sample on its 513×257 RGB source. It passed 1/1 with the exact 506-byte Pillow output and re-decoded pixel parity; the row made four public encode calls and reported no panics. Against the four source-matched selected reports above, it adds nine branch outcomes in src/codecs/webp/encode/: three in vp8/intra16.rs, three in vp8/residual.rs, two in vp8/partition.rs, and one in vp8/encoder.rs. This is a local coordinate-level union of selected reports, not a full-suite coverage result. The source and fixture inventories were unchanged during the run. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T144036.446167Z-d0ab386dc9314852bf13a9a7a167522b/coverage.json (SHA-256 e991f104612d693ea40c38f0d4e243fb2fba8178d0added59c5f98537b6dd35e); its local receipt SHA-256 is 3352e98edd229b3bdde1bd8043de2416f3f97e923e998f235bcf61141ca61f50.

WebP VP8 204-macroblock parity boundary — 2026-10-31

Ran the existing active parity row encode:webp:enc_lossy_quality_0_method_0_sampling_boundary_204_macroblocks on its 192×272 RGB source. It passed 1/1 with the exact 2,218-byte Pillow output and re-decoded pixel parity; the row made four public encode calls and reported no panics. Its selected report added no new branch outcomes to the local coordinate-level union of the five preceding WebP encoder reports. The case remains useful as a parity regression at this geometry boundary; it is not counted as a coverage gain. Source and fixture inventories were unchanged during the run. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T144224.728035Z-7e7299b06fb24b9cbd969f6e7ba95ab9/coverage.json (SHA-256 33e9e2de25f42301370012d123fa1baa1c8d0332142c2445a384dfacb714f046); its local receipt SHA-256 is 7734422f22964a2a5a8abdbc4fa5f19ac1687ec2d0e9f52c727c20fbe0a8d012.

WebP VP8 method-zero capped-statistics parity — 2026-10-31

Ran the existing active parity row encode:webp:enc_lossy_quality_0_method_0_capped_statistics on the 128×128 RGB rgb.png source. It passed 1/1 with the exact 698-byte Pillow output and re-decoded pixel parity; the row made four public encode calls and reported no panics. Its selected report adds no new branch outcomes to the local coordinate-level union of the method-0, method-1, method-4, method-6, large-frame, and 204-macroblock WebP encoder reports. The case remains a useful Pillow parity regression for the 50-macroblock capped-statistics behavior; it is not counted as a coverage gain. All seven reports share source-manifest hash 638eb4f23ea7bae92f6497e82a546f8073484d0a00d8e9b42bc5bcb5477309c5; source and fixture inventories were unchanged during execution. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T144520.365963Z-3ee04de5720048659796896605049c15/coverage.json (SHA-256 fc27f96cb876526429f2991ab18b43068b35ca916150b5e36cbefaa68504d281); its local receipt SHA-256 is 9f0573d0a97aef9c818830ed0da697ae60b65d93cd142636f195b210413cf59b.

WebP VP8 single-pixel segment parity — 2026-10-31

Ran the existing active parity row encode:webp:enc_1x1. It passed 1/1 with the exact 64-byte Pillow output and re-decoded 1×1 RGB pixel parity; the row made four public encode calls and reported no panics. Its selected report records the true outcome of maximum_center == minimum_center at src/codecs/webp/encode/vp8/analysis.rs:478 three times. The source-matched local union across the prior nine WebP encoder reports had only the false outcome there; this row adds six branch outcomes to that union: one in vp8/analysis.rs, three in vp8/partition.rs, and two in vp8/encoder.rs. The union is coordinate-level selected evidence, not full-suite coverage.

All ten reports share source-manifest hash 638eb4f23ea7bae92f6497e82a546f8073484d0a00d8e9b42bc5bcb5477309c5; the source and fixture inventories were unchanged during execution. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T145031.965138Z-a9649f4aaa2d4965bbb138a0248d7688/coverage.json (SHA-256 7eee58362aecd3106cd616deb3d31432f4526249b07a05f953a13ca8cdbc4c95); its local receipt SHA-256 is 261491e5ccf14c6c3396ee9448b8775b6c6f84a487937ac2af936fa45e5989f3.

WebP VP8 aligned segment-cluster checkpoint parity — 2026-10-31

Added the active parity row encode:webp:enc_lossy_method_4_segment_cluster_full_span_48x48 for a 48×48 RGB image with a checkerboard macroblock beside flat blocks. Temporary local tracing confirmed that its macroblock alphas span 192 through 255, so the scan visits exactly 64 values. The final uninstrumented selected run passed 1/1 with the exact 124-byte Pillow output and re-decoded pixel parity; it made five public encode calls and reported no panics. Its report records the previously missing false outcome of the 64-value checkpoint condition at src/codecs/webp/encode/vp8/analysis.rs:438 six times. This is local coordinate-level selected evidence, not full-suite coverage.

The source manifest hash is 638eb4f23ea7bae92f6497e82a546f8073484d0a00d8e9b42bc5bcb5477309c5; source and fixture inventories were unchanged during the final run. Coverage MCP returned Transport closed, so managed attribution was not verified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T152058.184462Z-a11c23719f7f43c18545edb0ae6775a4/coverage.json (SHA-256 06b55dde8db3ebe9c3508c3f68e7ec1c0863df6b71a8d2af9fe70d1dec6a2b18); its local receipt SHA-256 is d334fa71f7cc80973a19da07db31ca79571a6d780b1391bc3c595f15c873351a.

WebP VP8 segment-map update parity — 2026-10-31

Added the active parity row encode:webp:enc_lossy_quality_80_method_0_intra4_macroblock_grid_32x32 for a 32×32 RGB input whose alternating 4×4 gray tiles select intra4 luma modes. The exact Pillow output is 490 bytes and the re-decoded pixels match. This case exposed a segment-header mismatch: libwebp omits segment-map probability updates and per-macroblock segment IDs when all segment probabilities are the default. Rust now carries the header's update_map decision into mode writing and emits those fields only when the map is updated.

The new case and the existing encode:webp:enc_lossy_method_4_segment_cluster_full_span_48x48 regression both pass exact byte and pixel parity (2/2 rows, 10 public encode calls, no panics). The selected report records 66/136 branch outcomes in src/codecs/webp/encode/vp8/partition.rs; selected-run counts are not a full-suite coverage percentage. The source manifest SHA-256 is 8bc3fa69195ce50effc28eead29c0d5466e6d1ede9e2affc507d940e8019bd25; source and fixture inventories were unchanged during the run. Coverage MCP returned Transport closed, so managed attribution remains unverified. No unit tests were added.

The report is .coverage-mcp/local-evidence/selected/20261031T160947.235936Z-35cd057dd62a4c1480b6c45d64d2e63b/coverage.json (SHA-256 c133f4086934e34e65de41d7af14e553be09f074a5e118cfb35b79b908b89989); its local receipt SHA-256 is 09da4736dcc811d201d4b1a75f7471c58b0707e05533977f4bfe910fe6c40992.

Full all-feature coverage refresh — 2026-10-31

The standard all-feature coverage command completed with all 139 existing integration and contract test cases passing, including all active public parity-matrix rows. The maintained coverage floors pass: 99,441/140,533 lines (70.759893%), 19,859/31,522 branches (63.000444%), 5,527/9,015 functions (61.308930%), and 151,671/218,011 regions (69.570343%). The report remains below the project's 100% four-metric goal.

The run exposed a stale AVIF census assertion: the manifest and roadmap list 27 planned former-native encode rows, while the existing assertion expected 31. The assertion and current roadmap evidence now agree with the 27-row matrix; fixture integrity, strict Clippy, and formatting checks pass.

The local source-manifest SHA-256 is 4b6ea098df08afba1e99aa6ad9cac73b6675cf822f751578f83a11a1c05a4f9a. The fixture manifest and matrix hashes are 2cf34ef9833788ec44b2361b1d5d36abff0ceb41bbc7d99c7065cd44deb056cf and 02ebbdcbf5879e228da6bf45fce266a9e37eb77df227b35eb11da50382c471e7. Coverage MCP returned Transport closed, so the report has no managed source or test attribution and does not replace the managed baseline. No unit tests were added.

The full report is .coverage-mcp/local-evidence/full-20261031-current/coverage.json (SHA-256 fea09cc7fd393a962006f007380348009065e4e5ea4aeb578f56559eaad67d81).

AVIF still alpha-count invariant cleanup — 2026-10-31

The full report above showed the true arm of the still-image alpha sample-count check in ExtractedAvif::validate was never reached. still_payload constructs both planes from their item-ID lists and rejects unequal lengths before constructing ExtractedAvif, so no public image input can reach the later duplicate check. Removed that duplicate guard while retaining the earlier input-level check. The animated alpha-count mismatch remains checked by the full-sequence decoder.

The selected parity run passed 3/3: the still-grid alpha-count mismatch, the animated alpha-count mismatch, and the 12-bit 4:2:0 alpha-extent mismatch. No unit tests or new fixture cases were added. The selected report's source manifest SHA-256 is 453b9d2cc4ad53c5bb84fd2c7c926fe0740b996684e2e4c400769c9bd56457ef; source and fixture hashes were stable during the run. These selected rows do not refresh the full-suite coverage totals, and the full report predates this edit. Coverage MCP returned Transport closed, so managed attribution remains unverified.

The selected report is .coverage-mcp/local-evidence/selected/20261031-avif-alpha-invariant-cleanup/coverage.json (SHA-256 67f4a52673c57c0cd82a7108f3d16bd78165de41ba42f0682a470327d7c232bf); its local receipt SHA-256 is 6f05f4e951504f035a5cd9abd46203be2b5131054625bf19d531c12689131d45. Formatting, strict all-feature Clippy, and make lint-x86-simd passed. The x86 SSE2 and AVX2 lanes were cross-compiled on an ARM64 host; no x86 runtime performance measurement is claimed.

Full all-feature coverage after AVIF invariant cleanup — 2026-10-31

The standard make coverage run completed all 139 existing test cases with no failures. Current coverage is 99,439/140,528 lines (70.760987%), 19,858/31,520 branches (63.001269%), 5,527/9,015 functions (61.308930%), and 151,667/218,006 regions (69.570104%). All configured alpha floors pass; the four-metric 100% goal remains open.

The source-manifest SHA-256 after the AVIF invariant cleanup is 453b9d2cc4ad53c5bb84fd2c7c926fe0740b996684e2e4c400769c9bd56457ef. Coverage MCP again returned Transport closed; this local full report has no managed source or test attribution. No unit tests were added.

The full report is .coverage-mcp/local-evidence/full-20261031-post-alpha-invariant/coverage.json (SHA-256 1fe7bef9e6b28000e2882de2bb660d4117998a8050567035c961324840c26615).

AVIF reconstructed-plane borrow optimization — 2026-10-31

The portable AVIF decoder now validates reconstructed Y/U/V extents and borrows the already complete, origin-aligned planes directly. This removes a redundant full-frame FrameCanvas allocation and copy from each decoded frame. Coverage builds still inject plane-length faults through an isolated clone; release builds do not include that hook.

Four existing public AVIF parity rows passed exact Pillow pixel comparison: the three-frame 4:2:0 sequence, multi-tile super-resolution, and 10-bit and 12-bit 4:2:0 alpha cases. The Y, U, and V portable-plane fault contracts also passed (7/7 selected rows total). No codec unit tests or new fixtures were added. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261031T172513.024928Z-6e942eb2e8e9463abff0e99a321a29bc/coverage.json (SHA-256 db7645d4652c7a2d9fe4233f827e226e57e82ea3faa741327b60daec132b201b); its local receipt SHA-256 is bcf191bcd6c855bf820f65709dc689333167be2c93985418dab19d5737039ce7.

Two release A/B cohorts used the same public sequence probe, fixture, binary path, 100 timed decodes, and two warmups per cohort, in A–B–B–A and B–A–A–B order. Across 400 timed decodes per binary on an Apple M3 Pro (aarch64, rustc 1.96.1), the direct-plane candidate reduced pooled median time from 10.336 ms to 9.781 ms (5.37%) and linearly interpolated p90 from 10.787 ms to 10.407 ms (3.52%). Every B cohort median was below its neighboring A cohort; the B samples include one 17.063 ms scheduling outlier. The baseline executable SHA-256 is 0da84e66450e93754c8e4d788ad4e000ab91a58883876244a2c2989f504cbbbd; the candidate executable SHA-256 is 8a2819c67ff5572436068f8602d2de9cfc785086c5fb73d77cec66b0c60ccfa1. Both used fixture SHA-256 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a. The 127-file source-closure manifests differ only in src/codecs/avif/decode.rs (baseline SHA-256 28d4c0305090ab1ff0bbcc34aedd6a51ff2c02b250ab43a244b927210cc5cb6f, candidate SHA-256 9a97a90099680bf3c4effc57948236da310b18b3c8e258ed5f7c6451210e5ca8).

At the time of this direct-plane change, the full all-feature report recorded 99,458/140,541 lines (70.7680%), 19,865/31,528 branches (63.0075%), 5,528/9,017 functions (61.3064%), and 151,697/218,027 regions (69.5772%). All 139 integration tests passed and the configured floors pass; the 100% goal remains open. The report is .coverage-mcp/local-evidence/full-20261031-avif-plane-borrow/coverage.json (SHA-256 0aed5abd72336558ae8ae05fee6f92c159c9e3ec8f2bc2d7b0044fb52b478d77). Coverage MCP returned Transport closed, so this is local LLVM evidence without managed attribution.

Formatting, strict all-feature Clippy, x86-64 SSE2 and AVX2 compile-only Clippy, and the native/WASI/WebAssembly feature matrix passed. The x86 lanes were cross-compiled on the ARM64 host; no SSE2 or AVX2 runtime speed claim is made.

AVIF duplicate sample-description color parity — 2026-10-31

The earlier full LLVM report showed that the duplicate-color-property arm of samples::parse_sample_description had no witness: the branch at samples.rs:2664 recorded 2,134 hits for the first-color path and zero for the duplicate path. Added active parity row decode:avif:error_animated_duplicate_sample_description_colr. Its generated AVIS fixture inserts a conflicting second nclx property, rebases sample offsets, and preserves the encoded media data. Pinned Pillow 12.2.0 recognizes AVIF, then rejects the file as malformed. The Rust parser now rejects the duplicate color property with the same public outcome. The selected case passed 1/1 with no target-only fault rows and no codec unit tests.

The selected local LLVM report is .coverage-mcp/local-evidence/selected/20261031T174846.958160Z-ebb7759b93984b08be46bfb253a276db/coverage.json (SHA-256 cc6e9498f4ec236d1babac894ed2c56fe20c9eec5c37335e6f20549dbe25c73e); the local-only receipt SHA-256 is e2a5f8c9b7d67e5700c26cea61e6f8199490672d7a1cb26fcc11bbd56ae870dc. The fixture SHA-256 is 99f4051b60a85669670f9664d20a061a57a7e8ad00115219ab34bfb2ef65c396. In the refreshed full report, the branch at samples.rs:2664 records both outcomes (2,140 and 6 hits); the AVIF parser file has 583/588 branches covered.

The refreshed all-feature run passed all 139 integration tests and records 99,459/140,542 lines (70.7682%), 19,866/31,528 branches (63.0107%), 5,528/9,017 functions (61.3064%), and 151,699/218,028 regions (69.5778%). Its report is .coverage-mcp/local-evidence/full-20261031-post-duplicate-stsd-colr/coverage.json (SHA-256 dd2f4bd56a161b91d0a342566acfb23f4a8c9a70d85a809372c1de7dd4401faa). Coverage MCP again returned Transport closed; these are local LLVM measurements with no managed attribution. The 100% goal remains open.

After this parser change, a release A/B rerun used the same public sequence fixture and four 100-decode cohorts per binary. Timing varied substantially between adjacent cohorts: candidate medians ranged from 10.199 to 23.199 ms; the pooled p90 was 31.798 ms for the baseline and 33.512 ms for the candidate. This run is inconclusive and is not treated as a speedup claim. The earlier lower-noise result applies to the direct-plane change alone. Raw cohort logs and the current candidate summary are retained under target/avif-perf-evidence/ for local inspection.

make lint, make lint-x86-simd, make test-feature-matrix, make refresh-fixture-integrity, and pinned-Python make verify pass. The SSE2 and AVX2 lanes are compile-only cross-checks on the ARM64 host.

AVIF word-packed raster coverage — 2026-11-01

FrameCanvas and MonochromeFrameCanvas now share a checked u64 coverage mask. Row overlap and completeness checks inspect word ranges, and monochrome placements keep checked written-sample counts so CDEF completion does not rescan the bitmap. The storage remains one bit per sample; the change targets per-sample coverage iteration and does not add CPU-specific intrinsics.

Five public AVIF parity rows passed against the pinned Pillow references: 12-bit 4:2:0 alpha odd edges, the 12-bit alpha extent error, animated alpha sample-count mismatch, monochrome multi-tile CDEF, and the 2048x128 temporal motion sequence. No codec unit tests were added or run. The selected LLVM report records 1,441/4,646 lines and 224/898 branches in raster.rs; this is selected-run coverage, not a full-suite total. Its report is .coverage-mcp/local-evidence/selected/20261031T225526.013834Z-59ee43640398411a94fc4bc53a4c2d23/coverage.json (SHA-256 87e1f15709267e670e2d09b0ef59503167ec84deb5027285c66aea1540c11fa0), and its local receipt SHA-256 is 606e6e426402a34ec84994018c42138562facba615b720c2be1cd7ec7ef3b6db. Coverage MCP returned Transport closed; these are local LLVM measurements without managed attribution.

The release probe compared the same 2048x128 AVIF input in A–B–B–A order, with two warmups and 100 timed decodes per cohort. On an Apple M3 Pro with rustc 1.96.1, the pooled median over 200 baseline samples was 10.506 ms and over 200 candidate samples was 9.356 ms (10.94% lower). Cohort medians were 10.379 and 10.656 ms for A, and 9.318 and 9.399 ms for B; each B cohort was faster than both A medians. The fixture SHA-256 is 294468c2498c8fa494bfcc2e701a944e90f15ec4b5f08eb64fa34f907e5a6a1a; the candidate raster.rs SHA-256 is 0fef4a662acf7e778b16de04b90f5473ea86df7a40985c276cbfe5a56943d4fb. The baseline and candidate probe executable SHA-256 values are 1113e916cce052b3260f2a3107bc8de46b9022269cff8ed0944d2d50025155b7 and 92f64005912fca8688750e9690d373272c72d9157f7430aa3619f39c8eca75e7. Per-cohort samples are retained under target/avif-perf-evidence/.

Formatting, strict all-feature Clippy, and x86-64 SSE2-baseline and AVX2 Clippy cross-checks passed. The x86 lanes were compile-only on this ARM64 host; no SSE2 or AVX2 runtime speed claim is made.

Full native coverage refresh — 2026-11-02

The all-feature native integration run on local develop at 69a79d4c4 plus uncommitted changes passed all 139 checks across six executables. Every active matrix ID reconciled exactly once: 3,470 parity cases passed, and all 167 existing target-only fault contracts passed in their separate lane. The 27 planned parity rows were not executed. No private unit-test executable ran, and no unit tests were added.

The unfiltered LLVM report records 101,693/141,986 lines (71.621850%), 20,556/31,936 branches (64.366232%), 5,634/9,123 functions (61.756001%), and 154,917/220,119 regions (70.378750%). The alpha floors pass; make coverage-complete exits 2 at its final 100% gate after all tests pass. No source exclusions or threshold changes were introduced.

The report and per-case results are retained outside target/ under .coverage-mcp/local-evidence/full/20261102-current/. The report SHA-256 is c2c44af02a511c5518741e7c4618721b861ccc6852eb09e542d1b876f89891bc. The command, environment, tool versions, six instrumented executables and raw profiles are retained there. All 150 full-run source/setup hashes and 9,469 fixture hashes remained unchanged during measurement; source snapshots and before/after hash manifests bind this local result to the checkout.

Nine Coverage MCP CLI queries succeeded. The connector was unavailable; CLI imports remain source-unverified and test attribution unknown. The LLVM file summaries put 9,971 of 11,380 uncovered branch outcomes in AV1 entropy and block reconstruction. The all-children-deep B16x64/B64x16 inter-transform arms remain concrete input-generation candidates, with no cases added for those candidates in this refresh. Generic function groups overlap, so their gap counts are not added. This local report does not replace historical managed claims or establish an incremental gain against changed source.

This refresh adds no runtime changes or timing samples. Existing style and platform checks retain their earlier source-bound scope. SSE2/AVX2 runtime performance, fastest-codec ranking, and 100% coverage remain unfinished.

AVIF bounded metadata policy parity — 2026-11-02

Six existing AVIF inputs now also exercise public decode_with_policy with an explicit metadata limit equal to the complete input length. They cover size-zero free and skip boxes, an unknown box, a truncated trailing box header, and duplicate trailing meta and animated moov boxes. Coverage MCP identified missing paths in the bounded-extent, omitted-metadata parser specialization. No runtime code or private codec unit tests changed.

The pinned Pillow 12.2.0 oracle replayed all six inputs and ten frames with exact existing pixel references. Regenerating the AVIF matrix changed only the six policy limits; input bytes and reference pixels stayed unchanged. Both selected coverage campaigns passed all six parity rows with no fault rows selected. Their 139 source hashes match. The local LLVM summaries for src/codecs/avif/samples.rs changed from 1,699 to 1,748 covered lines (of 2,375), 306 to 315 branches (of 588), 153 to 158 functions (of 235), and 2,668 to 2,739 regions (of 3,967). These are selected-campaign observations, not full-suite gains or evidence of 100% coverage.

Reports, source receipts, exact test executables, oracle replay, and matrix delta are retained outside target/ under .coverage-mcp/local-evidence/parity/avif-metadata-policy-20261102/. The before/after report SHA-256 values are 0c585209bd609e313c30e19a5886fd132d4579b522d882c549cc440f21aa0a8a and 878ed2642a44a9107328deb340ee99f9948fdad66482ac2d2cf1c01937fe0ee0. Coverage MCP recognizes each locally derived source receipt and passing test status, but returns incomparable for their comparison: embedding the changed matrix produces different test-executable build IDs. This evidence is local, not managed Coverage MCP attribution. It makes no performance claim.

AVIF sequence EOF boundaries and native profile attribution, 2026-11-03

Six ordinary malformed AVIF inputs stop the internal sequence header before the decoder-model flag, buffer-removal delay width, frame-width field size, maximum frame width, frame-ID flag, and order-hint flag. Complete BMFF sample and primary-item extents remain consistent. Pinned Pillow header verification succeeds and decoding rejects each input; the public Rust decoder agrees. The existing healthy decoder-model animation remains the complete control.

The focused manifest campaign passes seven cases, including that control, with 139 codec/build/test source hashes unchanged. Public input probes identify six distinct previously uncovered sequence-parser regions against the retained full baseline, with an identical 492-region mapping. Complete unfiltered LLVM exports and actual invoked executables are retained under .coverage-mcp/local-evidence/parity/avif-sequence-boundary-probe-20261102/. This is a source-region projection, not a new whole-repository coverage run. All 3,751 preceding matrix rows, 1,299 preceding AVIF observations, 167 existing target-only fault rows, and the native loop index remain unchanged. No codec unit tests or new target-only faults are added.

The native profiler now pins Cargo release debug information without stripping or split files and requires actual ELF DWARF sections and converter source-line mapping. A small CLI counts bounded raw perf sample records instead of rounded report headers. Five retained native profiles reproduce their exact counts; seven local public JPEG workloads retain identical complete encoded bytes between the original and revised debug builds. These diagnostic checks do not establish a runtime speedup. The preceding native profile lacks DWARF line information; its function self samples remain usable, while source-line and complete-unwind claims are withheld.

Mixed-super-resolution film-grain parity — 2026-11-03

Eight new AVIF decode rows cover active display grain with mixed-segment super-resolution: 400 at 10/12 bits, 420 at 12 bits, 422 at 8/10/12 bits, and 444 at 10/12 bits. The 4:4:4 cases use 128x64 display dimensions and a coded width of 64 to fit the decoder's bounded grain geometry. The pinned producer reproduced all eight inputs twice, and the selected parity campaign passed 8/8 exact RGB frame comparisons against Pillow 12.2.0.

Coverage MCP's selected-report query found eight branch arms still uncovered in mixed_segment_superres_film_grain_supported. The report is retained at .coverage-mcp/local-evidence/selected/20261103T010050.321471Z-d354387b8c274118a45abea21f0b4209/; it is a local, selected-only measurement with unverified source identity and unknown test attribution, so it does not establish a whole-repository coverage gain.

An 8-bit 4:4:4 candidate was excluded after the public Rust decode path returned Unsupported without a retained primary surface, while the pinned Pillow and libavif references decoded it. That remains a decoder parity gap for a later implementation pass. No runtime code or unit tests changed in this campaign, and it makes no performance claim.

AV1 exact B8x4 inter geometry parity — 2026-11-03

The new public parity row decode:avif:animated_lossy_inter_420_b8x4_mode_select_64x64 uses a deterministic two-frame lossy 8-bit 4:2:0 input. Its inter frame reaches the exact B8x4 geometry guard at src/codecs/avif/av1/block.rs:49889 while retaining TX_MODE_SELECT. The selected run passed 1/1 parity row, matching both 64x64 RGB frames byte-for-byte with pinned Pillow 12.2.0. The pinned native AVIF observer independently decoded both frames and reported one total play.

Coverage MCP's full-report baseline had zero true-arm hits at that source guard; the selected LLVM report records 12 true hits for each of the two short-circuit condition spans. The reports are retained outside target/ under .coverage-mcp/local-evidence/full/20261103-ca295c920-current/ and .coverage-mcp/local-evidence/selected/20261103T102040.663199Z-c589049aeed24b2699cf6d1b71f6649d/. The selected report SHA-256 is 0a0624e1838004ab68591f0c4e5aa06ba2c12492da3b8fce462ac633525ee4ac. The local coverage-mcp gaps result marks source identity unverified and test attribution unknown; this is selected-case evidence, not a whole-suite coverage gain or a managed source/build receipt. No runtime code or unit tests changed.

AV1 exact B4x8 inter geometry parity — 2026-11-03

The public parity row decode:avif:animated_lossy_inter_420_b4x8_mode_select_64x64 adds the vertical counterpart to the B8x4 case. Its pinned two-frame 8-bit 4:2:0 AVIF reaches the exact B4x8 geometry at src/codecs/avif/av1/block.rs:49887 with TX_MODE_SELECT. The selected parity run passed 1/1 row and matched both 64x64 RGB frames byte-for-byte with Pillow 12.2.0. The independent pinned libavif observer decoded both frames and reported one total play.

The local selected LLVM report records 15 observations on the exact B4x8 block-size arm and 15 on its width check. Coverage MCP's full-report baseline lists uncovered arms at this guard. The report is retained at .coverage-mcp/local-evidence/selected/20261103T111010.071678Z-4686afd83e3847c381f364886711a9ba/coverage.json; its SHA-256 is 6b469cac95d293fecef267bf76dccfc2f97e263f3be39714ce3fb5d5548c0587. Coverage MCP marks the local measurement source as unverified and test attribution as unknown, so this is selected-case evidence rather than a whole-suite coverage claim. No Rust runtime code or unit tests changed, and this parity case makes no performance claim.

AV1 4:4:4 B4x8 inter geometry parity — 2026-11-03

The public parity row decode:avif:animated_lossy_inter_444_b4x8_mode_select_64x64 adds a vertical B4x8 TX_MODE_SELECT inter sequence in 8-bit 4:4:4. Selected parity passed 1/1 and matched both 64x64 RGB frames byte-for-byte with Pillow 12.2.0. The pinned libavif observer independently decoded both frames and reported one total play. The retained frame hashes are f3bd9d9b5393974efe11e1273ba728f3fcb56803a0335a4c49b26ca9856c0811 and 43a7e9fd294fde37a6c5c5887c468097134a5409b51da72bc2d141e5931e92c1.

The selected LLVM report records 15 observations for the exact B4x8 block-size arm and 15 for its width check at src/codecs/avif/av1/block.rs:49887. The report is retained at .coverage-mcp/local-evidence/selected/20261103T115120.739619Z-94bd8a99d3214c7c99165e5aeb94172c/coverage.json; its SHA-256 is ca3bd1a4abf1d0406223dfc56541e00de03e26dc0a36cb0b8dcc276d2d9bb47f. Coverage MCP marks the selected measurement source as unverified and test attribution as unknown, so this is selected-case evidence rather than a whole-suite coverage claim. No Rust runtime code or unit tests changed, and this parity case makes no performance claim.

AV1 4:4:4 B8x4 inter geometry parity — 2026-11-03

The public parity row decode:avif:animated_lossy_inter_444_b8x4_mode_select_64x64 adds the horizontal B8x4 TX_MODE_SELECT inter sequence in 8-bit 4:4:4. Selected parity passed 1/1 and matched both 64x64 RGB frames byte-for-byte with Pillow 12.2.0. The retained frame hashes are 62f80b849b2615a028e9d8b7be51e37e63752922898439d37ebc89bd4f69dfe6 and 73367a93996d2e243c46f0c3b52c50ea43fdcee83e3c18452efcf37dd833bd04. The pinned libavif observer decoded both frames and reported one total play.

The selected LLVM report records 14 observations for both the exact B8x4 block-size check and its width check at src/codecs/avif/av1/block.rs:49889. The report is retained at .coverage-mcp/local-evidence/selected/20261103T122912.661948Z-16a2daa8324d475e86779b2654eac6ba/coverage.json; its SHA-256 is eddea33238563fb8a3edeb63b732a8df98bf2212127fe8e98e01a27d7526e985. Coverage MCP marks the selected measurement source as unverified and test attribution as unknown, so this is selected-case evidence rather than a whole-suite coverage claim. No Rust runtime code or unit tests changed, and this parity case makes no performance claim.

AV1 nonuniform tile-column cap parity — 2026-11-03

Two public parity rows cover a valid nonuniform tile grid and the 64-column cap boundary. The valid 256x256 fixture matches Pillow RGB output exactly. The 4097x1 malformed still fixture leaves one of 65 superblocks uncovered after 64 tile columns; a second, one-bit tile-payload mutation makes Pillow reject the input while Rust rejects the earlier cap violation. Selected parity passed 2/2 rows.

Coverage MCP found one uncovered false arm at src/codecs/avif/av1/frame.rs:3841 in the retained full baseline. The selected LLVM report gives the same line zero gap groups. It is retained at .coverage-mcp/local-evidence/selected/20261103T135033.272433Z-cba7aae085b849d3b7cceb293517a051/coverage.json; its SHA-256 is 989540e62fe6f0921c52332272bc80ba8ab4fb19176be614b82fc41d9c12b0c2. Coverage MCP labels the report source unverified and test attribution unknown, so this records a selected branch observation rather than a whole-suite coverage gain. No Rust runtime code or unit tests changed, and this parity case makes no performance claim.

AV1 odd-width high-depth lossless inter edge — 2026-11-03

The public parity row decode:avif:animated_lossless_inter_420_b4x8_10bit_odd_65x64. The two-frame 65x64 full-range 10-bit I420 AVIF has lossless B4x8 inter leaves, with one visible luma column at the odd right edge. Pillow 12.2.0 decodes both frames; the public still-image API matches frame zero exactly (12,480 RGB bytes, SHA-256 006469f39295cec2dc6e36ecf1900ee939ca3bd060a4bdc88f22c5b2d47beef0). The independent pinned libavif 1.4.1 observer decodes two frames, reports repetition count zero, and produces stable output. Rust now admits this bounded high-depth I420 sequence profile. The inter decoder processes the complete TX4x4 residual cells that overlap the clipped B4x8 right edge, then publishes only the visible luma column. The selected public parity row passes 1/1 with exact parity for both sequence frames.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261103T175749.790567Z-3e4966b9177943f1bae45a9d706b4a92/coverage.json (SHA-256 ea9a639d31369ae48b04c02cafa75194d405bd3520df4a3c68d00a0bd0c8abeb). This receipt is local evidence with source identity unverified and test attribution unknown. A Coverage MCP query of this selected report identifies the unexecuted high-depth fallback in decode_inter_transform_size; this valid fixture follows the admitted lossless-grid path instead. The query is useful for locating the remaining edge, but the local report does not prove a suite-wide coverage change. The successful parity run independently proves the public pixel behavior. No unit tests or SIMD changes were added, and the full coverage baseline was not refreshed.

AV1 69-pixel odd-width high-depth lossless inter edge — 2026-11-04

The public parity row decode:avif:animated_lossless_inter_420_b4x8_10bit_odd_69x64 covers a valid two-frame, 69x64 full-range 10-bit I420 all-lossless sequence. Its pinned AOM generator produces the fixture reproducibly, and Pillow 12.2.0 plus the pinned libavif 1.4.1 observer decode both frames. Public decode_sequence output matches the independent RGB frame references byte-for-byte (13,248 bytes per frame; frame SHA-256 values 5b47ce4079e56271e7163f1795422c04d05e70f96340b3c510085e68a22fd9f0 and a2fa968856ff74c57daf8f7100d088bad57d0c8a06f77e0fc2b4e57622c48aa5).

The frame admission bound in complete_high_depth_lossless_inter_reconstruction_context now accepts widths 65 through 71 for this fixed 64-row profile. Coverage MCP records the width gate's true arm in the selected 69x64 run; the false arm remains unobserved. Coverage MCP also showed that the separate clipped-B4x8 geometry helper was not entered by either the 65x64 or 69x64 parity fixtures, so its bound was left unchanged at the time of the original change.

Follow-up on 2026-11-05: tracing the public call path showed that the partition walker passes node.width * 4 to decode_inter_leaf. A B4x8 leaf therefore supplies a width of four, and the ordinary exact-size geometry check already admits it. The extra helper required a width from one through three, which no caller could supply, so it was dead code rather than a missing public parity case. The helper and its redundant admission arm were removed without changing behavior for inputs reaching the decoder. The existing 65x64 and 69x64 public parity rows passed 2/2 after removal. Coverage MCP reports no remaining locations for the removed helper in that selected report; its source identity is unverified and test attribution is unknown, so this is not an aggregate coverage claim. The report is .coverage-mcp/local-evidence/selected/20261105T015034.504493Z-34f0865735724e49bc2c09b92f567aa2/coverage.json (SHA-256 d787425465edf109c808b92d8509afc32a43b99e6dc23e82e818e66227bc1c58).

The original selected LLVM report is .coverage-mcp/local-evidence/selected/20261104T164158.691688Z-69d30c625c284406b9286d32c10fe47a/coverage.json (SHA-256 28be03b545bd58addf1b1b49db72b6382dad65d651984a59292ca9d0cf8c0626). This local report has source=unverified and tests=unknown; it is selected-case evidence, not an aggregate coverage claim. No unit tests, SIMD code, or hot pixel loops changed, and this admission-only change makes no performance claim.

Lossless I444 Square64 sequence parity and fallback contract — 2026-11-04

The new public row decode:avif:animated_lossless_inter_i444_fixed_b64x64_64x64 adds an exact two-frame 64x64 8-bit lossless I444 sequence with textured chroma residuals. The pinned Pillow 12.2.0 references cover both RGB frames byte-for-byte, and the pinned native libavif observer confirms two frames with infinite repetition. The sequence parity harness and the selected matrix parity row both pass. The generator checks repeat encoding, frame hashes, all-lossless I444 headers, fixed 64x64 partitions, and the canonical input digest.

The selected sequence parity measurement did not cover the first-partition fallback: its ordinary complete-frame path stays in the supported decoder. The existing target-only fault contract fault-contract:avif:av1_lossless_i444_first_partition_fallback_matches_parity injects Av1LosslessI444FirstPartitionFallback while decoding a separate 10-bit lossless I444 still. It compares the public decode result with Pillow, then requires a clean retry to match. The contract passed 1/1 with oracle_status: not_applicable. Coverage MCP reports zero remaining branch gaps at src/codecs/avif/av1/block.rs:20993 for this retained fault-contract measurement.

The selected matrix report is .coverage-mcp/local-evidence/selected/20261103T205918.907601Z-c58830d120c44384ab44e06cd5f61e5a/coverage.json (SHA-256 2f75094b2a5d38edc22c417fb89d773250d07c652dba04cb3147ed95249d5d4b). The target-only fault-contract report is .coverage-mcp/local-evidence/selected/20261103T211820.742902Z-aaced1ef9ff84eaa89744cc32ca628b4/coverage.json (SHA-256 a00a24d285dc3d07e27d69b4b69f7cfc99f818254c2551613452c9a798438edd). Both are local selected measurements with source identity unverified and test attribution unknown. The targeted zero-gap result does not claim complete repository coverage; the retained fault report still has 29,943 of 31,998 branches unobserved overall. No runtime implementation changed, no unit tests were added, and no performance gain is claimed. Strict Rust lint and x86-64 SSE2/AVX2 lint both pass.

WebP metadata signature guards and public reachability — 2026-11-04

The retained full LLVM report records both branches of the RIFF and WEBP signature guard in src/codecs/webp/decode.rs as unhit: lines 185 and 186 each have counts (0, 57). The refreshed full local report is .coverage-mcp/local-evidence/full/20261104-main-561a1de/coverage.json (SHA-256 c55551d8702868c9fc8fc5e7b0311d9ced40e1c77fb569b5d2fe6f3e3639d705), generated by make coverage at main commit 561a1de87. Its aggregates are lines 72.254851%, branches 65.942618%, functions 62.164824%, and regions 70.980892%. It is a local full-suite report, not a Coverage MCP source/build receipt; MCP source and case attribution remain unverified.

These guards are defensive: normal WebP detection requires RIFF, WEBP, and a recognized first image chunk before selecting the WebP decoder. The public decode path also validates an explicitly supplied format against detection. Malformed-signature parity rows therefore fail before metadata_bytes can reach these checks. No honest public parity input can exercise the rejected signature arms through the current API, and a private direct-call test would violate the parity-only test policy. Keep the defensive checks and count them in coverage totals; do not manufacture a public case or exclude the lines.

This documents a coverage disposition, not completion: the fresh report still has 10,897 of 31,996 branches unobserved, and reachable gaps still need public parity cases. Coverage MCP is not connected in this run, so no MCP attribution is claimed.

JPEG singleton chroma upsampling parity — 2026-11-04

The existing public YCCK parity rows for 1x1 and 2x2 H2V1 and H2V2 inputs already cover both one-pixel and two-pixel destination rows. The row dispatcher previously sent all one-sample source rows through its nearest-neighbor fallback, leaving the singleton branches in upsample_h2v1_row and upsample_h2v2_row unreachable. It now uses those helpers for a one-sample source, where they preserve the same replicated pixels; H2V2 copies the selected source row instead of blending an adjacent row. Width-two inputs keep the fallback. The common source-width-greater-than-two path retains its first guard comparison and short-circuit behavior.

Selected coverage and Pillow parity passed six existing rows: decode:jpeg:ycck_h2v1_single_sample_1x1, decode:jpeg:ycck_h2v1_single_sample_2x2, decode:jpeg:ycck_h2v2_single_sample_1x1, decode:jpeg:ycck_h2v2_single_sample_2x2, decode:jpeg:jpeg_chroma_1x9_420_progressive, and encode:jpeg:enc_cmyk_subsampling_420_single_sample_width. The latter two guard against changing ordinary 4:2:0 decode or CMYK encode round-trip pixels. The local selected report is .coverage-mcp/local-evidence/selected/20261104T041504.424190Z-5649901011014679b733063e84b2aad6/coverage.json (SHA-256 4cff67a5179bcb7d082b67302049daa1223a29a013d9ef8fe13fa6604eed4989). It records the singleton arm in upsample_h2v1_row at line 465 (18 hits) and upsample_h2v2_row at line 495 (130 hits); each helper's nested output-length condition has both outcomes observed. The report and receipt are local-only; Coverage MCP was not queried and test attribution is unknown. This focused result is complemented by the refreshed full local baseline above. No unit tests or new parity rows were needed, and no performance gain is claimed.

JPEG destination-row geometry fault contract — 2026-11-05

Added target-only case fault-contract:jpeg:jpeg_fancy_upsample_row_destination_y_out_of_bounds on the active decode:jpeg:color_ycck_app14_transform_2 fixture. Its one-shot cfg(coverage) hook supplies an out-of-range destination row after the component height has been checked. The public decode must return a malformed JPEG StillDecode error, and a clean retry must succeed. The manifest records oracle_status: not_applicable; the row is target-only fault-contract evidence.

The focused run included the ordinary Pillow YCCK parity row and both the source-length and destination-row fault contracts. All three selected rows passed. In src/codecs/jpeg/decode/upsample.rs:400, the source-length predicate recorded true/false counts of 1/145, and the destination-height predicate recorded 1/144. The retained local report is .coverage-mcp/local-evidence/selected/20261105T070038.116113Z-8083d031a2d4479c9a6aff0959ca0bf4/coverage.json (SHA-256 bee7e47e5284dcd3b24b726ece289514c07e478ff12c5623ba123c889231cc8f); its local receipt is .coverage-mcp/local-evidence/selected/20261105T070038.116113Z-8083d031a2d4479c9a6aff0959ca0bf4/coverage.local-evidence.json (SHA-256 6897a3f66081250ceb3346e1aefd2bdfeb67603bca3561b8b393d99d716924a3). The receipt marks source identity unverified and test attribution unknown; this selected result does not claim aggregate coverage. The injection compiles only for coverage builds, so the release decoder path has no added runtime work.

WebP metadata reuse selected parity — 2026-11-05

Selected public encoder parity for encode:webp:enc_exif and encode:webp:enc_lossless_exif_metadata_reuse passed 2/2 rows. The lossless 1x1 EXIF case exercises the existing_start = 12 path in attach_metadata_reusing_output: the selected report records the false arm of the VP8X-header condition at src/codecs/webp/encode/mod.rs:949 six times. This branch was absent from the older full report but already has a valid input-driven parity case, so another fixture is unnecessary for it.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261105T075429.713935Z-746dbac08727438d9bfbe5d64ffb8947/coverage.json (SHA-256 320e276b66b99f56f252eb81714ba2d965c2e422f05cefb344e0bb7b3bc89040); its local receipt is .coverage-mcp/local-evidence/selected/20261105T075429.713935Z-746dbac08727438d9bfbe5d64ffb8947/coverage.local-evidence.json (SHA-256 de19396cc50f99fd84e53e2e3fc8c67da77034a1c7ac77045bd11f9236e073fc). The receipt is local-only and does not establish MCP source identity or test attribution. This focused run does not refresh aggregate coverage.

WebP animated-alpha dimension-guard reachability — 2026-11-05

Selected public Pillow parity for decode:webp:animated_animated_alpha_lossy and decode:webp:error_malformed_container_animated_alpha_vp8_too_large passed 2/2 rows. The malformed fixture is generated by changing the nested VP8 chunk's declared size to 0x100000; the decoder rejects it at the ANMF extent check in src/codecs/webp/native/decoder.rs:748, before calling Vp8Decoder::decode_frame or reaching the following dimension guard at line 755. The selected report records the extent predicate true/false counts as 2/4 and the dimension predicate true/false counts as 4/0.

The false arm of the dimension guard is unreachable from a VP8 frame header: src/codecs/webp/native/vp8.rs:1227-1228 masks both dimensions with 0x3fff, so each is at most 16,383. The existing fixture checks the declared chunk extent, not an oversized decoded dimension. Keep the guard as a defensive invariant; do not add a private test or claim that this fixture covers its false arm.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261105T080258.892233Z-efc5729c2b2c49efbee77262a0e694b9/coverage.json (SHA-256 e5600e8ec0336fde7e5dea869ccdd07a1dd56057bb5e2512e2f629acccd6cc15); its local receipt is .coverage-mcp/local-evidence/selected/20261105T080258.892233Z-efc5729c2b2c49efbee77262a0e694b9/coverage.local-evidence.json (SHA-256 8702313a68d833fbe1a8ae2402e91839338147296000dcf7f781aeceacedee01). The receipt is local-only, and this focused run does not refresh aggregate coverage.

BMP invalid-signature decoder contract — 2026-11-05

Coverage MCP identified an unobserved branch arm at src/codecs/bmp/decode.rs:375. The active Pillow parity row decode:bmp:error_not_bmp reaches public format detection, which returns UnknownFormat before selecting the BMP parser. Added a target-only contract that reuses that fixture and invokes BMP dispatch through a cfg(coverage) hook. It checks the stable malformed-BMP error and leaves normal decoder selection unchanged. The hook is absent from non-coverage builds.

The focused selected run passed the Pillow parity row and target-only contract (1/1 in each lane). Coverage MCP then reported only the false arm of the signature condition as missing in that selected report, so the malformed signature arm was observed. The report is .coverage-mcp/local-evidence/selected/bmp-invalid-signature-20261105-retry1/coverage.json (SHA-256 9e99ef64735fef0866bc59f22fe5ab89aa23e6491b75038247c0f9661ae7489f); its local receipt is .coverage-mcp/local-evidence/selected/bmp-invalid-signature-20261105-retry1/coverage.local-evidence.json (SHA-256 9630f77abcda9ca78498835a566017dbb3ff95aed8e397b359e4cf2871890fb9). The receipt marks source identity unverified and test attribution unknown. This selected result does not claim aggregate coverage.

BMP metadata-size invalid-signature contract — 2026-11-05

Coverage MCP also identified the unobserved invalid-signature arm in src/codecs/bmp/decode.rs:845, the BMP metadata-size parser. Public decoding validates the format signature before measuring metadata, so the existing decode:bmp:error_not_bmp fixture cannot reach that parser through normal dispatch. Added a target-only fault contract that reuses this fixture and calls the metadata parser through a cfg(coverage) hook. It checks for a malformed BMP inspection error with the invalid-signature message; the hook is absent from non-coverage builds.

The selected run passed the existing Pillow rows decode:bmp:error_not_bmp and decode:bmp:compression_none, plus the direct decoder and metadata-size fault contracts (2/2 parity rows and 2/2 target-only contracts). Coverage MCP reported only the false arm at line 845 as missing in this selected report, confirming the malformed-signature arm ran. Its report also recorded no missing arms at the direct decoder signature check (line 375) or indexed-palette attachment check (line 825).

The report is .coverage-mcp/local-evidence/selected/bmp-signature-and-metadata-20261105/coverage.json (SHA-256 3bb9d8cc99da4fa68b6482270842bdb89a4018d821a35ad1555245fadfbe2bfa); its local receipt is .coverage-mcp/local-evidence/selected/bmp-signature-and-metadata-20261105/coverage.local-evidence.json (SHA-256 3d65e221af4eefb28419c1868920b666e8700bcd3bb3dd3a0fcb68fe5f7236e0). The receipt marks source identity unverified and test attribution unknown. This focused result does not claim aggregate coverage.

GIF and WebP metadata signature contracts — 2026-11-05

Coverage MCP identified signature-rejection arms that normal public format detection cannot reach in gif::decode_sequence, GIF metadata measurement, and WebP metadata measurement. Added four target-only fault contracts using existing Pillow unknown-format inputs:

  • fault-contract:gif:gif_sequence_decoder_invalid_signature_contract
  • fault-contract:gif:gif_metadata_extent_invalid_signature_contract
  • fault-contract:webp:webp_metadata_riff_signature_contract
  • fault-contract:webp:webp_metadata_webp_signature_contract

Coverage-only hooks invoke the selected parser below public detection and are absent from normal builds. All four focused contracts passed. Coverage MCP on the selected report observed the GIF invalid-signature branches at src/codecs/gif/decode.rs:48 and :368, and both WebP signature rejection branches at src/codecs/webp/decode.rs:185-186. The selected report still shows other, unselected continuation arms as missing.

The report is .coverage-mcp/local-evidence/selected/20261105T145242.093363Z-5f9162404b70488297dcea31b1cd54ae/coverage.json (SHA-256 1986e3ebfb619fe31899f02519ee5414b57e7ced9b3f7e0815e3fd113d854649); its local receipt is .coverage-mcp/local-evidence/selected/20261105T145242.093363Z-5f9162404b70488297dcea31b1cd54ae/coverage.local-evidence.json (SHA-256 236eb4cdff172e314855ac91c8b088a502225c434536701c59a184588e700187). The receipt marks source identity unverified and test attribution unknown. This focused result does not claim aggregate coverage.

WebP inspection signature contracts — 2026-11-07

The retained full-parity report showed both rejection outcomes missing at src/codecs/webp/inspect.rs:25. Existing malformed WebP Pillow parity fixtures cover an invalid RIFF signature and an invalid WEBP form type, while public format detection returns UnknownFormat before this inspector is reached. Added two target-only inspection hooks and fault-contract rows that reuse those parity inputs and assert structured Malformed inspection errors:

  • fault-contract:webp:webp_inspect_riff_signature_contract
  • fault-contract:webp:webp_inspect_webp_signature_contract

The focused selected-coverage run passed both rows. At line 25 it recorded the first signature condition true/false counts as 1/1 and the second as 1/0; the retained full-parity report records 956 false outcomes for each condition. These are separate selected and full-parity observations, not an aggregate coverage claim.

The selected report is .coverage-mcp/local-evidence/selected/20261107T060831.391722Z-56dc54b468c046209412a4315b9b34dc/coverage.json (SHA-256 ded25c1cc09510be8e99297a14427b598e93e33ae70f9852dc00b0be9ba1b51c); its local receipt is .coverage-mcp/local-evidence/selected/20261107T060831.391722Z-56dc54b468c046209412a4315b9b34dc/coverage.local-evidence.json (SHA-256 d89779dc6a2c0e827dec08d0db98dbd563ffb4f54f20ac9d2004f9d87275e679). The receipt marks the source unverified and Coverage MCP unqueried, so this remains local selected evidence only.

JPEG inspection signature contract — 2026-11-07

The retained full-parity report showed the invalid-signature outcome missing at src/codecs/jpeg/inspect.rs:35 (2,359 false outcomes). The active Pillow-backed decode:jpeg:subsampling_444 case already covers valid JPEG input. The target-only fault contract validates that normal decode against its Pillow pixels, flips the first signature byte, calls the coverage-only direct inspector, and requires the structured Malformed inspection error with the stable JPEG signature message:

  • fault-contract:jpeg:jpeg_inspect_invalid_signature_rejected

The selected run passed 1/1 fault-contract row. It recorded true/false branch counts of 1/0 at line 35; the fault row has oracle status not_applicable.

The local report is .coverage-mcp/local-evidence/selected/20261107T072437.904726Z-02414ac63dac4d7bb57a28cf4f568e89/coverage.json (SHA-256 75c06f902b73ba38565c9c7d54b51cec2d43afb530d596c8cb20781ab2158746); its receipt is .coverage-mcp/local-evidence/selected/20261107T072437.904726Z-02414ac63dac4d7bb57a28cf4f568e89/coverage.local-evidence.json (SHA-256 11e2cf7cc110b4e3bba83fba25d7ccafff59007e9e48a8c2994d7bf6dc206d19). The receipt marks the source unverified and Coverage MCP unqueried, so this is local selected evidence only and does not claim aggregate coverage.

ICO inspection header contracts — 2026-11-07

The retained full-parity report showed both malformed-header rejection outcomes missing in src/codecs/ico/inspect.rs:16 and :22. The existing Pillow malformed ICO fixtures already provide invalid reserved-field and unsupported-type inputs, but public format detection rejects them before the inspector is reached. Added a target-only direct-inspection hook and fault contracts that assert structured Malformed errors at offsets 0 and 2:

  • fault-contract:ico:ico_inspect_reserved_header_nonzero_rejected
  • fault-contract:ico:ico_inspect_unsupported_header_type_rejected

Both selected cases passed. The selected report records the line 16 condition true/false counts as 1/1 and line 22 as 1/0; the retained full-parity report records 205 false outcomes for each condition. These separate observations do not claim aggregate coverage.

The selected report is .coverage-mcp/local-evidence/selected/20261107T064603.072257Z-eb2adfc774db496793c9211fbb9a28e8/coverage.json (SHA-256 75d3699ddb0e49311f2b5d7642af1518e1a62794ec12443d1251963b5bad9041); its local receipt is .coverage-mcp/local-evidence/selected/20261107T064603.072257Z-eb2adfc774db496793c9211fbb9a28e8/coverage.local-evidence.json (SHA-256 bfe9cbdaffdd456def96cd1f562f9b0ebb2722edc6301538a8794197c190ef39). The receipt marks the source unverified and Coverage MCP unqueried, so this remains local selected evidence only.

AVIF rectangular luma split selected coverage — 2026-11-07

The existing Pillow parity rows decode:avif:animated_lossy_inter_420_b4x16_q99_16x64 and decode:avif:animated_lossy_inter_420_b16x4_q99_64x16 passed together (2/2). They exercise the horizontal and vertical rectangular luma split paths in Lossy420Decoder::decode_inter_split_luma_b4_rect_pair. The selected LLVM report records both outcomes for the orientation branch (2/2), both inner orientation outcomes (4/4), and both child-index outcomes (2/2).

The local report is .coverage-mcp/local-evidence/selected/20261106T203152.738919Z-cb5b109d34234193b8e1effceaf35ddf/coverage.json (SHA-256 e45cce804239a6a4b13d095ebe9fa25f77f28278ea01eb2790ae5e86b603fefe); its receipt is .coverage-mcp/local-evidence/selected/20261106T203152.738919Z-cb5b109d34234193b8e1effceaf35ddf/coverage.local-evidence.json (SHA-256 0da4a4f5bcdc945fafa46ba95b511eb9716ab7bb360097a4624d4719b047fdb9). The receipt records source revision 2c35ff0a6e3249f58c56cf231b8398b5deba35ee, source manifest SHA-256 36814d700017049945424d0aed1ed77a1f6275e1084503b25c1755117541a55b, and no source or fixture changes during the run. It also explicitly marks the report local-only, Coverage MCP as not queried, source attribution as unverified, and test attribution as unknown. These counters are diagnostic evidence only; they do not establish aggregate coverage or a Coverage MCP result.

JPEG YCCK component-plane count contract — 2026-11-07

The retained full-parity report left the invalid plane-count outcome uncovered in ycck_to_cmyk_pixels. The active Pillow row decode:jpeg:color_ycck_app14_transform_2 covers the valid four-plane path. A target-only fault point now drops the last plane in coverage builds and checks that the decoder returns the structured malformed-input error; a clean retry must match a fresh decode. This has no release-build branch or runtime cost.

The selected run passed both the Pillow parity row and the separate fault contract. At the current condition in src/codecs/jpeg/decode/decode.rs:1276, the plane-count condition observed true/false counts of 0/7, the injected short-buffer condition observed 1/6, and the combined guard rejected once. These selected outcomes do not claim aggregate coverage.

The report is .coverage-mcp/local-evidence/selected/20261107T083944.034413Z-8b9b1a6178614493af2fc1ad507d1287/coverage.json (SHA-256 d6a5e21007ed59dc6bf7b3a3980eae87730292691a13b1208e04660f9b0bd8b2); its receipt is .coverage-mcp/local-evidence/selected/20261107T083944.034413Z-8b9b1a6178614493af2fc1ad507d1287/coverage.local-evidence.json (SHA-256 9ff723ad711cd0e824bd63ef5ece702955a6868536905cfe0bd98cd126bd985a). The receipt marks Coverage MCP as unqueried and its source identity as unverified, so this is local selected evidence only.

JPEG YCCK component geometry fault contracts — 2026-11-07

The retained full-matrix coverage report showed the valid YCCK decoder path but missed the invalid stride, height, and component-plane-length outcomes in ycck_to_cmyk_pixels. Four target-only fault contracts now exercise short stride, short height, insufficient sample data, and checked plane-length overflow against the active Pillow source row decode:jpeg:color_ycck_app14_transform_2. Each injected decode must return the structured malformed-input result, and the subsequent clean decode must match its retry.

The selected run passed the source parity row (1/1) and all four fault contracts (4/4). In the selected LLVM report, the YCCK geometry guards at src/codecs/jpeg/decode/decode.rs:1374, :1375, and :1376 recorded true/false counts of 1/51, 1/50, and 2/48. These counters describe this selected run only; they are not aggregate coverage.

The report is .coverage-mcp/local-evidence/selected/20261107T134514.620587Z-67e4c3d2da534a79bccc2680948670e6/coverage.json (SHA-256 e4fd37a4e57feee3f904c72b8dcbf12f7bcba26697967958a331a71cba84b56d); its receipt is .coverage-mcp/local-evidence/selected/20261107T134514.620587Z-67e4c3d2da534a79bccc2680948670e6/coverage.local-evidence.json (SHA-256 26d83c5672f2b6188b25b6ee348592d351bb4a15fb3c16dcef90ffa2fbbc7652). No source or fixture files changed during the run. Coverage MCP was not queried, and the receipt identifies this as local selected evidence only.

WebP VP8 method-two header-budget parity — 2026-11-07

Added active parity row encode:webp:enc_lossy_quality_80_method_2_header_budget_noise_gray_4096x3072. Its deterministic 4,096×3,072 grayscale source uses a pinned xorshift pixel stream and a platform-independent stored-DEFLATE PNG writer. The source PNG SHA-256 is f2821e63e4de32ca6113807da7ba2742c047610a72084368ea46e84c15668b39; the decoded source-pixel SHA-256 is 5c16d025c0764c693e8733e816e8f1e4888a726d58c8907f318cbc3249498b71.

The selected Pillow 12.2.0 parity run passed 1/1 row, with five public encode calls, no panics, exact encoded bytes (13,312,062 bytes; SHA-256 ee56640fc2ed618b1456d13ff12d099076871d6b4303497e84ac153a9fa61983) and decoded pixel parity for 4,096×3,072 RGB output. The selected LLVM report records both outcomes of the method-two intra4 header-budget comparison at src/codecs/webp/encode/vp8/frame.rs:328: 177,856 within-budget and 5,800 over-budget outcomes. The latter reaches the Intra16 fallback when Intra4 scored better but exceeded the frame's per-macroblock header budget.

The local report is .coverage-mcp/local-evidence/selected/20261107T231652.470132Z-8abd6cb923a44607a0e1fb83bf94ffd4/coverage.json (SHA-256 d98fc929299c728efde333c95a2d09cc8b8375eca586c505ae9573e5e04612ba). Its receipt identifies a local LLVM run on aarch64-apple-darwin with nightly-2026-07-16, but marks Coverage MCP as not queried and source attribution as unverified. These selected counters prove this case reaches the branch; they do not establish aggregate coverage or a Coverage MCP result.

Baseline multi-scan JPEG truncated COM parity — 2026-11-08

Added the input-only parity row decode:jpeg:baseline_444_multiscan_com_oversized_length. Its generator starts from the pinned multi-scan interleaved-restart JPEG and replaces the terminal EOI with a COM marker declaring a 65,533-byte payload but containing only two bytes. Pillow 12.2.0 accepts and verifies the JPEG RGB 16×8 header, then rejects pixel loading with OSError: image file is truncated (0 bytes not processed); the Rust public decoder returned the matching malformed result. The source fixture SHA-256 is ddbcf29eb1549aae0356661ff2b879b7b2b23b7aae924adbb424af22246e20d7; the mutated input SHA-256 is 4177af354fc11b8ff4ecd71f7e75e37afb9528806c18e524927946e4b004853c.

The selected public parity run passed 1/1. Coverage MCP's preceding full report showed the false outcome missing at src/codecs/jpeg/decode/parser.rs:741; the selected case report leaves the true outcome missing, showing that this case exercised the false multi-scan arm. Both reports remain local measurements: Coverage MCP labels source identity unverified and test attribution unknown. The aggregate full report was not refreshed, so this does not claim a new whole-suite percentage.

Selected report: .coverage-mcp/local-evidence/selected/20261108T063050.792605Z-a43bbc8532c64dabbf57a4884438e501/coverage.json (SHA-256 5365e77b5a4c8cc621fbc9dbefc2cb0dfe395f2aa83528fd0bde97bd7186ff5b). Its local receipt records the exact selector, fixture hash, toolchain, and passing execution. No Rust decoder code or unit tests changed.

Big-endian I;16 → PNG parity — 2026-11-09

Added the active Pillow-backed row encode:png:enc_i16_big_endian to exercise TIFF I;16B input through PNG encoding. The 17×17 fixture has asymmetric samples; the selected run matched Pillow's 153 encoded bytes and re-decoded I;16 samples exactly (1/1). TIFF's public L16 transfer buffer normalizes samples to little-endian even when its header identity is I;16B, so the existing PNG byte swap is required. No production encoder change was needed.

The selected LLVM report is .coverage-mcp/local-evidence/selected/20261108T214145.559689Z-0f970e0a17f94a87bad76f029341c679/coverage.json (SHA-256 b87e2d0048e6c0f3ee1b0dbbac0467e3b1258b653cf0f2709aa80ad0df9ebfb0); its local receipt SHA-256 is 76f0342111b538649b5fde26644240c611032f2ebe0e912c00bd173abdbf7524. Coverage MCP labels this selected measurement's source identity unverified and test attribution unknown. It is local selected-case evidence and does not establish aggregate coverage.

The current public evidence matrix contains 3,892 total rows: 3,201 decode / inspect / verify rows and 691 encode rows. Of those, 3,201 decode rows and 664 encode rows are active; 27 encode rows remain planned.

WebP mode and checkpoint parity — 2026-11-09

The 38 indexed mode-decode rows and 59 indexed mode-encode rows passed in one selected run (97/97). Every indexed successful encoder also exercised the append-only sink path and matched the Pillow bytes while preserving its pre-existing prefix. The nine WebP fault-contract rows passed separately (9/9); those target-only outcomes are not Pillow parity.

Added the active parity row encode:webp:enc_lossy_bool_checkpoint_pending_run for deterministic 128×192 RGB noise from scripts/generate_webp_bool_checkpoint_noise_fixture.py. Pillow 12.2.0 with libwebp 1.6.0 emitted the exact 28,376-byte output; Rust matched its encoded bytes, re-decoded RGB pixels, and append-only sink output (1/1, no panics). It shares the existing WebP Rgb8→Rgb8 pair, so the append-only mode_encode_cases index remains at 59 entries.

The tall-frame probe first reproduced a method-6 mismatch: Rust emitted 74,856 bytes versus Pillow's 73,812, with decoded RGB first differing at (8, 192). The input pixels matched Pillow. The divergence began at the first coefficient probability refresh. Pinned libwebp 1.6.0 refreshes token probabilities before macroblock 97 and after each max(96, macroblock_count / 8) + 1 macroblocks in VP8EncTokenLoop. The Rust selector had used fixed probabilities for the entire frame. It now records coefficient statistics as each macroblock is selected and refreshes from the accumulated prefix without rescanning prior blocks. Method 6 also uses one trellis frame-selection pass instead of computing and discarding an initial non-trellis selection.

For method 5, pinned libwebp chooses modes without trellis, then applies its simple final quantizer to those selected modes; method 6 includes trellis in mode selection. Rust now performs that method-5 final pass over the chosen modes and reuses the macroblock-edge contexts used by libwebp's final pass (pinned libwebp source).

Added active parity rows for methods 3, 4, 5, and 6 on the seeded 128×512 RGB noise fixture. Pillow 12.2.0/libwebp 1.6.0 emitted 73,982, 73,982, 73,898, and 73,812 bytes. Rust matched the exact encoded bytes and re-decoded RGB pixels. The fixture PNG SHA-256 is c4aba34e29dc463d104c9628e467c7f11415004605d3c7d57028d19103ef8b6a.

Added a flat 1024×1024 RGB method-3 row for zero-coefficient statistics and the 1,024-macroblock checkpoint, plus quality-100 method-2 baseline rows for the flat and tall fixtures. The smooth/checkerboard 128×512 fixture at method 2, qualities 80 and 90, reaches the non-token probability adaptation path, including node 10. Its PNG SHA-256 is dee4e35d06dcdb2e8f82b7be8cd1bbef9e6fff60a96898b95e0f3f00fc80c487. The pinned fixture generator is scripts/generate_webp_bool_checkpoint_segmented_fixture.py.

The final selected run combined those new rows with the existing large method-2 noise row. All 10/10 active cases passed exact Pillow byte parity and decoded pixel parity (50 public encode calls, no panics); the matrix runner also checked append-only sink output and prefix preservation for these successful encodes.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261109T162006.820773Z-9f37cdb4065b43369f6c9adbc9ff953e/coverage.json (SHA-256 3827225725fbf780d19f52abb68d56019a87681d6f095208212a600684808002); local receipt SHA-256: 109905f0b03844e422b1e8627357eb863ed600db3892236bcc3a8ef3ce73bbe5. Coverage MCP's follow-up branch query found no remaining gaps in src/codecs/webp/encode/vp8/probability.rs for this selected cohort. The instrumented report totals 9,092/142,863 lines, 974/32,126 branches, 617/9,180 functions, and 14,396/221,254 regions. Coverage MCP marks source identity unverified and test attribution unknown; these local selected-case figures are not aggregate project coverage.

The current public evidence matrix contains 3,919 total rows: 3,207 decode / inspect / verify rows and 712 encode rows. Of those, 3,207 decode rows and 685 encode rows are active; 27 encode rows remain planned.

CIELAB encode identity parity — 2026-11-09

Added Pillow-backed parity rows for TIFF LAB encoding and PNG's unsupported LAB outcome. TIFF emitted the exact 158-byte Pillow output and decoded back to the same 3×2 LAB pixels. The existing public-mode contract now also checks that a LAB raster identity paired with an L8 transfer carrier returns a structured parameter error. The selected run passed all three rows with no panics.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261108T225105.016293Z-1e69b86f8aef46db9b645c64dc2bc5f4/coverage.json (SHA-256 2aec37edae09c0b5075b98be2540a21eb3ae0a45229eb900bb3f8f77c04a611a). Its local receipt SHA-256 is 3db7c518efb7ae7d62b4c760723bf6140eea1d19aae106e05be19283a1096798. The receipt marks Coverage MCP as not queried, source identity unverified, and test attribution unknown. This selected subset is not an aggregate coverage measurement.

The current public evidence matrix contains 3,892 total rows: 3,201 decode / inspect / verify rows and 691 encode rows. Of those, 3,201 decode rows and 664 encode rows are active; 27 encode rows remain planned.

TIFF palette extra-sample parity — 2026-11-10

Added an active error parity row for a separate-planar palette TIFF whose second sample is marked unspecified. The fixture is derived from the existing separate-planar PA sample and changes only its ExtraSamples value; Pillow rejects the resulting TIFF during open. The focused five-row cohort passed: palette alpha, associated-alpha rejection, separate-planar PA rejection, contiguous unspecified-extra P decoding, and separate-planar unspecified-extra rejection (5/5).

Coverage MCP reports no remaining branch gaps at src/codecs/tiff/inspect.rs:440 for this cohort. The selected LLVM report is .coverage-mcp/local-evidence/selected/20261110T004909.866076Z-67585ef43c0c414f8888f93165dabe01/coverage.json; MCP marks source identity unverified and test attribution unknown, so this is targeted local evidence and not an aggregate coverage claim.

The subsequent full parity matrix passed 3,214/3,214 active decode rows, 686/686 active encode rows, and 206/206 fault contracts; 27 planned encode rows were not executed. Its LLVM report is .coverage-mcp/local-evidence/selected/20261110T005206.216445Z-05e07e499362481bbed69ec9a3f6b3a4/coverage.json (SHA-256 02623f12c47f1888013b64e2395fb8ebe6b9dabe81ebbabd50ae900492a81ec0). Coverage MCP found no remaining branch gaps at TIFF inspect line 440 in this report; the report records 20,921/32,126 branches. Its source identity remains unverified and test attribution unknown, so it does not establish verified aggregate project coverage.

The current public evidence matrix contains 3,927 total rows: 3,214 decode / inspect / verify rows and 713 encode rows. Of those, 3,214 decode rows and 686 encode rows are active; 27 encode rows remain planned.

TIFF carrier-mode identity parity — 2026-11-10

Appended explicit mode-decode representatives for decode:tiff:ycbcr and decode:tiff:extra_samples_zero_rgbx_contiguous_strips_raw. Pillow reports both source layouts as RGB, and both cases retain exact decoded pixel parity. The mode index now permits multiple fixtures for the same public mode pair so distinct carrier layouts remain represented. Every indexed still-image row now checks owned and borrowed encoded-source header identity before loading, then checks the decoded transfer identity and exact Pillow image.

The focused selection passed both rows (2/2). Its Coverage MCP report is .coverage-mcp/local-evidence/selected/20261110T014748.340237Z-19fa993e84f440deb096cc67ac844713/coverage.json. The two-row report totals are 1,734/142,863 lines, 191/32,126 branches, 175/9,180 functions, and 2,468/221,254 regions. Coverage MCP marks source identity unverified and test attribution unknown, so this result is focused evidence and not an aggregate coverage claim. cargo fmt --check, strict all-target/all-feature Clippy, and git diff --check passed.

PA encoder parity audit — 2026-11-10

The selected PA encoder cohort passed all three active rows: TIFF produced the Pillow-matching 1,706-byte output and re-decoded to exact 3×2 PA samples; PNG and BMP returned their Pillow-compatible PA rejection. Coverage MCP still reports unvisited branches in the TIFF, PNG, and BMP encoder functions for this narrow cohort; those observations are not evidence that the other branches are unreachable. The selected report is .coverage-mcp/local-evidence/selected/20261110T015121.528652Z-6f3d28b22d144bbcaf97e0e635257025/coverage.json. Its totals are 2,212/142,863 lines, 237/32,126 branches, 207/9,180 functions, and 3,020/221,254 regions. Source identity is unverified and test attribution unknown, so these totals describe this selected run only.

TIFF big-endian mode identity parity — 2026-11-10

Appended decode:tiff:byte_order_be to the mode-decode index. Together with the existing little-endian row, it keeps both TIFF byte-order layouts represented for the same public Rgb8 header and decoded-transfer pair. The focused parity run passed 1/1 row, including exact 49,152-byte Pillow pixel parity and the indexed owned/borrowed header and decoded-transfer identity checks. The mode-decode index now contains 45 cases.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261110T050954.701380Z-0dda224f222b46dbb3612e0f18fa0ec9/coverage.json (SHA-256 48bd7a1a7f403921473619f4275886f6014c0daca901b43dbbc2a36985a1dfcb). It records 1,658/142,863 lines, 169/32,126 branches, 172/9,180 functions, and 2,327/221,254 regions. Coverage MCP was not queried; source identity is unverified and test attribution unknown, so this is selected local evidence, not an aggregate coverage claim.

Cross-format decode mode representatives — 2026-11-10

Appended four public parity representatives to the mode-decode index: 8-bit indexed BMP, packed 2-bit grayscale PNG expanded to L8, straight-alpha RGBA TIFF, and lossless RGB WebP. Their public mode pairs are respectively P→P, L8→L8, Rgba8→Rgba8, and Rgb8→Rgb8. All four selected rows passed exact Pillow pixel parity and the indexed header/decoded-transfer identity checks. The append-only mode-decode index now contains 49 cases.

Selected LLVM report: .coverage-mcp/local-evidence/selected/20261110T054515.053263Z-3ef98d6a2c9b4911bb640f2c5f010a8c/coverage.json (SHA-256 3a1ee14a11c4c839649826ec76001a4cf00f37dd594824abdc909b746b56b75d). It records 4,252/142,863 lines, 525/32,126 branches, 366/9,180 functions, and 6,387/221,254 regions. Coverage MCP was not queried; source identity is unverified and test attribution unknown, so these are focused local figures, not an aggregate coverage claim.

WebP empty metadata encoding parity — 2026-11-10

Added enc_lossless_empty_metadata_omitted for empty ICC and XMP payloads and an EXIF value containing only Pillow's optional Exif\0\0 prefix. Pillow 12.2.0 omits all three chunks and emits the 36-byte lossless WebP reference; before the fix, the Rust encoder emitted 78 bytes. The encoder now strips the optional EXIF prefix before filtering empty payloads, then returns the original codec output directly when no metadata remains. This keeps the token-aware and buffer-reuse paths consistent without adding payload copies.

The focused six-row parity selection passed, including the new case, both existing prefixed/unprefixed EXIF reuse cases, and token-aware ICC, EXIF, and XMP cases. All 28 public encode calls completed without a panic. The complete parity matrix then passed 3,214/3,214 active decode rows and 687/687 active encode rows; 27 planned AVIF encode rows were not executed. The run selected 3,928 rows and executed 3,901; fault-contract rows are not part of this matrix run.

The full-run LLVM report is .coverage-mcp/local-evidence/selected/20261110T070603.401257Z-89a55fda0edf4011a4c2fc6c832f2d64/coverage.json (SHA-256 d1dd53e340c9eaf34e9f28db84b0da84c145f6af430758681ce44104b89f24fb). It records 97,950/142,865 lines (68.5612%), 20,369/32,126 branches (63.4035%), 5,274/9,182 functions (57.4385%), and 148,965/221,250 regions (67.3288%). Its local receipt SHA-256 is cc40a1f048a3f6372ea4da17b62c8e0e7c0b32d6a119ec73ff81b34d60749200. Coverage MCP marks source identity unverified and test attribution unknown; these local measurements do not establish verified aggregate project coverage. The queried helper had no reportable missing groups. Broader WebP, TIFF, and JPEG source gaps remain visible in the report and are not treated as reachable through valid public parity inputs without a concrete case.

WebP token-aware I32 mode parity — 2026-11-10

Added enc_lossless_i32_signed_clamp_token using the existing signed 32-bit grayscale TIFF input, alongside its ordinary encode parity row. The new row calls the public token-aware encoder with a fresh token and checks the exact 48-byte Pillow output plus the decoded 257×1 RGB pixels. Its focused parity selection passed (1/1); all five public encode calls completed without a panic.

Coverage MCP's full-report branch gap at src/codecs/webp/encode/mod.rs:1226 was the token-present arm of the I32 conversion specialization. The selected report and comparison record that arm as newly observed; the helper's I32 branch is no longer listed as missing in the selected report. This does not cover the cancellation-error edge at the checkpoint call. The comparison is limited local evidence because Coverage MCP marks source identity unverified and test attribution unknown.

Selected report: .coverage-mcp/local-evidence/selected/20261110T074723.739599Z-7c9825cc5a744104b596916aac646077/coverage.json (SHA-256 f7d80ae4fb9c3b81985d1f026e8f53543a1ea81d611c751116650e7b28d33a32). Its local receipt SHA-256 is a2e3410ac70f581268bd63889bc4063e037a238b97c5684a785073a35dda1c9c. Coverage MCP comparison against the prior full report found one newly observed branch arm at line 1226; it explicitly labels the comparison limited and the source/build identity unverified.

PNG policy work-budget error parity — 2026-11-10

Extended the existing Pillow-backed reserved-DEFLATE-distance PNG error row with a decode_with_policy call carrying a maximum work budget. The public policy path returns the same structured malformed-input result as Pillow and the existing token-aware call; the selected parity case passed 1/1.

Coverage MCP reported no remaining branch gaps in decode_token_format_with_mode for this selected case. Comparison against the current full report observed its previously missing incremental == false error arm at line 289. The selected report records 1,322/142,880 lines, 132/32,132 branches, 134/9,183 functions, and 1,776/221,268 regions. MCP marks source identity unverified and test attribution unknown, so this is a focused coordinate comparison rather than a verified aggregate coverage gain.

Selected report: .coverage-mcp/local-evidence/selected/20261110T175107.472724Z-b51d860aadc24206944c4ef83daeb9cb/coverage.json (SHA-256 78c47d199f6249faaa913544890d63612a33b77374feb97d189fd593e3583a4c).

JPEG oversized trailing APP1 without EOI parity — 2026-11-11

Added decode:jpeg:baseline_444_single_scan_app1_oversized_length_no_eoi, a variant of the pinned baseline 4:4:4 fixture with its terminal EOI removed. Pillow 12.2.0 decodes its complete 8×8 RGB scan. The Rust parser now stops at the oversized trailing APP1 marker when no EOI is present and leaves the completed entropy scan available to the decoder; existing EOI handling is unchanged. The fixture SHA-256 is 32d94f32fb02847aae56bc1915b12820466de025aecfabe8e254e8034f837d26, and its 192-byte Pillow pixel reference SHA-256 is 7382706a9ecb0f6acae26e7c1c9a9be0e9471233c1a0c0da48d08a458115be2f.

The focused public parity selection passed 6/6 rows: the new no-EOI APP1 case, the existing oversized APP1, COM, and DHT cases, the trailing-DHT no-EOI case, and the multi-scan COM rejection guard. The no-EOI case also exercised token-aware decode, sequence decode, and sequence work-budget paths. No unit tests were added.

Coverage MCP queries against the selected report returned no missing branch groups at parse_jpeg lines 746 or 751. The report has 357/32,128 branches observed overall; source identity is unverified and test attribution unknown. The coordinate comparison to the previous full report could not establish a verified gain, so these figures are selected local evidence rather than an aggregate coverage claim.

Selected report: .coverage-mcp/local-evidence/selected/20261110T233248.149443Z-3d8fd0fd6b1740d3b6251ce7b2dada1a/coverage.json (SHA-256 d3314cb0f3f214cbd08ecd6e73c2035108a4d7b5eb30537dad788e79c8c9ef07). Its local receipt SHA-256 is 9afa136901cb641b93a77f59553b1ae687c716ea1e31d4352fa85fd0f9c3ee34.