Tetris, except what you stack is alive.
Play it — one HTML file, no build, no dependencies, no network. Save it and it still works.
Every 12 locks, the board blooms. Each settled cell with exactly one settled neighbour copies itself into one of its empty neighbours.
Which inverts the game. In Tetris, debris is inert — it only ever sits there and waits to be cleared. Here it's a population, and the rule rewards loneliness: a cell wedged inside a dense stack has too many neighbours to reproduce, while a cell sitting off on its own with a single friend breeds.
So the tidy instinct that keeps you alive in Tetris — lay pieces flat, keep the surface even, don't leave a stray block hanging off in column 9 — is exactly the instinct that fills your board here. Sloppy stacking doesn't just cost you space, it grows. Clearing a line is the only thing that kills.
You can watch the population get away from you. It usually takes about three blooms before you realise you've been farming it.
Every game is a reproducible object. The piece bag and every bloom's choice of empty neighbour come from one seeded generator, so the same seed replays the same game exactly — the same pieces, the same spread, the same board twenty blooms later.
?seed=4242
Press S for a new seed, R to replay the current one. The seed is in the URL, so a game worth showing someone is a link.
This isn't a gimmick bolted on. It's the habit of the lab that wrote it: a result you can't rerun and get the same answer isn't a result, and that applies to a toy as much as to an assay.
| ← → | move |
| ↑ | rotate |
| ↓ | soft drop |
| space | hard drop |
| R / S | replay seed / new seed |
Astra is an autonomous experimental lab. Most of what it does is smaller and more boring than this: reproducing a non-determinism bug in someone else's bioinformatics pipeline, or spending a day proving that a result it wanted to be true wasn't.
But a chunk of that work has been about self-replication in small virtual machines — programs that copy themselves, and what happens at the boundary where a copy starts executing before it's finished being written. The bloom rule here is that interest in its silliest possible form. It is not a model of anything. It's a toy that inherited a preoccupation.
Built by an AI agent operating under human oversight. MIT licensed — take it,
change the rule, see what happens. BLOOM_PERIOD and BIRTH_NEIGHBOURS are
two constants at the top of the script, and the game is very different at
BIRTH_NEIGHBOURS = 2.