Description
Two related resilience/lifecycle gaps:
-
Dead retry code. src/utils/retry.ts implements a generic retry() helper, but it is never called anywhere in src/ — no Soroban RPC call (stellar/rpc.ts's simulateAndAssemble) and no backend fetch (auth/challenge.ts) has any retry, timeout, or handling of transient errors (rate limits, simulation TRY_AGAIN_LATER states). The README's own roadmap lists "Auto-retry logic for RPC endpoints" as unimplemented.
-
Incomplete session/multisig state. auth/session.ts persists the auth token to localStorage only — silently a no-op outside a browser, so Node.js/CLI/backend integrators get no persistence at all — and the token carries no expiry metadata, so nothing re-triggers the challenge flow on a 401. Separately, MultiSigEscrowClient (src/escrow/multisig.ts) keeps in-progress multisig operation state in an in-memory Map, but per the README, signers are expected to "submit their signed XDR independently" — which can't work if the state coordinating them only exists in one process's memory.
Component
SDK
Difficulty
🟣 Spike — investigation required, scope not yet defined
Tasks
Acceptance Criteria
Estimated Time
1-2 days (time-boxed spike)
Description
Two related resilience/lifecycle gaps:
Dead retry code.
src/utils/retry.tsimplements a genericretry()helper, but it is never called anywhere insrc/— no Soroban RPC call (stellar/rpc.ts'ssimulateAndAssemble) and no backend fetch (auth/challenge.ts) has any retry, timeout, or handling of transient errors (rate limits, simulationTRY_AGAIN_LATERstates). The README's own roadmap lists "Auto-retry logic for RPC endpoints" as unimplemented.Incomplete session/multisig state.
auth/session.tspersists the auth token tolocalStorageonly — silently a no-op outside a browser, so Node.js/CLI/backend integrators get no persistence at all — and the token carries no expiry metadata, so nothing re-triggers the challenge flow on a 401. Separately,MultiSigEscrowClient(src/escrow/multisig.ts) keeps in-progress multisig operation state in an in-memoryMap, but per the README, signers are expected to "submit their signed XDR independently" — which can't work if the state coordinating them only exists in one process's memory.Component
SDK
Difficulty
🟣 Spike — investigation required, scope not yet defined
Tasks
retry()should actually apply, respecting idempotency differences betweensimulate(safe to retry) andsubmit(not safely retryable)Acceptance Criteria
Estimated Time
1-2 days (time-boxed spike)