Running agents

Table of Contents

Status: target state. This page describes the framework we are building, not the catalogue as it stands today. Where this page and the current catalogue disagree, the catalogue is what runs.

1. Summary

A regulator must reach the system it regulates. This page states how: how an agent is configured, where it may write, what it may do without asking, and what it needs before it can be left running with nobody watching.

The unattended case is the one that tests the framework. An advisory default helps an agent choose well while a person is present and does nothing at three in the morning, so an unattended run depends only on the parts that bind (The Cybernetic Skills Framework). Which parts those are is stated at the end of this document.

For the actor vocabulary and what each role may see and change, see Systems and levels.

2. Detail

The framework is built so that the mode (Methods and the mode) can be started on an agent and left to run. The levels decide what an agent sees, the methods decide what it does in what order, the recipes are what it reaches for, and the independent checkers are how it knows it succeeded. This document states how agents are configured and bounded.

2.1. Grounds for Delegation

Three reasons, and they are the only three.

  • Context. Bulk reading belongs in a delegate, with a summary returned to the parent. A parent that reads a hundred files has spent its context on material it will not use again.
  • Parallelism. Genuinely independent slices of work run at the same time, one delegate per slice, with the results aggregated.
  • Isolation. Work that must not touch the parent's working tree gets its own.

Not a reason: hoping a second attempt on the same model will be better than the first. A re-attempt at identical configuration varies the sampling and nothing else, and where a genuine second perspective is needed the answer is deliberation or an independent checker rather than another agent.

Fan-out has two shapes and they fare differently here. Fan-out for coverage survives intact, because its value is parallelism and parallelism does not depend on diversity. Fan-out for competition, several attempts at one brief judged and grafted, depends on diversity and is therefore weakened rather than lost. Cross-family diversity is unavailable to this project. Diversity across models within the family is available, and arena supplies it (The pstack Collection).

The bound is worth stating wherever competition is used. Models trained together share more priors than models trained apart, so an intra-family bakeoff is a weaker instrument than a cross-family one and a stronger one than a single agent trying twice. Use coverage freely; reach for competition on design questions, and say which of the two you are relying on.

2.2. Isolation

Parallel writers get their own worktree. This is not tidiness: two agents in one tree corrupt each other's work in ways that are hard to attribute afterwards, and the failure surfaces long after the cause.

Each environment carries its own worktree, its own ports, its own .env, and its own database, provisioned through compass rather than by hand. compass fleet is the supervisor's view: what every worktree is doing, which branch, which task, which pull request.

Two shared resources cut across the isolation and must be handled explicitly, because a worktree does not protect them: the git stash stack, which is shared across every worktree in the repository, and any remote the agents push to. Neither is a place for a delegate to improvise.

2.3. Configuration

Five fields, and the model is deliberately not among them.

Field Decides
System The role: what it must read first, what it may do
Level Which slice of the catalogue it sees
Environment Which worktree and database it may write to
Finish condition When it is done, checkable by the agent itself
Authority What it may do without asking

The model is inherited from the session that spawned the agent. Roles are not routed to model tiers by default: the operator chooses one model and every delegate uses it, which keeps the configuration small and the behaviour predictable. Where an instrument depends on diversity, as arena and interrogate do, the model is named explicitly for that call and the bound on what it buys is stated.

2.4. Unattended Runs

An agent left running needs four things the attended case can do without.

2.4.1. The Finish Condition

"Work on this for a while" measures motion. "Zero old callers remain and every parser fixture passes" measures a result, and the agent can evaluate it without asking. An unattended run without such a condition does not terminate; it drifts until something interrupts it.

2.4.2. The Authority Boundary

By default, irreversible and outward-facing actions stop and ask: pushing to a shared branch, deploying, deleting data, raising a pull request, anything that leaves the machine. That default is right when a human is present and fatal when one is not — the run stalls at the first gate and the night is wasted.

So authority is granted explicitly and in advance, in the request that starts the run, and it is granted narrowly. "Commit and push to this branch without asking; do not open a pull request; do not touch main" is an authority grant. "Be autonomous" is not, and an agent should treat it as an instruction to proceed on reversible work only.

An agent that reaches the edge of its authority stops and says so. It does not widen its own grant.

2.4.3. The Decision Trail

The human was not watching, so the run must be reconstructable afterwards: what was decided, why, on what evidence, and what was discarded. Prefer evidence a reviewer can re-run — a script, a recipe, a test — over a claim in prose. The trail plus the diff is what makes an unattended result trustworthy rather than merely finished.

2.4.4. Liveness, Failure and Resumption

  • Liveness. A silent agent and a stuck agent look identical from outside. Progress must be visible in the trail, so a supervisor can tell one from the other without interrupting.
  • Failure. On a genuine dead end an agent stops and explains, and does not thrash. Repeatedly retrying a failing approach burns the budget and buries the cause.
  • Resumption. A run may be paused at an atomic boundary and resumed later from its trail and branch, by a different agent. A run that can only be abandoned and restarted is not automation.

2.5. Consequences for the Framework

The parts of this architecture that matter most to an unattended run are the ones that bind rather than advise: the finish condition, the authority boundary, the read-only Systems, the isolation, and the independent checkers. Everything advisory, including the regulatory functions themselves and the default visibility at most levels, helps an agent choose well while someone is watching and does nothing at three in the morning.

2.6. Inventory

The fleet is live state rather than a table. compass fleet reports what every worktree is currently doing: its branch, its task, its open pull request and its synchronisation with the trunk. That report is the inventory, and a written copy of it would be wrong within the hour.

3. See also

Emacs 29.3 (Org mode 9.6.15)