2.6 KiB
2.6 KiB
1. Currency Identity API and Catalogue
- 1.1 Move
CurrencyTypeinto the AssetAZ value-types package and make equality and hashing UUID-only. - 1.2 Add the annotated immutable
ExternalCurrencyReferenceand read-onlyCurrencyIdentityServiceAPI. - 1.3 Implement the immutable hardcoded catalogue with preserved UUIDs, reverse lookup, Solana mint mappings, and construction-time conflict detection.
2. Production Migration
- 2.1 Migrate every production
CurrencyTypeimport and replace hardcoded ticker pair construction with identities from the current service. - 2.2 Inject the Currency Identity Service into
RaydiumImpland resolve Raydium mint identities and response-ordered trading pairs. - 2.3 Update production construction/configuration sites for the new dependencies and remove
WellKnownCurrencyTypesandWellKnownTradingPairs.
3. Verification
- 3.1 Compile every affected module without running unit tests.
- 3.2 Run strict OpenSpec validation and
git diff --check. - 3.3 Review the complete diff and production tree for incomplete migrations, old imports, parallel currency registries, and unintended test or Nenjim Test Tool changes.
4. Composition-Root Correction
- 4.1 Create the hardcoded Currency Identity Service exactly once in
NenjimHubImpl.startAutoRunProcesses()and pass it into every autorun construction chain that needs it. - 4.2 Replace identity consumers' local hardcoded-service construction with required
CurrencyIdentityServiceconstructor dependencies. - 4.3 Compile main and test source sets, strict-validate OpenSpec, run
git diff --check, and confirm no hardcoded service construction remains outside the NenjimHub composition root.
5. Public API Documentation
- 5.1 Document the public Currency Identity Service, external-reference, and currency value APIs, including identity semantics, nullability, and failure behavior.
- 5.2 Compile main and test source sets and rerun strict OpenSpec validation and
git diff --check.
6. Review Corrections
- 6.1 Require complete canonical currency metadata, add API-owned UUID identifiers, and preserve the Evelyn IOU name and Solana mint mapping.
- 6.2 Make external-reference equality use namespace plus external ID while retaining optional symbols and catalogue conflict detection.
- 6.3 Resolve State pool currencies from actual mint A/B identities and make Raydium symbol extraction optional.
- 6.4 Remove consumer dependencies on
impl.hc, compile without tests, strict-validate OpenSpec, rungit diff --check, and review the complete migration.