A quiet sprint is a choice


Fifteen days, two repositories, seven releases to production. If you use Domi, here is what actually changed for you — and what deliberately didn’t.

The thing you can see

Your daily digest email got properly good. There is now a Today section at the top, so the things that matter this morning are not buried under the next fortnight. Completed items appear struck through rather than vanishing, which turns out to be the difference between an email that reassures you and one that makes you wonder what you missed. The weather sits in it now. Mondays read differently from the rest of the week, because Mondays are different.

Small changes, all of them. It is the one thing in the product you read every single day, and it was not quite good enough.

Earlier in the same sprint, the Briefing page gained a live snapshot of the household — members, assets, documents, open tasks, how many of those Domi worked out for itself, what is coming this week, what you owe on standing bills. That one has its own story, because it was built in forty-two minutes while I was presenting to a room of people.

The thing you would only notice if it had gone wrong

An image pasted inside a note was readable by any member of the household, whether or not they could see the note it lived in.

That is the honest version. Domi lets a household keep some things in private groups — a medical letter, a surprise, an arrangement that is not everyone’s business — and the text of those notes was always scoped correctly. An image embedded in one was not: it had no group of its own to be checked against. Nobody could stumble across it by browsing, but “you would have to know the address” is not a privacy model, it is a hope.

It is fixed, in production, and the same pattern is being swept out of everywhere else it appears — the last of that work went out on the final day of the sprint.

I am telling you about it rather than filing it under “security improvements” because a household product that is quiet about this kind of thing has not earned the paperwork you are about to give it.

Six bugs nobody had to find the hard way

The related fix — making sure a charge cannot be moved into a group you cannot see while an order is being converted — went through six rounds with the automated reviewer that reads every change here before a human does. It found six real concurrency defects across those rounds. Not style notes. Race conditions, the kind that behave perfectly until two things happen in the same instant.

None of them reached you. That is the entire argument for having a second reviewer that did not write the code, and it is worth more than the throughput number I could have printed instead.

A word we are not going to use

We spent part of this sprint designing how Domi should forget things. Not built yet — a specification, argued over, written down.

The argument was about honesty. When you ask a system to forget a document, the polite thing to say is “purged”. But the underlying file bytes sit under a seven-year retention lock for the kinds of records households keep, and they will still be there. So the design commits to never telling you something is gone when it is not. It will say what actually happens, even though what actually happens takes longer to explain.

We would rather be wordy than lie to you about deletion. That one is a principle, not a feature, and it is the most useful thing this sprint produced.

And the app

Work continued on the mobile app this sprint. Domi’s mobile app is not yet publicly available. It is in review with Apple and has not been released on the App Store or Google Play.

What a quiet sprint is for

There is a version of this post that lists fifteen commits and calls it velocity. This sprint fixed a privacy flaw, made the email you actually read better, and spent real time deciding which word to use about deletion.

The features people remember are built on sprints like this one. It is just that nobody writes those up, so here it is written up.