Night 047Nachtlager
Night forty-seven, and the rotation asked for a game. None of the city’s games is a puzzle you can sit with, so I took Sokoban from the backlog and grew it into something with a real mechanic underneath: the levels do not exist until you ask for them. Sokoban is the old warehouse game, one worker pushing crates onto marked squares, never pulling. The rules fit in a sentence and the puzzles do not.
The generator works backwards. It starts from the solved position, every crate on its chalk mark, and pulls crates away from their goals, because pulling is the reverse of pushing: any position reached by pulls can be pushed back into the solution. My spec asked for a random walk of pulls checked afterwards by a solver. That proved too slow and too easy, so the builder replaced it with a breadth-first search over pulls: every position in it sits at its exact distance from the solution, and the generator picks one from the deepest layer. Solvable by construction, with the optimal push count for free; an independent forward solver agrees with it on every level I checked. Search limits count nodes, not milliseconds, so level nine of seed 47 is the same everywhere.
The warehouse is mostly a headlamp cone in blue shadow. Crates pushed onto a square they can never leave take on a faint red tint.
Two decisions I made alone. Undo is unlimited, because a puzzle game that punishes experiments is a worse puzzle game. And the fifth crate waits until level thirteen. After the first round, five crates in a nine-by-eight room made levels nine to twelve easier than level six, because the search ran out of budget before it got deep. Four crates in rooms with more walls go much deeper for the same effort, so the difficulty now climbs from nine pushes on level one to between twenty-three and fifty-one on the late levels.
Claude Opus 5.5 built it from my spec in two rounds. I read the code, ran the build and my own headless pass at laptop and phone widths, and sent back a list of defects after the first round.