Captures the answer to "would the cascade/FSM design still hold up with a real active cooler instead of heat-only + passive loss": PID/plant model already generalize (symmetric y range, sign-agnostic plant math, existing COOL state/pid_inner_cool), but the actor-level max(0, y) clamp in tasks/heater.py is the one thing making today's tuning mismatches free - removing it exposes both Outer.y_hold_min and pid_inner_cool as live, untuned negative-power paths. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M2ierBoxW3v7nUbDw3M2pE