id: PORT-003 title: Historical LTV Chart status: done priority: P2 effort: M depends_on: - PORT-001 tags: - portfolio - history - charts summary: Workspace-scoped LTV snapshots are now recorded over time and rendered on the overview page with CSV export. completed_notes: - Added structured workspace-scoped LTV snapshot persistence in `app/models/ltv_history.py`. - Added chart-range and CSV export support in `app/services/ltv_history.py`. - Updated `app/pages/overview.py` to record snapshots, display 7/30/90 day LTV charts with the margin threshold line, and expose `Export CSV`. - Added focused regression coverage in `tests/test_ltv_history.py` for persistence, same-day replacement, range filtering, and CSV export. - Added a Playwright regression test in `tests/test_overview_ltv_history_playwright.py` covering the exact changed route, live rendered chart series on the overview page, and CSV download path on `/{workspace_id}`. - Manual local Docker validation confirmed the stack starts cleanly, `/health` returns OK, and the Docker-served overview route renders the LTV history UI without visible runtime errors.