Read-only breaker snapshot for dashboards/health endpoints, keyed by
pspName. Only PSPs with recorded consecutive failures appear. open means
"currently skipped"; openUntil (present once the circuit has opened) is
when the current cooldown ends — in the past, the circuit is half-open and
the next request probes the PSP.
The ordered candidate chain the rules produce for this input — exposed for tests/dry runs.
Creates the session on the first candidate able to serve it, cascading on transient failures. Capability mismatches (manual capture, zero-amount verification, unsupported method types) skip the candidate up front — no PSP round-trip is spent on a call that cannot succeed.