id: CORE-001D title: External Boundary and Persistence Cleanup for Decimal Unit Types status: backlog priority: P2 effort: M depends_on: - CORE-001B - CORE-001C tags: [core, decimal, persistence] summary: Complete the remaining Decimal/unit-safe boundary cleanup after the shipped persistence seam. acceptance_criteria: - Provider and cache adapter boundaries are explicit, documented, and tested. - Decimal-bearing JSON/API serialization expectations are documented for remaining external seams. - Float-heavy service entrypoints are narrowed or wrapped in named normalization adapters. - Remaining raw-float domain hotspots are identified or removed. technical_notes: - `CORE-001D1` is complete: portfolio/workspace persistence now uses an explicit unit-aware schema with strict validation and atomic saves. - `CORE-001D2A` is complete: DataService quote/provider cache normalization is now a named boundary adapter with explicit symbol mismatch rejection and GLD quote-unit repair. - `CORE-001D2B` is complete: option expirations and options-chain payloads now use explicit normalization boundaries with malformed cached payload discard/retry behavior. - Remaining focus is the rest of `CORE-001D2` provider/cache normalization plus `CORE-001D3` service entrypoint tightening. - Pre-launch policy: unit-aware schema changes may be breaking until persistence is considered live; old flat payloads may fail loudly instead of being migrated. - See `docs/CORE-001D_BOUNDARY_CLEANUP_PLAN.md` for the current hotspot inventory and proposed sub-slices.