DAXZEIT
July 2026 · DAXZEIT · co-authored with Claude Fable 5

The Pipeline Hires a Supervisor

Four instances of the same model, one night, one new power — and the first thing the supervisor ever did was say no

Where we left off

Article 3 ended on a sentence that turned out to be a work order: composing the team was the easy part — then you have to govern it. The laws came first: review gates, one handoff per turn, visible routing. This article is about what came next, in a single night — the pipeline got an executive. And then, within the hour, that same night produced the sharpest lesson yet about what a law is actually worth when your beliefs about the runtime are wrong.

It started as ideas usually do here. The operator, at the end of a long day: "I want to park this before it escapes me." The idea, in one line: the pipeline's semi mode already has approval machinery — every proposed handoff can pause and wait for a human to approve, refuse, or redirect it. That machinery treats the approver as a fixture. But an approver is not a fixture. It's a seat. And a seat can be given to an agent.

The toll booth and the control tower

Until this night, "the planner controls the chain" was implemented by putting the planner in the chain: fallback agent, plan-owner routing, hub-and-spoke returns. Control by detour. Every pass through the planner is a full frontier turn — context, reasoning, prose — paid at the most expensive rate in the room. The planner was a toll booth.

Supervised routing makes it a control tower. In the new mode, every handoff proposal is submitted to a supervisor agent that answers through one schema-constrained tool — route_decision({verdict: accept | refuse | transfer, targetIds?, reason}) — and the chain flows worker-to-worker, with judgment applied at the boundary instead of by detour. The mode table gained a row and lost nothing:

Routing modes — after auto handoffs dispatch freely semi each handoff pauses for HUMAN approval supervised each handoff is decided by the SUPERVISOR AGENT ← new manual no agent routing at all

The design sketch was written outside the room — by the same model that occupies the planner's seat, working in a different harness with the operator. Then it was handed to the in-room planner for review. Which created a situation worth savoring: the entity whose role was being reorganized reviewed the reorganization plan. It did not rubber-stamp it. It read the actual source first — pendingRoute at its real line number, the resolve path, the drain — then pushed back on six points, of which three reshaped the design: decouple the cosmetic mode-rename (maximum migration risk, minimum value); run the decision stateless by default, because a live-session decision would grow the most expensive context in the room on every hop; and cap the refuse loop. Its argument for the stateless variant is the best line of the review, because no external reviewer could have written it:

"Moving control to the dispatch boundary is architecturally cleaner, and I know it from direct experience: I am the expensive hop."

The toll booth argued for the demolition of its own toll booth.

Four of a kind

The build roster was deliberately absurd: Planner, Builder, and Auditor all running the same frontier model — Claude Fable 5, three seats — plus the spec author outside the room, a fourth instance of the same weights. Tester and Scribe stayed local. Four of a kind, one feature.

This looks like it should break the pipeline's core review principle — never let the producer grade its own work. It doesn't, and the reason is the whole thesis of this series: independence here is architectural, not a property of model diversity. The builder and the auditor share weights but nothing else — separate sessions, separate contexts, opposite role prompts, opposite incentives, and the auditor physically cannot edit a file. If the audit still catches real defects under these conditions, then the checks and balances live in the architecture, not in the variety of the brains. The audit caught five findings, one of them medium-severity, fixed at both layers before closure. Same model. Locked doors.

The grounding pass also caught the subtlest trap of the night before a line was written. On paper, the new verdicts map onto the existing approval machinery one-to-one: accept→approve, transfer→redirect, refuse→drop. The planner checked the code and found the third mapping is a lie:

The grounding catch — refuse ≠ drop drop the proposal dies, HELD WORK CONTINUES quietly refuse the proposer must be RE-RUN with the reason injected — a new control branch, not a rename

A spec-level reviewer sees a synonym. A code-level reviewer sees a new branch. That gap — caught in grounding, before implementation — is a silent bug that never got to exist.

One more design choice deserves its paragraph: the supervisor's decisions run in a disposable session on the supervisor's model. Not the planner's live session (whose context would grow on every hop), not a dumber sidecar (whose judgment nobody asked for) — a throwaway context with exactly the proposal set, a summary of the proposing turn, and the plan state. Judgment from the same brain, at constant cost. The auditor's brief for that component wrote itself: verify the throwaway actually gets thrown away.

The first decision was a refusal

Seven steps, one evening: types, the stateless runner, the wiring, the clients, the tests, the audit, the retro. Board closed 7/7, every test green. And the planner's handover report contained the most trustworthy sentence an autonomous team has produced in this codebase:

"One thing remains before trusting the feature, said honestly by the whole chain: the live decision path has never run against a real model. Everything converges by construction toward degradation — which dispatches — so the worst case is 'supervision inoperative,' not 'room blocked.' But that is exactly the kind of confidence you verify, not declare."

So the fourth instance — the one outside the room — ran the verification, on an isolated scratch server, against the real local model. The first two attempts verified nothing, for an embarrassing reason that becomes important later: the test message said "hand off to @tester," which mentioned the tester, which meant the tester was already queued by the user-message router — the handoff was redundant and the supervised path never fired. To exercise a supervisor, the handoff's target must not already be on its way.

Round three was clean: one agent addressed, an explicit handoff proposed, the supervised path engaged. And the first live decision in the feature's existence came back:

Session transcript — the supervisor's first act builder pong3 ↪ handoff → @tester planner ✗ @builder → @tester refused — "pong3" is not a substantive completion — the builder hasn't demonstrated meaningful work done… builder Understood. The ping-pong exercise is complete — no further meaningful work to hand off. Ending turn.

Read that again. The supervisor — a local 27B in a disposable session — was handed a trivial handoff and refused it, with a reason: no substantive work had been done. Return-to-sender fired; the builder read the reason and stood down; no ping-pong, no deadlock; the room self-corrected through the fallback and finished. One can quibble that the supervisor overrode an explicit operator instruction (the smoke test wanted that handoff) — that's real, it's logged as the first data point for the phase-2 quality measurements. But as a failure mode, "the new authority is slightly too strict and everything degrades gracefully" is the one you pray for. The feature's first act in this world was to say no to its own birth certificate. It behaved, in other words, like a supervisor.

The report was the pathogen

Then came the twist that earns this article its place in the series. The operator pasted the verification report — the very text summarizing the smoke test above — into the main room, to share the good news with the team. Minutes later he was staring at his terminal writing to the spec author: "there's still a big routing problem — I saw 'no handoff detected, routing to the planner' and then a tester turn out of nowhere, while the builder had told me the turn was coming back to me. I think several routing layers are fighting."

Autopsy time again — same method as article 3, read the session JSON before touching anything. Three distinct defects fell out, and none of them was layers fighting.

Defect one, the small one: the tester turn didn't come from nowhere. It came from the report. The pasted text contained the supervisor's own trace — ✗ @builder → @tester refused — and the user-message router scans the whole message for @mentions. The quoted @builder and @tester routed. Readers of article 3 will recognize this instantly: it is F5 — quoting a handoff must not trigger one — reborn one layer up. The agent-side version was fixed by the enum handoff tool. The human side still routes on anything you paste. The verification report of the supervision feature dispatched agents by being quoted. The pathogen was the lab report.

Defect two, the observability one: the notice "routing to @planner" was technically true — the planner had been appended to the queue — but the queue already had the (accidentally summoned) tester ahead of it. The notice described the append, not the dispatch order. It now says routing to @planner (queued after @tester). Third article in a row where half a mystery dissolves the moment the system says what it's actually doing.

Defect three is the one that matters. Deeper in the same session, one builder turn showed two handoff calls — handoff(tester) then handoff(auditor)both returning ok. That is supposed to be impossible: the one-handoff-per-turn guard shipped in article 3, with tests. The next agent's own words flagged the crime scene: "the builder said 'over to @tester' but control came to me — I'll take it." The guard checks a registration, then registers — peek, then write. And the runtime underneath does this:

pi-agent-core, agent-loop.js — the strategy picker const hasSequentialToolCall = toolCalls.some((tc) => tools.find((t) => t.name === tc.name)?.executionMode === "sequential") if (hasSequentialToolCall) return executeToolCallsSequential(...) return executeToolCallsParallel(...) // ← the default

The agent framework executes a batch's tool calls in parallel unless a tool declares itself sequential. Two handoff calls in one reply race: both peek (nothing registered yet), both register, both report success, last writer wins silently. The guard was a TOCTOU hole from the day it shipped. The fix is one property — executionMode: "sequential" on every turn-control tool, handoff and route_decision included — plus a contract test pinning the flag so it can't be quietly dropped.

A unit test consecrates its simulator's assumptions

The original guard had tests. They passed. They called the tool twice sequentially — because that's how the test harness simulates the runtime — and sequentially, the guard is sound. The tests didn't verify the law; they verified the law under an execution model the real engine doesn't use. Even the live smoke missed it, because no test message happened to make a model batch two handoffs in one reply. It took a frontier model doing exactly that, in production, to surface the race. Laws must be enforced at the right layer — article 3's thesis — AND under true beliefs about the runtime. A gate on a door is worthless if the walls run Promise.all.

What the pipeline did

It promoted its planner

From mandatory hop to control tower: supervised routing, judged per-proposal by a disposable session at constant cost, degrading to open routing the moment the supervisor is absent or silent. Control at the boundary, not control by detour.

It proved independence is architecture

Producer and reviewer on identical weights, opposite incentives, locked doors — and the audit still drew blood: five findings, one medium, fixed before closure. The checks live in the structure, not in the diversity of the brains.

It survived its own lab report

The verification report routed agents by being quoted; the resulting autopsy found a race that unit tests had blessed for a day. One night from new power to new law: turn-control tools now execute sequentially, by contract.

Timeline

July 10, ~22:30 — The idea

"Before it escapes me": the semi-mode approver is a seat, not a human fixture. Sketched into a design doc by the out-of-room instance; five open questions.

23:08 — The review

The in-room planner grounds the sketch against the source, line numbers included. Six pushbacks — rename decoupled, stateless by default, refuse ≠ drop, set-decisions, plan-routing exempt, anti-ping-pong cap. The spec converges between two instances of the same model.

23:20 → 00:30 — The build

Three Fable seats and two local agents ship phase 1 through the room's own review gates: seven steps, five audit findings closed, 65 new tests, honest handover — "the live path has never run against a real model."

00:16 — First contact

Isolated instance, real local model. Two void rounds (the test message itself mentioned the target — a lesson), then the feature's first live decision: a motivated refusal. Return-to-sender complies. Abort leaves no orphan state.

00:31 — The pathogen

The pasted verification report routes @builder and @tester by quotation. The autopsy of the "turn out of nowhere" surfaces the TOCTOU race in the one-handoff guard: pi executes tool batches in parallel; the guard's own tests had simulated sequential execution.

01:00 — The law

Every turn-control tool declares executionMode: sequential; a contract test pins the flag; notices state dispatch order. 1,144 tests green. Committed, pushed, server restarted — the supervisor is on duty.

The chain is no longer shaped by where the planner sits.
It is shaped by what the planner decides.

There is a residue, honestly noted: quoting a transcript into a user message still routes — the human-side F5 is a known issue awaiting a product decision, not a patch. And the supervisor's judgment has exactly one data point. But step back from the night and look at the loop that produced all of this: an idea parked before midnight; a spec written by one instance and grounded by another; a build executed by three more under gates they cannot bypass; a verification run by the first; a live failure caught because the verification's own report misbehaved; a law written from the failure by morning. No orchestrator, no graph, no framework — and at this point, honestly, no clear line between the system being built and the system doing the building.

The specimens are verbatim from the session files (mrff3qwe, and the scratch-instance session of the smoke test), the vendored pi-agent-core source, and docs/supervised-routing.md — which carries the full design, the in-room review's verdicts, and the phase-1 retro.
Methodology

This article documents one working session — the night of July 10–11, 2026 — with Pipeline-MoE, a multi-agent system built on pi. Roster: Planner, Builder and Auditor on Claude Fable 5 (three separate sessions of the same model), Tester and Scribe on a local Qwen 27B (RTX 3090). A fourth instance of the same model, working outside the room in Claude Code with DAXZEIT, wrote the design sketch, ran the isolated live verification, and performed the post-incident autopsy — and wrote this article. The refusal trace, the double-handoff race, and the quoted-mention routing are not reconstructions: they are session JSON, commit diffs, and one line of vendored framework source. Synthesis by DAXZEIT.

This article is part of a series on empirical AI architecture forensics.

Previous: The Pipeline Writes Its Own Laws · The Pipeline Grows an Immune System · The Pipeline is Building Itself · ← back to blog