scripts/summarize-benchmark-results.py derived pair quality decisions from top-level oracles and ignored initial/incremental/fresh lifecycle failures when those aliases were absent. A BELOW QUALITY TARGET row could therefore have no finding, and Markdown replaced the empty evidence with 'All applicable canonical-graph and task-oracle checks passed.'
Treat initial and fresh pair stages as required and the post-edit stage as required only when the recorded freshness policy expects immediate results. Emit stage names, TP/TN/FP/FN counts, and absent-expected or unexpected-positive counts. Skip failure wording for explicit capability-off controls and preserve deferred post-edit semantics.
Only use the all-checks-passed fallback for PASS decisions. Non-pass rows without a recorded witness now state that limitation and direct readers to retained raw results.
Verification: focused RED returned PASS with empty findings for an initial FN=1; GREEN returns BELOW QUALITY TARGET with 'Initial semantic-pair quality missed' and TP=0, TN=2, FP=0, FN=1. Full benchmark/campaign/report suite: 118 passed; Ruff; scripts/check-source-safety.sh; git diff --check.
Signed-off-by: Andrew Hundt <ATHundt@gmail.com>