| ADR-0001 | ADR-0001 — Language & ecosystem: Go + Charmbracelet | accepted |
| ADR-0002 | ADR-0002 — Process model: long-lived daemon + thin TUI client | accepted |
| ADR-0003 | ADR-0003 — Terminal multiplexing: bake it in (keep tmux optional) | accepted |
ADR-0004 | ADR-0004 — Transport: Unix-socket control plane + Wish/SSH data plane | superseded |
| ADR-0005 | ADR-0005 — Supervision: daemon self-supervises harnesses; init only supervises the daemon | accepted |
| ADR-0006 | ADR-0006 — Configuration & profiles ("configurations of harnesses") | accepted |
ADR-0007 | State and scrollback ownership | superseded |
| ADR-0008 | Security, authentication and secrets | accepted |
| ADR-0009 | Project-scoped harness.toml and Compose-style lifecycle commands | accepted |
ADR-0010 | Local MCP surface — control-plane facade, server broker, and side-loaded prompts | superseded |
| ADR-0011 | Agent adapters — configured skill paths, spawn-time projection, trajectory discovery | accepted |
| ADR-0012 | Cross-harness distillation and the learned skill tier | accepted |
| ADR-0013 | Scheduled one-shot runs — daemon-owned cron and schedule on [harness.*] | accepted |
| ADR-0014 | Reload Autostarts Newly-Introduced Harnesses | accepted |
| ADR-0015 | Unified chatroom TUI for multi-harness agent output | accepted |
| ADR-0016 | Cobra for the command tree, Viper for process config, and a HARNESS_* environment layer | accepted |
| ADR-0017 | Ephemeral scratchpad harnesses (harness run) | accepted |
| ADR-0018 | prompt_file — an external prompt source for agent one-shots | accepted |
| ADR-0019 | Operating hours — a daemon-owned time gate on resident harnesses | accepted |
| ADR-0020 | Harness Exposes Prometheus Metrics, Led by Model Reachability | accepted |
| ADR-0021 | On-demand one-shot runs — channel listeners and webhooks fire prompt harnesses | accepted |
| ADR-0022 | Harness Exports Agent Telemetry as OTLP Logs, OTLP Traces and a Local JSONL Stream | accepted |
| ADR-0023 | Command one-shots and templated argv and prompts | accepted |
| ADR-0024 | Stack installer and centralized stack management — harness init connects, harness stack operates | accepted |
| ADR-0025 | Supervisor-held leases and relay attempts — Harness claims, heartbeats and reports around a fresh one-shot | accepted |
| ADR-0026 | Fail-closed model pinning — render the route, attest what was served | accepted |
| ADR-0027 | Run budgets and usage-limit backoff — admission ceilings, in-run caps, and a parked state for exhausted quota | accepted |
| ADR-0028 | Run history ledger — one durable record per run for every harness, one event stream that metrics and budgets read, and harness runs across harnesses | accepted |
| ADR-0029 | Auto-confirm Claude Code development channels, opt-in per entry | accepted |
| ADR-0030 | Grounded distillation — sessions find the lesson, merged pull requests prove it, pull requests propose it | accepted |
| ADR-0031 | A native runtime for harness stack — pinned binaries and generated service units, on the operator's own datastores | accepted |
| ADR-0032 | A merge train — one deterministic merger per repo tests the exact tree that lands, and only it moves main | accepted |
| ADR-0033 | The agent trace is the run record; scrollback is a terminal view | accepted |
| ADR-0034 | A gRPC control plane over the Unix socket and an opt-in TLS listener | accepted |
| ADR-0035 | Harness as the MCP gateway — shared upstream servers, per-harness filtered endpoints, and a call log | accepted |
| ADR-0036 | Skill evals, efficacy metrics, the model API and utility models | accepted |
| ADR-0037 | One embedded SQLite store for all daemon state | accepted |
| ADR-0038 | One secret mechanism — env_file, ${NAME} references and a secrets_env allowlist | accepted |
| ADR-0039 | Adapters are configured once, centrally | accepted |
| ADR-0040 | The emulator screen is the observability source a sweep can read | accepted |
| ADR-0041 | Fleet memory — a deterministic fleet graph, facts that expire when the code moves, and rules the operator reviews | proposed |
| ADR-0042 | Input screening — a classifier model holds untrusted events and stable content before an agent reads it | proposed |
| ADR-0043 | Task loadouts — a router model narrows each run's skills, tools, prompt and lane from an operator-declared ceiling | proposed |
| ADR-0044 | Agent package stables — installable, trust-gated harness definitions shared as git repositories | accepted |
| ADR-0045 | stall_timeout — a progress-based watchdog for persistent harnesses that stay alive and stop making progress | proposed |
| ADR-0046 | Per-harness health probes — the daemon runs an operator-supplied probe command and owns the verdict, the streak, and the action | proposed |
| ADR-0047 | Package-relative argv — a command harness locates its bundled script through {{package.dir}}, a path the daemon derives from the harness's own pin | proposed |
| ADR-0048 | Put progress on the control socket — last_successful_call_at and supervised children on list/describe | proposed |
| ADR-0049 | StatusError carries a bounded, credential-redacted body summary | proposed |
| ADR-0050 | an approval qualifies only while the forge marks it official | proposed |
| ADR-0051 | Run lifecycle hooks and per-run work directories — a run starts from a known state, and its outcome is checkable | proposed |
| ADR-0052 | Preview formatters reshape only their own protocol — readable output never rewrites a guest's terminal bytes | proposed |
| ADR-0053 | A run's live stream is ingested where it is born — the supervisor hands it over, agent-trace normalizes it, and one session has one source | proposed |
| ADR-0054 | The MCP stdio bridge ships before the broker — read tools on by default, control behind one startup flag | proposed |
| ADR-0055 | The guest owns the mouse while it asks for it; harness scrollback is the fallback | proposed |
| ADR-0056 | A red train whose jobs never reached a runner costs one cool-down retry, not a stall | proposed |
| ADR-0059 | Scroll detection may discount the bottom row, and pays for it with the rows above it | proposed |