fix: front-driven thermal pause indicator no longer erased by engine poll
On a global CPU cooldown the thermal supervisor already pauses ALL engines
(want_pause = gpu_hot or cpu_hot, applied per-engine), and the logs confirm
every engine gets a pause. But the Tasks page often showed only ONE engine
as cooling while the others looked like they were still running.
Cause: two threads write engine.cooling. The thermal loop sets it when it
pauses an engine; the health poll loop overwrites it every tick with the
engine's OWN self-reported cooldown (cooling=d.get("cooling")). An engine
only self-reports cooling while sitting in its own wait_until_safe loop (it
has an in-flight request). An engine the front paused while IDLE reports
cooling=None, so the poll loop cleared the front's pause indicator — the UI
then showed that engine as running mid-cooldown.
Fix: while the front holds an engine paused (engine.therm_paused), pass the
update_state sentinel (cooling=False, "don't touch") instead of the engine's
self-report, so the front's indicator survives. Once the front resumes the
engine, the engine's self-report flows through again as before.
Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoSpEthysqmseCc6Geizty
Showing
Please
register
or
sign in
to comment