feat(CORE-001D): close remaining boundary cleanup slices

This commit is contained in:
Bu5hm4nn
2026-03-26 17:27:44 +01:00
parent 99d22302ee
commit 94f3c1ef83
16 changed files with 552 additions and 107 deletions

View File

@@ -0,0 +1,23 @@
id: CORE-001D
title: External Boundary and Persistence Cleanup for Decimal Unit Types
status: done
priority: P2
effort: M
depends_on:
- CORE-001B
- CORE-001C
tags:
- core
- decimal
- persistence
summary: The remaining Decimal/unit-safe boundary cleanup slices have been completed across persistence, provider/cache adapters, alerts/settings, historical-provider boundaries, and historical scenario service entrypoints.
completed_notes:
- `CORE-001D1` made the portfolio/workspace persistence seam explicit with strict unit-aware schema validation and atomic saves.
- `CORE-001D2A` and `CORE-001D2B` normalized quote, option-expiration, and options-chain provider/cache boundaries in `DataService`.
- `CORE-001D2C` normalized `PriceFeed` cache/provider payloads through explicit adapters aligned with `CacheService`.
- `CORE-001D2D` normalized historical provider rows and synthetic option quote construction in `app/services/backtesting/historical_provider.py`.
- `CORE-001D3A` tightened alerts and settings save-status service entrypoints with named normalization adapters.
- `CORE-001D3B` turned corrupt alert-history storage into an explicit degraded state with logging and route-visible notices.
- `CORE-001D3C` normalized historical scenario inputs for backtests and event comparison through a shared adapter.
- Remaining raw-float dataclasses such as `LombardPortfolio`, `PriceData`, and MVP backtest result models are now treated as intentional edge-facing compatibility surfaces rather than undocumented internal seams.
- Validated through focused pytest coverage, browser-driven local Docker checks on the affected routes, and repeated `make build` runs across the shipped slices.