Problem
Different layers can accept different decimal precision, unsupported currencies, or amounts that later fail settlement.
Objective
Deliver a production-quality improvement to money amounts, currencies, and transfer validation that creates measurable value for correctness, security, reliability, performance, or maintainability.
Implementation scope
- Define canonical currency metadata, minor units, rounding, minimum/maximum values, and validation errors in one policy.
Acceptance criteria
- API validation and settlement use the same canonical amount; unsupported currency and overflow fail before mutation; preview matches execution.
Required validation
- Currency matrix, precision, overflow, boundary, and preview/settlement contract 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
Different layers can accept different decimal precision, unsupported currencies, or amounts that later fail settlement.
Objective
Deliver a production-quality improvement to money amounts, currencies, and transfer validation that creates measurable value for correctness, security, reliability, performance, or maintainability.
Implementation scope
Acceptance criteria
Required validation
PR quality bar
Out of scope