# Stage 06: Unified Data Gateway

Date: 2026-07-29

## Result

- Added canonical provider and dataset contracts under `backend/data`.
- Added `DataSourcePolicy`, loaded from the Stage 04 data registry.
- Added provider adapters for Tushare and iFinD.
- Added one `DataGateway` that owns Tushare creation, the shared iFinD client, chart routing,
  and isolated Eastmoney/Tencent realtime observation.
- Replaced all real `DashboardService` Tushare construction paths with the gateway.
- Kept one compatibility constructor for unit tests that instantiate an incomplete service with
  `__new__`; production instances never use it.
- The Tushare token is supplied lazily, so administrator credential changes do not leave a
  stale client in memory.

## Enforcement Introduced

- Unregistered datasets fail.
- Blocked datasets fail.
- Public-web providers cannot be promoted to calculation inputs through a fallback call.
- Display chart fallbacks remain distinct from deterministic calculation datasets.

## Deferred to Stage 07

Stage 06 centralizes provider access but does not yet attach freshness, coverage, unit, and
point-in-time quality evidence to every returned observation. Stage 07 introduces those gates
without changing provider routing again.
