A cockpit left open polled docker (ps/inspect × all containers) every 4s,
churning dockerd/containerd indefinitely. Split the one poll by what actually
needs to be live:
- GPU bars refresh EVERY tick (new docker-free CockpitData.gpu_info() +
OperateOrchPane.refresh_gpu_cards) at the 3s base cadence — the only
live-worthy, cheap read. The docker-dependent "held by:" attribution stays
on the slow batch.
- The heavy docker+host batch runs only on a regime-gated tick
(_docker_poll_due): burst (within 90s of a docker-affecting action →
every tick), steady (~20s), idle (no input 90s → ~30s). A 15s startup
burst makes the first poll immediate.
Burst fires only on container-changing ActionPlan kinds (serve/scene/
container/container_rm/estate_down/service-up), not set_default/download/
power_cap. Activity tracked via on_key/on_mouse_down/dispatch_action.
+6 pure unit tests (regimes, burst kinds, gpu_info safety, gpu-card repaint).
Estate/orch/gpu/services subset 97 passed.
Claude-Session: https://claude.ai/code/session_01EfF565T9eSLaqGzidyJ1Pm
Co-authored-by: noonghunna <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>