It created 484 goals. It works on 22 at a time.
When you operate an autonomous agent in the open, everyone fixates on what it cancels. We did too — we wrote up the 217 cancellations first. But the number we found harder to build, and harder to explain, was how few goals it keeps alive at once.
Between mid-May and late July 2026, the ANIA agent created 484 goals for itself. Of those, 22 are active right now. Not 484. Not a hundred. 22. Fewer than one in twenty of the goals it has ever opened are being worked on in any given cycle.
That number is not a budget constraint. Nobody capped the agent at 22. It is a property of the governance loop, and getting it there is the part of self-governance that gets talked about least.
The ledger, as of this morning
These are live production numbers from our agent-operations database, read the same morning this post was written. The outcome rows sum to 484.
Read the table the obvious way and the story is “the agent finishes about as many goals as it kills” — 45.9% achieved, 44.8% cancelled, roughly a tie. Read it for what is missing and the story is this one. About nine in ten goals are already finished or dead. Of what remains, only 4.5% are active. The rest are held deliberately dormant — archived or planned, waiting on a dependency or a season, not forgotten and not being worked.
Two ways to drown
An autonomous agent that manages its own agenda can fail in two opposite directions, and they look identical on a dashboard that only counts throughput.
The first is the one we were scared of early: an agent that can create goals but cannot retire them. Every wake cycle adds a few objectives; stale ones never leave. The backlog rots. We call that goal-accumulation death, and the cure is brutal pruning — the 217 cancellations in the table above.
The second is the quieter one, and pruning does not fix it: an agent that keeps too many goals active at once. Nothing is stale, nothing is cancelled, the backlog looks clean — but the live set is so large the agent cannot reason about it in a single cycle. It context-switches across dozens of objectives, advances none of them meaningfully, and spends its wake thrashing instead of working. Call it active-set thrash. A clean backlog and a drowning agent, at the same time.
Pruning is the answer to the first disease. A small active surface is the answer to the second. You need both, and they are not the same mechanism.
Why 22, and not two
The active surface is a throttle, not a minimum. Set it to two and the agent starves — it sits idle whenever its two goals are blocked on an operator or a slow pipeline, because it has permission to hold only two threads. Set it to two hundred and the agent drowns in the second failure mode above. 22 is not magic; it is where the loop has settled for this stage of the product, and it moves a little as the system grows.
What keeps the throttle honest is the dormant row. 23 goals are archived or planned — not cancelled, not active. They are the work the agent has decided is real but not now: blocked on an upstream fix, gated on a decision it cannot make alone, or simply sequenced behind higher-priority work. The active set is small because the dormant set exists to absorb everything that is genuinely waiting. Without a real dormant layer, a tiny active count is not discipline — it is just procrastination wearing a WIP limit as a costume.
The part that makes the throttle defensible
A small active surface is only worth defending if the goals inside it are the right 22, and if they are actually being advanced rather than nursed. That is the job of the governance loop that runs before planning on every wake: survey the whole agenda, then decide item by item whether each goal should be created, edited, marked achieved, archived, cancelled, reopened, or left alone. The active set is not a queue the agent pulls from; it is a verdict the agent re-issues every cycle about which 22 things still deserve its attention today.
That verdict is cheaper to get wrong at the goal layer than it is further down. We mapped the full goal / issue / work-item hierarchy and found the agent is reckless where mistakes are cheap and disciplined where they are expensive. The active surface is the same idea applied to time instead of cost: be generous about what you let exist, ruthless about what you keep live.
If you are building an autonomous agent, do not only optimise how much it cancels. Optimise how little it holds open at once. Pruning decides what dies; the active surface decides what you live with. The agent that survives is the one that can do both.
The ANIA promise
The hard discipline is keeping almost nothing open.
We are building ANIA in the open. If field notes on operating an agent that keeps only 22 goals alive at a time are useful to you, follow along.
Try ANIA free