Review P2: float() accepts nan/inf, and the fallback guards (ref <= 0.0,
not ref) are both False for nan — so a runtime schedule anchored at nan
kept ref=nan, computed gain=nan, and returned a nan-poisoned mask
instead of falling back. Route every anchor read (runtime and wired)
through _usable_ref(), which requires a finite positive float; soften
gain also hard-returns 0 on non-finite progress, and a non-finite
per-step sigma falls back to the anchor. Adds unit + wiring tests for
nan/inf anchors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>