Add saved payout destination UX and service contracts #55

Merged
tech merged 2 commits from payout-destinations-54 into main 2026-10-17 04:29:10 +00:00
Owner

Customers can now prepare payouts using explicitly selected saved or one-time crypto, card and Russian bank destinations in the demo interface. Settings supports creation, grouped search, rename, replacement and removal; saving during payout is optional and independent of validation, eligibility and submission.

The shared wallet contracts separate customer destination IDs, canonical asset/network identities, metadata/execution revisions, provider bindings, ownership and contextual eligibility. Creation retries replay stable created/duplicate outcomes. Demo quotes bind immutable snapshots and revalidate at synchronous acceptance; card binding restoration preserves the destination identity. EN/RU forms include bank lookup/paste review, masked cards, full destination review and specific recovery states.

Validation: formatting of all 44 changed Dart files; flutter analyze in app, sxchnge_wallet and sxchnge_analytics; make test-frontend (all suites, including 89 app tests); flutter build web/Wasm dry run. Browser smoke inspection confirmed bank rendering, accessibility labels and keyboard focus. Earlier test/layout failures were fixed. No security scanner runs were requested/performed.

Limitations: this delivers UX and typed supporting contracts with process-local demo persistence. New live destination management requires the documented BFF registry/capability/atomic-acceptance implementation and provider adapters. Authenticated live mode does not use a simulated store and retains explicit use of the already provisioned destination. No routing, ownership-verification infrastructure, provider integration or financial engine is added.

Stacked on #53 (local-stand-52); merge order #47 → #49 → #51 → #53 → this PR. Unrelated notifications runtime edits are excluded. No merge or deployment performed.

Refs #54. Specification, annotated layouts, security/retention contracts and review evidence: docs/ux/payout-destinations.md; delivery record: docs/implementation.md.

Customers can now prepare payouts using explicitly selected saved or one-time crypto, card and Russian bank destinations in the demo interface. Settings supports creation, grouped search, rename, replacement and removal; saving during payout is optional and independent of validation, eligibility and submission. The shared wallet contracts separate customer destination IDs, canonical asset/network identities, metadata/execution revisions, provider bindings, ownership and contextual eligibility. Creation retries replay stable created/duplicate outcomes. Demo quotes bind immutable snapshots and revalidate at synchronous acceptance; card binding restoration preserves the destination identity. EN/RU forms include bank lookup/paste review, masked cards, full destination review and specific recovery states. Validation: formatting of all 44 changed Dart files; flutter analyze in app, sxchnge_wallet and sxchnge_analytics; make test-frontend (all suites, including 89 app tests); flutter build web/Wasm dry run. Browser smoke inspection confirmed bank rendering, accessibility labels and keyboard focus. Earlier test/layout failures were fixed. No security scanner runs were requested/performed. Limitations: this delivers UX and typed supporting contracts with process-local demo persistence. New live destination management requires the documented BFF registry/capability/atomic-acceptance implementation and provider adapters. Authenticated live mode does not use a simulated store and retains explicit use of the already provisioned destination. No routing, ownership-verification infrastructure, provider integration or financial engine is added. Stacked on #53 (local-stand-52); merge order #47 → #49 → #51 → #53 → this PR. Unrelated notifications runtime edits are excluded. No merge or deployment performed. Refs #54. Specification, annotated layouts, security/retention contracts and review evidence: docs/ux/payout-destinations.md; delivery record: docs/implementation.md.
tech added the frontend label 2026-10-16 10:01:47 +00:00
tech changed target branch from local-stand-52 to main 2026-10-17 04:29:09 +00:00
tech added 2 commits 2026-10-17 04:29:09 +00:00
tech merged commit bd675357bb into main 2026-10-17 04:29:10 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#55