Add saved payout destination UX and service contracts #54

Open
opened 2026-10-16 09:27:19 +00:00 by tech · 1 comment
Owner

Goal

Deliver the approved saved payout destination UX and reusable typed service contracts for crypto addresses, bank cards and Russian personal accounts.

Approach

Implement Settings management and explicit saved/new/one-time payout preparation in Flutter. Separate canonical identity, metadata/execution revisions, ownership, provider bindings, contextual eligibility and saving outcomes. Provide an isolated customer-scoped demo service and immutable demo quote acceptance checks. Preserve the existing live provisioned payout path with explicit selection; fail closed for new destination types when live capabilities are unavailable.

Acceptance criteria

  • Settings save/rename/replace/remove, grouped search and recent ordering work without default destination selection.
  • One-time destinations never implicitly save; optional save failure/unknown outcomes and duplicate reuse have distinct recovery.
  • Creation outcomes replay created/duplicate deterministically; customer scopes and concurrency are tested.
  • Metadata edits preserve execution quotes; removal/binding changes invalidate execution. Accepted history retains snapshots.
  • Canonical asset/network/token identity, bank lookup/paste and card authorization recovery remain service-driven.
  • EN/RU, narrow layouts, full review details and privacy-safe semantic outcomes are validated.
  • Required frontend review/validation passes and scope/limitations/PR links are recorded.

Notes

Primary module payout-destinations; secondary modules shared wallet, analytics and consumer app. This implements UX and supporting contracts with process-local demo persistence, not a production registry, provider integration, ownership infrastructure, routing or execution engine. New live capabilities require BFF implementation; no fake persistence is used for authenticated live wallets. Base branch local-stand-52 depends on PRs #47 → #49 → #51 → #53. Preserve the unrelated notifications runtime change. No live payment, deployment or merge is authorized. Branch payout-destinations-54; project SXCHNGE (16); assignee tech. UX/contract and integration limitations: docs/ux/payout-destinations.md.

Delivery: #55. Implementation 24af794; delivery record bd67535. Required frontend checks passed; production registry/provider/acceptance implementation remains outside this UX/contracts delivery.

### Goal Deliver the approved saved payout destination UX and reusable typed service contracts for crypto addresses, bank cards and Russian personal accounts. ### Approach Implement Settings management and explicit saved/new/one-time payout preparation in Flutter. Separate canonical identity, metadata/execution revisions, ownership, provider bindings, contextual eligibility and saving outcomes. Provide an isolated customer-scoped demo service and immutable demo quote acceptance checks. Preserve the existing live provisioned payout path with explicit selection; fail closed for new destination types when live capabilities are unavailable. ### Acceptance criteria - [x] Settings save/rename/replace/remove, grouped search and recent ordering work without default destination selection. - [x] One-time destinations never implicitly save; optional save failure/unknown outcomes and duplicate reuse have distinct recovery. - [x] Creation outcomes replay created/duplicate deterministically; customer scopes and concurrency are tested. - [x] Metadata edits preserve execution quotes; removal/binding changes invalidate execution. Accepted history retains snapshots. - [x] Canonical asset/network/token identity, bank lookup/paste and card authorization recovery remain service-driven. - [x] EN/RU, narrow layouts, full review details and privacy-safe semantic outcomes are validated. - [x] Required frontend review/validation passes and scope/limitations/PR links are recorded. ### Notes Primary module payout-destinations; secondary modules shared wallet, analytics and consumer app. This implements UX and supporting contracts with process-local demo persistence, not a production registry, provider integration, ownership infrastructure, routing or execution engine. New live capabilities require BFF implementation; no fake persistence is used for authenticated live wallets. Base branch local-stand-52 depends on PRs #47 → #49 → #51 → #53. Preserve the unrelated notifications runtime change. No live payment, deployment or merge is authorized. Branch payout-destinations-54; project SXCHNGE (16); assignee tech. UX/contract and integration limitations: docs/ux/payout-destinations.md. Delivery: https://git.sendico.io/tech/sxchnge/pulls/55. Implementation 24af794; delivery record bd67535. Required frontend checks passed; production registry/provider/acceptance implementation remains outside this UX/contracts delivery.
tech added the backendfrontend labels 2026-10-16 09:27:19 +00:00
tech self-assigned this 2026-10-16 09:27:19 +00:00
tech added reference payout-destinations-54 2026-10-16 09:27:30 +00:00
tech added this to the SXCHNGE project 2026-10-16 09:27:45 +00:00
tech changed title from Save and reuse customer payout destinations to Add saved payout destination UX and service contracts 2026-10-16 09:59:36 +00:00
tech removed the backend label 2026-10-16 10:00:40 +00:00
Author
Owner

Delivered in PR #55: #55 (base local-stand-52). Implementation commit 24af794; delivery documentation follows on the same branch.

Implemented Settings save/details/rename/replacement/removal; explicit saved/new/one-time payout preparation; independent optional saving and recovery; canonical crypto identity; reviewed bank lookup/paste; separate metadata/execution revisions; stable created/duplicate outcomes; customer-scoped isolation; masked-card binding restoration and immutable demo quote/history snapshots. EN/RU and 320px/1.6× layouts covered.

Validation passed: formatting all 44 changed Dart files, flutter analyze in app/wallet/analytics, make test-frontend (all seven suites, 89 app tests), flutter build web and Wasm dry run. Browser smoke inspection verified bank form rendering, accessibility labels and keyboard focus. Earlier test/layout findings were fixed. An exploratory repository-root analysis reported unrelated standalone website Dart-context errors; required affected-package analyses are clean. No security scanner runs requested/performed.

Scope boundary: new destination persistence/captures/bindings are simulated and reset on reload. New live functionality requires the documented BFF registry, capability/directory/provider adapters and atomic acceptance contract. Existing provisioned live payout remains supported with explicit selection. No real financial operation, provider/routing implementation, deployment or merge performed. Full specification and review evidence: docs/ux/payout-destinations.md.

Stack merge order: #47 → #49 → #51 → #53 → #55. Unrelated infra/local/notifications/runtime.yml edit remains outside task commits.

Delivered in PR #55: https://git.sendico.io/tech/sxchnge/pulls/55 (base local-stand-52). Implementation commit 24af794; delivery documentation follows on the same branch. Implemented Settings save/details/rename/replacement/removal; explicit saved/new/one-time payout preparation; independent optional saving and recovery; canonical crypto identity; reviewed bank lookup/paste; separate metadata/execution revisions; stable created/duplicate outcomes; customer-scoped isolation; masked-card binding restoration and immutable demo quote/history snapshots. EN/RU and 320px/1.6× layouts covered. Validation passed: formatting all 44 changed Dart files, flutter analyze in app/wallet/analytics, make test-frontend (all seven suites, 89 app tests), flutter build web and Wasm dry run. Browser smoke inspection verified bank form rendering, accessibility labels and keyboard focus. Earlier test/layout findings were fixed. An exploratory repository-root analysis reported unrelated standalone website Dart-context errors; required affected-package analyses are clean. No security scanner runs requested/performed. Scope boundary: new destination persistence/captures/bindings are simulated and reset on reload. New live functionality requires the documented BFF registry, capability/directory/provider adapters and atomic acceptance contract. Existing provisioned live payout remains supported with explicit selection. No real financial operation, provider/routing implementation, deployment or merge performed. Full specification and review evidence: docs/ux/payout-destinations.md. Stack merge order: #47 → #49 → #51 → #53 → #55. Unrelated infra/local/notifications/runtime.yml edit remains outside task commits.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#54