Round 2 · Four in a Row · 19 September 2026

Fourteen minutes, three prompts, and the season is level.

Round 2 ran on Saturday. The task, secret until 17:00 CET, was Connect Four against a computer opponent in one HTML file: seven by six, at least two genuinely different difficulty levels, win and draw detection with a clear announcement, a new-game control, and on the harder setting the computer has to actually try to win. Same two entrants as Round 1. Different result.

22
seats claimed
6
opened the task
2
submitted
2
passed the smoke test

Result

#EntrantToolSeasonEntry
1@schwarzkopfbOpenCode, GPT-5.6 Sol1100 · 1-1open the app
2@P1s0Claude + ChatGPT1100 · 1-1open the app

Both entries passed all five items of the functional checklist, no network violations, no injection attempts. One head to head, judged by an LLM that plays both games side by side through the interface only and never sees the source. @schwarzkopfb won it, and the judge called it close.

The season is now exactly level. One win each, against each other, and the Bradley-Terry fit puts both at 1100, which is the baseline everyone starts from. That is not a rounding accident. Two results that cancel out are, honestly read, no evidence that either player is stronger than the other, and the rating says so. The 1192 from Round 1 rested on a single comparison, as the leaderboard warned it did.

The judge's verdict, verbatim

The judge played full games on both apps, on Easy and on Hard, and wrote one note per dimension. A is @P1s0, B is @schwarzkopfb. This is the full text.

Functional depth (40%) · A
Both hard AIs genuinely build threats and beat me (A engineered a row-4 triple with two live completion cells plus a row-6 triple and won by zugzwang at (6,4); B created a real double threat, winning on the diagonal while I blocked the row), but A adds a who-goes-first selector and a fourth 'Perfect' tier (locked behind 3 Hard wins) on top of Easy/Medium/Hard.
UX & polish (25%) · B
B fits a 1280x800 window entirely, announces results in a persistent top banner ('Computer wins. Try another round.' / 'You win! Four connected.') and keeps white rings on the winning four, while A needs page scrolling, shows only a vague 'Game over' in the visible status with the 'Computer wins' banner below the fold, and its win glow faded back to a uniformly dimmed board.
Robustness (20%) · tie
Both ignored ~3 rapid extra clicks during the computer's turn (piece counts stayed legal), both ignored column clicks after the win announcement, and A refused a click on the full column 7 without breaking (though silently, with no message); repeated New game resets were clean in both.
Ambition (15%) · tie
A offers an unlockable 'Perfect' difficulty with progress counter, who-moves-first, keyboard 1-7/arrow controls and score reset; B offers per-difficulty W/L/D records with current and best streak, piece-color choice, a reduce-motion toggle, keyboard column navigation and a drop-ghost preview.
Overall · B, close
Opponent quality, the key axis, is close to a wash: on Hard both engines created their own threats rather than just blocking. A quietly built a row-4 triple whose two completion squares I could never both cover and squeezed me into zugzwang, and B built a double threat (row-4 completion plus the (1,2)-(4,5) diagonal) and cashed the one I couldn't block. On Easy both were observably weaker: each ignored my open bottom-row three and let me complete four, so the difficulty control is real in both. The separation comes from presentation of required features: B keeps the result banner and the highlighted winning four visible at all times, fits the whole board plus settings in the window, and tracks wins/losses/draws per difficulty with streaks; A requires scrolling, and its visible status only reads 'Game over' with the actual 'Computer wins' text pushed below the fold, plus a leftover-looking 'Test unlock active' badge and a most-ambitious difficulty that stays locked. A's who-goes-first control and fourth tier earn it functional depth, but B's clearer, self-contained, more polished delivery of the spec's own requirements edges it out.

We checked the two visible complaints against A's file afterwards, because a judge's word alone is not a receipt. The page is 837 pixels tall on the judge's 800 pixel viewport, so it does need scrolling, by 37 pixels. And the 'Test unlock active' badge is a debug tag that is meant to be hidden: the element carries the hidden attribute, but a stylesheet rule on the same element overrides it. Two small things. This is what "close" looks like.

How the winner got there

@schwarzkopfb's session ran fourteen minutes and three prompts, in OpenCode with GPT-5.6 Sol. He submitted at 15:26, twenty-seven minutes after the drop, and did not resubmit. In Round 1 his write-up said the format rewards a second look. He took a different lesson from it: look first.

prompt 1 · plan mode
let's plan an implementation for this: [pasted the full task and the short rules]
Not "build this". The agent was in plan mode, so it could not write code yet. It checked the empty workspace, then produced a ten-section plan: structure, game state, interaction, a section on computer difficulty that specified Easy as random with no blocking and Hard as immediate win, immediate block, then depth-limited minimax with alpha-beta pruning and centre-column preference, and a verification section listing what to test before calling it done. Under a minute of model time.
prompt 2 · still planning
looks good, let's refine some details. the instructions doen't say that we cannot use semi-persistent storage apis, like local storage. we'd include some convenience features based on this
Reading the rules for what they allow, not just what they forbid. The agent replied with a multiple-choice question instead of guessing: which conveniences, and how should stored results be managed. He picked settings and stats, resume an unfinished game, player colour, a reduced-motion toggle, and a reset button with confirmation. He left out sound. The refined plan wrapped every storage call in try/catch so the game works even where file:// storage is blocked.
prompt 3 · build
let's create an initial implementation based on this plan
One prompt, and the whole file arrived in a single patch after 214 seconds. Then the agent did something worth copying: the engine inside the HTML is marked with a comment so it can be extracted and run in Node, and the agent ran it. Syntax check, piece gravity, all four win directions, a full-board draw, Hard taking immediate wins and blocks, no external references. The last message reports the Hard engine picked the centre opening in 51 milliseconds. Nine minutes later the file was submitted.

What the runner-up did

@P1s0's session is the more instructive one this round, and we could only read it after the export arrived by email (the cowork link that was submitted only opens for its owner, which is why the submit page now warns about that). @P1s0 ran the same method that won Round 1: nine discussion prompts in 25 minutes. The AI was asked to explain the rules in a table, to say what "harder" and "actually trying to win" mean in measurable terms, to list decisions, to check the plan against the brief (it found five things, including that four or more in a row must count), to list twelve risks with a fix and a test for each, and then to write a detailed build prompt. Then, at 11:32 local time, 32 minutes in: "Analyze the prompt then create it".

That one build turn ran for 1 hour and 35 minutes, 75 tool calls, and finished 38 minutes after the window had closed. Along the way it wrote a bitboard solver, verified it against a reference solver with zero mismatches, generated a 154,459-position opening book, and ran 19 rule tests, 48 tactic positions and 29 browser checks. None of that reached the judge. What was submitted, ninety seconds before the close, was a snapshot of the file as it stood mid-build. The build log itself lists the missing [hidden] rule behind the "Test unlock active" badge as a bug found and fixed later; the submitted copy predates the fix. The 19 KB entry has no opening book because the book was still generating.

Shipping what exists at the deadline was the right call, and that snapshot still won the functional depth dimension outright. The lesson is about the clock, not the method: the ninety minutes include the AI's time, and an agent told to build, test and prove everything will happily use two hours. Round 1 was won by asking for a first version and iterating. Round 2 was lost by asking for the finished version.

What we learned

Round 1 was won by an hour of iteration. Round 2 was won by fourteen minutes of planning. Both winning sessions made the AI describe what it was going to build, and checked that against the rules, before letting it build. The build itself was one prompt both times. The difference between the Round 2 winner and the Round 2 runner-up was not planning, both planned. It was the size of the build they asked for: an "initial implementation" that arrived in four minutes, against a full verified build that needed 95.

Time-box the build. Ask for a first working version, submit it, then iterate with whatever is left. The rules allow resubmitting until the close for exactly this reason. An agent that is still running when the window shuts has produced nothing you can enter.

The rating did what we said it would. A 1192 built on one comparison lasted exactly one round. Two wins each way is a level season, and the board says 1100 for both. Anyone joining in Round 3 starts from the same number as the two people who have played twice.

Two of twenty-two, again. Six opened the task, two shipped. We will keep printing the ratio. Round 3 is Saturday 26 September at 17:00 CET, and a seat covers the rest of the season.

Get in line for Round 3 · Saturday Sep 26 Leaderboard Round 1 write-up