Step lifecycle

Per-step check → apply → re-check, with the status transitions and halt rules.

Each step runs a check → apply → re-check lifecycle. The status values come from the result enums.

1. CheckAlreadyConfigured → report *Already Configured*, continue. RebootRequired → in apply mode report *Reboot Required* and halt the play (exit 3); in check mode it is an ordinary report status (check is report-only). NotConfigured → proceed to apply (check mode just reports *Not Configured*). Error → halt unless --continue-on-error. 2. ApplySuccess → re-check. RebootRequired → report and halt. 3. Re-check — must return AlreadyConfigured, which reports *Configured*; anything else reports *Error* ("apply claimed success but check disagrees").

An Err (or a VM fault) maps to the step's Error status. Logging and output during a step go through the log module.