|
1 | | -# Conformance |
| 1 | +# Conformance — ARCP Java SDK v0.1-WIP |
2 | 2 |
|
3 | | -Implemented versus deferred protocol surfaces are summarized in **README.md** (Status section). Source modules cite RFC sections in doc comments (e.g. `RFC §8`). |
| 3 | +Status as of Phase 2 (Gate 2 passed; Gates 3–7 pending). |
4 | 4 |
|
5 | | -For cross-language conformance tracking, use the monorepo `spec/` tree and shared issue milestones. |
| 5 | +| RFC § | Topic | Status | |
| 6 | +|---|---|---| |
| 7 | +| §6.1 | Envelope (all fields incl. idempotency_key, priority, extensions, correlation_id, causation_id) | **Implemented** | |
| 8 | +| §6.2 | Message type registry | **Partial** — `ping`, `pong`, `ack`, `nack`, all 9 `session.*` types. Remaining job/stream/human/permission/subscription/artifact/telemetry types: deferred. | |
| 9 | +| §6.3 | Command / result / event flow | **Partial** — `correlation_id` / `causation_id` plumbed through `Envelope`; runtime sets them on handshake replies. | |
| 10 | +| §6.4 | Transport idempotency + logical idempotency | **Implemented** — SQLite `EventLog.append` (transport) + `EventLog.recordIdempotency` (logical). | |
| 11 | +| §6.5 | Priority semantics | **Partial** — `Priority` enum + wire form. No fairness scheduler yet. | |
| 12 | +| §7 | Capability negotiation | **Implemented** — `Capabilities` record, `CapabilityNegotiator.intersect`, required-capability rejection via session.rejected/UNIMPLEMENTED. | |
| 13 | +| §8.1 | Four-step handshake | **Partial** — open → accepted / unauthenticated / rejected. Challenge/authenticate path not yet driven. | |
| 14 | +| §8.2 | Auth schemes | **Partial** — `bearer` (StaticBearerValidator), `signed_jwt` (JwtValidator HS256), `none` (capability-gated). mTLS / OAuth2: deferred per scope. | |
| 15 | +| §8.3 | Identity in session.accepted | **Implemented** — `Identity` record carried in payload. | |
| 16 | +| §8.4 | Mid-session refresh | **Not yet wired** — record exists, runtime branch missing. | |
| 17 | +| §8.5 | Eviction | **Not yet wired** — record exists. | |
| 18 | +| §9 | Stateful sessions | **Partial** — runtime tracks principal/session_id/capabilities. Durable resume: deferred. | |
| 19 | +| §10 | Jobs | **Deferred to Phase 3** | |
| 20 | +| §11 | Streams | **Deferred to Phase 3** | |
| 21 | +| §12 | Human-in-loop | **Deferred to Phase 4** | |
| 22 | +| §13 | Subscriptions | **Deferred to Phase 5** | |
| 23 | +| §15 | Permissions & leases | **Partial** — `LeaseExpiredException` / `LeaseRevokedException` exist. Lease manager: Phase 4. | |
| 24 | +| §16 | Artifacts | **Deferred to Phase 5** | |
| 25 | +| §17 | Observability | **Partial** — SLF4J wired; `trace_id`/`span_id`/`parent_span_id` on envelope. `StandardMetrics` constants: Phase 3+. | |
| 26 | +| §18 | Error taxonomy | **Implemented** — `ErrorCode` enum (21 codes); `ARCPException` hierarchy; default retryability table. | |
| 27 | +| §19 | Resumability | **Partial** — message-id replay via `EventLog.replay`. Checkpoint resume: deferred. | |
| 28 | +| §21 | Extensions | **Implemented** — `ExtensionNamespace` validation + `ExtensionRegistry`. Unknown-message handling: dispatcher TODO. | |
| 29 | +| §22 | Transports | **Partial** — `MemoryTransport` for in-process; WebSocket + stdio in Phase 6. | |
| 30 | + |
| 31 | +## Explicit deferrals (out of scope for v0.1) |
| 32 | + |
| 33 | +- HTTP/2, QUIC transports |
| 34 | +- mTLS, OAuth2 auth schemes |
| 35 | +- Sidecar binary stream frames |
| 36 | +- §10.6 scheduled jobs |
| 37 | +- §14 multi-agent delegation / handoff |
| 38 | +- Workflow primitives |
| 39 | +- §15.6 trust elevation |
| 40 | +- Checkpoint-based resume |
| 41 | +- Artifact GC beyond periodic sweep |
| 42 | +- §12.3 quorum human-response policy |
| 43 | +- Android targets |
| 44 | +- GraalVM native-image build |
| 45 | + |
| 46 | +## Test coverage |
| 47 | + |
| 48 | +- 41 unit + integration tests, all green |
| 49 | +- JaCoCo line coverage on `:lib`: 87.4% |
| 50 | +- Spotless, javadoc (`-Werror`), Error Prone + NullAway all clean |
| 51 | +- JPMS module-info complete for the implemented surface |
0 commit comments