“I’m not changing what I’m doing. I’m just changing the level that I’m doing this.” Selim, after days with the cube screen problem.

said at last

The problem had been with him for days: rows, columns and options. Every cube app, Mosaic, Anlat, Todarch and the others, lets a person grow their own domain from nothing. A pile of things; then the person finds a way of looking at them, a column; then the answers that column can have, its options. Over three messages Claude reflected it back in a living doc: rows, columns found by the person, options found by the person, three journeys through them, and the lift, the moment the first column turns a pile into a table.

Then the turn. A column’s options are a space of rows of their own, and the person can group them the same way. “I was in one problem,” Selim said. “While trying to solve that problem, I just got into the same problem.” It is one doing, at every level. Capture it once and it works in every app, at any depth.

One doing at every level: a pile becomes a table when the person finds a way of looking, and that way of looking’s answers are a level of rows of their own.

One doing at every level: a pile becomes a table when the person finds a way of looking, and that way of looking’s answers are a level of rows of their own.

the app guesses quietly

How does the app know a column was meant? Claude proposed it reads the shape without asking: when a second group of the same rows is made one with the first, that is a way of looking. It says so in a quiet line, with an undo. What Selim liked most was exactly that: “the application could just try to capture the intention and just signal it to user. And if the user doesn’t agree, we can just drop it.” It fits the rule from only the person knows: the app offers, the person decides. “This is already way, way better than I expected,” he wrote, “and understanding is so correct.”

three threads, one contract

He wanted something to play with already. So the work was split into three threads that ran side by side on one shared contract: a pure model, the use cases, and the screens.

The model is thirteen small files: one piece, readings of it (a row, a group, a way of looking, the lift, the offer), the moves with their quiet line and undo, and seeds from empty to ten apps of a hundred rows each. Twenty-eight checks walk Selim’s own example from moments to people, the same doing inside people and inside work, and prove that nothing is ever deleted. Every level draws in under five milliseconds.

The use cases came first and red: twenty-one new ones, then played on the new page, nineteen holding. The older cases were re-read rather than rewritten, and each one the new reading answers differently got a line saying how. One clash was left visible on purpose: a dropped piece now keeps its home, where older rounds expected it to move. That one waits for Selim to settle after he plays.

The screens began on a stand-in behind the contract and swapped to the real model in one line when it landed half an hour later. The threads agreed the names of seeds, tiles and path steps by short messages within minutes, before any code met.

walked with real hands

The page was then walked with a real mouse, a trackpad pinch and a finger. That caught two things the runner could not: carrying a tile across a long level lifted the wrong one when the target sat below the fold, and the quiet line lost its undo when the person only peeked inside and came back. One pinch is one level.

The model left a finding for cube design too, from the first time the recursion broke: a way of looking is a level of its own, and its answers are its rows.