← Back to all posts

#NoEstimates for Agents: Stop worrying and learn to love ambiguity

🎯

Planning is work. When does planning stop and doing start? Design for emergence instead.

Every multi-agent pipeline in the industry starts with a planner. One expensive model looks at the input, predicts how much effort is needed, and allocates budget to cheaper workers. This is the project-manager pattern: estimate, delegate, execute within the estimate.

We started there too. A classifier looked at a diff, counted lines, and decided: shallow, standard, or deep. Three tiers, upfront prediction, clean separation. The prediction was wrong whenever the real complexity was non-obvious from syntax. A 10-line change at a trust boundary with 30 callers deserves deep analysis. A 500-line generated migration deserves a glance. Line count tells you nothing about system risk.

This is the NoEstimates problem. Estimates require information that only exists inside the work. The act of planning consumes time without producing the thing we need, which is the work done correctly. When planning becomes unbounded (when do you stop refining the estimate and start building?), the answer is not to plan harder. It is to design a process that accommodates ambiguity and pushes principled decisions to the agent at the coal face.

So we deleted the planner. Every stage runs. Evidence assembly fetches entities from the code graph. Enrichment decorates them with callers, trust boundaries, and active signals. Lenses observe. Guards enforce. If any stage finds something concerning, it flags it. If flags exist, we go deeper. If not, we stop and synthesise. Depth emerges from what the system discovers, not from a prediction made before the work starts.

Termination is deterministic. After each iteration: did the evidence grow? Did any severity change? Did a new entity appear? If all three are no, marginal gains are reached. Stop. No LLM self-assessment. No caller-specified budget. The work tells us when it is done.

The common objection: "Without a planner allocating cheap models to simple work, you'll run expensive models on everything." This misunderstands where the cost lives. The planner is the expensive model call. Remove it, and each stage can be a small, constrained agent operating within its bounded perspective. A lens that receives three evidence nodes produces a brief observation in under a second on a cheap model. A lens that receives thirty nodes takes longer and produces more. Cost scales with discovered complexity, not with a large model's upfront guess about complexity.

The expensive path only activates when the work justifies it. A clean PR flows through: thin evidence, quiet lenses, no flags, brief synthesis. Ten seconds, cheap models throughout. A risky change flows differently: rich evidence, flagged concerns, evaluator loop, deeper synthesis. Ninety seconds, still mostly cheap models, but doing more passes. The planning overhead (2 to 3 seconds of a large model predicting depth) is replaced by a deterministic gate that costs nothing and is never wrong, because it reads the actual output rather than guessing at it.

This is the NoEstimates principle applied to AI pipelines. Do not predict effort. Measure progress. Stop when progress stalls. Push decisions to the stage with the information, not to a coordinator guessing from a summary.

The industry default: plan, delegate, execute within plan. The better default: execute, reflect, continue or stop. Principled decisions at the coal face, not planning theatre at the top.


References

  • Allen Holub, "#NoEstimates" (DevWeek keynote). The case for replacing estimation with measurement and priority-based planning. youtube.com/watch?v=QVBlnCTu9Ms
  • Don Reinertsen, The Principles of Product Development Flow (2009). Queuing theory applied to product development: planning ceremonies create delay queues; batch size economics favour pull-based systems over prediction-based ones. leanproductflow.com
  • Madaan et al., "Self-Refine: Iterative Refinement with Self-Feedback" (NeurIPS 2023). Generate, self-evaluate, refine, repeat until improvement plateaus. Emergent termination without external planning. arxiv.org/abs/2303.17651