fullseye

imgevolve implementation audit — 2026-08-12

Goal: elevate the image-processing engine to a production level. A 10-agent execution-verified audit swept all 521 operators / 11 backend modules plus the evolution core, CLI, codegen and parity paths. 81 findings were reported (raw data with repros: docs/audit_findings_2026_08_12.json). Independently, a mechanical sweep (11,516 invocations) and a large-image scale probe were run.

This document records the disposition of every finding: what was fixed (with a regression test) and what is deferred (with the reason). Nothing is dropped.

Test suite (new — the project had none)

tests/ now holds 2255 passing checks (was 0). Run: py -3.11 -m pytest tests/ -q.

file what it guards
test_op_contracts.py every op: runs, finite output, deterministic, honours declared sort, region∈[0,1]
test_known_bugs.py named regression tests for each fixed defect below
test_correctness_anchors.py ground-truth math (invert, threshold, gaussian, otsu, sobel, blob-count, psnr…)
test_pipeline_engine.py decode / apply / clip semantics / genome plumbing
test_evolution_honesty.py reproducibility + holdout-never-selected invariant

Baseline before fixes: 22 failed / 2224 passed → after fixes: 2255 passed / 0 failed. Evolution north-star re-verified (denoise 40 gens: holdout 13.99→21.65 dB, hand=22.72). Coverage unchanged (269/2313).

FIXED (verified by regression tests)

Determinism — broke holdout reproducibility (critical)

NaN/Inf on degenerate input — np.clip does not strip NaN

Type-contract — guard returned the wrong sort on failure

Signed responses destroyed by the [0,1] clip (fixed after skill validation)

Operator-name resolution (found by the skill’s own validation)

Correctness / robustness (core & evolution)

DEFERRED — needs a design/semantics decision (your call, per the “interface change → confirm” rule)

These are real, but the fix changes an operator’s semantics and therefore the evolution champions / prior results. Recommend directing these explicitly.

DEFERRED — beta subsystem (codegen / difftest / parity)

DEFERRED — low / test-data-generator edge cases (no production-path impact)

problems._make_barcode/_make_locate/_make_vol_* crash or ignore size for very small sizes (#61/#74/#65); cmd_pipeline lacks the per-stage clip that _apply has (#53); _imread mishandles contour/volume in_sorts (#63); classify uses unanchored substring matching (#54); duplicate registry names across backends (#72); principal_comp on a 1×1 color image (#75); assorted small-image kornia crashes now caught by the sort-aware guard (#76/#77/#78/#59).

Large images / HALCON XL (grounded scale probe)

Some ops need an algorithm change at XL scale — measured facts: