The Normal controller had no set_model_power(), causing callers to guard with hasattr() instead of relying on a stable interface. Adding a no-op stub to the base class means all controllers have the method; TempControllerSmith overrides it to actually update its internal model. Remove the now-redundant hasattr guards at both call sites. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tqxrk8uj4M3w3d3eXm3xK8