# V2 Maat Balance Dashboard Integration

`@v2/maat-balance-dashboard` replaces the earlier standalone V2 dashboard /
standalone V2 balance dashboard plan. V2 does not own a separate analytics
stack; it composes the existing Maat trio:

- `@maat/intelligence` analyzes release-candidate telemetry for trend signals
  and anomalies.
- `@maat/dashboard` owns the governed dashboard surface manifest and canonical
  event-topic contract.
- `@maat/reporting` emits scorecards and chart-ready KPI payloads for design,
  QA, live-ops, and release review.

## Inputs

The service consumes metric series built from canonical V2 event-bus topics:

- `v2.match.ended`
- `v2.match.combat.move.used`
- `v2.match.combat.damage.applied`
- `v2.match.combat.attack.blocked`
- `v2.match.combat.frame-data.drift`
- `v2.match.balance.ab-result.published`
- `v2.match.balance.ptb-signal.recorded`
- `v2.match.performance.frame-budget-exceeded`

Each release-candidate cook must provide at least one metric series for each
required topic, and each series must contain at least twelve timestamped points.
The service rejects duplicate metric IDs, malformed timestamps, unsupported
topics, incomplete metric coverage, and balance experiments without V2 rollback
runbooks, public result output, and PTB signal wiring before it generates a
dashboard manifest.

## Outputs

`buildV2MaatBalanceDashboardSurface()` returns:

- the `@maat/dashboard` manifest with `replacesStandaloneV2Dashboard: true`;
- `@maat/reporting` group scorecard entries and a normalized operational KPI bar
  chart;
- `@maat/intelligence` trend signals and detected anomalies;
- balance experiment publication metadata with rollback runbooks;
- package/source-of-truth metadata for `@maat/intelligence`, `@maat/dashboard`,
  and `@maat/reporting`.

The Unreal `V2Services` registry exposes the three Maat package adapters as
`maat-intelligence`, `maat-dashboard`, and `maat-reporting`. The stale
`@maat/analytics` adapter is intentionally absent because that package does not
exist in this repo.

## Rollback Boundary

The balance dashboard is off rollback. It may inform release-candidate signoff,
patch readiness, and human balance review, but no deterministic combat or
rollback simulation path may read from it. The V2 service returns
`offRollback: true` and `mayInfluenceRollback: false`, and the Unreal adapter
test asserts that the dashboard adapters stay off rollback authority.
