Goal: Engine wired into FastAPI with Arq. Real persistence. SSE progress. Tasks: S5-T01 Replace dummy worker with real engine call. run_scenario task. S5-T02 Progress reporting from engine via callback. Worker publishes to Redis pub/sub. S5-T03 Persist ScenarioResult to SQLite (KPIs as JSON column). S5-T04 Persist timeseries to Parquet at data/scenarios/{id}/timeseries.parquet. S5-T05 Endpoint: GET /api/scenarios/{id}/timeseries?cols=...&from=...&to=... streams parquet (use pyarrow + Polars for filtered reads). S5-T06 Endpoint: GET /api/scenarios/{id}/statements returns P&L/CFS/BS as JSON (yearly rows). S5-T07 Endpoint: GET /api/templates for default CostItem catalog. POST /api/templates to save custom. S5-T08 Endpoint: GET /api/dashboard/config and PUT for KPI config. S5-T09 Update OpenAPI export → TS types regenerate. S5-T10 Tests: API integration tests with TestClient. Worker tests with fake Redis. S5-T11 Documentation.