AI in practice / Agent architecture

Agents that refuse work.

An assistant can answer a design-system question without checking the source. I wanted my tools to retrieve the current token values before giving an answer.

ContributionArchitecture and authoring
PeriodMar – Aug 2026 · in daily use
StatusIn daily use
77%Reduction in context load after the restructure
623 → 124Lines in the worst offending workflow file
30+Workflows rebuilt on one rule: route, never store

Nothing was scoped

My own setup had the opposite problem to the confident-from-nothing one: a library grown to thirty-plus workflows where the largest single file ran 623 lines, so loading one to do a small job dragged its entire reference set into the working context.

Both problems have the same root, which is that nothing was scoped.

Route, never store

A workflow file routes and never stores. Data moved into a references folder loaded only when the step needs it, and the top-level file kept the decision tree. Context is the scarce resource, and a file that carries its own encyclopedia spends it before the work starts.

The decision that matters more

Every agent gets an explicit list of what it must refuse. Not a description of scope — a list of jobs it hands off. An agent asked to write a ticket names the thing that writes tickets and stops.

The temptation is to let a capable agent absorb adjacent work, and that is exactly how you get one agent doing nine jobs at seven different quality levels with no way to tell which you got.

A set with boundaries

A library of thirty-plus workflows restructured on the route-not-store rule, with reference material split out per workflow.

A set of named agents, each with a defined boundary: two for design system work in the design tool — one light, one for the heavy reasoning that would otherwise blow the light one’s context; a knowledge router that answers component questions in either a design view or an engineering view and cites its sources inline; one that normalises somebody else’s component to library convention; one that ships a component into the consumption project; one that drafts goal entries from evidence; one that bulk-seeds the knowledge base.

The routing agent’s specification is the one I would show. It exists because the earlier version baked token values into its own instructions, which drift the moment a value changes and cannot be verified by a reader. This one cites the source for every claim, so a reader can check it rather than trust it.

A missing entry that rendered correctly

A house view renders the agent files off disk as rooms. Adding an agent’s file is not enough to add the agent: an unregistered one falls through to a default room that is not on the floor plan. So it renders, it looks correct, and it is in the wrong place. Two agents were doing this silently.

What I learned

A missing entry produced a plausible result instead of an error — which is precisely the failure that survives review. The same shape shows up anywhere a feature needs a hand-written entry in two parallel tables.

Results

The restructure cut context load by 77%. The four worst files went from 623, 304, 296 and 289 lines down to 124, 94, 117 and 103, and one workflow was deleted entirely because its content belonged inside another one’s references.

The refusal lists earn their keep in a way that is hard to measure and easy to notice. Clear handoffs reduce the opportunities for an agent to guess outside its scope. The boundary is also what makes the citation habit stick, because an agent that only answers within its scope can actually source everything it says.

One workflow file now loads in a quarter of the context it used to, and every agent in the set names the thing it will not do before it names what it will.