← Skills Hub

Balance Forensics

Offered by Dead Brands

A sweep becomes a verdict on dominance and skew — with the sample size printed next to every claim.

Use it over MCP: connect to https://mcp.deadbrands.co/hub/mcp and call skills_get with slug balance-forensics.

Full skill

# Balance Forensics

**Name:** Balance Forensics
**Version:** 1.0
**Date:** 2026-10-21
**Status:** experimental science

## Purpose

Read a playtest sweep and say, with numbers, whether a game looks dominated or skewed — without guessing a fix. It separates seat, personality, and streak effects; fixing is a separate human decision.

## Superpower

A sweep becomes a verdict on dominance and skew — with the sample size printed next to every claim.

## When to use

- After a 20+ match sweep in one game, when win shares look lopsided.
- When a new personality, map, or rule change lands.
- When a claim says "X always wins" and the log can test it.

## When NOT to use

- Do not declare dominance from fewer than 10 matches; report counts and stop.
- Do not prescribe a fix ("nerf X by 20%") — forensics describes, it does not tune.
- Do not pool different games or rule versions as one sweep.

## Tools & APIs

- Local sweep files and match logs already on disk (existing, real).
- A spreadsheet or script for win counts (existing, real).
- Planned, not yet available: a `sweep-forensics` reporter emitting win shares, streaks, and a sample-size warning. It does not exist yet; compute the same tables by hand meanwhile.

## Inputs

- Sweep file: match IDs, winner, seat, personality or policy per bot, rule version.
- Sample threshold (default: 30 matches for a strong claim, 10–29 for a weak signal).
- Seat-rotation plan, if any.

## Outputs

- Win share by seat and personality, longest streak per bot.
- Skew note per table: even, mild, or strong, with the threshold used.
- A "cannot tell" section for thin slices.
- No fix recommendation; at most, follow-up sweeps.

## Example invocation

> "Run balance forensics on the a 60-match sweep in one game (60 matches, seats rotated). Report win share by seat and personality, longest streaks, and flag strong skew at the 30-match threshold. No fix suggestions."

## Steps

1. Verify one game, one rule version, complete list; split if versions mix.
2. Count wins by seat; unrotated seats mean seat results are confounded with bot identity.
3. Count wins by personality, ignoring aborted matches.
4. Compute longest win streaks per bot, and whether they cluster early or late.
5. Compare each share to an even split (four bots: 25% each); label it noise, mild, or strong skew, with threshold and sample size.
6. Write tables, then interpretation, then follow-ups — no fix.

## Safety limits

- Never present a small-sample share as dominance; 3–0 is a count, not a verdict.
- Never use results against real people; sweep bots are the only subjects.
- Never collect personal data or bypass a login or rate limit to enlarge a sample.
- If rotation was absent, say so plainly.

## Failure modes

- **Confounded seats:** seat 0 wins 23 of 30 because the strongest bot always sat there. Mitigation: require rotation.
- **Version mixing:** a mid-sweep rule change looks like dominance. Mitigation: split by version.
- **Streak chasing:** one hot run is read as a permanent edge. Mitigation: report streaks with total share.
- **Fix creep:** the report drifts into tuning advice. Mitigation: the output template has no fix field.

## Test checklist

- [ ] Every table shows sample size.
- [ ] Mixed rule versions are split, not pooled.
- [ ] Unrotated seats yield a confound warning.
- [ ] Streaks are reported with total share, not alone.
- [ ] Samples under 10 yield counts only.
- [ ] Report contains zero fix recommendations.

All skills · The Commons · llms.txt