The argument under the tool
The first two Build Studio videos showed the tool doing something. This one does not.
A thesis instead of a third demo
It is about the argument underneath the tool: that natural language is the next level of abstraction in software development, the way assembler and high-level languages were before it. I own the what — vision, specs, user stories. The agent owns the how.
Build Studio having no source-code view is the part people notice first, and it is a consequence of that position rather than the position itself. So most of the seven minutes goes on the question that follows from it — if you are not reading the code, how do you know it is any good? — and on where the whole approach breaks down, which it does, in a specific and boring way.
There is one objection I left unanswered on purpose. A compiler is deterministic and an agent is not, so the last step up the ladder costs reproducibility as well as control. The video answers it implicitly and never names it. That is the discussion I would like to have rather than pre-empt.
My Next: Todo is getting an alarm
The biggest visible change this period is in an app I have barely written about here.
My Next: Todo is getting a wake alarm. You can set one for tomorrow, or set them per weekday in Weekly Routine so the whole week is scheduled at once. The melodies are our own — generated for the app rather than picked off a system list — and each comes in a version whose audio fades in gradually, because iOS gives an alarm no way to ramp the volume programmatically. If you want the melody to come up slowly, the melody has to do it itself.
Two things around the alarm matter more than the alarm.
A bedtime notice, derived from the wake time, so the evening end of the day is marked rather than only the morning one. And notification holding: any Todo notification that would have fired during your scheduled sleep is held instead, and released when you actually stop the alarm — not when you snooze it. Todos that fall inside that window are marked so you can see, in advance, which ones will wait.
This is phase one of something longer. The wake alarm is meant to become a transition into an intentional day rather than an isolated clock: stopping the alarm eventually opens a calm daily overview — today's plan, the first commitment, the notifications that were held overnight — and bedtime eventually closes the day with a summary and prepares the next one. None of that is in this release, and all of it stays optional. Stopping an alarm must never require a planning ritual.
One deliberate difference: the My Next apps are still built outside Build Studio. This round was done in the Codex app. Build Studio is my tool and I use it for almost everything, which is exactly why I want one product that is not built with it — it is too easy to go tunnel-visioned on your own way of working and stop noticing what it costs. Working somewhere else keeps that honest.
It is in testing now, so the new version should be out shortly.
Fazon: closing the check-in, opening the AI layer
All five check-in defects from the last entry are fixed, and the trend card now states which way the week moved rather than just reporting a number. Then I ran the next check-in and it found three more things — which is the point of running it, and roughly what I expected.
The focus otherwise split in two. The export surface got a pass: canonical amounts in the PDF, quantity and unit semantics, period totals, a scope choice, and macros that can finally express unknown instead of being forced to say zero.
And the AI layer beside the coaching engine went from an idea to something that actually calls a model — and promptly failed end to end twice, for two entirely unrelated reasons. That is not the frustrating part. The frustrating part is that the weekly commentary can only be tested once a week, at check-in, behind four ordered preconditions. So the newest work is about shortening that loop: a debug log export to get diagnostics off the device at all, and a photo-classification proof of concept that hits the same provider, key and model interactively, in seconds. It is explicitly allowed to be throwaway. Its output is a decision, not a feature.
DeskRhythm: Android stops being a document
Last time Android was research, architecture decisions and a parity matrix. This time it is code.
Three things landed. A foundation — a Gradle project that builds in both variants from a clean terminal, runs themed in light and dark, switches language, and runs both test tiers. A headless rhythm engine and persistence core, fully unit-tested before any UI exists. And a three-tier Android CI, including a throwaway signing identity so release builds are exercised in CI without a real key ever leaving the machine.
The engine going first is deliberate, and it is a direct read of what iOS cost. Correctness is where DeskRhythm took the most corrective rounds: reconstruct auto-advancing phases across background gaps and writing phantom segments, pause honesty breaking across process death, a corrupted store bricking the app. Doing that layer headless, in a pure Kotlin module with an injected clock and an injected scheduler, means it can be proven with unit tests rather than by driving a UI — and the same language-neutral test vectors now keep the web, iOS and Android rule implementations from silently diverging.
The foundation spec carries a line I keep coming back to: anything that fails silently gets a committed assertion, not an eyeball. A missing Swedish key, a font that quietly fell back to Roboto, a release that debug-signed itself — all of them look exactly like a correct build, and all of them cost sixteen stories to undo if they are found late.
Running two platforms in one repo also surfaced a plumbing problem worth fixing: the production web deploy was re-publishing the site and re-running its live-origin audit on every ios/** and now every android/** push. That is now path-routed, without dropping a single check.
What's new in Build Studio
Ten changelog entries since the last write-up. The theme, more than usual, is not lying to you about what happened.
A PRD can name its own implementation track. Add a **Role:** line to a PRD's header and every execution run of it builds under that role. Until now the builder role was decided by array position in the config — so a project with two implementation tracks had to reorder its roles before each run and put them back afterwards, and forgetting produced no error at all. A role will happily build another track's story with the wrong domain rules and the wrong ADRs. This came straight out of DeskRhythm growing an Android track.
Re-reviewers actually get the diff now. The change that was supposed to hand a re-reviewing agent the exact diff to verify landed on 22 August and did not work — the sha recording threw on every round and the error was swallowed, so the prompt always rendered without one. That is now fixed, and the changelog says so at the top of the older entry rather than quietly moving on.
QA stops paying to watch a test run. On iOS projects the workflow now runs xcodebuild test itself and hands QA the results. The agent used to run the suite and poll the log — nominally every few minutes, in practice every thirteen seconds, and every poll re-reads the agent's whole context. On one Fazon run that was 148 requests, 90 of them polling, 10.8M cache-read tokens spent watching a counter.
Agent token counts stopped being about four times too high. Usage was attributed by time window across every transcript in the project directory, so each of six concurrent reviewers was charged for all six. One measured round totalled 4.3x its real usage. An agent with no recorded session now reports nothing rather than a guess.
Three separate fixes for agents that were alive and reported dead. An agent waiting at a question draws a menu and produces no output, which trips the idle timeout — and every action then on offer was destructive. That state is now reported as "An agent is waiting for your decision", with the action being to open its terminal and answer.
A fix plan that fails to arrive is caught while the agent can still fix it. A planner wrote a complete plan and then lost it building the HTTP request; the server accepted the prose summary, said ok, and closed the window. Hours later Approve failed with a dead button. Feedback is now validated on POST, while the agent still holds the plan.
Smaller ones. Capture Learnings shows the two or three learnings a run produced instead of all 293 in the project. The execution timeline shows Code Review before the run starts, instead of hiding a gate until you reach it. The DerivedData reaper now sweeps in-project build directories — one iOS project had 21.8 GB of them in-tree. And the pre-start scan for human-only requirements in specs is removed: it could not tell a pending obligation from prose mentioning one, and reported 31 gates on an item where 18 were citations of decisions the owner had already made.
Upgrade steps. Nothing to do in your managed projects. Build Studio itself needs a rebuild — most of these are project-server changes needing a sync and restart, and a few touch the hub and need the Next build and a full inject. The exact commands are in the CHANGELOG, per entry.
Elsewhere
Välkomna had a CI fixture rotting quietly — hardcoded dates that had drifted into the past and tripped a deadline guard. No production code involved, and the guard was right. Life Graph took a cleanup pass. Sickla tunneln, Skrivhjälp, Finance Studio and Launch Studio were quiet.
What's next
The Todo release goes out once testing is done, and then the interesting part starts: whether the alarm actually gets used as a day boundary rather than as a clock, which is the whole premise of the phases after it.
Fazon's photo proof of concept gets a verdict — cloud versus on-device on a recorded benchmark — and that decides whether the AI layer is worth building for real or whether the deterministic engine keeps the whole job. Either answer is fine. I would rather have the answer than the option.
DeskRhythm's Android track moves from the headless engine to the core rhythm UI, which is the first point at which there is something to look at on a phone.
And if you watch the philosophy video and disagree — particularly on determinism, which I deliberately left open — that is the conversation I was hoping to start. Open an issue, email [email protected], or find me at @MyNextStudio.