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.
Initial release of the ARCP Java SDK.
arcp-core: wire types, envelope, capability negotiation, sealed message and event taxonomies, ULID-based ids, lease + constraints, in-memory transport.arcp-client:ArcpClient,JobHandle,ResultStream,WebSocketTransport(JDKHttpClient.WebSocket), replaying event publisher.arcp-runtime:ArcpRuntime, session FSM, job FSM,LeaseGuard,BudgetCounters,IdempotencyStore,AgentRegistry, heartbeat tracker, resume buffer, expiry watchdog.arcp: umbrella artifact re-exporting client + runtime.arcp-runtime-jetty: embedded Jetty 12 WebSocket server transport.arcp-otel: OpenTelemetry adapter (transport-wrappingTracer), W3C traceparent injection/extraction via theextensionspayload field.arcp-middleware-spring-boot: Spring Boot 3.x auto-configuration registers anArcpWebSocketHandlerat the configured path whenever anArcpRuntimebean is declared.arcp-middleware-jakarta: plain Jakarta WebSocket adapter exposingArcpJakartaAdapter.serverEndpointConfig()for consumers running their own Servlet container (Tomcat, Undertow, Jetty in Servlet mode).arcp-middleware-vertx: Vert.x 5Handler<ServerWebSocket>adapter with path and Host-header allowlist gates.arcp-tck: reusable JUnit 5@TestFactoryconformance suite parameterised by aTckProviderSPI, so downstream JVM ARCP implementations can ride the same checks.
Ten runnable example subprojects: submit-and-stream, cancel, heartbeat,
cost-budget, result-chunk, agent-versions, list-jobs, lease-expires-at,
idempotent-retry, custom-auth. Each prints OK <name> on success and asserts
under -ea.
Six Graphviz diagrams (light + dark variants, 12 SVGs total) under
docs/diagrams/: module graph, session lifecycle, job lifecycle, capability
negotiation, heartbeat + ack, result-chunk reassembly. Render with
make -C docs/diagrams.
A prose tree under docs/ mirroring the spec layout: 00-overview.md,
01-quickstart.md, 02-concepts.md, 03-features/* (heartbeats, ack,
list-jobs, subscribe, progress, result-chunk, lease-expires-at, cost-budget,
agent-versions), and 05-reference/* (api-overview, error-taxonomy,
wire-format).
40 tests across 18 suites cover the wire round-trip, capability intersection,
agent version resolution, budget arithmetic on BigDecimal, lease expiry,
glob matching, idempotency reuse and conflict, subscribe with history replay,
result-chunk reassembly, span emission, the Jetty / Jakarta / Vert.x /
Spring Boot WebSocket end-to-ends, the stdio newline-delimited JSON
end-to-end, seven conformance dynamic tests, and three jqwik property tests
(envelope round-trip + unknown-field tolerance, BigDecimal budget arithmetic,
arbitrary result-chunk arrival-order reassembly).
PIT mutation testing is wired as an opt-in Gradle task on arcp-core and
arcp-runtime (./gradlew :arcp-core:pitest); it is intentionally not
gated on PR builds because mutation runs are 5–10× the unit-test pass.
A new newline-delimited JSON StdioTransport (§4.2) under
dev.arcp.core.transport, with a round-trip test that wires both peers
through a queue-backed pipe pair. Suitable for parent–child process
deployments where the agent rides as a subprocess and the parent owns
stdin/stdout.
Maven Central scaffolding consolidated into the root build.gradle.kts:
single licence block per POM, full developer info, SCM URLs, GitHub
issue tracker, Sonatype staging endpoints (snapshots vs releases auto-
selected by version), and PGP signing wired through
signingKey / signingPassword (or GPG_SIGNING_KEY /
GPG_SIGNING_PASSWORD). Signing is required only when the keys are
supplied; local builds skip it silently.
JDK 21 LTS floor; toolchain JDK 21; --release 21. No --enable-preview
required of consumers. Virtual threads drive every per-job worker.