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 (a currency outside the adapter's supportedCurrencies or on its unsupportedCurrencies, 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.