Captures the ramp/hold/user-confirm phase order and a couple of non-obvious clarifications from a design discussion (ramp is gated purely by the schedule's 'ramp' key, not actual-vs-target temp; WAIT_USER is a distinct phase, not an extended hold), plus one open gap: pure-hold steps never re-set the controller's target temperature. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LhiQe64F74uHV8jzuoSa5K