docs(adr): Harness Contract v1 — the fixture-pinned opencode API subset (A2, #621) - #622
Conversation
…et (#621) Compat-first: the contract is the consumed subset of the canonical opencode server surface (lifecycle, auth, event bus, session/turn API, web app at origin, injection channels), pinned by golden fixtures — the #451 technique generalized from the route port to the whole engine boundary. The amicode_* tool surface is product-owned with an MCP floor (A3, seeded); harness identity lives in settings, never in wire protocol strings. Director-drafted in the harness-agnostic campaign (A2); docs-only.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CI note — the Diagnosis: #620 hand-edited two overlay files ( |
Closes #621.
A2 of the harness-agnostic campaign: the decision record that defines what "a harness" means to Amicode, so telaio (subscription) and third-party harnesses implement a written, fixture-tested contract instead of an interface that drifts silently.
The three decisions
amicode_*surface belongs to the studio; its portable carrier is an MCP server (A3, seeded); harnesses may implement natively where stronger.protocol-blocklist.jsonconstraint).The deliverable
The contract surface as a consumer × surface × evidence matrix (lifecycle+auth,
?auth_token=web-app bootstrap,/eventSSE envelopes, the SDK-consumed session/turn API, the injection channels, the tool surface), with explicit non-goals (full opencode API, the 35-file server-coupled worklist, the TUI) and the enforcement story (golden fixtures + drift gates; fixture refresh = contract version bump).Docs-only — no code changes. Drafted by the director in a worktree off
main(the shared checkout is mid-bug-work); CI should ride the existing build gates unchanged.