mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-14 12:15:29 +02:00
The previous fix stopped a throwing hook from aborting the cold replay by recording it as an allow, matching the warm path. But coldSummary only counted disagreements, so a failure on a step the worker also allowed was no disagreement and left no trace: the report showed no failure, a run with no measured step reported a cold latency of 0 ms because percentile of an empty list is 0, and the exit status passed. Trading a crash for a clean-looking success hid exactly the failure the crash had exposed. coldSummary now counts errors and samples, and reports no latency when nothing was measured rather than a 0 that reads as a fast hook. The report prints "no valid sample" in place of a latency and adds a line for steps that failed in a fresh process, beside the existing disagreement line. The exit check moves into gateFails, which fails on cold errors as it already did on warm errors and cold disagreements, and is exported with coldSummary so both can be tested. The render test builds its report from summarize([]), the real summary shape, so it keeps working as metrics are added.