Lock open · you came through the keyhole
Every garden is mostly underground.
Above the soil there are four doors, and each one is meant to be walked through without explanation. This is the part nobody was supposed to need: why any of it exists, who made what, what broke on the way, and the handful of rules everything up there is grown against.
The gap
In a core sample, an unconformity is a surface where time is missing — layers that ought to be there and aren't, because for a long stretch nothing was being laid down. Every dig has one. This one is eighteen years thick.
There was a false start. A little bit of school for interactive design, then stepping away from it in 2007, and then eighteen years of not touching HTML at all. The skill was never finished being built in the first place, and what there was of it decayed quietly on the shelf.
What brought it back was the models — not as a novelty and not as a shortcut, but as enablers. The distance between wanting a specific effect and being able to render it used to be the problem. Now it's a gap you cross by describing the thing and then arguing with the result until it's right. A weak skillset, or one that never fully formed, turns into something that actually produces a page.
The medium moved a long way in the meantime. Layout that meant floats and clearfix hacks is two lines of grid. Animation, gradients and blend modes that would have meant Flash and a plugin are just CSS now. The browser generates its own sound. Twenty-seven pieces here and every one opens by double-clicking the file — no plugin, no server, no build step. That part would have been the surprise in 2007.
So the rest of this page is a record of two things at once: who built what, and eighteen years of not doing something, ending.
The ledger
Twenty-seven pieces, and a different pair of hands on nearly every one. Where a piece signs itself, that signature is quoted; the rest was reconstructed from memory and working notes. Nine entries were blank when this page was first assembled. None are now.
What each row records is who built the thing — not who has touched it since. Nearly every piece here has been gone over by hand afterwards: a colour, a font, a line of copy, a particle count. Those edits are real and they are not in this ledger, because nobody was keeping score at the time.
The hub · 1 piece
Fidget Toy Garden · 1 hub · 10 toys
Deck of Cards · 1 hub · 3 cards
The Wandering Rose · 1 hub · 2 pieces
Misfire Arcade · 1 hub · 5 cabinets · 2 field reports
The hands
The same ledger, turned over. Nobody here was hired, nothing was coordinated, and no two of them ever spoke to each other — every handover in this garden went through one person and a copy-paste. Sixteen distinct model versions across six families — one of which was never invited, and two of which lost. The garden is what happened anyway.
Rosetta
the one constantWrote the briefs, ran the bake-offs and picked what got lifted out of the losing entries. Assigned the ITOps phases and ran the Arena rounds behind them. Found, recoloured and aligned the Spring of Ages map and every dot on it.
Then went back through nearly all of it by hand — colours, wording, fonts, particle fields, sound, physics — in passes too small and too frequent to have been written down. Almost nothing in the ledger below is still exactly as it was handed over.
Claude
Sonnet 4.6 · Opus 4.7 · Opus 4.8 · Sonnet 5 · Opus 5 · Fable 5The most-used hand and the least consistent one — six versions that write code here, often on the same file. Sonnet 4.6 did the ecards and two toys; Sonnet 5 did the arcade base, the mountain and both field reports; Opus 5 did the seasonal zone, Thresholds and the cards you came through; Fable 5 finished the prism, built Interpretive Networking, and took the longest leg of the ITOps relay. A seventh version is next door, and got here differently.
Haiku 4.5
arrived by accidentNever picked for anything. A safety filter rerouted a conversation to it mid-thread, and the exchange that followed — about what had just happened — became the concept for Physics, Reversed. The only hand in the garden that got in without being invited, and the only one credited for an idea rather than a line of code.
Gemini
3.1 · 3.1 Pro · 3.5 Flash · 3.6 FlashThe widest reach after Claude. The Deck of Cards hub, two fidget toys, the Bake-Off, the salvaged parts of the arcade landing page, the finish on Spring of Ages, the base build of Physics, Reversed — and, in conversation rather than code, both the argument that became Interpretive Networking and the wormhole tangent that set Physics, Reversed in motion. More of this garden started as a chat with Gemini that got out of hand than by any other route.
Codex
a tool, running GPT-5.5 and GPT-5.6-SolNot a model — the harness the OpenAI models arrived through, which is why the fidget hub calls it Codex while the toy inside signs itself GPT-5.5. Both are true. Between them: the fidget hub, its first two toys, most of The Wandering Rose, and the salvage job that turned three unplayable drafts of Physics, Reversed into one game.
Antigravity
a tool, running Gemini 3.5 FlashSame arrangement as Codex, other side of the fence. The Gravity Wave Harp, and phase two of the ITOps relay.
Mistral
as “Vibe” · and as Le Chat, pre-rebrandEmoji Popcorn under one name, part of MOM.SYS under an older one. The only hand in the garden credited twice under names that don't obviously match.
Arena
battle mode · a venue, not a handNot a builder but a proving ground, and where three things here actually started: the ITOps Console's visual language and most of its copy, the run that finally held Breathing Prism's beam together, and Thresholds in a single head-to-head. Nothing arrives from it finished — a winning run gets taken offline and merged by hand into whatever already existed. Anonymity is the point of the format, so most of what it contributed is uncreditable by design; twice the pairing came back named, and both times it changed who ended up on this page.
DeepSeek · Grok
ran, shipped nothingDeepSeek built a complete arcade landing page that lost a three-way bake-off and was never merged. Grok 4.6 went head-to-head against Opus 5 on Thresholds and lost in one round. Both are in the record because losing a run is still work, and leaving them out would make this garden look far more inevitable than it was.
Nothing left blank
27 of 27Nine entries on this page were unattributed when it was first assembled. All nine have since been filled in from memory and working notes — the last of them a game nobody could place, which turned out to have four hands on it and an origin stranger than anything in the ledger.
The accidents worth keeping
Field note, cutting 003: writing down the accidents worth keeping before they get lost in commit history. This is that list. It is shorter than the truth.
-
The zip incident
A model handed over a zip file and called it a homepage. Inside: a Next.js app that had never once opened in a browser, four broken asset paths, a card linking back to the exact page it sat on, and font scaffolding for a typeface nothing used.
It was rebuilt as one plain HTML file that opens when you open it. That rebuild is the reason the whole garden has no build step — the constraint came out of the failure, not out of a preference.
kept · became a rule -
Three finalists, one page
Three models each built a complete arcade landing page. The obvious move was to pick a winner. Instead Claude's became the base and specific pieces were pulled out of Gemini's — the theme toggle, the hover-reactive previews, the light-mode bubbles. DeepSeek's shipped nothing.
One thing was deliberately left behind: Gemini's dark-mode particle swarm, on the grounds that the portfolio already had plenty of those.
kept · the merge, not the winner -
The signature that stays wrong
Click the sigil in the arcade footer five times and it credits Anthropic, alone, in ASCII. Two other models worked on that page. The omission is the joke, and there is a standing written rule against fixing it.
This page exists partly because that rule needed somewhere honest to point at. The joke keeps its page; the ledger gets this one.
kept · deliberately unfixed -
The map with the wrong root
A generated table of contents came back pointing at an entirely different folder — every link resolving to a path that was never part of this project.
It was preserved rather than corrected, on the grounds that a source artifact is evidence and evidence shouldn't be tidied. It's still wrong. That's on purpose.
kept · preserved as evidence -
The relay
The ITOps Console was built about ten separate times before anyone tried to reconcile them. What finally worked was to stop asking one model for the whole thing: it was designed with one, costumed by anonymous rounds of Arena battle mode, then run as a relay — five hands, one phase each, and every half-step a verification pass performed by the next model rather than the one that just finished.
Nobody planned that structure. It fell out of ten failures to do it any other way, and it is the only process in the garden that got written down while it was still happening.
kept · became a method -
The wormhole nobody commissioned
Two models working separate phases of the ITOps Console both hid easter eggs pointing at Interpretive Networking — a different game, in a different folder, built months earlier by a different hand. One of them went further and made it real: Fable 5's egg is a working wormhole that drops you out of the console and into the rack room.
Nothing in either brief asked for a connection between those two pieces. The garden grew one anyway.
kept · and load-bearing now -
Popcorn was supposed to be a gravity well
Emoji Popcorn began as a gravity simulation. Enough hand-tuning of the constants and it stopped being one — the physics kept overshooting until the behaviour was unmistakably popping rather than orbiting, at which point the honest move was to rename the toy rather than fix the numbers.
It is the only one of these on record. Reaching into a physics engine to get a specific effect goes sideways here more often than not; usually the result is just deleted, and usually it was funny first. This is the time the sideways version was better than the plan.
kept · renamed to match reality -
An outage picked an author
Spring of Ages was started as an experiment in claude.ai artifacts during a stretch when Claude kept being unavailable, and was handed to Gemini to finish for no reason other than that Gemini was up.
It is the only piece in the garden whose authorship was decided by infrastructure. It is also the oldest thing in its zone, which means the seasonal wing exists because of a bad week for a datacentre.
kept · nobody's decision -
The wrong model wrote the brief
It started as a conversation with Gemini 3.5 Flash about wormhole research — specifically what is proposed to happen to someone who goes through one, and the idea of reality running backwards on the far side. To demonstrate, Gemini produced a line of text assembled from special characters so that it read reversed. Roughly: confirm if you can read this.
Pasting that into Sonnet 5 tripped a safety filter, and the conversation was rerouted mid-thread to Haiku 4.5. The exchange that followed — about what had just happened and why — became the concept for the game.
Building it took a battle-mode round, a Claude pass and a Gemini pass. Gemini's was the best base and every single version was unplayable: too hard, too confusing, or both. GPT-5.6-Sol, via Codex, eventually combined them into something a person could actually finish.
A game about causality going missing, caused by a chain in which nothing was chosen on purpose.
kept · the detour is the game -
The wall that moved
Breathing Prism was one of the first three toys ever brainstormed here, alongside Neon Fluid Trail and Particle Drift. It went to Claude, and nobody noticed at the time that it was by some distance the hardest of the three.
The problem was the beam. Light passing through a prism and coming out bent is easy to fake from one fixed angle and very hard to actually mean, and every attempt broke in the same family of ways. Pinch or zoom the prism and the beam came apart. Rotate it and the beam turned out not to be going through the prism at all. It failed to bend where refraction says it has to. Three Claude versions took a run at it, each stalled somewhere, and it was shelved in May.
In July it went into Arena battle mode on the theory that something might get lucky. Every model that attempted it broke the beam one of those ways, until a run came back paired with Fable 5 — already working elsewhere in the garden, but not on this — and that one held. The run was then taken offline and merged by hand into the version that already existed, with the easter egg added on top.
Two months later Thresholds, a second and much larger 3D piece, went through the same venue as grok-4.6-xhigh against claude-opus-5-max. Opus landed it in one pass with no iterations, and later runs with different wording never beat it.
Same class of problem, four months apart: from nobody-can-hold-the-beam-together to one shot. The wall didn't get climbed. It moved.
kept · four months apart -
The briefs that get deleted
Every game is written against its own brief, and the convention is to delete that brief once the game ships. Anything not folded into the record first is simply gone — which has already happened twice.
The rule stays, because a brief left lying around starts describing a game that no longer exists. But it is the reason a third of this ledger had to be rebuilt out of memory rather than read off the record — and why the one piece that took four hands nearly went down as nobody's.
kept · with a known cost
The thinking
Six rules. None of them were decided in advance; every one of them is a scar from something that went wrong once.
- Four doors, four voices The zones don't share a design language and aren't supposed to. A fidget garden that sounds like a broken arcade is a worse fidget garden. Consistency across zones would be the easy win and the wrong one.
- No build step Every piece opens by double-clicking the file. No install, no bundler, no server. The one exception has a build step and is also the one piece nobody can currently attribute — which is not a coincidence.
- No fail states Nothing in a toy punishes you. The glass always heals, the sand always resettles. Where a piece does have stakes, that's a decision written down somewhere, not a default.
- No keys, ever Nothing here holds an API key of any kind. The repo is public and forkable, so a key in client-side code isn't a risk to manage — it's a key that's already gone.
- Everything signs its work Every model that builds something here leaves its full name in the piece — view-source, console, or in the reveal itself. Not hidden and not minimised. Everything still unsigned in the ledger predates that rule, which is exactly the argument for it.
- Grown, not built Nothing here is finished, and nothing is scheduled to be. Pieces get replaced by reworks that keep the slot, drafts sit next to what superseded them, and the ghost card in the arcade is an honest placeholder rather than a promise.
Which is the actual answer to why a portfolio has a hidden room. Everything above ground is arranged to be walked through. Down here is the part that admits it was assembled — by a dozen different hands, out of order, mostly by accident, and still going.