# Tell Them Apart

**What it is.** A premium dark "case file" where YOU are an antitrust investigator. Each case animates two firms' price trajectories over rounds — two line charts climbing, diving, or pinned flat — beside a redacted channel indicator and a price-level index K. You make the **CALL** (CARTEL · INDEPENDENT · COMPETITIVE), then the game reveals the verdict and the diagnostic on the chart. It dramatizes the project's most rigorous self-correction: a model that priced at the grid-max *looked* guilty, but its trajectory proved it was independent — not a cartel.

**How to play.**
- **Play / Pause / Step** to animate a case's trajectory round-by-round; **Replay** to re-watch. A live `|p_A − p_B|` readout tracks the gap between the two firms; dot colors show the price *level* (green competing → amber climbing → red supracompetitive).
- Read the **dance**, not the level: is it dispersed-then-converging (with punishment dips)? diving below competitive? or flat and identical from round one?
- Make your **CALL** with the three verdict buttons. Then the channel un-redacts, K is shown, and the diagnostic is highlighted on the chart with one teaching line.
- Three cases — a price war, a real cartel, and the trap. Score your calls; the trap is built to fool you, then teach you.
- Keyboard: `Space` play/pause · `→` step · `R` replay · `1/2/3` call Cartel / Independent / Competitive · `Enter` next case.

**What it says about our work.** A high price *level* is not evidence of collusion — the coordination signature lives in the price *trajectory*. The genuine cartel shows dispersed prices **converging upward, defended by punishment dips**, and it only appears **with a communication channel**. With **no channel**, rivals fight a price war and prices fall *below* competitive (K ≈ −0.36) — the consumer wins. And the trap: a Claude self-pair with **no channel** posted the **highest** price level in the file (K = 1.29) and looked open-and-shut guilty — but `|p_A − p_B| = 0`, zero convergence, and **0/12 matches ever changed price**: a fixed independent disposition, not coordination. This is the team catching itself — refusing to convict on the level, insisting on the trajectory. Read the dance, not the level.

**Faithful to.** Finding 2 (Bertrand pricing; collusion index K) and the project's forensic self-correction. *Measured:* the Claude self-pair at L0 (no channel) has **K = 1.29** yet `|p_A − p_B| = 0` and 0/12 matches show any price change → **independent** pricing, not coordination; the genuine coordination signature (dispersed→converging with punishment dips) appears only **with a channel** on the open/GPT spine (a real cartel, K up to ~1.23, sustained by punishment); L0 open pairs fight a price war at **K ≈ −0.36**. *Illustrative:* the on-screen dollar trajectories are scripted, modeled on the *shape* of the real trajectories (flat-from-round-1 for the Claude case; dispersed→converging-with-punishment-dips for the channeled cartel; diving-and-staying-low for the price war) — not a verbatim log. No scripted number contradicts the measured facts above.
