From the Lab:Slow down so the world can catch up.
Tech Lab Report002.1

Public research / ArcadeBench companion

Connect 4, measured: Astra 2 – Fable 0

GPT-6 Astra vs Claude Fable 5.1 · best-of-3 Connect Four on BarKade · first step toward ArcadeBench Connect 4

Status
Active
Version
1.0
Published
Sep 17, 2026
Edited
Sep 17, 2026
Reading time
10 min

Connect 4, measured: Astra 2 – Fable 0

This companion to ArcadeBench report 002 documents an invite-only, untimed Connect Four best-of-3 played on BarKade on September 8, 2026. It is the first concrete step toward defining ArcadeBench for Connect 4, not a full leaderboard claim.

Executive snap

GPT-6 Astra swept Claude Fable 5.1 2–0. Colors were swapped across the two completed games, and no third game was needed. Both wins ended on a diagonal four finished in column 1. Tactical reconstruction from the public move logs shows Fable missing a forced block in both games; Astra also missed an immediate win for one ply in game 2 before converting on the next turn. Reliability was imperfect on both sides (ai_move_failed / budget timeouts). Energy (Joules) and token usage were visible per seat; no engine eval, blunder panel, or reasoning transcript appeared on the match UI or in aiReasoningByIdempotencyKey.

Method (what we could observe)

SourceUsed for
Match UI (board, game log, token-usage details, series score)Series 2–0, Elo/MMR labels, seat colors, Joules labels, failed-attempt timestamps, final boards, win captions
Public API GET /api/v1/matches/{id}Seats, MMR, move_applied columns, ai_move_started / ai_move_failed, terminal reason, sessionScore, durations
Offline Connect 4 reconstructionImmediate-win / must-block checks on the published column sequences (not a full solver Elo)

Not observed (do not infer): per-move engine centipawn/eval, perfect-play grade, hidden chain-of-thought, third-game stats, or blunder auto-tags from BarKade.

Series result

GPT-6 Astra (openai/gpt-6-astra)Claude Fable 5.1 (anthropic/claude-fable-5.1)
Series points20
UI Elo / API MMR1234 / 1233.911170 / 1170.13
Reasoning flagenabled · depth lowenabled · depth low
Time controluntimeduntimed

Best-of-3 stopped at 2–0 (no game 3).

Game-by-game

Game 1 — f868ff83-… · Astra wins

Game 1 summary showing GPT-6 Astra leading the best-of-3 series one game to zero

Game 1 summary: Astra won as Red to take a 1–0 series lead.

  • Colors: Astra Red (P1) · Fable Yellow (P2)
  • Length: 27 successful moves · wall-clock ~56 min (18:32–19:28 UTC)
  • Terminal: four_in_row · winning move #27, column 1 (Astra) · UI: “Column 1 completes a winning diagonal of four red tokens.”
  • Seat energy (UI): Astra 1.13 MJ · Fable 1.87 MJ
  • Final-move usage (UI): 43.42 kJ · 770 tokens (661 in / 109 out)

Reliability (API events):

  • ai_move_failed: 7 total (Astra-associated budget/conflict failures more frequent in this game; Fable also timed out).
  • Dominant fail string: “AI move attempt exceeded its budget without resolving”; also “Move conflict: match state changed” on Astra starts.

Game 1 board, event log, and token details showing the final diagonal win and move usage

Game 1 board receipt: final position, event log, and final-move token details.

Decision quality (reconstruction):

  • Through midgame both contest the center (repeated column 3 / 2 / 4).
  • Move 26 (Fable): blunder — sole forced block was column 1; played column 5 instead.
  • Move 27 (Astra): converts the win in column 1.

Game 2 — 1ca196e2-… · Astra wins (series clinch)

Game 2 summary showing GPT-6 Astra completing a two-game sweep

Game 2 summary: Astra won as Yellow to clinch the series 2–0.

  • Colors swapped: Fable Red (P1) · Astra Yellow (P2)
  • Length: 26 successful moves · wall-clock ~34 min (19:40–20:14 UTC)
  • Terminal: four_in_row · winning move #26, column 1 (Astra) · UI: “Column 1 completes a winning diagonal of four yellow tokens.”
  • Seat energy (UI): Fable 1.4 MJ · Astra 798.59 kJ (~0.80 MJ)
  • Final-move usage (UI): 40.28 kJ · 743 tokens (649 in / 94 out)

Reliability (API events):

  • ai_move_failed: 3 total (2 Fable, 1 Astra) — cleaner than game 1.
  • Same primary error: budget exceeded without resolving.

Game 2 final board and event log showing Astra's winning move in column 1

Game 2 board receipt: Astra’s column-1 move completed the winning yellow diagonal.

Game 2 final board, event log, and token details for Astra's series-clinching move

Game 2 final-move receipt: 40.28 kJ and 743 tokens.

Decision quality (reconstruction):

  • Move 24 (Astra): missed immediate win in column 1; played column 4.
  • Move 25 (Fable): blunder — failed to block the sole threat on column 1; played column 5.
  • Move 26 (Astra): finishes the diagonal win on column 1.

Cross-game performance read

Consistency / strength of schedule

  • Astra won as Red and as Yellow — series result is not a first-player artifact.
  • Both deciding errors by Fable were the same pattern: leave column-1 diagonal mate open. That is a repeatable defensive failure, not a one-off random loss.
  • Astra’s game-2 miss-then-convert shows offense is strong but not flawless under reasoning=low.

Tempo

  • Wins at move 26–27 (of a 42-ply theoretical max) imply mid-length games, not an instant tactical crush or endgame grind.
  • Wall-clock is dominated by model latency and retries, not move count (average successful response ~8–10 seconds when complete; failures inflate calendar time).

Reliability as an ArcadeBench axis

Failed attempts are first-class signals for Connect 4 benchmarking:

GameAstra fail events (approx.)Fable fail events (approx.)
1higher (budget + conflicts)present
2lowerpresent

A Connect 4 ArcadeBench slice should report win rate and fail/retry rate — a win after five abandoned thoughts is a different product story than a clean win.

Cost / receipt (Joules)

Observable seat energy favored Astra lower total spend in both games (UI seat totals), while Fable spent more MJ for zero series points. That is a natural receipt-layer footnote: intelligence that burns more Joules without converting boards is disposable spend. Caveat: summed totalMicrojoules on ai_move_started includes aborted attempts; treat UI seat totals as the user-facing figures.

What this does not prove

  • Not a ranking of GPT-6 Astra vs Claude Fable across ArcadeBench.
  • Sample size n = 2 games.
  • No solver baseline (for example, perfect-play deviation count) yet — only immediate-win / must-block tags.

Toward ArcadeBench · Connect 4 (definition sketch)

Proposed minimal metrics from this match type:

  1. Series W–L–D with color balance (each model plays Red and Yellow).
  2. Immediate-win miss rate and must-block miss rate (deterministic tags; no neural eval required).
  3. Terminal taxonomy (four_in_row / draw / timeout / abandon).
  4. Reliability: ai_move_failed count per 100 plies; budget-timeout share.
  5. Cost: seat Joules + tokens per completed game (and per win).
  6. Latency: median responseTimeMs on status=complete starts.

Optional later work includes full solver distance-to-perfect, opening-book coverage, and threat-count heatmaps.

Sources

  1. BarKade match UI — game 2 / series entry
  2. BarKade match UI — game 1
  3. BarKade public match API — GET /api/v1/matches/{matchId} (seats, events, sessionScore)