id: CORE-001D3C title: Historical Scenario Service Input Normalization status: done priority: P2 effort: S depends_on: - CORE-001C - CORE-001D3A tags: - core - decimal - backtesting - event-comparison summary: Backtest and event-comparison service entrypoints now normalize historical scenario inputs through a shared named adapter. completed_notes: - Added `normalize_historical_scenario_inputs(...)` in `app/services/backtesting/input_normalization.py`. - `BacktestPageService`, `EventComparisonService`, and `EventComparisonPageService` now normalize units/loan/LTV inputs through the shared adapter instead of ad-hoc float checks. - The shared adapter now accepts Decimal and numeric-string boundary values while still failing closed on invalid or non-finite inputs. - Added focused regression coverage in `tests/test_backtest_ui.py` and `tests/test_event_comparison_ui.py`. - Validated with focused pytest coverage, browser-driven checks on local Docker, and `make build`.