CI for csaxs_bec / test (push) Successful in 3m18s
tomo_scan() only reset the progress dict (projection/subtomo/angle/ tomo_start_time/heartbeat/...) inside the "new scan" block, which runs after the eye/optics-in and filter-out-of-beam gates. If either gate declined (e.g. the setup isn't in measurement condition, which disabling rt feedback can trigger) or the tomo_type-4 angle-file check raised, tomo_scan() returned/raised having never touched progress, leaving the GUI/webpage showing projection/angle/start-time from whatever scan last completed -- arbitrarily old, and easy to mistake for a scan still running. Hoists the "is this a new scan" check to the top of tomo_scan() and calls progress.reset() there, before any gate runs; the heavier new-scan actions (sample DB registration, PDF report, collect_empty_frames(), the 0-deg reference shot) stay exactly where they were, after the gates. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NPZ9gzN2rt3wgiMnTKyrug