Skip to content

Latest commit

 

History

History
68 lines (66 loc) · 5.97 KB

File metadata and controls

68 lines (66 loc) · 5.97 KB

Conformance

Spec-to-code matrix against ../spec/docs/draft-arcp-1.1.md. Status is either "yes" (implemented and tested) or "deferred" (out of scope for v1.0.0). No spec MUST/SHOULD in §4–§16 is unimplemented.

Requirement Status Location
§4 Terminology and conventions yes lib/arcp/version.rb, lib/arcp/message_types.rb
§5.1 Envelope (arcp, id, type, session_id, trace_id, job_id, event_seq, payload) yes lib/arcp/envelope.rb
§5.1 trace_id must be 32 hex chars yes lib/arcp/envelope.rb (HEX32)
§5.1 payload MUST be Hash or absent yes lib/arcp/envelope.rb#from_h
§5.2 Serialization (JSON, UTF-8) yes lib/arcp/serializer.rb
§5.3 Deep-freeze payload on receive yes lib/arcp/envelope.rb#deep_freeze
§6.1 session.hello with auth + capabilities yes lib/arcp/session/hello.rb, lib/arcp/client.rb#handshake!
§6.1 Bearer auth scheme yes lib/arcp/auth/bearer.rb
§6.1 Pluggable AuthScheme yes lib/arcp/auth/auth_scheme.rb
§6.2 Capability negotiation (intersection) yes lib/arcp/session/capability_set.rb#intersect
§6.2 Feature names: heartbeat, ack, list_jobs, subscribe, lease_expires_at, cost.budget, progress, result_chunk, agent_versions yes lib/arcp/session/feature.rb
§6.3 session.welcome with resume_token + resume_window_sec yes lib/arcp/session/welcome.rb, lib/arcp/runtime/session_actor.rb
§6.3 Resume by last_event_seq yes lib/arcp/runtime/event_log.rb
§6.4 session.ping / session.pong heartbeats yes lib/arcp/session/ping.rb, lib/arcp/session/pong.rb, lib/arcp/client.rb#start_heartbeat!
§6.4 HEARTBEAT_LOST MUST NOT terminate jobs yes lib/arcp/runtime/session_actor.rb
§6.5 session.ack with last_processed_seq yes lib/arcp/session/ack.rb, lib/arcp/client.rb#ack
§6.6 session.list_jobs with cursor and filter yes lib/arcp/session/list_jobs.rb, lib/arcp/client.rb#list_jobs
§6.6 session.jobs response with next_cursor yes lib/arcp/session/jobs_response.rb
§6.7 session.error and session.bye yes lib/arcp/session/session_error.rb, lib/arcp/session/bye.rb
§7.1 job.submit (agent, input, lease_request, lease_constraints, idempotency_key, max_runtime_sec) yes lib/arcp/job/submit.rb
§7.2 job.accepted with job_id + lease yes lib/arcp/job/accepted.rb
§7.3 job.event stream with monotonic event_seq yes lib/arcp/job/event.rb, lib/arcp/runtime/event_log.rb
§7.4 job.result (terminal success) yes lib/arcp/job/result.rb
§7.4 job.error (terminal failure with code) yes lib/arcp/job/job_error.rb
§7.5 Agent versioning with name@version refs yes lib/arcp/session/agent_inventory.rb#resolve
§7.5 AGENT_VERSION_NOT_AVAILABLE error yes lib/arcp/errors.rb
§7.6 job.subscribe / job.subscribed / job.unsubscribe yes lib/arcp/job/subscribe.rb, lib/arcp/job/subscribed.rb, lib/arcp/job/unsubscribe.rb, lib/arcp/runtime/subscription_manager.rb
§7.6 Subscriber MUST NOT cancel yes lib/arcp/runtime/subscription_manager.rb
§7.6 history=true replays from event_log yes lib/arcp/runtime/event_log.rb
§7 job.cancel with reason yes lib/arcp/job/cancel.rb, lib/arcp/client.rb#cancel_job
§8.1 Event ordering per job yes lib/arcp/runtime/event_log.rb
§8.2 EventKind: progress, result_chunk, log, thought, tool_call, tool_result, status, metric, trace_span, delegate yes lib/arcp/job/event.rb#EventKind
§8.2 Body shape per kind yes lib/arcp/job/event_body/*.rb
§8.3 progress event body (current, total, units, message) yes lib/arcp/job/event_body/progress.rb
§8.4 result_chunk with result_id, chunk_seq, data, encoding, more yes lib/arcp/job/event_body/result_chunk.rb
§8.4 job.result references result_id + result_size yes lib/arcp/runtime/job_context.rb#finish
§8.4 MUST NOT mix inline result with chunk stream yes lib/arcp/runtime/job_context.rb#finish
§9.1 Lease record (id, capabilities, budget, expires_at, issued_at) yes lib/arcp/lease.rb
§9.2 LeaseRequest at submit yes lib/arcp/lease.rb#LeaseRequest, lib/arcp/job/submit.rb
§9.3 lease_constraints.expires_at (UTC Z required) yes lib/arcp/lease.rb#LeaseConstraints#validate!
§9.4 Subsetting on delegate (cap, expires_at, budget bounds) yes lib/arcp/lease.rb#Subsetting.bound
§9.5 LEASE_EXPIRED on use after expiry yes lib/arcp/lease.rb#Lease#expired?, lib/arcp/runtime/lease_manager.rb
§9.6 cost.budget capability (BigDecimal per currency) yes lib/arcp/lease.rb#CostBudget
§9.6 BudgetCounter try_decrement yes lib/arcp/lease.rb#BudgetCounter
§9.6 BUDGET_EXHAUSTED on overspend yes lib/arcp/runtime/lease_manager.rb
§10 Delegate event kind with child lease yes lib/arcp/job/event_body/delegate.rb
§10 LEASE_SUBSET_VIOLATION on excess yes lib/arcp/lease.rb#Subsetting.bound
§11 trace_id propagation on envelope yes lib/arcp/envelope.rb, lib/arcp/client.rb#send_envelope
§11 Trace context Fiber-local yes lib/arcp/trace.rb
§11 OpenTelemetry bridge when present yes lib/arcp/trace.rb#in_span
§12 15 wire error codes yes lib/arcp/errors.rb (WIRE_CODES)
§12 retryable? defaults yes lib/arcp/errors.rb
§12 Errors.for(code) factory yes lib/arcp/errors.rb#Errors.for
§13 Idempotency key on submit yes lib/arcp/job/submit.rb, lib/arcp/runtime/job_manager.rb
§13 DUPLICATE_KEY on idempotency collision yes lib/arcp/runtime/job_manager.rb
§14 Backpressure signal yes lib/arcp/errors.rb#Backpressure
§15 Vendor extensions via x-vendor.* event kinds yes lib/arcp/job/event.rb#Event.from_h (unknown kinds pass through frozen)
§16 Subprotocol identifier arcp.v1 yes lib/arcp/version.rb
§A.1 Multi-tenant routing deferred n/a
§A.2 Wire compression deferred n/a