Problem
Provider timeouts and refreshes can cause duplicate stream creation, top-up, or withdrawal attempts.
Objective
Deliver a production-quality improvement to stream mutation hooks and transaction status that creates measurable value for correctness, security, reliability, performance, or maintainability.
Implementation scope
- Model lifecycle states with durable correlation; disable unsafe duplicate actions; distinguish unknown provider outcome from failed transaction.
Acceptance criteria
- Refresh preserves status; retries follow idempotency rules; terminal results reconcile with backend/contract state.
Required validation
- State-machine, timeout, refresh, duplicate-click, and provider-recovery tests.
- Existing tests and CI remain passing.
- Add regression coverage for the original failure mode.
- Do not weaken, delete, or skip unrelated tests to obtain a green build.
PR quality bar
- Keep the PR focused and explain design tradeoffs, compatibility impact, and test evidence.
- Avoid typo-only, documentation-only, cosmetic-only, or unrelated refactor submissions.
Out of scope
- Broad rewrites not required by the acceptance criteria.
- Changes to unrelated services, contracts, or user flows.
Problem
Provider timeouts and refreshes can cause duplicate stream creation, top-up, or withdrawal attempts.
Objective
Deliver a production-quality improvement to stream mutation hooks and transaction status that creates measurable value for correctness, security, reliability, performance, or maintainability.
Implementation scope
Acceptance criteria
Required validation
PR quality bar
Out of scope