How PokeSynergy tests Battle AI
PokeSynergy tests tactics and team matchups on separate, complementary axes, promotes only after bounded reproducible evidence passes, and sends failures back into the next candidate rather than hiding them.

Scope and inputs
Intended reader: Competitive players and product stakeholders who want to understand what Battle AI tested means without reading benchmark code.
Two complementary evidence axes · bounded reproducible gates · failures loop back.
Follow the stages below. Branches name their destination; a loop returns to the named stage.
Stages and branches
Test 12 Tactical Views
Six fixtures, original plus mirrored.
- Continue: Keep Both Test Axes Separate
Test 12 Source-Pinned Teams
66 pairings, 660 replay-verified battles.
- Continue: Keep Both Test Axes Separate
Keep Both Test Axes Separate
Complementary evidence. No 12×12 run.
- Continue: Tune on Visible Panels
Tune on Visible Panels
- Continue: Run Reproducible Qualification
Run Reproducible Qualification
Lineup and turn tracks stay separate.
- Continue: Reproduce Owner-Found Exploits
Reproduce Owner-Found Exploits
Current gate remains owner-deferred.
- Continue: Test the Live Product Run
Test the Live Product Run
Run evidence, never certification.
- Continue: Keep Promotion Evidence Sealed
Keep Promotion Evidence Sealed
No tuning on holdouts.
- Continue: Is This Version Ready?
Is This Version Ready?
- Pass: Promote With Rollback
- Fail: Fix One Mechanism
Promote With Rollback
Fix One Mechanism
- Iterate: Tune on Visible Panels
Outputs
- Promote With Rollback
- Fix One Mechanism
Limits and uncertainty
- 12 tactical views ≠ 12 teams · Product run ≠ certification · Fixed cohort ≠ ladder odds
What this does not prove
A bounded evaluation is not perfect-play proof or a guarantee of results outside its declared protocol.
Glossary
- orientation
- the same test viewed from the opposite battle side
- regret
- bounded counterfactual gap under a disclosed cutoff, not perfect-play proof
- no mirror
- one unordered A-v-B matchup; its paired battle schedule still flips sides
- holdout
- a separately named, untouched partition reserved for a gated decision
Sources and review
Reviewed for publication . Source observations retain their original dates.
- Tactical fixtures · observed 2026-08-07
- Regret panels · observed 2026-08-07
- League partitions · observed 2026-08-07
- Team corpus · observed 2026-08-29
- Qualification artifact · observed 2026-08-29
- Product limits · observed 2026-08-24
Source references and revision
Source SHA-256: ba00a4c462b8211bba90020618ea3453f215ca1a8ffa76590f894861dc3d85f7
- Tactical fixtures: scripts/calibrateChampionsBattlePolicy.ts
- Regret panels: scripts/benchmarkChampionsDecisionRegret.ts; scripts/benchmarkChampionsLeadRegret.ts
- League partitions: scripts/benchmarkChampionsPolicyLeague.ts
- Team corpus: src/server/battle/championsTeamScoringCorpus.ts
- Qualification artifact: data/bundled/champions/Champions Doubles M-B S3/battle-analysis/team-scoring-qualification-v9.json
- Product limits: shared/battleAnalysisJobs.ts