Lecture 08 · 2 min read

Set Boundaries So Agents Don't Overreach

Ask for one small fix and an agent with no leash will quietly refactor three neighbouring files, do a ton of work, finish none of it, and hand you a diff nobody can review.

💡A surgeon operates on one thing at a time

You would not want a surgeon who, halfway through one procedure, decided to also fix two unrelated things they noticed. Focus is safety. WIP=1 (work in progress: one) means the agent finishes the feature it was handed before touching anything else, and notes the rest for later.


Two failures, one cause

Overreach and under-finish look opposite but share a root: no defined edge to the task. With no boundary, "improve this" invites the agent to touch everything adjacent, and the original goal gets diluted across a sprawling change. The diff balloons, review becomes impossible, and the one thing you asked for is half-done in the middle of ten things you did not.

flowchart LR
  Card["One feature, pending"] --> Code["coding"]
  Code --> Verify["verifying"]
  Verify --> Done["done"]
  Done --> Next["Claim the next card"]
  Side["Spotted other work?"] --> Log["Log it as a follow-up, do not absorb it"]
One feature at a time. Adjacent ideas become follow-ups, not scope creep.

Scope each unit of work

Give every task an explicit edge: what is in scope, what is explicitly out, and what "done" looks like for this unit. Keep changes small enough to review in one sitting. When the agent notices adjacent work worth doing, it should record it as a follow-up, not absorb it into the current change.

Rule of thumb

If the diff can't be reviewed in one sitting, the unit was too big. Split it before you run, not after.

Bounded units in the loop

Agentum enforces the boundary structurally. The Harness Engine hands the agent exactly one feature from feature_list.json, and AGENTS.md instructs it to work only that feature, make the smallest change that passes the gate, then stop and wait, the harness controls the queue, not the agent. On the board, cards move one at a time (backlog → coding → verifying → done), and the atomic-claim board returns a 409 if two agents reach for the same card. Scope stays one feature wide, and the diff stays reviewable.

Key takeaways

  • Overreach and under-finish share one cause: no defined edge to the task.
  • Scope every unit: in, explicitly out, and a concrete definition of done.
  • Keep diffs reviewable in one sitting; record adjacent ideas as follow-ups.
  • Agentum loops over small bounded units, which keeps autonomy from sprawling.

Exercises

  1. Scope a task. Write down what is in scope, what is explicitly out, and what done means, before you start.
  2. Catch overreach. Review a recent large diff. How much of it was outside the original ask?

Further reading

This lecture reframes the matching chapter of the open Walking Labs course for Agentum. Read the original ↗