- New provider_call_log/provider_health tables (additive-only schema),
wired via a fail-open observability.observe()/record_call() helper.
- Tushare pipeline keeps its existing src_calls record unchanged and now
also feeds the unified provider_health/provider_call_log side channel.
- Eastmoney/Tencent realtime_serve.py call sites and the iFinD steward
call site are wrapped with observability.observe() at the call site
only; no adapter internals, routing, fallback order, or return values
are touched.
- New read-only admin API endpoints: /admin/api/providers/status,
/admin/api/source-catalog, /admin/api/lineage,
/admin/api/lineage/affected.
- New static, read-only source_catalog.py and lineage.py registries
documenting existing providers/interfaces/datasets and known
main-site consumers (cited against backend/features/screener and
backend/features/heaven call sites).
- provider_call_log is purged by the existing pipeline.cleanup() job
alongside src_calls/job_runs.
- 47 new unit/integration tests covering classification, fail-open
behavior under DB/log failures, unchanged payloads/exceptions on
success and failure paths, and the new HTTP endpoints. Full suite:
173 tests, all green.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>