Development record
Host-tier policy — MCP floor, reference host, open-source default
Context
The 2026-08-15 decision put multi-harness support in scope, reversing the out-of-scope annotation on itd-22's lineage. adr-23 supplies the mechanism — a transport-agnostic core behind thin front doors — but the record held no policy for which hosts get which investment, what "supported" means, or what the shipping default is. Harness surveys (2026-08-15) showed why a policy is needed: extension surfaces differ radically between harnesses — one exposes an ES-module hook API, another compiles Go plugins against a versioned capability registry — so above the core, per-host work shares nothing except the machinery this policy names.
Decision
Six rules, together the host-tier policy:
- The MCP front door is the universal floor. Any MCP-capable harness can drive abcd's core verbs with no per-host work. The floor is always available; no adaptor may require more than it to reach core behaviour.
- The current plugin host's integration is the reference implementation — the assumed SOTA surface for the time being, kept current with the core.
- The shipping default ultimately moves to an open-source harness. The default flips only when that host passes the same parity conformance suite the reference host passes, and the maintainer flips it deliberately (verifier selects, gates decide). The previous default remains a supported host after the flip.
- Per-host delivery climbs the adaptor ladder, most-native-first: the host's own plugin format, then any other native seam (lifecycle wiring, config), then the MCP floor. A rung a host cannot support degrades to the next rung and says so (loud staging) — never a silent no-op. Behaviour lives once in the core and is never double-written for one host (one canonical primitive).
- Where a host exposes a native work-plane — goal or work-item tracking, a canonical knowledge base, staged verdict gauntlets — the adaptor maps abcd's concepts onto the host's own rather than running a parallel artefact set. The mapping is per-host design work, owned by that host's adoption intent.
- Each host's adoption is its own intent, filed at an explicit maintainer decision. Commitment records name no harness before its adoption is decided; until then a host is described by capability class.
Consequences
- itd-22 carries the shared machinery only — the host profile seam, the ladder semantics, the parity conformance suite — and per-host adoption intents come one at a time on top of it.
- The MCP front door gets its own intent: under this policy the floor is the first build, not a later convenience.
- The parity suite is defined once and versioned; "supports host X" may be written in present tense only when the suite demonstrably passes on that host (enforcement claims are facts).
- The default-host flip is a gated, reversible event with a rehearsed way back, never a gradual drift.
Frontmatter
| id | adr-39 |
|---|---|
| type | adr |
| status | accepted |
| date | 2026-08-16 |
.abcd/development/decisions/adrs/0039-host-tier-policy.md
open on GitHub ↗ · commit history ↗
References5
- adr-23A transport-agnostic Go core behind thin front doorsrelated
- adr-24the companion harness is a peer integrated via conventions and MCP, not a code dependencyrelated
- adr-25The LLM is host-delegated by default; oracles are opt-in adaptersrelated
- itd-2In-Session Subagent Dispatch — the Default Host-Delegated Oraclerelated
- itd-22abcd Reaches Any Harness Through an Adaptorrelated
Referenced by1
- adr-2610120937435856A cloud session's unchecked work goes only to a declared work-in-progress prefix that never reaches the default branchrelated
mentions5
- dcn-26081600000000012026-08-16 — the multi-harness routing ADOPTED at maintainer confirmation (itd-84 hand-run graded into the decomposition-calibration note, entry 3): adr-39 filed — the host-tier policy (MCP front door as the universal floor; the current plugin host's integration as the reference implementation, the assumed SOTA surface for the time being; the shipping default ultimately an open-source harness, flipping only on the parity suite plus a deliberate maintainer act; adaptor ladder most-native-first; per-host adoption one intent each at an explicit decision, nameless until adopted). itd-22 renamed `harness-portability` (id unchanged) and reworked to carry the shared machinery only — host profile seam, ladder semantics, parity conformance suite — with a retire-the-name ban (`retired-itd-22-slug`) on the old slug. itd-113 minted: the MCP front door intent (the floor is the first build). The never-double-write stance routed into adr-39 rather than a new principle — it restates one-canonical-primitive at the host boundary.
- iss-233ci.yml runs the full check matrix twice per PR push — push and pull_request triggers overlap
- iss-2610150749052356The generated ADR and drafts indexes dropped hand-written relationship notes the old rows carried ('refines adr-50' on adr-55, 'amends adr-19' and 'extends adr-19, adr-20' on adr-31, adr-39/adr-23 links on itd-22, a reframe note on itd-16), because a row is derived from the record's H1 and status only.
- itd-113The MCP Front Door Opens — abcd's Core Verbs From Any MCP-Capable Harness
- itd-2610120738075547Work handed to a cloud session comes back, or says why not