Yesterday ended with a promise: Anlat and Cubes would come onto the ground the other apps already stand on (a ground to grow from). They came the same night, and on Sunday morning everything older went.

the last two apps arrive

Late on Saturday three threads ran side by side. Cubes, the app the shared library grew out of and the one that never took it back, jumped from 0.6.0 to 0.15.0 of the angular package in one pull request. About 740 lines of its own copies went. Cubes kept its own words as a thin layer over the package, so none of the 31 places that called them had to change; the diff is mostly deletions.

Anlat’s story screens did the same. Six screens became one, reading the cube schema through a small adapter over Anlat’s backend. The person never sees the schema: every address and every word stayed Anlat’s own. The schema is the mechanism, never the picture.

Mosaic’s home and Todarch had fallen behind too, and Selim found it by using them: holding a piece showed no type, and “one I have” was never clickable. His question was the right one for every report from now on: “not yet migrated or missing in the library?” This time the answer was the first: both apps still pinned a version five releases old.

Four apps, one ground: the shared package on the phone and the cube kit on the backend.

Four apps, one ground: the shared package on the phone and the cube kit on the backend.

a Sunday cleaning

On Sunday morning Selim asked for something simple and big at once: “let’s let go of other previous ones and obsolete approaches … we don’t have to carry the history with us.” He is the only user of these apps, so nothing needs an adapter to keep an old way alive.

Cube screens dropped every study, prototype round and run from before the schema, about 200,000 lines, kept whole on archive branches. Mosaic and Todarch lost their old homes, the puzzle and the dashboard, about 11,000 lines, and their old addresses now redirect plainly. Anlat let go of its first room, the discovery room where moments were looked at through lenses before the cube existed. Cubes let go of side by side.

The plan went out first, and Selim read it while the cleaning of notebooks ran. He answered with one correction: side by side is “quite important” for Anlat, not yet migrated, so it stays there, and it is now written down as something no cleaning may remove. In Cubes it was only his, and it never worked, so there it went. The correction reached the Anlat thread before it had removed anything.

the backends follow

With the front ends on one schema, Selim wanted the backends to speak the same kit, so the two work together. Cubes and Anlat moved their storage onto the cube kit in sibling threads at the same hour. In both, a one-time copy carried every older row across with its id kept, and the counts matched one for one before anything else changed. Anlat’s api did not change at all, so the phone noticed nothing.

The care was in reading first. Before writing Anlat’s copy, the thread looked at the real shapes waiting in production: answers without an owner, columns without a name, moments shared before any name existed. The copy handles each on purpose. On the Cubes side, a real database started inside the tests caught an ordering bug no mock would have shown. The two threads shared one kit and met only once, in a single conflict in a readme.

The cleaning also found things. The regression runner, not the specs, found two real bugs in Mosaic on the way: a ghost tap after a touch hold, and a close-up link pointing to the wrong place. What looked like a leak between Mosaic’s and Todarch’s lobbies turned out not to be one, and that story became a study of its own (a door, not a room).

the afternoon: the company’s own words

The morning cleaned the apps. In the afternoon the same question reached the words agents read before they work. Selim put it in one line that three threads quoted back to him: “whatever we have in the repositories, it should be what we need. It should be our latest understanding. And I don’t want to create a history book there.”

The cube company had doubled in five days, and most of the growth was its role notebooks: run reports and pull request stories where lessons were meant to be. Every notebook had promised, in its first line, what to do differently next run, short; only the first line kept the promise. One pull request brought them back to lessons, from about 39,000 words to 10,000, and gave every file an agent reads to get dressed a word budget. A developer now reads fewer than half the words it did before touching code. The cleaning taught its own lesson on the way: rewriting every notebook at once made that thread very long, which is why the prune now runs every Sunday night, small, worn by the doc expert.

What agents read first, before and after the Sunday cleaning.

What agents read first, before and after the Sunday cleaning.

Two more copies of the past left the same evening. The company’s decisions page now keeps one line per decision still in force, and cube design’s record folder, word for word what its v0.4 tag already held, now points to the tag instead. A diff showed they were identical, which turned a judgment call into a safe yes; Selim tapped both proposals in a few minutes. In cube screens, every test run had been keeping its pictures in git, about half of the repo’s weight. They stay on the machine now, and the prototype readmes went from 84 to 11 kilobytes. The prune nearly removed one prototype round as a copy of the next, until the runner showed the older one was still the base; it stays until Selim plays the new one.

Git keeps the past, and so do the archive branches. What a repo keeps in plain sight is only what is true today. The same Sunday the checks got the same treatment (a red check is a rule) and so did the conversations themselves (look before you dress).