# Java SDK IT Coverage Registry This registry records which public Java SDK interfaces are covered by `test/java-sdk-test` integration tests and the scenario groups each class verifies. The detailed scenario matrix lives in [`JAVA_SDK_IT_SCENARIOS.md`](JAVA_SDK_IT_SCENARIOS.md). A `Partial` status means the current IT has representative coverage but must not be treated as complete SDK API scenario coverage. Java SDK ITs run only with the dedicated Maven profile `java-sdk-integration-test`. The generic `integration-test` profile belongs to HTTP API IT CI and should build this module without executing SDK IT cases. ## Client SDK | SDK interface | IT class | Status | Scenario coverage | Known gaps | | --- | --- | --- | --- | --- | | `ConfigService` | `ConfigServiceJavaSdkITCase` | Covered | Verifies factory creation, publish/query/getConfigWithResult/CAS/remove lifecycle, missing-result shape, missing/idempotent removal, standalone `addListener`, listener removal behavior, null listener rejection for add/sign/remove paths, client-side invalid parameter handling, valid `JSON` type metadata, unknown type compatibility, config filter request/response transformation, fuzzy-watch matched keys/add/delete/cancel behavior, missing config behavior, and shutdown cleanup. | `getConfig` timeout simulation is intentionally excluded from standalone Java SDK IT because it is not deterministic to force against the shared running server. | | `NamingService` | `NamingServiceJavaSdkITCase` | Partial | Verifies factory creation, explicit/default group registration, string and `Instance` overloads, cluster string overloads, duplicate register idempotency, single persistent instance lifecycle, missing/repeated deregister idempotency, batch register, empty batch register no-op behavior, partial batch deregister, current null-list batch pre-remote failure behavior, query/select/list/deregister lifecycle, subscribe=true cached refresh, service-list pagination and deprecated selector overload boundaries, cluster and metadata behavior, explicit unhealthy selection, disabled/zero-weight filtering, subscribe callback delivery, subscribe state, cluster and public selector listener filtering, fuzzy-watch matched service keys/add/cancel behavior, null listener no-op, unsubscribe-stop behavior, validation for blank service, null instance, blank instance IP, invalid port/cluster, invalid heartbeat metadata, persistent batch member, empty batch deregister, mismatched group prefix, missing service empty result, no-healthy selection failure, and shutdown cleanup. | Fuzzy-watch delete-service events are not stable through public instance deregistration because the SDK has no public service delete API. | | `AiService` / `A2aService` | `AiServiceJavaSdkITCase` | Partial | Verifies factory creation, MCP release/query/subscribe, MCP latest and duplicate-version controlled error behavior, direct MCP endpoint-spec release, versioned and default/latest MCP endpoint register/query/deregister for remote servers, missing MCP endpoint controlled error, MCP stdio endpoint registration controlled error, A2A agent card release/query/subscribe/unsubscribe-stop, A2A latest-version behavior, A2A duplicate-version idempotency, A2A missing-card get behavior, single/batch/TLS A2A endpoint registration with endpoint-detail assertion, current-value listener callbacks, missing-resource nullable MCP/A2A/Prompt subscribe shapes, gRPC Skill/AgentSpec unsupported error mapping, missing skill download controlled exception, SDK validation for MCP/A2A/Prompt/Skill/AgentSpec required parameters, endpoint validation, batch endpoint version mismatch, and shutdown cleanup. | MCP unsubscribe-stop behavior, missing A2A endpoint behavior, and functional Prompt/Skill/AgentSpec resource scenarios remain because the public Java SDK exposes query/download/subscribe APIs but not stable create/upload APIs for standalone IT setup. | | `LockService` | `LockServiceJavaSdkITCase` | Covered | Verifies factory creation, distributed lock acquire/compete/release/reacquire lifecycle, repeated release boundary, expiration-based reacquire, unsupported lock type and missing key error mapping, null lock-instance SDK boundary, direct `remoteTryLock`/`remoteReleaseLock`, and shutdown cleanup. | No known public `LockService` scenario gap in the standalone Java SDK IT. | ## Pending SDK Surfaces The following SDK surfaces are documented by `specs/*/testing/java-sdk-integration-test-spec.md` and should be added in later batches: - deprecated `NamingMaintainService` - maintainer-client SDK interfaces are tracked separately in `test/maintainer-sdk-test`