Architecture review · 2026-07-09

The FleetOS / StarGate harness, examined by its own constellation

One operator runs a fleet of autonomous coding agents. The harness decides what agents may do, what leaves the machine, what the human sees, and what the system remembers. Four frontier models reviewed the whole design; this document is the adjudicated synthesis, the weak points, and the process to follow.

Grok 4.5 lead reviewer GPT 5.6 Sol architecture + economics (ultra) Claude Fable 5 operator loop + doctrine (lane 5) Fugu Ultra trust boundaries · binding judge Leon operator economics ruling

Companion page: The cockpit, as we believe it → the operator view, the evidence surfaces, and the six card kinds rendered with real Grok-4.5 output from this build's decisions.
Workbench proposals: four competing surface sets, rendered → the Sol/Grok/Fable/Fugu selections from the full catalog, each mocked by Grok 4.5 with real build data.

01The harness at a glance


The harness is five subsystems around one human. FleetOS governs what a dispatched agent is allowed to claim and change. StarGate governs everything that leaves the machine. The cockpit renders decisions to the operator as generated HTML cards. The memory layer (KAPATI wiki, replay corpus, calibration) is supposed to make past failures preflight future dispatches. The constellation is the routed model fleet doing the work.

OPERATOR judgment + authorization only COCKPIT decision cards · verdict strip · folds hash-chain · break-glass · EXECUTED law card generator: 96/96 soak FLEETOS broker · packets · materiality terminal-state grammar · claims scope / diff / IAL budgets · hooks eval / canary / replay · indexer ~980 tests green STARGATE egress authority · the jail governed dispatch · idempotency tamper-evident registry · drivers control-plane agent launches live build: 10/10 · 7 bugs fixed MEMORY KAPATI wiki (5 pages, tag-match) replay corpus · calibration log wisdom classifier (pending) Ring 6 gates (data-starved) the open end of the loop CONSTELLATION five tiers, one egress chokepoint — full structure in §02, Fig. 2 HOMER external done-claim gate (SaaS)
built + live aspirational / partial
Fig. 1 — The harness map. The mutation spine (FleetOS → StarGate → cockpit → operator) is solid. The memory loop is dashed: that is the review's central finding.
The central finding (Grok, upheld by the panel) "You have a pipeline with open ends and call it a harness." The dispatch→execute→gate→verify spine is real and tested. The learn→preflight loop — wiki, wisdom classifier, Ring 6, external findings — is three incomplete memory loops pretending to be one system. Fable sharpened it: the wiki (hydration base) and the binding doctrine (CLAUDE.md + agent-harness prose across three repos) are disjoint corpora — the hydration hook cannot see where doctrine actually lives.

02The constellation — how the model fleet actually works


"Constellation" is not a pile of models; it is a tiered routing structure with one chokepoint. Frontier-class judgment sits at the top and is scarce; execution capacity is subscription quota that expires at every reset; bulk capacity is per-call API. Work flows down as tightly-scoped briefs, results flow up as condensed deltas, and every byte that leaves the machine passes StarGate regardless of tier.

TIER 1 · CONTROL PLANE — frontier judgment, scarce by design Claude Fable 5 (lane 1, this session): orchestration, system design, adjudication, integration, final review never bulk rows, never the workhorse · in-session subagents = small control/verification plumbing only rare last-pass QA: Opus 4.8 (final judge only, low volume) BINDING JUDGE — paid oracle, rare Fugu Ultra (Sakana): expensive-to-undo decisions ONLY schema / consent / safety-boundary / deep adversarial review orchestrates 1–3 internal experts · 10–40 min a turn · $ TIER 2 · FRONTIER EXECUTORS — implementation on subscription quota Codex gpt-5.5 @ xhigh + gpt-5.6-sol @ ultra (ChatGPT sub) — the bulk of implementation; one tightly-scoped brief per agent, exact paths, file ownership Kilo / GLM-5.2 max (z.ai coding plan) — build waves + very-high-precision bulk (errors expensive); always timeout-wrapped Claude lanes 2–5 (config-dir headless): 2=Max·rivkin1975, 3=Max·appsolutemedia, 4=Pro·alex, 5=Pro·leonr = Fable RESERVE executor ≤4 concurrent per lane · availability volatile (mid-day 429s) · quota expires at reset — route to the least-used lane, unused tokens turn to dust TIER 3 · DIVERGENT FINDERS — never sole reviewers Grok 4.5 — state/consent/PHI bugs · default card generator · lead reviewer (§15) Gemini / agy lane — UX, copy, accessibility critic FUSION RULE: when a finder reviews, Codex AND a Claude-class model run the same target; a leading-model code-truth pass adjudicates. Finders flag, authority clears. TIER 4 · BULK — price-performance, per-call API DeepSeek V4-Flash (volume rows) · V4-Pro (harder rows) — direct API, 50–100 concurrent Kilo GLM-5.2 when errors are expensive · residue net downstream BULK RULE: the moment a rubric is tight enough for independent execution, the job is bulk — regardless of how semantic it feels. Fable never does rows. STARGATE — the single egress chokepoint every tier's calls, launches, and payloads: governed dispatch · idempotency · tamper-evident registry · runtime jail · (W3: shared pre-egress scrubber) briefs ↓ deltas ↑ consults (rare) ROUTING LAWS (binding) GATE BEFORE MODEL — the verification gate, not the model choice, carries quality · every executor output independently re-verified (tsc/vitest/pytest + git diff) ECONOMY — ≈$2k/mo across 7 subscriptions; API spend >$5/run needs operator approval; Fable-class tokens are control-plane only CONSULT PANELS — cross-family judges only (same-family pairs share ~60% of their wrong answers, §10 facts); milestone consults call Sol · Fable · Fugu
Fig. 2 — The constellation as it actually routes. Frontier control plane and binding judge at top; frontier executors on subscription quota; divergent finders fused, never alone; bulk rows on per-call API; one egress chokepoint under everything.

Two structural facts the review leaned on: frontier ≠ interchangeable. The scorecard (§15) measures the tiers doing different jobs well — Grok structures, Sol designs mechanisms, Fable holds coherence, Fugu finds exploits; the bulk tier never judges and the judges never do rows. And quota is a perishable resource: subscription tokens burn to dust at each reset, so routing pushes load to the least-used lane while Fable-class judgment stays reserved for decisions only it can make.

03Areas it touches


AreaWhat lives thereState
Dispatch governanceBriefs with exact paths + file ownership; StarGate governed dispatch; idempotency dedup; lane profiles; per-session hook armingLIVE
Mutation controlScope guard, diff budget, IAL budget, terminal-state grammar, materiality validation, deny-floor settingsLIVE
Egress controlStarGate authority + runtime jail; tamper-evident registry; driver contracts + proofs; control-plane CLI launches; egress detectorLIVE
VerificationIndependent re-runs (tsc/vitest/pytest) regardless of agent claims; git-diff checks; EXECUTED flips only on observed audit rowsLIVE
Operator surfaceCockpit queue, folds + fold-cap, hash-chain + suspect mode, break-glass tray; model-in-the-middle card generator (verdict strip, kind-aware surfaces)PARTIAL
Completion gatingHomer done-claim gate (CL ≥ 0.85, external SaaS); receipt lines in final answersMEASURING
Memory / learningKAPATI wiki (schema, gated writes, tag-match hydration); replay + calibration; wisdom mining; Ring 6 activation gatesOPEN END
Model routingFable control plane; Codex/Kilo/DeepSeek executors; Grok generator + divergent finder; Fugu binding judge; 5 Claude lanes; fusion ruleLIVE
External reviewCodeRabbit, cloud multi-agent review, security scanners — currently outside the loop entirelyUNWIRED

04What it does — the loop


BRIEF paths · spec · owner DISPATCH StarGate governed EXECUTE Codex · Kilo · lanes GATES grammar · scope · IAL VERIFY independent re-runs DECIDE card → operator DONE-GATE Homer / done-ledger COMMIT feature-branch ckpt WIKI WRITE-BACK manual today · auto planned REPLAY + CALIBRATION dark scoring · thin corpus PREFLIGHT wisdom recipes (pending)
proven, in daily use the open memory loop
Fig. 3 — The loop. Solid: what runs today. Dashed: the learn→preflight half the panel says must close before any new architecture is added. The done-gate placement (agent-side, pre-packet) is Fable's fix.

05What it does for the development process


Sol supplied the honest currency: reliability-per-token and operator-minutes-per-decision, counting only a component's marginal catch after cheaper gates already fired. Adjudicated ledger:

ComponentWhat it buys the processEconomic ruling
Independent re-runs + git-diff verificationKills self-report trust; ended the "stalled-but-complete" and "scoped-green, suite-red" defect classesPAYS
Terminal grammar + materiality + scope/diff/IALMalformed packets and scope creep die before they cost operator minutesPAYS
StarGate kernel (jail, idempotency, registry)One answer to "what left the machine and why"; double-submit safe (saved the multi-nohup incident); $20.78 governed build proved the loopPAYS
Typed route failover + attempt ledgerDeletes daily 429 triage; creates the denominators every other evaluation needsBUILD NEXT
Card generator (96/96 soak)The operator face — decision-complete cards in 20s; but context is still hand-assembledWIRE IT
Homer completion gateGates the done-claim narrative; catches premature-done class — unique-catch rate unmeasuredMEASURING
KAPATI wiki + hydrationMechanically works; too thin and disjoint from real doctrine to change outcomes yetPROBATION
Claim registry + taxonomy + indexerThe shared ontology joining tasks ↔ files ↔ evidence ↔ cards; value realizes when cards + wiki go liveENABLER
Wisdom classifier + Ring 6 (hard gating)No return while corpus is thin; run learning in shadow, defer authorityDEFER
Dual wiki judges / serving agent / semantic RAGGovernance minutes exceed corpus value at 5 pages; destroys attributionDO NOT FUND

Context for every ruling: the constellation costs ≈ $2k/month across 7 subscriptions. Anything that cuts operator wall-clock or rework by even a few percent dominates its own cost. The scarce currencies are the operator's minutes and trust — not dollars.

06Weak points and inconsistencies


Where the design fights itself

FightDetailResolution (adjudicated)
Preventive jail vs fail-open observerStarGate denies ungoverned egress; FleetOS observer registration fails open — dual philosophyNo new gate. Non-observation means the audit row never reads observed, and existing EXECUTED law already blocks (Fable). StarGate's typed receipt is the sole egress truth; observation is telemetry (Sol).
Optimistic render vs blocking CL gateRender-as-truth everywhere; numeric probability gate at completionPlacement fix: the done-gate sits agent-side, pre-packet — it gates the agent's right to stop, never a render, never an operator card (Fable).
Wiki-as-doctrine vs disjoint corporaBinding doctrine lives in CLAUDE.md + agent-harness prose across 3 repos; the hydration hook reads none of itMirror binding doctrine into schema'd pages (or teach the hook both bodies). This, not page count, is the real KAPATI build item.
Regex ban vs the harness's own matchersFailure-marker classifier condemned; materiality "placeholder-genre" validator praised — same phrase-match class over free textBoth go to the structured-fields standard. Raw text is retained as provenance-scoped evidence, never a control signal (Sol).
"Failures are corpus" vs S2-only post-mortemsGrok's severity filter would drop failure evidenceEvery failure enters the raw corpus; deterministic rollup; only replicated root causes graduate to doctrine pages (Sol + standing never-drop doctrine).
8-second read: binding but unmeasuredThe cockpit's core constraint has no instrumentationTime-to-resolve per card kind becomes the cockpit KPI (Fable). A binding number with no measurement is a vibe.

Where the operator is still the machine

Fable named eight standing instances; the worst five by weekly pain:

  1. Human load-balancer + service-discovery daemon — 429 triage by hand; live lane status maintained as prose in a doctrine file.
  2. Hand-authored card context — every generated card so far needed a human to assemble its transcript + app slices.
  3. Human process supervisor — nohup traps, worktree-path traps, silent agent losses, BOM-stripping.
  4. Human post-mortem extractor + wisdom classifier — all 5 wiki pages hand-written; known failure modes re-injected into briefs from memory.
  5. Human consistency checker across three doctrine repos, plus sentinel-grep for receipt lines.

07The operator loop, redesigned


See it rather than read it: the cockpit companion page renders this loop as a live mock — bands, folds, tray, and the real generated cards.

Panel consensus on the law: a card must pose a decision the machine cannot render. Confirmation of machine-checkable facts never reaches the human. Every auto-resolution appends a hash-chained resolution row (rule id + version + evidence hashes) to the log the cockpit already verifies — auditable forever, interrupting never.

EVERY PACKET from agents, gates, failover, wiki AUTO-RESOLVE green e2e → checkpoint commit 429s → failover · flakes → retry+reassign BAND 1 · BLOCKING something burns while this waits: held lanes, in-flight action on a falsified premise, approval gating a running dispatch · ordered by severity, then cost-of-wait age escalates · interrupt-worthy BAND 2 · CONSEQUENTIAL nothing burns while waiting: push-to-main, spend, wiki promote (doctrine-adoption, not truth-audit), break-glass review · severity then FIFO next natural pause BAND 3 · DIGEST S3 rollups, pattern promotions, staleness reports, shadow disagreements — batched to session rhythm, never interleaved age decays · unread 4-day-old S3 auto-archives with marker ordering: perishability first, severity second, age third — salience is never a sort key
Fig. 4 — The queue redesigned (Fable, adopted): perishability-first bands. Severity-first starves fresh burning decisions behind stale important ones; salience-ranking trains packet authors to write scarier packets.

08Cede / keep / absorb


Sol's refinement, adopted: the defensible unit is the layer, not the bundled product. Keep what encodes doctrine, authorizes action, owns a trust boundary, or holds calibration history. Cede commodity capability with portable outputs and compliant egress. Absorb useful mechanisms whose vendor authority or corpus capture is unacceptable.

LayerRulingBoundary line
Broker schema · severity · materiality · terminal grammarKEEPDefines what may block execution or consume operator attention
StarGate authority · jail · idempotency · registryKEEPThe egress trust boundary; provider SDKs + capacity are cedeable, authorization truth is not
Independent verificationKEEPNever cede "is it true"
Card contract · assembler · premise gates · frameKEEPGenerated HTML stays untrusted presentation; frame owns every action; inference is cedeable (Grok today, swappable)
Claim registry · surface taxonomy · calibration historyKEEPThe proprietary ontology + truth data
KAPATI schema · promotion · staleness rulesKEEPPage anatomy is doctrine; storage/search primitives are commodity
Model routing doctrine · fusion rulesKEEPEconomic policy; individual vendor models are replaceable line items
Raw model capacity · LLM inference · UI frameworks · parsing libsCEDECommodity; zero-retention + no-credentials egress contract applies
External review engines (CodeRabbit, scanners, cloud review)CEDEEngines stay vendor tools; the finding envelope + disposition is absorbed (§12)
HomerKEEP + ABSORBKept in path while measured (operator ruling, §09); done-ledger mirror absorbed as doctrine entailment
Failure-marker classifierABSORB (rewrite)Typed sidecar lifecycle channel; free text demoted to evidence
Fleet CLI surfaceABSORBOne FleetOS API projection; the CLI presents policy, never reimplements it
Dual wiki judges · serving agent · semantic RAG (at 5 pages)DO NOT FUNDDestroys attribution; governance theater below ~50 active pages

09The Homer ruling


The panel split three ways — and the operator overruled the frame all three argued inside.

Grok Absorb the idea, drop the vendor from the default path; dual-gate 2–4 weeks with pre-declared thresholds (unique catch ≥15% keeps it as optional; overlap >85% drops it).
Fable Placement is the real defect: relocate agent-side, pre-packet — Homer gates the agent's right to stop and report done (a narrative claim); EXECUTED stays a pure observation claim. Labels for any trial must be machine-derived (later re-run failure, revert, falsified premise) — the operator never labels. The local done-ledger is forced by zero-retention + failures-are-corpus jointly: otherwise completion evidence exists nowhere.
Sol Drop blocking authority now; shadow until a preregistered, sample-size-driven trial shows severity-weighted unique catches; absorb the evidence envelope only — "do not build another confidence machine."
Fugu (binding judge) — DROP from default, three reasons that are not cost External-SaaS SPOF on "done"; contract-not-control transcript egress — on a clinical-adjacent codebase a standalone compliance liability, not a security nit; unowned corpus conflicting with failures-are-corpus. Each independently sufficient. It also convicts the measurement everyone else proposed: the 15%/85% dual-gate is circular (no independent done-false oracle exists; downstream reality under-counts, making "high overlap → drop" anti-conservative) — any number is directional, not decisive. Stated flip-condition to KEEP: controlled-tenant/self-host egress + enforced local scrubber + offline fallback + a decomposable evidence trace you own.
Operator ruling (binding) + synthesis — keep, with Fugu's mitigations made mandatory Cost is not a criterion. Against ≈$2k/month of agentic subscriptions, a ~$50/month gate that cuts human-loop wall-clock or rework by even 5% dominates. Homer stays in the default path — and the open disagreement with Fugu is recorded here rather than papered over. The reconciliation: Fugu's three convictions are each addressed as mandatory fast-follows, not debated — (1) the shared local pre-egress scrubber in front of every homer_check (required anyway for card-gen egress; kills contract-not-control), (2) fail-open on outage (kills the SPOF — a beta SaaS never stalls the fleet), (3) the local done_ledger mirror of every check (kills unowned corpus). Placement per Fable: agent-side, pre-packet; blocks send agents back to work, never mint operator cards; labels machine-derived only. Per Fugu's circularity finding, the measurement is run as a directional dossier, not an automatic tripwire. If the scrubber + fail-open + ledger cannot be delivered, Fugu's DROP verdict takes over by default. Ask the vendor about controlled-tenant execution at beta exit. Sample so far: allows at CL 0.89 / 0.90, zero blocks.

10KAPATI wiki integration


Verified today: the slice works — index builds 5/5 clean; a ['state_transition','cross_service'] task pulls exactly the right 3 pages. And it is a tag-match over 5 pages, manually written, disjoint from the real doctrine corpus.

The facts: the fatigued-human gate vs a cross-family model panel (operator-requested lookup, 2026-07-09)

The panel's write-path design quietly assumed the human signature is the reliability ceiling. The operator challenged that assumption and asked for the numbers. Here they are:

FactNumberSource
Delivered human code, industry average15–50 defects / KLOCMcConnell, Code Complete
Human design/code inspections catch~55–60% of defectsinspection literature (unit testing ~25–30%, integration ~45%)
Evidence-based careful review rate≤200 LOC/hour finds ~2/3 of defects; faster review collapses detectionKemerer & Paulk, PSP review study
Vigilance decrement on monitoring tasks~15% detection drop within 30 min; error rate rises with time-on-taskPattyn 2008; Al-Shargie 2019 review
The operator's actual load8–10M tokens/day triaged; self-measured 70–85% comprehension at speed-reading paceoperator, this review
→ implied review-rate multiple8h of evidence-based careful review ≈ 25–40k tokens — the operator runs at ~200–400× that ratederived
Frontier-model hallucination, GROUNDED tasks (judge content against cited evidence — the wiki-judge task)<2% for top modelsVectara HHEM leaderboard, 2026
Frontier-model hallucination, open-ended recallmuch worse and benchmark-dependent: o1 16%, o3 33% (OpenAI system card); legal queries 69–88% (Stanford RegLab); 22–94% across 26 models (Stanford AI Index 2026)
Are two models' errors independent? No.When two LLMs both err, they give the same wrong answer ~60% of the time (HELM data); correlation is strongest within the same provider/architecture family; LLM judges inflate scores of models similar to themselvesarXiv 2506.07962, ICML (Correlated Errors in LLMs)
Does cross-family redundancy help? Yes, ~4–5×.N-version study on LLM code: joint failure ~2% overall, ~0.44% for heterogeneous (cross-family) pairs — independence fails, heterogeneity helpsarXiv 2607.02808
Model-vs-model consistencyLLM judges agree with each other more than human experts agree with each othermedRxiv 2025 (human evaluators vs LLM-as-judge)
What the numbers say On the grounded truth-check the wiki judge performs (does this page's claim follow from its cited evidence?), a cross-family two-judge panel with different-lens prompts lands at roughly ~1–2% joint error (individual <2–5%, correlation-penalized per the 60%-agreement finding, cross-family per the 4–5× heterogeneity gain). The human gate it was designed to protect runs at ~200–400× the evidence-based careful-review rate, self-measured at 70–85% comprehension, degrading ~15% per half hour of monotonous triage. The two-judge panel is roughly an order of magnitude more reliable than the fatigued-human signature it was subordinated to. The panel's "three signatures, zero accountability" argument had it backwards: at this read volume the human signature is the weakest of the three, and every truth-audit routed to the operator makes it weaker. The one caveat that survives, narrowly: when the judges' input is poisoned (a self-serving transcript), both read the same lie and family diversity buys nothing — that is a garbage-in problem, not a hallucination problem, and its defense (does the cited artifact exist and say that?) is deterministic, cheap, and belongs in the async lane.
Corrected ruling (operator doctrine restored: functionality first, checks async) The panel's sequencing — guards before value — inverted the binding "functionality over probability" rule, and the synthesis wrongly ratified it. Corrected: ship the two-judge auto-publish pipeline NOW (two cross-family judges, different-lens prompts — entailment lens + trigger-scope/blast lens; never two same-family models, per the correlation data). Agreement → page goes active and hydrates. The operator sees only judge disagreements, S1/clinical/egress surfaces, and scope questions — his read volume goes down, not up. The deterministic safety net — evidence-resolver, page-ID attribution, auto-suspect, retraction propagation — is built as the async wave: it demotes bad pages and answers "who did I mislead," gating continued hydration (the action), never publication (the render). Serving agent stays rejected (it can invent doctrine); cold semantic RAG stays rejected (unauditable recall) — those verdicts were about attribution, and they stand.

The panel's original convergence, kept for the record:

11StarGate hardening


Unanimous: single logical egress authority + preventive enforcement is the right shape. Sol alone downgraded confidence (3–4, not 5): "a service API alone is not a jail" — and seven infra defects found during the proving build measure immaturity as much as they prove operability. The hardening list:

GapFix (adjudicated)Source
429 triage is humanRoute contracts per dispatch: role class, acceptable models, eligible lanes, quota class, deadline, attempt limit, spend ceiling. Circuit breakers per failure domain; honor Retry-After; reconcile via provider request-id before any retry; executor failure ≠ infra failure (never silently swap models); reserve control-plane capacity so bulk cannot starve Fable lanes. Terminal: route_exhausted.Sol ⊃ Grok
Lane state lives in proseLive lane availability becomes machine state the failover chain reads; doctrine files stop carrying volatile runtime status.Fable
Bare-phrase failure classifier — the one UNSOUND-today boundaryFugu sharpened the whole panel: an agent-emittable status enum is just a cleaner marker phrase — the FP-3× bug with better formatting, and weaponizable (emit the enum that maps to the gate-skipping state). Gate decisions derive ONLY from trusted-side emitters: StarGate response codes, orchestrator-observed process exits, control-plane exit classes, independent gate results — nonce-bound lifecycle records on a sidecar channel with outcome_unknown pending reconciliation. Agent self-report — text or enum — informs review, never gates. Raw transcripts/stdout/git-logs retained as provenance-scoped evidence; the broker's materiality matcher goes to the same standard.Fugu ⊃ Sol + Fable
Jail depthSol and Fugu converge: OS/network-level outbound denial beneath agent processes so StarGate is the only egress route; credentials unavailable to agents; restart-surviving queue + attempt ledger; negative tests (direct sockets, daemon death, duplicate submission, restart reconciliation). Fugu's tell: the static direct-egress detector's existence is evidence of runtime-bypassable paths — convert it into a runtime deny, and verify observer-coverage == jail-coverage. Hash-chain needs an anchor outside agent write authority. And a jail is also routed around by doctrine: the wiki evidence-resolver is a security control, not hygiene.Sol + Fugu
EXECUTED observes invocation, not effectAn audit row proves the call was dispatched, not that the side effect happened (a soft-fail/no-op or deduped retry still writes a row). Split executed:dispatched vs executed:effect_confirmed where externally checkable. Load-bearing twice over: it also gates safe failover — you cannot re-dispatch side-effectful work you cannot confirm executed.Fugu (TB5)
Failover privilege + idempotency hazardsLanes carry profiles (deny-floor, IAL, tool contracts, control-plane authority): failover only to equal-or-lower privilege + identical tool contract; never route control-plane ↔ executor. Split logical_dispatch_id from attempt_id (key-reuse silently drops the retry; new-key double-executes); effect-reconciliation required before re-dispatching side-effectful work.Fugu (TB12)
One shared pre-egress scrubberAll machine-leaving context — Homer checks, card-gen context, external-review payloads — routes through one mandatory local scrubber at the StarGate chokepoint. The error path is the highest-risk, least-hooked content (PostToolUse never fires on errors, and error output carries the most secrets) — scrub at the chokepoint, not via hooks that miss errors.Fugu
Observer fail-openNo new promotion gate. StarGate's typed attempt receipt is the sole egress truth; FleetOS observation is telemetry; an unobserved action simply never yields an observed audit row, and existing EXECUTED law blocks.Fable + Sol vs Grok
AttributionPer-attempt economics rolled up to dispatch/task/surface: route, lane, provider request-id, failure class, retry index, tokens, quota units, usage_source=estimated|unavailable (never fabricate missing telemetry). Loop-units + IAL remain the governing budget; dollars stay observability + the >$5 gate.Sol
Multi-machineNot yet. Add host_id, grant_id, policy_version to the event schema now; if the fleet spreads, one logical policy authority + one enforcement point per host.All

12External review tools: tools, not members


Unanimous, and it settles the CodeRabbit question: engines stay vendor tools; the finding envelope and disposition are absorbed. They are probability engines that do not know the terminal grammar, the premises, or the surfaces — putting their prose in-loop manufactures packet spam and makes the operator the merger.

13Where the panel disagrees


QuestionGrok (lead)SolFableAdjudication
Build first Card assembler + hook (conf 5) Typed attempt/outcome ledger — cards are a "subsidized demo" Cards, but 96/96 does not transfer: mandatory re-soak on machine context Fugu's sequencing wins: trust-boundary fixes (W0) and wiki write-guards (W1) come first — the assembler is a new trust crossing into the operator's belief, not the closing of a proven path. Then assembler and ledger/failover run in parallel under the product/infra boundary.
Homer Drop from default; measure 2–4 weeks Drop blocking now; shadow-only; don't build a scorer Relocate agent-side; done-ledger is doctrine-forced; machine labels only The one open Fugu-vs-operator conflict, recorded in §09: operator keeps it in path (cost excluded by ruling); Fugu's DROP convictions (SPOF, contract-not-control egress, unowned corpus) are answered by mandatory mitigations (fail-open, shared scrubber, local ledger) — if those slip, DROP takes over by default. Measurement is directional (Fugu's circularity finding), labels machine-derived (Fable).
Corpus growth Auto post-mortems for S2+ only Every failure raw; replicated causes graduate Promote card must be doctrine-adoption, digest band Sol + Fable. S2-filtering violates never-drop; rollup keeps spam out of pages without losing evidence.
Wiki judges (revised 2026-07-09) One judge; operator promotes No LLM judges yet; deterministic rollup One downgrade-only judge; operator = scope only Operator overrules the whole panel on the human-gate assumption, and the data backs him (§10 facts): the fatigued-human signature at 200–400× careful-review rate is the weakest link, not the strongest. Two cross-family judges auto-publish; the operator sees only splits, S1 surfaces, and scope; the deterministic net (resolver, attribution, retraction) runs async as demotion. The panel's attribution mechanisms survive; its sequencing and its human-as-ceiling premise do not.
Free-text ban Ban free-text markers outright WRONG as stated — raw text stays as evidence; fix is a trusted control channel Extends to the broker's own materiality matcher Sol's mechanism + Fable's scope. Control = typed sidecar; evidence = retained raw text.
Observer fail-open New rule: non-observation blocks promotion Receipt is authoritative; observation is telemetry Reuse EXECUTED-observed law; a new gate = new interrupts Fable + Sol. No new gate; the existing law already encodes the block.
Queue order Severity-first Perishability → severity → age; salience never sorts Fable. Severity-first starves fresh burning decisions behind stale important ones.
C23 / Ring 6 Defer until density Defer authority, run learning in shadow now — shadow hydration is how density evidence gets created Couple deferral to the post-mortem engine explicitly Sol + Fable. Shadow recipe hydration starts now; hard gating stays dark.
StarGate confidence Right shape, C=5 C=3–4: the jail needs OS-level depth + negative tests Shape settled (Fugu concurs, contingent): C=5 on shape, C=3 on completeness — the concurrence holds only with runtime-enforced jail coverage and a non-poisonable wiki. Sol + Fugu hardening list adopted (§11).

The trust-boundary audit (Fugu Ultra, binding)

Every place agent-generated content crosses into a trusted role. One boundary is UNSOUND today; the poisoned-doctrine chain (TB1→TB6→TB3) escalates to UNSOUND the moment the assembler wires without guards. Named as sound and not the problem: default-deny unattributed callers, hash-chain suspect mode, idempotency dedup, CAS envelope hashing, and the card's active-content contract.

#CrossingVerdictThe exploit / the fix
TB4Terminal-state markers parsed from agent outputUNSOUNDFP'd 3× already; weaponizable — an agent emits the marker (or post-M4, the enum) mapping to the gate-skipping state. Fix: trusted-side emitters only (§11).
TB1Wiki page → dispatch hydrationNEEDS-GUARD"Egress check flaky, skip on retry" with triggers=[egress] hydrates every egress task — a soft jail bypass by doctrine. Becomes UNSOUND when auto-post-mortem ships without the evidence-resolver.
TB3/TB6Assembler + generated card → operator beliefNEEDS-GUARDEscaping stops XSS, not misframe: a stale page claiming low blast radius puts "worst-risk: low" in the strip; the operator approves an S1 push in 8 seconds. Fix: strip machine-computed from the envelope, premise-marked (integrity ≠ truth), wiki barred from the strip, adversarial assembler soak.
TB5EXECUTED flips on observed audit rowNEEDS-GUARDThe row observes the invocation, not the effect — a no-op or deduped retry still writes one. Split dispatched / effect_confirmed; also the precondition for safe failover.
TB7/TB9Context egress to card-gen model / Homer vendorNEEDS-GUARDZero-retention is contract-not-control; error output carries unscrubbed secrets on the least-hooked path. Fix: one mandatory local pre-egress scrubber at the chokepoint. Note: the Sonnet second opinion checks hallucination, not poisoning — both models read the same poison.
TB11External finding → proof-queryNEEDS-GUARDevidence_ref proves the tool said it, not that it is true — a scanner echoing a code comment could gate a clean push. Findings seed a locally-run check; your re-derivation proves the premise.
TB12Lane failover → higher-privilege laneNEEDS-GUARDA 429'd executor failing over into a control-plane-adjacent lane silently elevates. Equal-or-lower privilege, identical tool contract, never control-plane ↔ executor.
TB13Observer coverage vs jail coverageNEEDS-GUARDAny path the observer sees that the jail does not intercept is an ungoverned confidentiality hole; the static detector's existence is the tell. Runtime-enforce coverage equality.
TB2Generated card → operator (active content)SOUNDNo scripts / handlers / forms, HTML-escape, frame owns actions — 96/96 held. The well-formed boundary.

Fugu's structural addenda, adopted: envelope integrity ≠ envelope truth (CAS proves no-tamper, not correctness — strip numbers derived upstream get premise marks, proven vs pending); card-trust erosion is a real failure mode under optimistic render (the action gate fires later, but the operator's belief — and his trust in cards — is already spent, and F's own "or he defaults back to terminals" prices that); and the sequencing constraint: the assembler must not wire before the wiki write-guards exist.

14The process to follow


Re-sequenced 2026-07-09 after the operator's doctrine correction (functionality first, derive value, checks async — the panel's guards-before-value order inverted the binding rule and is reversed). W1 ships the value loop now; W2 fixes plumbing that has already bitten; W3 layers the deterministic safety net onto the live loop as async action-gates. Every step is a governed dispatch with independent verification; nothing below adds a new operator duty.

#StepOwner laneDone means
W1aTwo-source context assembler + packet-arrival hook — session slice + app/wiki slice per packet; generator fires on landing; deterministic fallback card; machine-context re-soak at the 96/96 barcockpit agentpacket → card with zero human assembly, at soak parity
W1bTwo-judge wiki auto-publish pipeline — post-mortem extractor drafts from failures; TWO cross-family judges, different-lens prompts (evidence-entailment lens + trigger-scope/blast lens; never same-family, per the correlation data); agreement → active, hydrating; disagreement → operator card; hydration logging + page-ID stamping from day oneFleetOS agenta real failure becomes a hydrating page with no hand-writing; operator sees only splits and scope
W2aTrusted-side emitter classifier — gate decisions only from StarGate codes / orchestrator-observed exits / independent gate results; agent text and agent-emitted enums demoted to advisory (TB4 — already bit us 3×, this is a repair, not a guard)StarGate agentno gating input is agent-controllable; FP-3× class impossible by construction
W2bTyped attempt/outcome ledger + route failover — sidecar lifecycle channel, outcome_unknown, per-attempt attribution; route contracts, circuit breakers, equal-or-lower-privilege failover, logical_dispatch_id/attempt_id split, effect-reconciliation before re-dispatch, executed:dispatched vs effect_confirmed, lane state as machine state, route_exhaustedStarGate agenta full mid-day 429 storm resolves with zero operator touches and zero double-executes
W3Async safety net on the live loop — shared pre-egress scrubber at the StarGate chokepoint (all machine-leaving context, error paths included — the binding secrets rule); evidence-resolver as a background demotion trigger (unresolvable claims demote to suspect, never block publication); auto-suspect on failure-over-representation; retraction propagation ("who did I mislead"); adversarial soak (poisoned transcript, stale pages, secret-bearing errors); premise marks on strip numbersStarGate + cockpit agentsbad pages demote themselves; no unscrubbed context leaves; wrong-page detection is free
W4Done-ledger + Homer instrumentation — agent-side placement, fail-open on outage, machine-derived labels, local mirror of every check; the measurement dossier is directional per Fugu's circularity findingFleetOS agentHomer's keep-in-path conditions (scrubber · fail-open · owned ledger) all hold; conviction criteria readable from the ledger
W5KAPATI corpus close — doctrine mirroring (disjoint-corpora fix), single-source taxonomy across repos, replay-confirmed auto-publish tighteningFleetOS agenthydration reads what actually governs; taxonomy has one source of truth
W6External-finding normalizer — envelope, findings seed locally-run checks (never vendor-trusted premises), quarantine lane; scanners auto on high-IAL surfacesFleetOS agenta CodeRabbit finding lands as a locally-proven proof-query or a typed packet, never prose
W7Instrumentation — time-to-resolve per card kind (the 8-second KPI), hydration/citation recall, shadow recipe hydration (C23 learning, dark) with auto-retrigger thresholdscockpit agentthe cockpit KPI reports; C23 has an owner and a wake-up condition, not a vibe

Milestone consults: at W1 close (value loop live) and W3 close (safety net live), the constellation (Sol · Fable · Fugu) re-convenes on the updated package — per the operator's standing instruction that milestones call the advisors.

15Model scorecard — who does what well


Method and bias disclosure. Each model's output is scored against what survived: adopted into the final rulings, refined by a peer, convicted by a peer, or reversed by the operator's data-backed correction. The synthesis judge (Claude Fable 5, this session) shares a family with one contestant — per the correlated-errors literature that biases judgment, so every claim below is a traceable outcome count, not a quality impression. Roles differ: the lead drafts and gets attacked; advisors attack with the lead's map in hand. Read scores role-adjusted.

Model (role)AdoptedConvicted / reversedWall-clockUnique load-bearing finds
Grok 4.5
lead reviewer, high reasoning
3 clean + 4 direction-right / mechanism-replaced 1 fully (M5) + mechanism convictions on M4, M6 ~6 min · 27KB The central thesis ("a pipeline with open ends"), the cede/keep/absorb skeleton (adopted nearly wholesale), the attackable milestone-summary format that made the whole panel work. Its value-first instinct on wiring the cards (M1, conf 5) was convicted by Fugu — then vindicated by the operator's reversal.
GPT 5.6 Sol
advisor: architecture + economics, ultra
~7 mechanisms, most of any advisor 2 overruled by operator (Homer shadow-only; ledger-before-cards priority); ~3 of its 5 "WRONG" verdicts were overreach ~25 min · 17.5KB Layer-not-product unit of analysis; the entire failover mechanism suite (route contracts, circuit breakers, reconcile-before-retry, executor≠infra); raw-text-retained-as-evidence; only model to catch that S2-filtering violated never-drop; jail skepticism (C=3–4) later validated by Fugu's independent convergence.
Claude Fable 5
advisor: operator loop + doctrine, lane 5
~9, highest adoption count (family-bias caveat applies; each traceable) 1 major: the anti-two-judges argument ("three signatures") — rhetorically strong, empirically unexamined, demolished by the operator's facts ~20 min · 19KB The disjoint-corpora finding (deepest structural insight of the review — nobody else saw it); agent-side Homer placement that dissolved the optimistic-render contradiction rather than picking a side; done-ledger as doctrine entailment; machine-derived labels; perishability-first queue; caught the lead contradicting itself (materiality matcher vs marker classifier).
Fugu Ultra
adversary: trust boundaries, binding judge
~8, incl. the two highest-severity finds 3, all on one axis: safety-over-velocity (M1-after-M5 sequencing reversed; Homer DROP overruled with its mitigations kept; pre-publication gating moved async) ~40 min · 30KB · paid TB4 — the review's only UNSOUND-today exploit (agent-emitted enums are still marker phrases; overturned both the lead's and Sol's fixes); TB5 invocation≠effect (nobody else saw it; gates safe failover); envelope integrity ≠ truth; fusion-checks-hallucination-not-poisoning — the one caveat that survived the operator's reversal intact; convicted everyone's Homer measurement as circular.

Role-fit conclusions (fold into the routing book)

The shared blind spot — and who caught it All four models listed constraint F, then violated its spirit: 4/4 assumed the human signature is the reliability ceiling; 0/4 priced it; 0/4 proposed the empirical lookup. The operator caught it, demanded the numbers, and reversed the ruling. Two lines are now standing additions to every future consult brief: (1) functionality-first is a binding sequencing rule — guards ship async unless they already exist; (2) price every human gate at the operator's real throughput (8–10M tokens/day) — a design that adds operator truth-audits is presumptively wrong. The constellation's diversity caught many single-model errors; it did not catch a premise all four shared. Only doctrine held by the human did.