Docs

Reliable by Design · 05.12

Atomic Evolution: Changing a Live Run Safely

Mid-run graph changes must pass the same contracts as authoring — no data-coupling break, no gutted capability, never a regression below the graph's proven green.

Atomic EvolutionAgent-primary

The contracts are steering, not a cage

When an agent — or the operator — proposes a change to a graph that's already running, the change has to survive the same contracts that guard authoring in the first place. The framing matters: a rejected evolution isn't a dead end, it's a typed instruction back to the agent naming exactly what regressed, so it can fix and re-propose rather than being stonewalled with no path forward.

The monotonic ratchet: never worse, not already perfect

Evaluating a proposed graph against its base is a pure diff of contract errors — no DB, no side effects. A coupling error present in the merged graph but not in the base is a genuine regression the edit introduced and is rejected; a coupling error that was already there before the edit is allowed to persist, because the ratchet only demands "never make it worse," not "must already be flawless" — so incremental progress on an imperfect graph is never blocked by unrelated pre-existing debt. One category of violation is never negotiable regardless of pre-existing state: an approval-integrity bypass, like an || true spliced in front of an irreversible action, is always a hard rejection.

A dropped capability — an agent worker, an external fetch, an integration, a persistence step — compared against the workflow's stored intent manifest surfaces as a visible warning, not an automatic block: gutting a load-bearing capability is loud and flagged, but a legitimate, intentional scope change is still allowed to go through.

Three levels of who's allowed to commit

AuthorityBehavior
operatorThe agent cannot self-evolve the graph; an evolution becomes an explicit operator decision. Today's default for audited pipelines.
agent_within_greenThe agent commits freely as long as the ratchet holds (no new regression) and budget allows — the recommended default for agent-primary Apps.
agentFull autonomy within budget — the ratchet still holds; an evolution can never silently corrupt the graph, no matter the authority level.

Continue