# Shakti Style Classification for AI Director

`@v2/shakti-style-classification` is the V2 adapter between
`@shakti/sota-critical` combat-sport classification and `V2AdaptiveAI` AI
Director matchup tuning.

## Contract

- `@shakti/sota-critical` classifies each player as `boxer`, `kickboxer`,
  `striker`, `grappler`, or `submission-specialist` from observed V2 combat
  telemetry.
- The output includes primary and secondary styles, confidence, range
  preference, pressure tolerance, cancel confidence, and a per-ruleset affinity
  vector for `mk`, `sf`, `tekken`, `wwe`, `ufc`, `sc`, and `dj`.
- `@v2/shakti-style-classification` converts the classifications into AI
  Director matchup hints: preferred opponent styles, matchup pressure, and
  pairwise style distance.
- `V2AdaptiveAI` exposes the contract through
  `FV2AdaptiveAIShaktiStyleClassification`, `FV2AdaptiveAIStyleMatchupHint`, and
  `FV2AdaptiveAIShaktiStyleContract`.

## Rollback Boundary

Style classification is off-rollback. It is published as
`shakti.player.style.updated` after match end or session aggregation, then
bridged to `v2.director.shakti.matchup.updated` for AI Director. Calls from
rollback frames are rejected. If a future rollback-with-CPU mode consumes style
information, it must use a match-start snapshot or next-match update, never a
mid-rollback Shakti RPC.

`V2Services` registers `shakti-sota-critical` on the Shakti domain with
`bMayInfluenceRollback = false`; `V2Netcode` has no Shakti dependency.
