An AI wrote the code. I decided what survives.
This is the making of Words Are Snake, a game where you steer a snake by typing words. Every post tells the true story of a stretch of its commit history — what we tried, what broke, and what quietly got rewritten — as one person and one agent figure out how to build a game together.
Six agents, two branches
The reasoning behind the devcontainer firewall, MCP wiring, CLI lifecycle, SSH signing, and build ordering lived only in scattered commit messages. A wayfinder map turned it into five permanent ADRs, produced by six agents working in true parallel.
Three boxes, one shape
A request to declutter the keyboard's panel, the game log's panel, and the board's heavy border turned out to be three separate questions with three separate answers, not one visual fix applied three times.
The listing had nothing to crawl
wordsaresnake.no's Google search result showed as a bare text link. The title, description, and social tags were already solid; the actual gap was robots.txt, a sitemap, and structured data.
A deliberate departure from the mockup
Redesigning PvP invitations and Settings meant deciding, up front, where the request diverged from the just-locked design-system mockup rather than treating the gap as an oversight.
Vanished letters, lingering words
Two independent PvP bugs on the same day: Norwegian letters missing from what the opponent sees, and a crashed word that refused to leave the screen.
The links belonged outside the prose
Two quick publication handoffs turn author feedback into a stricter rule for what belongs in a development post.
Rematching with the same opponent in real-time PvP
Starting another match against the same opponent previously required sharing a new room link. Token-chained authorization and a six-state UI matrix bring instant same-opponent rematches.
A greedy regex that ate the leading major version digit
A greedy wildcard in version string extraction stripped leading digits from major version numbers, causing pnpm 11.19.0 to be parsed as 1.19.0.
Breaking a self-referential devcontainer script loop
Invoking pnpm inside a container startup script re-triggered the pnpm binary wrapper itself. Guarding execution with environment flags broke the infinite loop.
Deriving help text point values from the game engine
Hardcoded point strings in UI translation dictionaries drifted when fruit values changed. Deriving help copy directly from EDIBLE_POINTS enforced a single source of truth.