Implemented versus deferred protocol surfaces are summarized in README.md
(Status section). Source modules cite RFC sections in doc comments
(e.g. // RFC §8).
All v1.1 normative surfaces are implemented unless listed under deferred below.
Envelopeframing, ULID ids, error codes, extension registry- Four-step handshake (§8.1):
session.open,session.accept,session.ready,session.close - Auth schemes:
bearer(§8.2),signed_jwt(§8.3),none(§8.4) - Capability negotiation (§7): structured
capabilitiesblock, subset checks
- Job state machine:
queued → running → completed | failed | cancelled - Heartbeats, cooperative cancellation (
job.cancel), interrupts (job.interrupt) tool.invoke+ToolHandleradapter patternJobContext:checkLeaseExpiration,checkCancellation,charge,log,metric,requestPermission,reportProgress,openStream,emitResultChunk
- Multi-kind streams:
text,event,log,thought,metric,binary(base64) - Back-pressure and cooperative stream close
job.result_chunkwire messages, runtime emission, clientResultChunkStream- Crash-and-resume: same
IdempotencyKey→ samejob_id, buffered chunk replay
- Permission challenges:
permission.request,permission.grant,permission.deny - Lease lifecycle: grant, refresh, revoke, expiry sweep
lease_constraints.expires_atontool.invoke, submission validation, in-handler expiry checks viacontext.checkLeaseExpiration()- Client-side
PermissionHandlerveto
cost.budgetonToolInvokePayload: parse, track, subset checkscontext.charge(name:amount:currency:)— per-charge deductionBUDGET_EXHAUSTEDerror (ARCPError.budgetExhausted)- Per-charge metrics emitted to client
model.usepayload parsing, requested-model matching, runtime policy helper
provisioned_credentialswire payloads- Provisioner protocol: issue, rotate, revoke lifecycle
- In-memory test provisioner, redacted credential descriptions
- Structured log events:
log.level,log.message,log.attributes - Metric events:
metric.name,metric.value,metric.unit,metric.dims - SQLite event log with replay
subscription.filter, backfill,subscription.backfill_completeboundary- Resume by
after_message_id
- Inline-base64 artifacts with configurable retention sweep
MemoryTransport— synchronous in-process (used by all tests and samples)StdioTransport— NDJSON framing over stdin/stdoutWebSocketTransport— client-side; server-side partial (see deferred)
| Surface | Reason |
|---|---|
mTLS (mtls) auth scheme |
Requires SecureTransport / BoringSSL integration |
OAuth 2.0 (oauth2) auth scheme |
Requires token endpoint + PKCE flow |
| Sidecar binary stream frames | Spec section still under revision |
| Scheduled jobs | Runtime scheduler not yet implemented |
| Multi-agent delegation / handoff | Depends on trust-elevation surface |
| Trust elevation | Policy engine not yet implemented |
| Checkpoint-based resume | Requires durable checkpoint store |
| Full WebSocket server | WebSocketKit.WebSocket server-side init is internal |
For cross-language conformance tracking, use the monorepo spec/ tree and
shared issue milestones.