fn lifecycle_from(status: &BlockControllerRuntimeStatus) -> LifecycleExpand description
Pure reducer over one block’s raw controller status: decides
Lifecycle via explicit per-case rules, not a bare field copy. Isolated
from I/O so the transition rules are unit-testable without a real
controller instance — mirrors reducer/lifecycle.rs::handle_register’s
shape (compute the legal next state from the current observation,
rather than trusting the caller’s intent unconditionally).