Capability-quality reports stored canonical equality inside pair_lifecycle, while summarize_group() read only case-level canonical_graph. Eager semantic runs therefore displayed Graph fidelity n/a and Overall quality n/a despite Pair F1=1.0, task success, and an exact incremental-versus-fresh graph.
Include lifecycle canonical equality only when the recorded policy requires immediate freshness; deferred views remain non-applicable instead of becoming false failures. Define result quality as Pair F1 or Retrieval MRR when one is measured, or their arithmetic mean when both are measured, then retain the equal-weight geometric mean across result quality, graph fidelity, and task success.
Verification: focused RED produced graph_fidelity_score=None for a perfect eager lifecycle; GREEN produces Pair F1=1.0, graph fidelity=1.0, task success=1.0, and overall quality=1.0 while the deferred test remains valid. Full benchmark/campaign/report suite: 120 passed; Ruff; scripts/check-source-safety.sh; git diff --check.
Signed-off-by: Andrew Hundt <ATHundt@gmail.com>