You give an agent a job with five steps and it gets three of them right. On the fourth, the page it needs has moved. The agent stops, thinks for a while, and begins again from the first step: re-reading files it has already read, re-running an audit that already passed, carrying the error and the whole story of the failure into every step after it. Twenty minutes later it is standing where it stood before, with a longer context and a larger bill. Nothing in the plan was wrong. What was missing was a way to fail in one place.

The syllabus and the lesson are different jobs

In September, somebody writes the year. Twelve weeks of topics in an order that is not decorative: ratios come after fractions because they have to, and the exam at the end fixes where everything has to land. That document is not a lesson. Whoever stands in front of the class on Tuesday takes one item off it and works out the rest in the room, which exercise to set, how long to spend, when a puzzled face means stop. Two jobs, two horizons. The person who wrote the year cannot see Tuesday. The person teaching Tuesday cannot see March.

An agent built this way splits along the same seam. A planner takes the vague request and turns it into an ordered set of steps: audit the codebase, make the change, run the tests, update the docs. An executor receives one step at a time and works it with real tools and real observations, choosing its own small moves inside that step. The plan gets revisited only when something forces it. Because the executor never carries the whole sequence, its context stays narrow. Because the plan was written down, you can read it before it runs. The bill for both is more calls to the model.

Redo the week, not the whole year

What a year plan buys is not accuracy. Everyone knows week four will slip. What it buys is locality: when the class does not get fractions, you rework week four. Two more lessons, a different set of exercises. March stays where it was, because nothing in March depended on how Tuesday went.

Agents get this by decomposing the goal into a graph of sub-goals with the dependencies made explicit, then giving each node its own planner and executor working in a context cut down to that node. A revision step compares what happened against what the node’s plan expected. When a node drifts, you replan that segment alone. In a multi-step research task, the source-gathering node fails because a page is unreachable, so the retrieval strategy for that node changes and the analysis and synthesis already validated are left exactly as they are.

Two habits throw the benefit away. One is handing every sub-planner the entire history, which puts back the entanglement the graph was built to remove. The other is regenerating the whole graph on every local error, which is the expensive version of starting from step one. Bounded blast radius is the property you check before you leave a run going without you.

Planning is a skill, not a byproduct

It is tempting to assume that a model good at using tools will produce good plans as a side effect. It does not follow. Planning is a capability you train for on its own, by annotating task trajectories with the plans that would actually have worked and calibrating a planner against them. Treat it as separate and the practical freedoms follow: the two roles can run on different models, different budgets, different tool access, with the expensive reasoning bought once for the plan and a cheaper model doing the routine steps.

You can watch the division work on a long web task. The planner produces search, compare, submit. The executor deals with selectors and pages that render slowly. When the site reorganizes its navigation, the executor reports what it saw and the planner regenerates that segment, not the errand. An earlier piece argued that a plan means nothing until it has states, in the queue where the plan becomes real. States tell you where a run stands. Dependencies tell you how much of it to throw away.

So write the plan, knowing it will break. Then make sure it can break in one place.