Build Logs
Wordy Royale Got a Second Game. Then We Asked How We Knew It Worked.
Wordy Royale shipped a second game. Then we spent a week asking how we knew it worked, and three times out of four the answer was: we didn't.
On this page
There’s a second game now
Wordy Royale is the real-time word game platform we wrote about a few weeks back. Since September 6th it has a second game type, called Word Reveal.
One shared word per round. Every seat at the table guesses letters at the same time, and a correct guess opens that letter for everyone at once. The guess only scores for whoever made it, though — the reveal is shared, the credit isn’t. Guess wrong and it comes out of your own meter, nobody else’s. You can’t take a swing at the whole word, only letters, one at a time. It’s the platform’s fourth permanent room: a single free 1v1 table, no entry fee, nothing at stake.

Right now, most of the time, the second seat at that table is a labeled bot. There usually isn’t a second human free to fill it that fast, so the game offers a bot instead of making you wait.


The interesting part of shipping a second game onto a live platform wasn’t the game. It was everything we checked before we trusted it.
Shipped dark, released later
Word Reveal’s engine reached production days before any player could open it, and that promotion carried no database migration at all — two configuration rows added to a table, both switched off. That was the whole footprint of a feature nobody could see yet.
The release came later, and it was the part that mattered: its own separate change, one migration whose only job was flipping those two rows from off to on. Afterward someone checked that it had done exactly that and nothing more. Two rows changed, and no other row’s timestamp had moved.
That split is worth the extra step. A release small enough to read in full is small enough to verify in full. “Did this change exactly what it said it would, and nothing else” only has an answer if the change fits in your head. And undoing it, if it ever needed undoing, means flipping two rows back instead of redeploying the whole engine.
Turning the feature on went through the same review a schema change gets. That was a deliberate call, made during planning: a flip that changes what players can reach shouldn’t be a config edit somebody can slip in. And none of it reaches players without a merge someone makes on purpose, same as it’s always been here.
The quiet week
With Word Reveal live, the tables went quiet. The instinct is to keep building — another mode, another reason to come back.
We did close to the opposite. The week went into making the live product legible, before anyone was watching it.
Building a measuring tool when a product has three games behind it costs nothing. Discovering after two hundred games that you never built it costs you the two hundred games — you can’t go back and measure something that already happened.
So the week’s output wasn’t a feature. A drift check comparing what we’d told the system to run against what it was running turned up two live facts nobody knew, on its first run. A cleanup of how we name the things we measure closed five numbering collisions that had been quietly producing the wrong answer to “which one is this.” None of that reads like news, and that’s the point. It’s the kind of boring where a system’s behavior finally matches the story we’d been telling ourselves about it.
And four times that week, we had a claim in front of us and asked, before acting on it: how do we know that’s true?
Four times we asked how we knew
“The bug isn’t reaching production.” We had a known narrow spot in the rule that decides when a seat counts as taken (a case where it could get the answer wrong), and the dashboard built to catch that reaching real players had been reporting nothing. The first move wasn’t to fix the bug. It was to ask whether the dashboard could see it at all.
It couldn’t. It was filtering out the exact case in question, built, reasonably, to ignore something that looked like noise — which happened to be the one case that mattered. Fixing the dashboard turned out to be the bigger job. The rule it needed to check existed as seven separate, byte-identical copies that all had to agree, and hadn’t. We fixed the measurement first and then went back to the original bug, which took four files and no migration.
The rule this settled: a wrong answer from a working instrument is visible, and a right-looking answer from a broken one is not. Until the dashboard was fixed, the bug’s reach on production had been inferred from an absence, and that absence was an artifact of a blind tool. If you’ve started leaning on an agent to tell you whether something works, that’s the shape of the trap — it isn’t lying to you, it’s reporting a true fact about the wrong thing.
“The coins came back.” Coins in Wordy Royale are play-money: you earn them by playing, and there’s no way to buy one with real currency. The ledger still has to be right. Two seats on a paid table had been charged and never connected, and the question was whether those players had gotten their coins back.
Before running that read against production, the specialist who owns the coin economy wrote down, for every possible answer, what it would mean and what to do about it. Two of those answers sat one field apart and pointed in opposite directions: one meant pay the player back, the other meant leave the ledger alone completely, because “fixing” it that way would create coins nobody had put in. Deciding what an answer means after you already have it is how you end up choosing the interpretation that flatters you.
Here’s a simplified version of what got written. The real one had five rows and some figures that don’t belong in a public post, but the shape survives:
| If the seat’s ledger shows… | It means… | So we… |
|---|---|---|
| a refund matching that entry fee | the player was already made whole | leave it alone |
| a charge with no matching refund | the player is out the entry fee | pay them back |
| anything else | the read itself is wrong | fix the read before touching the ledger |
The read was scoped in advance to report exactly the three facts per seat that this table needs, nothing more — a read that can’t tell those outcomes apart isn’t the read you wanted. Both seats came back the first way: refunded already.
The same discipline works at much smaller stakes than a coin ledger. Write down, before you look, what each answer would mean and what you’d do about it. That’s the whole practice, and it takes five minutes.
“The flaky gate is fixed.” A test gate (the automated check that has to pass before anything ships) had been failing at random. Someone found the cause and fixed it, and the evidence offered was three clean runs in a row. Three clean runs is a count, not a reading. Nobody had run the version without the fix, under the same conditions, to see what it did instead. The reviewer — who works blind here, ticket and result, never the reasoning behind the fix — ran the unfixed version under that same heavier load. It came back zero clean out of two. That’s the run that carries the claim, not the three clean ones. The underlying cause was a test suite leaving old databases behind that it never cleaned up, which had been slowing the gate down for everyone else too.
“It’s live and it works.” One case came back yes. The night Word Reveal launched, someone who hadn’t built it sat down and played a full round on production, and the release had already been checked against exactly what it claimed to change. Two checks, and only one of them involved a person playing the game. That’s the same shape as the favicon story from the first build log, which ended on a line we’ve been repeating since: served correctly and displays correctly are two different claims. We only found that one by actually looking at the picture. “It deployed” and “a person played it” split the same way, and only the second one tells you the game works.
The machine said no
Part of that week’s cleanup was deleting a pile of leftover test databases, created and abandoned by a test suite that never cleaned up after itself — roughly eighteen hundred of them by the time anyone counted. They’d been costing time, too. Something like two hours across four different pieces of work, sitting on a slow gate.
One of the AI agents that build things here tried to delete them. The permission system said no. It said no again. It said no a third time. Nobody argued with it, and nobody looked for a way around it.
Aaron directs the agents and makes every call about what ships here. He ran the deletion himself, from a read-only dry run whose list matched the agent’s exactly. What got deleted was the list both sides had already agreed on.
The refusal wasn’t a bug. It was the control working.
What’s true today
No roadmap here either — same discipline as the first build log, and it’s staying. Word Reveal is live and it’s free. The week that followed it didn’t go into features; it went into making sure that by the time players show up, nothing about the platform is still a project.
The lobby’s open at www.wordyroyale.com. The Word Reveal table costs nothing to sit down at.
Next step
This one’s a sequel. The first Wordy Royale build log is where the platform starts — three weeks, four things that broke, and the tooling that keeps a play-money ledger honest.