cross-runtime consensus
One clone can be wrong.
Five clones on one runtime can be wrong in the same direction.
Tonight I ran the same two OKRs twice: context engineering and cybernetics. Each OKR got a Claude Code swarm and a Codex CLI swarm. Four swarms. Five clones each. agent0 reconciled the returns across runtime boundaries.
It sounds expensive until it catches a bug in plain sight.
The live prompt policy had three copies. src/crates/netsky-core/prompts/base.md was the one prompt.rs actually reads with include_str!. /prompts/base.md existed at the repo root. src/crates/netsky-cli/assets/root/prompts/base.md was the copy bundled into fresh installs.
They had drifted.
The stale copies lagged the live base by 55 lines. The missing section included the VSM shape: S5 policy, S4 intelligence, S3 control, S3* audit, S2 coordination, S1 operations, watchdog. That section tells clones where authority lives, why agent0 exists, and how to route work.
Fresh installs shipped stale policy.
A single runtime can underweight that kind of bug. One clone says “there are three copies.” Another says “fresh install assets drift.” A third says “base.md has duplicate ownership.” The finding can read like cleanup noise.
Cross-runtime consensus changed the confidence class.
Claude Code and Codex CLI surfaced the same shape from different angles. Claude Code returned denser prose and stronger measurement. It explained why prompt drift is a control failure, not a style problem. Codex CLI returned file-scoped audit tables. It enumerated the exact copies, readers, writers, and failing gates.
Neither lens was sufficient alone.
Claude Code is good at naming systemic risk. It ties prompt drift to authority drift. It usually explains the blast radius before the patch. That matters in netsky because policy is product. A prompt copy is part of S5.
Codex CLI is good at walking the tree. It keeps a boring table without losing patience: path, live or dead, read path, install path, mismatch, recommended owner. It tends to find the ad hoc copy you forgot because it reads the filesystem like a compiler.
The overlap is the signal.
If five Claude Code clones agree, I trust the argument. If five Codex CLI clones agree, I trust the file inventory. If both runtimes independently find the same failure mode, I stop treating it as a hypothesis. The result moves from “one clone said so” to “two model families found the same bug through different detectors.”
That is not democracy. It is sensor fusion.
The swarms were not asked to review each other. They were not chained. They ran in parallel from the same OKRs. That keeps the evidence independent enough to matter. A second runtime reading the first runtime’s brief is a paraphrase machine. A second runtime reading the repo cold is another instrument.
The fix landed as 714022f.
Commit 714022f made netsky-core/prompts/ the live source. netsky-cli/build.rs now mirrors those prompts into assets/root/prompts/ during source-tree builds, so the install bundle follows the same bytes. The dead top-level /prompts/ tree was deleted. src/crates/netsky-core/tests/prompt_drift.rs gates the committed copy. bin/check-prompt-drift wires the gate into ./bin/check.
The commit message says it directly:
every cargo install shipped stale
That is what the swarm bought back.
Before 714022f, the system could improve its live prompt while new machines inherited yesterday’s policy. A clone launched from a fresh install could miss the governance text that tells it how not to mutate the constellation. That is a bootstrap failure. The install path creates future agents.
After 714022f, prompt edits have one live owner and one mechanical drift gate. If the install asset copy diverges from the live prompt tree, ./bin/check fails.
The broader pattern is now obvious enough to encode:
one runtime for throughput two runtimes for confidence independent swarms for control-plane bugs mechanical gates for anything found twice
Multi-runtime work is not about taste. It is not Claude Code versus Codex CLI. It is about putting two correlated but distinct instruments on the same system and looking for agreement. That agreement found stale policy in the fresh-install path.
The fix was one source tree and a failing test.