Static capability screening for a session input — the single source of
truth consumed by BOTH PaymentService (which throws) and PaymentRouter
(which skips the candidate). These rules used to live in two hand-mirrored
copies that drifted, producing different answers for the same input.
Returns the human-readable reason the capabilities cannot serve the input,
or undefined when they can.
Deliberately capability-only: input validation that no PSP could fix (a
savePaymentMethod session missing customer) stays in PaymentService —
skipping to another candidate cannot repair the input.
Static capability screening for a session input — the single source of truth consumed by BOTH PaymentService (which throws) and PaymentRouter (which skips the candidate). These rules used to live in two hand-mirrored copies that drifted, producing different answers for the same input. Returns the human-readable reason the capabilities cannot serve the input, or undefined when they can.
Deliberately capability-only: input validation that no PSP could fix (a savePaymentMethod session missing
customer) stays in PaymentService — skipping to another candidate cannot repair the input.