This window, October 4 through 17, had two stories running side by side. One was a feature I've wanted for a long time. The other was the system telling me it had outgrown some of its own assumptions.

About 530 commits landed, and most of them came in build, review, and fix loops.

Workflows you can see

Visual Workflows lets someone build an automation on a canvas instead of writing code. A workflow can wait on a timer or for a named person to approve something, loop over a list, start on a schedule, and use an AI agent as one of its steps.

You can also describe what you want in plain language and the editor drafts it. It looks for existing capabilities first, and if a piece is missing it queues that piece to be built. When it isn't sure what you meant, it asks instead of guessing.

Safe by default

Automation is only useful if you trust it, so most of the rules are about trust. Test runs have no side effects. The first automatic run of a new workflow asks for confirmation. If a step's effect is unclear, the whole run holds. A stuck step that only reads data gets retried, and anything else goes to a person.

One fix this week closed a gap where two parallel branches could be treated as either-or without anything proving they really were.

Growing pains

The hub went unreachable for about 13 minutes on October 7. It looked like a crash loop. It was really two startup steps that grew faster than the data, one re-reading close to a gigabyte of session history and one clearing search entries the slow way. Startup went from about 8 minutes to under a minute.

A three-minute freeze every hour turned out to be a duplicate check comparing about 108 million pairs of notes. I only found it after adding a watchdog that records what the hub is doing whenever it stalls. That watchdog has been the most useful debugging tool of the month.

This week I noticed three symptoms that felt unrelated. Messages I typed were sometimes ignored. Sessions kept handing off to a fresh context far too early. Background activity had jumped from about 60 small sessions a day to about 900.

They turned out to have three separate causes. A hook that runs on every message had no timeout of its own, so a frozen hub meant a dropped message. A check was reading the total tokens used across a turn as if it were the size of the context. And a draft that never got merged was being retried every three minutes. All three have fixes built this week.

None of it came from one bad commit. The database had grown to about 2.3 GB with around 1,500 sessions a day, and things that used to be rare became routine.

Learning the right things

Loomfield learns lessons from its own work, so it also has to avoid learning the wrong ones. Machine-generated scaffolding is no longer captured as a lesson, and a claim that lost a dispute with me stops being served.

Completion got stricter too. A failed write can't be counted as a success anymore, and a routine's delivery only shows as verified when there's independent proof. When I cleaned up the backlog, 44 of 46 tasks marked ready had already shipped and just never got closed.

Still open

Workflows are moving from the editor into everyday use, and a Portfolio redesign that connects plans across projects is waiting on my go.

I also built Family Chore Buddy on top of all this over the past week. It was a good test of how quickly an idea can turn into a real product when the system underneath is doing its job.