From 10e5993aa197690a39fd1ff63b41a0a7f58a9849 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Tue, 27 Oct 2026 11:00:58 +0100 Subject: [PATCH] Collect only the latest run per result file The scheduled run and a manual rerun of the same day write the same file. The older run then differs from what main has after the newer one was merged, so every collector pass committed them in turn. Co-Authored-By: Claude Opus 5.5 --- collect-new-results.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/collect-new-results.py b/collect-new-results.py index 9d3f399ad7..467824352e 100755 --- a/collect-new-results.py +++ b/collect-new-results.py @@ -449,6 +449,12 @@ def process_main(system, rows): check=False) == "": note(f"{system}: no such directory in main, skipping {len(rows)} run(s)") return + # Several runs of a day (e.g. the scheduled one and a manual rerun) write + # the same file: only the latest one counts. Otherwise the older run differs + # from what main has after the newer one was merged, and every pass would + # commit them in turn. Rows come ordered by time. + latest = {result_path(r): r for r in rows if r["good"]} + rows = [r for r in rows if not r["good"] or latest[result_path(r)] is r] # A result identical to what main already has was posted and merged before. rows = [r for r in rows if not (r["good"] and file_in_main(result_path(r)) == r["output"])]