Problem
When a Soroban transaction fails or stalls, the UI gives little feedback and doesn't surface the
contract's typed error. Users don't know whether to retry, wait, or that they're unauthorized.
What needs to be done
Acceptance criteria
Relevant files
src/contexts/, src/lib/ (contract service), src/components/ (milestone-actions, approval panel)
Depends conceptually on #26 (typed errors) for the code→message mapping.
Problem
When a Soroban transaction fails or stalls, the UI gives little feedback and doesn't surface the
contract's typed error. Users don't know whether to retry, wait, or that they're unauthorized.
What needs to be done
SecureFlowErrorcode (seestorage_types.rs/ [Contract] Use the typed SecureFlowError enum everywhere #26) to a human-readable message +suggested action, in one place
via toasts/inline status, with retry on transient RPC failures
Acceptance criteria
Relevant files
src/contexts/,src/lib/(contract service),src/components/(milestone-actions, approval panel)