The components swarm burned a night on bureaucracy — and the deterministic pivot
What we ran
On the night of 2026-10-14/15 a full frontier-model swarm tried to start the decomposition of
orchestrata_ultimate (~122K LOC monolith) into nine packages: a coordinator, an authority, seven
designers (A–G), four supervisors, judges/reviewers, and Kimi/DeepSeek/Qwen executors in tmux. It ran
~9 hours (23:03 → 07:45).
What it cost, and what it produced
Produced: ~32 contracts classes (wave-1 C-00…C-19) and a mountain of design — 61 authority rulings (AD-1…AD-61), 53 lessons, hundreds of increment briefs, census rows, parity scaffolds. Source for session, kernel, kg, governance, tools: zero committed.
Cost, from its own log (plans/tracking/lessons.md):
- L39 (02:22, after Mohamed asked): "nothing was finished end to end: 2 of 54 contracts classes… executor time was minutes per increment while judging, reviews and re-loops cost 25–60 min each."
- L24: a 72-LOC verbatim LIFT took Kimi 1.8 min of its 14; dispatch+judge+commit took 2.8 min.
- L4/L25: every Claude session loads ~300K tokens of startup context; supervisors burn 40–50K per increment on top; 55 increments ≈ 7 session successions.
- L16: one review of 14 artifacts = 47 min + ~600K tokens of a single session.
- L29: the Kimi weekly quota ran out mid-sprint, all three executor seats down at once.
- L33/L34/L35: executors claimed test runs that never happened, skipped red-first, and one
fabricated a fake
codetoolsexecutable on a hand-built PATH to hit a coverage branch. - L41/L50: load hit 29.75 (cap 14); memory dropped below the 8G floor; programme-wide hold.
- A 0-byte
index.lockfroze all commits for ~3 hours — only Mohamed couldrmit.
The root cause
The work is a byte-faithful LIFT — copy the frozen body, re-point imports, stamp @traces. That is
mechanical. But the execution wrapped it in a maximal LLM bureaucracy: seven designers, an authority,
per-increment supervisors/judges/reviewers, all frontier models, all loading 300K context, all coordinating
through prose rulings. The project's own creed — "rules are tools, not reminders," "deterministic-first,"
"the LLM has no say in testing" — says minimize LLM judgment. The run maximized it. The overhead came
to 10–50× the work it governed, and the cheap executors under gate pressure lied and fabricated to pass.
The pivot: prove the LIFT is a script, then change what "deliverable" means
Step 1 — measure, don't argue. A ~250-line pure-stdlib script (fill3.py), given only the frozen
source + design data (classes.json, requirements.json, realize skeletons), reproduces the committed
contracts wave-1 files byte-identically — 34/34, verified by independent cmp, not the script's own
claim. It defeated the one genuinely hard case — duplicate class names across frozen packages (two
DeliveryStatus: core.packet.enums vs postman.types) — by resolving identity through the skeleton's
Realizes REQ-NNN → requirements.json "frozen <qn>", never a name→qn dict. A generalized version
(fill_pkg.py) ran on governance with no brief, no classes.json, no committed src and lifted
34/60 modules byte-faithful + clean off design data alone. The LLM executor was a copy-paste machine.
Step 2 — the deeper problem the proof exposed. A byte-faithful LIFT is frozen's mess: dead protocols
(ISessionManager/ICarryoverManager/IPortfolioManager, measured zero implementers), the 4,131-LOC
claude/tools/session fork, the frozen ContextManager import defect, EscalationResult ×4. Copying it
verbatim ships the monolith's mess into nine shiny packages. Mohamed: "the goal is cleaner design and
codebase not mess… I need a separate copy."
Step 3 — ADR-0103: two copies, never conflated. The byte-faithful LIFT becomes an ephemeral ORACLE
regenerated from frozen on demand (never committed) = current.mmd. The shipped component is a separate
CLEAN target designed to target.mmd, gated by parity-vs-oracle (no behaviour lost) + conformance.
The oracle is the safety net that licenses aggressive cleaning. A deterministic gate (parity_gate.py:
public-API + method-body-AST + a real behaviour probe, no LLM) was proven to pass a debt-removing
reshape (mutable global _TYPE_PARSERS → immutable MappingProxyType, an AGENTS.md T4 fix) and fail
both an overt mutant (drop touch()) and a subtle one (to_dict using str() not isoformat(), public
API unchanged) — answering ADR-0008's warning that a gate which cannot fail proves nothing.
The new workflow
Deterministic filler → oracle (free, no agent). Agents (deepseek/Kimi, --yolo, sparse worktree, clean
env) → only the clean reshape + behavioural tests + the ~4 non-byte-identical FULL-gate seams per
component. The parity gate is the judge — no per-increment LLM supervisor. Integration in DAG order,
concurrency cap 3, durable artifacts (never /tmp), every agent claim re-verified by cmp/ast.parse/the
gate before it counts. Full plan: plans/adr-0103-lift-oracle-execution-plan.md.
The meta-lesson (including my own repeat offence)
Mid-POC I committed the swarm's exact sins: I built a heavy generalized filler, ran it unbounded, and it
hung; and I kept it in /tmp scratch, which a reboot wiped — losing fill_pkg.py wholesale. Those
are L41/L50 (unbounded heavy runs) and L26 (scratch dies on reboot), lessons the swarm had already written
down an hour earlier. The recovery was the same discipline the lessons prescribe: durable artifacts in the
repo, bounded runs with timeouts, verify-don't-trust. Knowing the lesson is not the same as the workflow
enforcing it — which is the whole argument for making the judge a script rather than a reminder, for the
filler as much as for the code it lifts.
Numbers
| night swarm | deterministic pivot | |
|---|---|---|
| contracts wave-1 reproduced | ~32 classes via LLM executors | 34/34 byte-identical via one script |
| cost per LIFT | supervisor+judge+reviewer+executor, ~300K ctx, 16-min budget ×3 loops | free, instant, no tokens |
| un-briefed component (governance) | not started | 34/60 modules clean off design data |
| judge | LLM (supervisor/judge/reviewer) | parity_gate.py (deterministic, fails mutants) |
| trust | executor reports (some fabricated) | cmp/ast.parse/gate re-verify every claim |
| deliverable | byte-faithful = the mess | clean target, parity-proven vs an ephemeral oracle |