All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Security.
JWTAuthValidatornow requires a matchingnonceclaim when the runtime issues a challenge. - Security.
ModelUse.subsetViolation(of:)uses a real glob-inclusion check so wildcard parents with suffix segments can no longer be escaped. - Lease durations validated at grant/refresh;
handleLeaseRefreshsurfaces errors instead of swallowing them. PendingRegistryandARCPClient.pinguse a slot state machine so the waiter is registered before any timeout race.- Pending invocations are failed and progress/result streams are finished when the transport closes; invoke's send-error path cleans up state.
ARCPRuntime.registerrace window closed by inserting thejobManagersentry before iteratingregisteredHandlers.- Subscriptions track owner session id; cleanup runs when the session ends.
subscribe.eventenvelopes are skipped duringroute(), preventing recursive cascade on empty filters. StreamManager.subscribeInboundrefuses a second subscriber for the same stream id withfailedPrecondition.- Client dispatch: unmatched
job.progress,job.result_chunk, andtool.errorenvelopes fall through tounhandledinstead of being silently dropped or double-delivered. - Idempotency keys persist the terminal
job.completed/failed/cancelledpayload (scoped by principal + key) and replay it on duplicate invokes without re-running the handler. - Trace fields default to
Tracing.current;JobManagerpropagates the inbound trace context across job lifecycle and handler emissions. - Artifact retention sweep starts in
ARCPRuntime.init; lease expiry sweep starts inJobManager.init. CredentialManager.rotatekeeps every credential returned by the provisioner instead of silently discarding extras.- ULID generator preserves strict monotonicity across equal/backward clocks and overflow.
- O(1) mailbox drain via head index with periodic compaction.
jwt-kitpinned under 5.3.0 to keep the package buildable on Swift 6.1.
Resumeguide andCONFORMANCE.mdnarrowed to same-session replay only.- Interrupt support documented as wire-acked only — no handler observation callback.
- Heartbeat recovery documented as telemetry-only.
- DocC comments across the most user-facing public surface.
.spi.ymlfor Swift Package Index DocC hosting.- Unit / integration coverage for
Mailbox,LeaseManager,PendingRegistry,JWTAuth, client dispatch fallback, subscription cleanup, idempotency replay, and ULID burst.
- Full ARCP v1.1 wire surface:
job.result_chunk(text / event / log / thought / metric / binary), crash-and-resume viaIdempotencyKey,lease_constraints.expires_at,cost.budget,model.use, andprovisioned_credentialslifecycle. - Transports:
StdioTransport(NDJSON over stdio) andWebSocketTransport(client-side). docs/tree: architecture overview, RFC mapping, lifecycle state diagrams, troubleshooting, and §21 extension authoring guide.Recipes/runnable examples:email-vendor-leases,mcp-skill,multi-agent-budget,stream-resume.
- Initial reference SDK release aligned with ARCP protocol v1.1 (see README status).