Six specialized agents share one filesystem. Nothing coordinates them but the roster: every shared path has exactly one writer, so a lock is a name, not a mutex. Click any agent to open its lane, its never-rules, and its blast radius.
Every agent output is a proposal artifact inside its own lane. Proposals carry a confidence, a reason-code from a closed taxonomy, and citations that must resolve. A proposal has no force — it is a file waiting for a gate.
Three acts are reserved for people and are unwritable by the fleet: binding a policy above the authority threshold, promoting a contested fact from _provisional.md, and accepting a correction that contradicts a prior decision. DECISIONS.md is human-only.
@compliance-auditor holds no fact-write authority at all. It cannot fix knowledge; it can only demote (to _graveyard.md) and propose corrections as tasks. That asymmetry is what makes its review credible — it has no stake in any fact being true.
The tree below is the whole coordination surface. Green = write authority. Amber ⚠ = contended (more than one writer, so the orchestrator serializes file-by-file). Click a path to inspect its writers, readers, and the rule that governs it.
Only one row is contended: tasks/pending/. Every agent may file there, so it is not lane-partitioned — it is serialized by @orchestrator, which holds the queue and is the only writer that moves files from pending/ to done/. Knowledge bodies are the opposite: partitioned three ways (facts → @claims-digest, INDEX.md → @indexer, _graveyard.md → @compliance-auditor) so no two agents ever touch the same fact file.
A delegation is not a message — it is a file in tasks/pending/. Fill the six fields and a RESULT block. The validator checks the receiver's write lane, hard never-rules, and whether your done-when is checkable by a third party. Anything that fails is a reason code, not an opinion.
@orchestrator reads knowledge/INDEX.md plus the queue, orders by priority, and dispatches. Watch three things: contended files acquire a single-writer lock, an out-of-lane task is refused with a reason code rather than executed, and a task closed without a RESULT is reopened.
Pick a job to be done. The chain resolves downward — job → capability → skill → tool → owning agent → artifact → checkable done-when → human gate — and then hands you a prefilled task contract. This is the composition guide: start at the job, arrive at a lane.
The gatekeeper cannot edit what it audits. It runs three checks, and every finding leaves as a task against the agent that owns the lane — never as a silent fix. Demotions go to _graveyard.md; everything else is a proposal.
Every task in tasks/done/ must carry a RESULT block. Closure without one is a bookkeeping failure, not a content failure.
Every knowledge-body change must cite a source that resolves to a file that exists. Uncited edits are quarantined to _provisional.md until sourced.
Sample N closed decisions, compare approval ratio across groups, and report the delta with a confidence interval — a number, not a vibe.
Findings become task proposals in tasks/pending/, addressed to the lane owner. The auditor never resolves its own finding.
Note the direction of every arrow: the auditor's output is work for other agents. A gate that can repair what it finds is not a gate.
Delegation is a file. There is no bus, no queue service, no RPC. The contract below is what makes a lane-scoped fleet auditable: every handoff carries its own acceptance criteria and its own evidence of completion.
tasks/pending/<id>.md
────────────────────────────
from: @handle (must hold write on tasks/pending/)
to: @handle (lane owner of may-touch)
goal: one sentence, imperative, bounded
inputs: files / artifacts the receiver reads
may-touch: paths the receiver may write ← authority-checked
done-when: checkable predicates ← third-party verifiable
priority: P0 | P1 | P2 | P3
────────────────────────────
RESULT: filled on completion, before the
file moves pending/ → done/
Two clauses carry the whole design. may-touch is checked against the receiver's lane, so an impossible delegation is refused at filing time rather than discovered as a corrupted file. done-when is written for a third party, because the only party who can be trusted to accept the work is one with no stake in it.
pending/Authority validated at write time. Invalid may-touch never reaches the queue.tasks/pending/) are serialized; one writer at a time.may-touchOut-of-lane writes are refused with a reason code and filed as an incident.DECISIONS.md, which no agent may write.| code | meaning | raised by | disposition |
|---|
tasks/pending/, which is serialized. A lock is a lane name.knowledge/ facts and DECISIONS.md in the same turn. Propose/dispose never collapses into one actor._graveyard.md, where they remain citable history.