3.2 KiB
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.<capability>.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.