The gate failed a perfectly good encode (min 0.2552, mean 0.9841) because it demanded a per-frame
floor of 0.985 for EVERY frame. Two measured facts say that is the wrong test:
* SSIM collapses on near-flat frames. Two almost-black frames of a fade score ~0.25 while their
neighbours score 0.998, so a minimum over all frames condemns good encodes. The gate now measures
each source frame's luma std and drops the flat ones from the verdict (reported, never hidden;
if more than half the window is flat the exclusion is skipped so the gate still means something).
* A defect has a SHAPE. Measured distributions on this library: good encodes 0 of 1500 frames below
0.95; the file that triggered this 5 of 1500 below 0.85 (0.33%, isolated) at a 0.984 mean; the
genuine decoder-defect files 44 of 1499 (2.9%) with the mean falling. So the verdict is now
'mean < 0.98 OR more than 1% of frames below 0.85' -> fail; a handful of scattered low frames at a
healthy mean is logged as fades, not a defect - and the log line carries the counts, so the
decision is auditable.