Results refresher: the server reruns the whole-program check of main (hourly at most, when HEAD moves) and the emulator over the readable set (12-hourly at most, 01:00-06:00, when HEAD moves), so the Logbook's exact and verified tiers stop going stale

- harbor/results_refresh.py, a server thread: one run at a time at idle priority into a .partial file that replaces [reverse] match_results / diffrun_results only when complete (readable.txt beside it from the emulator's printout); the match run holds re_match_program's ltcg-main.lock and waits while another build of main has it
- [logbook] results_refresh, match_every_minutes, behaviour_every_hours, behaviour_window; state in the logbook folder's results.json (per job: commit, start, finish, counts, error; a run in progress), so a restarted server neither repeats a run nor starts one beside a run its predecessor left going, and adopts that run's output
- harbor logbook results shows the schedule; --job match|behaviour asks the server for a run now
- progress view: "Exact and verified as of commit abc1234, 2 hours ago" under the bars, a run in progress and a failed last run
This commit is contained in:
KeelrLeek committed 2026-10-06 16:17:14 -05:00
1 parent d5eb82261e
commit a67462f8ca
6 files changed
+640 -3

No files matched your search

+2
View File
@@ -558,6 +558,8 @@ def main(argv=None):
threading.Thread(target=toast_loop, daemon=True).start()
from . import logbook_auto
threading.Thread(target=logbook_auto.loop, args=(REGISTRY,), daemon=True).start()
from . import results_refresh
threading.Thread(target=results_refresh.loop, args=(REGISTRY,), daemon=True).start()
print(f"Harbor on http://127.0.0.1:{PORT} - projects: {', '.join(REGISTRY.names())}", flush=True)
server.serve_forever()