81 lines
4.2 KiB
Markdown
81 lines
4.2 KiB
Markdown
# Conditional Inbound Transport Boundary Implementation Plan
|
|
|
|
> **Execution:** Apply TDD independently per transport, then run exact no-skip qualification and an
|
|
> independent read-only review before beginning P2 cleanup.
|
|
|
|
**Goal:** Make GraphQL, gRPC, and WebSocket opt-in status truthful, fail closed on unsafe activation,
|
|
and release-blocked by real protocol evidence without adding them to the default runtime.
|
|
|
|
### Task 1: Runtime Membership and Opt-In Composition
|
|
|
|
**Files:** `src/config/architecture/modules.json`, `src/settings.gradle`, `src/build.gradle`,
|
|
`src/app-bootstrap/build.gradle`, app-bootstrap conditional transport tests
|
|
|
|
- [ ] Add and fail-closed validate exact `runtime_memberships` for all 19 leaves.
|
|
- [ ] Compare registry membership to both composition roots' direct production project edges.
|
|
- [ ] Add an isolated conditional-transport test classpath containing all three opt-in leaves.
|
|
- [ ] Prove the default graphs omit them and the explicit qualification graph contains them.
|
|
|
|
### Task 2: gRPC Safe Activation and Wire Errors
|
|
|
|
**Files:** `src/adapter/inbound/grpc/**`
|
|
|
|
- [ ] Add RED tests for disabled bean/listener absence and safe property defaults/validation.
|
|
- [ ] Add real Netty feature RPC tests for auth success/failure and reflection disabled.
|
|
- [ ] Add RED tests for throw, `onError(ApiErrorCarrier)`, and raw status sentinel paths.
|
|
- [ ] Implement loopback-only explicit insecure mode, required feature authentication policy, and
|
|
`ServerCall.close` sanitization.
|
|
- [ ] Update dependencies, locks, README, and CLAUDE truthfully.
|
|
|
|
### Task 3: GraphQL Real HTTP Boundary
|
|
|
|
**Files:** `src/adapter/inbound/graphql/**`
|
|
|
|
- [ ] Add random-port HTTP tests for auth, CORS, GraphiQL/introspection policy, and health.
|
|
- [ ] Add carrier/unknown exception sentinels and assert absence from the complete JSON response.
|
|
- [ ] Change production resolver/config only where the RED wire contract proves necessary.
|
|
- [ ] Update dependencies, locks, README, and CLAUDE truthfully.
|
|
|
|
### Task 4: WebSocket Safe Activation and Wire Boundary
|
|
|
|
**Files:** `src/adapter/inbound/websocket/**`
|
|
|
|
- [ ] Add RED settings/disabled-context tests and real STOMP origin/auth/subscription tests.
|
|
- [ ] Add RED broker-send and ERROR-frame sentinel tests.
|
|
- [ ] Add RED no-projection/no-broadcast plus safe projection broadcast tests.
|
|
- [ ] Implement disabled default, validated settings, inbound authorization, safe error handler, and
|
|
explicit primitive projection allowlist.
|
|
- [ ] Update dependencies, locks, README, and CLAUDE truthfully.
|
|
|
|
### Task 5: Exact No-Skip Release Gate
|
|
|
|
**Files:** `src/build.gradle`, `.github/workflows/ci-quality-gates.yml`,
|
|
`.github/ci-gate-matrix.yml`, `.github/scripts/verify-gate-matrix.sh`, wrapper manifest contract
|
|
|
|
- [ ] Register exact per-transport Test lanes with no-match/no-discovery/zero-skip enforcement.
|
|
- [ ] Register the aggregate `conditionalTransportQualification` task.
|
|
- [ ] Invoke it explicitly from the release-blocking quality job and add the gate-matrix record.
|
|
- [ ] Add semantic tests that fail if any required lane or workflow invocation disappears.
|
|
|
|
### Task 6: Verification and Review
|
|
|
|
- [ ] Run each leaf `check`, exact qualification, app-bootstrap composition contract, dependency
|
|
locks, env keys, architecture, public path, wrapper validation, and `git diff --check`.
|
|
- [ ] Run full `test`/`check` in proportion to the cross-cutting registry/build changes.
|
|
- [ ] Request independent read-only review; resolve all Critical/Important findings.
|
|
- [ ] Capture the batch in the LLM Wiki before final completion reporting.
|
|
|
|
### Explicit P2 Deferral
|
|
|
|
- GraphQL feature schema, field auth, cost/depth, persisted queries, DataLoader, subscriptions.
|
|
- gRPC TLS/mTLS, external bind, proto compatibility, deadlines, streaming/backpressure.
|
|
- WebSocket broker relay, multi-node delivery, resume/replay, backpressure, versioned feature catalog.
|
|
- Transport dashboards, SLO alerts, and provider/ingress qualification.
|
|
# Implementation status
|
|
|
|
- Completed on 2026-08-02.
|
|
- Verified by `conditionalTransportQualification`: GraphQL 8, gRPC 15, WebSocket 5,
|
|
composition 1; skipped 0.
|
|
- Verified by the real CI gate-matrix validator and focused bypass regression tests.
|
|
- Independent review result: READY, Critical 0 / Important 0 / Minor 0.
|