Core documentation

25. Choose JSON-RPC stdio as the private ASP dogfood binding floor

Historical implementation and evidence links on this page point to the original upstream repository and may require repository access. Those files are outside the bundled ASP definition; the specification, schemas, and fixtures are included here.

Specification metadata
adr: 25
title: Choose JSON-RPC stdio as the private ASP dogfood binding floor
status: accepted
date: 2026-06-23

§Context

ADR 0021 separated ASP semantics, wire bindings, and deployment surfaces. It left native JSON-RPC stdio and a namespaced MCP extension as private binding candidates. Issue #13 ran the first private bake-off against the current v0.1 semantic pack: SnapshotRef/Baseline, content-addressed ChangeSet, provider Assessment/EditPlan data, host Decision data, coverage degradation, authority evidence, assurance modes, transaction guarantees, and host-owned apply.

The binding must preserve the corrected topology:

§Decision

Native ASP JSON-RPC over stdio is the private dogfood binding floor for v0.1 host/provider and harness/host work.

The private floor means:

A namespaced MCP extension remains a private experiment for compatibility/status work. It may become authoritative only after a later accepted ADR proves host-driven required invocation, call-site preservation, freshness equality, required coverage, authority grants, assurance-mode reporting, cancellation receipts, and mediated apply without ordinary-tool ambiguity.

Ordinary MCP tools are rejected for authoritative gates. They may expose read-only status, inspect, or debugging adapters, but they do not by themselves satisfy blocking gate call-sites.

LSP, SARIF, and BSP remain mapping/reference inputs only:

§Evidence

The bake-off evidence lives in:

The prototype covers both json-rpc-stdio and mcp-extension over shared fake host/provider fixtures. It covers allow, deny, stale baseline, malformed provider output, cancellation, unsupported capability, missing provider, missing authority, timeout, insufficient assurance, Lattice fast-path bypass, edit-plan request, denied apply, and applied proposal.

Provider outputs are assessment/edit-plan data only. Recursive guards reject host-owned decision, pass, verdict, authority, assurance, transactionGuarantee, applyReceipt, shellCommand, and disposition fields. Host outputs carry decisions, call-site, policy digest, coverage.required/ran/degraded, validAsOf, authority evidence, assurance mode, transaction guarantee where relevant, and receipts.

§Relationship to earlier ADRs

This ADR does not supersede ADRs 0001, 0016, 0018, or 0021. It records the evidence-backed dogfood choice made under those decisions.

§Consequences