# gRPC advanced capability support matrix Every capability in `:grpc-advanced:*`, its grade, and what it would take to raise it. `GrpcAdvancedSupportMatrix` is the machine-readable form; `GrpcAdvancedCapability.defaultGrade` carries the same values. All capabilities are off by default. Flags are `ca-skeleton.grpc.advanced..enabled`. ## Grades | Grade | May start | Production needs a separate approval | | --- | --- | --- | | `ADVANCED_STABLE` | Yes | No | | `EXPERIMENTAL` | Yes | Yes | | `WATCH` | No | — | | `DISABLED` | No | — | ## Capabilities | Capability | Flag | Grade | Real infrastructure its evidence needs | | --- | --- | --- | --- | | Protobuf Edition 2024 | `edition-2024` | `ADVANCED_STABLE` | — | | Protobuf Edition 2026 | `edition-2026` | `WATCH` | — | | Client streaming | `client-streaming` | `ADVANCED_STABLE` | — | | Bidirectional streaming | `bidi-streaming` | `ADVANCED_STABLE` | — | | Manual flow control | `manual-flow-control` | `ADVANCED_STABLE` | — | | Read-only unary hedging | `hedging` | `EXPERIMENTAL` | — | | Custom name resolver | `custom-resolver` | `ADVANCED_STABLE` | — | | Custom load balancer | `custom-load-balancer` | `EXPERIMENTAL` | — | | Proxyless xDS | `xds` | `EXPERIMENTAL` | xDS control plane | | gRPC-Web | `grpc-web` | `ADVANCED_STABLE` | gRPC-Web proxy | | Servlet HTTP/2 | `servlet-compat` | `ADVANCED_STABLE` | Servlet container | | Spring Integration bridge | `integration-bridge` | `ADVANCED_STABLE` | — | | Reactor adapter | `reactor` | `ADVANCED_STABLE` | — | | Kotlin coroutine / Flow | `kotlin` | `ADVANCED_STABLE` | Kotlin toolchain | | Channelz / CSDS diagnostics | `channel-diagnostics` | `ADVANCED_STABLE` | — | ## What the grades mean here, concretely **Grade is a statement about the contract, not about a deployment.** Every capability's contract is implemented and tested in this repository. What no capability has is evidence from a real deployment: `GrpcAdvancedPromotionEvidence` for each one is empty, and no promotion has been granted. **Four capabilities cannot produce meaningful evidence here at all**, because the infrastructure they need is absent. `GrpcAdvancedInfrastructureTestkit.missingInfrastructure` names them, and a suite that runs without its infrastructure passes and establishes nothing. **Kotlin is the sharpest case.** This repository has no Kotlin toolchain, so `GrpcKotlinCompatibilityGate.supportableHere()` returns false and always will until one exists. The four contract requirements — one schema source shared with Java, coroutine cancellation propagated, Flow backpressure inside the Stable buffer bounds, platform evidence types preserved — are checkable without a toolchain and are checked. The compile lane is not. ## Promotion thresholds | To | Soak | Also required | | --- | --- | --- | | `ADVANCED_STABLE` | 7 days | compatibility evidence, security review, fault evidence, performance evidence, ADR, runbook, real-environment test | | Stable default | 30 days | all of the above, plus a dependency, security and operational-cost review | `WATCH` becomes `EXPERIMENTAL` before anything else. Promotions are independent: promoting one capability changes no other's grade.