jonnifyagile agents

A5.7.3 · dive 3/3

The failure mode

The two earlier dives showed the thesis where it pays off. This dive shows where it fails: an under-specified slice, run fast, becomes a large step in the wrong direction.

An under-specified slice hands the agent nothing to implement, so it improvises — and because the agent is fast, its speed multiplies whichever direction the gap sets. A small slip, run fast, is a large step away from done. The remedy is never to slow the agent down; it is upstream, in the spec. Toggle the figure on the right to count what an under-specified brief leaves the agent to invent.

What an under-specified brief leaves the agent to invent · toggle the brief

the four how-to-build decisions a brief either fixes or leaves to the agent which sources to read invented the runtime shape invented the build order (T1→T7) invented the proof gates invented decisions the agent must invent: 4 of 4
Under-specified brief — how-to-build decisions the agent must invent: 4 of 4. With the decisions left open, the agent fills each with a choice the Operator should own; an under-specified slice does not stop the agent, it hands it the architecture.

The precise claim

The outcome of a slice is speed × direction. The agent supplies the speed; the spec sets the direction. On a well-specified slice direction = +1, and high speed is a large step toward done. On an under-specified slice the agent invents the missing decisions, and any one wrong invention sets direction = −1 — so the same high speed is a large step away from done.

Read that carefully: speed is not the hazard, an unset direction is. A slower agent on an under-specified slice still walks the wrong way, only slower; it does not walk toward done. The remedy is to specify the slice, not to restrain the implementer. The fix lives upstream, in the brief — the same place the two earlier dives located the value.

The agent

Supplies speed — fast, tireless implementation of whatever the brief specifies. Speed has no sign of its own; it magnifies the direction it is given.

The spec

Sets direction — +1 when the slice is well-specified, −1 when an invented decision points the work the wrong way. Direction is the Operator's to fix.

This is the same lesson A1.05 drew as “correct by definition” from the other side: when the definition is incomplete, the agent completes it — and a fast completion of the wrong definition is the failure mode.

Speed multiplies direction

Hold the direction at −1 — the under-specified slice — and vary the one thing the agent controls: its speed. The outcome is speed × −1, a signed magnitude. The faster the agent, the larger the step; the sign never changes. This is why slowing the agent down does not fix the failure mode: it shrinks the magnitude of a step that still points the wrong way. Only changing the sign — by specifying the slice — turns the speed back into progress.

Drag the speed below, from low to high, over the under-specified slice. The magnitude of the wrong step grows with the agent's speed; the direction stays negative until the spec changes it.

Outcome = speed × direction, with direction = −1 · drag the agent's speed

9
outcome = speed × direction  (direction = −1, under-specified) ← away from done toward done → done = 0 −9 outcome (signed): a large step in the wrong direction
Under-specified, high speed: outcome = high speed × −1 = a large step in the wrong direction — the agent's speed multiplies the error, it does not cause it. The fix is upstream: specify the slice, do not slow the agent.

Slowing the agent shrinks a wrong step; specifying the slice is the only move that changes its sign.

On the Portal — the f6.1.llms.md risk register

The Portal's web-bootstrap brief, f6.1.llms.md, is a slice specified down to F6.1-R1–R8, the T1–T7 task DAG, and per-story Acceptance gates. Its risk register names exactly the two hazards an under-specified or unverified slice produces — and closes each one upstream, in the brief and in the review, never by slowing the build.

RK-1 — the opened-gap. Leave the supervision tree's child list open and an agent assembling a “three-child” tree can omit the one child every render depends on. The register states it plainly: the tree omits Portal.Store — dropping the Store courses_of/1 reads, every course render is a dead-process crash, not a 404. The brief closes it by pinning the tree: Portal.Application keeps exactly [Portal.Store, Portal.EventStore.adapter(), {Portal.Engine, []}], and the Apollo gate makes a real Portal.courses_of/1 render, not merely a boot. The boundary RK-1 protects is the one the companion course draws at the facade boundary — the web touches only the Portal facade, so the Store must be present for the facade to read.

RK-3 — loss of independent verification. The register calls it the solo-topology hazard: the same context that builds also judges. When the context that builds the slice is the same one that reviews it, a fast build is graded by the same fast assumptions that produced it. The brief closes it by restoring an independent evaluator — a different context than the builder adversarially verifies and mutation-probes the work.

# f6.1.llms.md — the risk register: what an under-specified or unverified slice produces
#
# RK-1  The opened-gap: the tree omits Portal.Store.
#       Dropping the Store courses_of/1 reads → every course render is a dead-process crash, not a 404.
  fix: Portal.Application keeps exactly
       [Portal.Store, Portal.EventStore.adapter(), {Portal.Engine, []}]   # pin the tree
  gate: a real Portal.courses_of/1 render, not merely a boot
#
# RK-3  Loss of independent verification (the same context that builds also judges).
  fix: an independent evaluator — a different context than the builder verifies and mutation-probes

The principle

The failure mode is an under-specified slice: the agent improvises, and its speed multiplies the wrong direction. The fix is upstream, in the spec and the review — not in the agent.

On the Portal

f6.1.llms.md's RK-1 (omit Portal.Store and every render crashes) and RK-3 (the builder also judges) are the under-specified and unverified hazards the brief closes — by pinning the tree and restoring a separate evaluator.

When an agent goes wrong fast, the cause is almost always a slice that was not specified — fix the brief, not the agent.

Recap — fix the brief, not the agent

The thesis fails on an under-specified slice. The agent has nothing to implement, so it invents the missing decisions; because it is fast, its speed multiplies whichever direction those inventions set, and a small slip becomes a large step away from done. Neither f6.1.llms.md's RK-1 nor RK-3 is fixed by a slower agent — both are fixed upstream, by pinning the slice in the brief and by restoring an independent review. This closes A5.7: the value is real on a well-specified, gated slice, and the failure mode is the absence of that specification.

Back to the hub: A5.7 · Pragmatic Programming with Claude Agents — the thesis, with the pairing, the value, and the failure mode in one place.

References

Primary sources for design by contract, for why an open-ended goal is where an agent improvises, and for small specified steps as the guard against fast error — with the hub, the prior dive, and the companion chapter whose risk register this grounds on.

Sources

Related in this course