Resolves the backend and runs the matching branch.
legacy (explicit or auto with no SCAPI config): runs the legacy branch.
scapi (explicit): runs the SCAPI branch with no fallback — every error surfaces, including 409 Conflict.
auto with a SCAPI connection: runs SCAPI optimistically; on a safe rejection (a definite pre-execution client error or invalid_scope) it warns and retries on legacy — but only when a legacy target exists (RunMrtWithFallbackOptions.canFallbackToLegacy). With no legacy credentials, the original SCAPI error is rethrown so the user sees the real failure rather than a "provide an API key" message. Ambiguous failures (429, 5xx, network) and 409 Conflict never fall back — a mutating deploy must not cross backends after the request may have reached SCAPI.