Release digest
Fixed
- FRONT-05 (ABSA Loopback Fragility) — Replaced localhost self-call for
corporate ABSA trigger with in-process execution path in
backend/routers/corporate.py(/api/analytics/analyze/{company_slug}). - FRONT-07 (ReportViewer Risk Label Drift) — Updated
dashboard_app/src/components/ReportViewer.jsxto use backend-aligned risk thresholds and labels:LOW (>=80),MEDIUM (>=60),HIGH (>=40),CRITICAL (<40). - FRONT-08 (Timeline Company Filter Drift) —
/api/timelinenow resolves canonical company identity and applies exact-match filtering (LOWER(company_name) = LOWER(%s)) instead of broad fuzzyILIKEmatching. - PDF-04 (Synthetic Topic Fallback Masking) — Removed hardcoded synthetic
top-topic placeholders in PDF download path when aspect query fails.
X-Topics-Statusresponse header added (ok,empty,unavailable).
Internal
- Added
tests/test_block14_frontend_pdf_consistency.pycovering:- no ABSA localhost loopback contract
- exact timeline filtering contract
- ReportViewer threshold/label parity with backend risk mapping
- no synthetic PDF topics fallback contract
- Full regression: 212 passed, 2 skipped, 22 deselected.
- Added
docs/reports/2026-03-06_BLOCK14_VERIFICATION_REPORT.md. - Synced main/internal/public documentation for Block 14 contracts.