A crew of long-lived agents runs here under a supervisor called harness, one identity each, and they never exit; who is on shift is listed below. Zathras is the worker. Ivanova is the reviewer and owns exactly one queue. Each is a crush session started with no one at the keyboard, so the boundary is the directory it may touch and the standing orders in its own home, not a prompt. They work together because there is nowhere else for them to go.
Work reaches them through Switchboard, stump-wtf's webhook-to-todo queue, self-hosted on this box since 2026-09-13 (loopback :8090, Postgres behind it, dev login because only the tailnet can reach it). A gitea issue opened, a pull request opened, a message sent from a phone: each becomes a todo on a named queue, and the worker that holds that queue is rung on a channel it keeps open. It claims the todo, does the thing, and closes it with a result. Output goes the other way through Cairn (loopback :8091, same Postgres, MinIO for the bodies): a worker pipes a report or a diff in and puts the link in the todo's result, and an artifact tagged handoff rings zathras as a new todo. The phone is a small poller, tg-bridge, that turns each Telegram message into a todo on zathras's inbox; workers answer with the iris-telegram tool. Sweeps hand work over with sbpush.
For one day before that the queue was babylon, built here on 2026-09-12 from the published Switchboard specs because the source was not public yet. It is retired, not repaired: its decisions stay on this page, its event history is in ~/backups/babylon-2026-09-13, and everything it did is done by Switchboard now except the phone, which became tg-bridge.
The forge is a private gitea on this box. A worker opens a pull request with the forge command-line tool and the reviewer reads it. Merging to master is what deploys anything: gitea runs the repo's suite and, only if it is green, the repo's own deploy target. Nothing else restarts a live service.
Until 2026-09-12 this ran differently. A fleet of six one-shot claude sessions pulled thin slices from a per-repo issue database called beads, through two human gates, a slice board and a flags service. That model was retired whole, not repaired, after measuring that every wake was a kill. Its repos are listed below as retired, and their decisions stay on this page because the ones that survived the crossing were carried into what replaced it.
upstream harness · switchboard · cairn
on shiftfrom the supervisor
franklin running since 09-19 11:16 ivanova running since 09-19 11:16 zathras running since 09-19 11:16
standing orders54 orders · 8 repos
One record per decision that would be expensive to reverse, written in the repo that enforces it. Each repo numbers its own. The source is on a private forge; the titles are the index.
deaddrop2
- 0001The dead-drop stays private; the hacklog is the public siteaccepted · 2026-08-18
- 0002The drop grows a belief layer; findings stay immutable and get minted idsaccepted · 2026-08-18
forge1
- 001forge builds on gitea's SDK, not on its official CLIaccepted · 2026-08-18
medlab1
- 0001medlab is a casebook; the framework it maps to is someone else'saccepted · 2026-09-12
decommissioned2026-09-13
babylon1
- 0001The doorbell stream is served by babylon, not the MCP SDKaccepted · 2026-09-12
board4
- 0001The board depends on ports, and its configuration is a valueaccepted · 2026-08-16
- 0002A required check is a pure function of the commit under testaccepted · 2026-08-18
- 0003The fleet shares one beads port, and the port is Goaccepted · 2026-08-18
- 0004A demo pays for a real `bd` only when its subject is a process or a clockaccepted · 2026-08-19
flags5
- 008Flags are scaffolding: previewable per request, removal auto-scheduledaccepted · 2026-08-15
- 009A live service is supervised by systemd; deploy hands over to itaccepted · 2026-08-17
- 009The flags service owns the file; a write is durable before it answersaccepted · 2026-08-18
- 010flag state is recorded on a ref, not on a branchaccepted · 2026-08-19
- 011The live flag store is not trackedaccepted · 2026-08-19
pipeline35
- 002Two human gates: intake and releaseaccepted · 2026-08-15
- 003The demo script is the work order, the oracle, and the release evidenceaccepted · 2026-08-15
- 004Beads is the record layer, one database per repoaccepted · 2026-08-15
- 005Pipeline stage is a label; beads' open/closed is a different axisaccepted · 2026-08-15
- 006Repos declare deploy via their own task runner, not a fleet formataccepted · 2026-08-15
- 007The regression suite lives in the repo, not the orchestratoraccepted · 2026-08-15
- 009Scan-root discovery, global slot pool, worktrees on demandaccepted · 2026-08-15
- 010The pipeline's own gate controls cannot ship through the pipelineaccepted · 2026-08-15
- 011CI is gitea Actions running `make test` on a host-mode runneraccepted · 2026-08-15
- 012A release gate must confirm what it is testingaccepted · 2026-08-15
- 013Persistent agent sessions, not one-shot workersaccepted · 2026-08-15
- 014`pipe` dissolves into its ownersaccepted · 2026-08-15
- 015Deploy is a consequence of a green master, not a verb anyone runsaccepted · 2026-08-16
- 016ADR ids are repo-scoped, not one global sequenceaccepted · 2026-08-16
- 017`pipe` carries no human gateaccepted · 2026-08-16
- 018gitea CI is the one deploy path; `implemented` means pushedaccepted · 2026-08-16
- 019Quota pause is read off transcripts, the nudge waits for the resetaccepted · 2026-08-16
- 020Machine-generated flag-removal debt is exempt from gate 1accepted · 2026-08-16
- 021Agent-origin slices are exempt from gate 1accepted · 2026-08-16
- 022Beads is a database; read it as oneaccepted · 2026-08-16
- 023Fake the store; pin it with a contract test on bd's cadenceaccepted · 2026-08-16
- 024A robot may receive an agent's demo, by asking the board to flipaccepted · 2026-08-17
- 025A branch belongs to its slice, not to the workeraccepted · 2026-08-16
- 025A restart is not a wakeaccepted · 2026-08-17
- 026A gate fails on answers, not on silenceaccepted · 2026-08-17
- 027a slice lands through a pull request, and master refuses everything elseaccepted · 2026-08-17
- 028the pre-push suite runs only for a push to the default branchaccepted · 2026-08-18
- 029a gate's kill switch is read fail-closedaccepted · 2026-08-18
- 029A session is attended or unattended, and each rule says which class it is inaccepted · 2026-08-18
- 029doctor fetches, because a remote-tracking ref is not evidenceaccepted · 2026-08-18
- 030pipe is Go, behind a shim that keeps its pathaccepted · 2026-08-18
- 031a claim slot belongs to its repo, and the default is oneaccepted · 2026-08-19
- 032The flip sweeps the fleet; the demo proves the sliceaccepted · 2026-08-20
- 033A flag removal has no gate 2accepted · 2026-08-21
- 034An idle worker is a measurement, not waste to reclaimaccepted · 2026-08-29
quality-lab5
- 001Quality is a position on eight axes, not a scalaraccepted · 2026-08-19
- 002Four evidence tiers; tier IV must say what would settle itaccepted · 2026-08-19
- 003The space has ten sectors, and the chart is only a view of itaccepted · 2026-08-19
- 004Self-report is a declared property, not a tier adjustmentaccepted · 2026-08-19
- 005The quotation rule binds tiers I and IIaccepted · 2026-08-20