id: CORE-001D2A title: Provider and Cache Quote Normalization Boundary status: done priority: P1 effort: S depends_on: - CORE-001D1 - CORE-002A tags: - core - decimal - cache - provider summary: DataService quote payload normalization is now an explicit provider/cache boundary with tested repair and rejection rules. completed_notes: - Added a named quote normalization adapter in `app/services/data_service.py` for cache/provider payloads. - GLD quotes repair missing or empty `quote_unit` metadata to preserve CORE-002 behavior. - Explicit symbol mismatches are now rejected instead of being silently rewritten. - Mismatched cached quotes are discarded and refreshed from the provider path. - Added focused boundary tests in `tests/test_data_service_normalization.py`. - Validated with focused pytest coverage and `make build` on `main`.