Requirement for Release 2.
The problem
PaymentTopUpSource assumes the product already holds the money. A user who hits
InsufficientBalance has reached a dead end: nothing in the protocol moves value from
the outside world into their CASH balance, so the product can only report the failure
and stop. In the other direction there is no path at all — value cannot leave.
There is also no declared contract for who can move that value, so every provider
integration lands as bespoke host code rather than as a product declaring what it
serves.
What has to be true for Release 2
Moving value
Providers
Everywhere
Delivery is staged
The requirement is the whole surface — both directions and the provider system. It is
delivered in stages, and the stages live in the feature issues, not here. A stage
landing narrower than this requirement is expected; the requirement is not amended to
match it.
Requirement for Release 2.
The problem
PaymentTopUpSourceassumes the product already holds the money. A user who hitsInsufficientBalancehas reached a dead end: nothing in the protocol moves value fromthe outside world into their CASH balance, so the product can only report the failure
and stop. In the other direction there is no path at all — value cannot leave.
There is also no declared contract for who can move that value, so every provider
integration lands as bespoke host code rather than as a product declaring what it
serves.
What has to be true for Release 2
Moving value
Providers
intents addressed to it
provider code runs
code
Everywhere
Delivery is staged
The requirement is the whole surface — both directions and the provider system. It is
delivered in stages, and the stages live in the feature issues, not here. A stage
landing narrower than this requirement is expected; the requirement is not amended to
match it.