Skip to content

Commit 985519e

Browse files
committed
docs: CONFORMANCE.md status through phase 2
1 parent 25db897 commit 985519e

1 file changed

Lines changed: 49 additions & 3 deletions

File tree

CONFORMANCE.md

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,51 @@
1-
# Conformance
1+
# Conformance — ARCP Java SDK v0.1-WIP
22

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).
44

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

Comments
 (0)