diff --git a/docs/architecture/decisions/048-websocket-native-session-not-gateway.md b/docs/architecture/decisions/048-websocket-native-session-not-gateway.md index 1255116..0470e38 100644 --- a/docs/architecture/decisions/048-websocket-native-session-not-gateway.md +++ b/docs/architecture/decisions/048-websocket-native-session-not-gateway.md @@ -15,6 +15,27 @@ Accepted > its rationale are recorded in > [OQ-05](../open-questions.md); the native-session contract below > stands as what the deferred wiring must satisfy. +> +> **Re-point (2026-09-03):** the two alkcall mechanisms this wiring +> composes on now exist. alkcall review 004 Units 1–3 landed the +> per-session fork as the dispatch registry (alkcall ADR-047 §4 +> amendment #2), the full-duplex serving loop +> (`Dispatcher::serve_single_stream`, opt-in via +> `ChannelClient::from_connection_with_serving`), and the +> `op/register` bootstrap op (alkcall ADR-022 amendment 2026-09-03 — +> the bootstrap-op set each side may serve). The browser +> bidirectionality promise is no longer standing on unmechanized +> commitments: the deferred WS wiring (OQ-05, alkhttp review 003 +> Unit 2) composes on those alkcall ADRs. +> +> **Updated (2026-09-04):** alkcall review 005 remediated the landed +> mechanisms (serving-loop concurrency, `op/register` collision +> policy, spec round-trip completeness) and alkcall 0.3.0 shipped +> them; alkhttp now consumes 0.3. The ADR-022 collision policy +> (2026-09-04 sub-amendment) binds here too: a peer-announced op may +> replace other peer-announced ops but never the serving side's own +> registrations — the WS session's `op/register` handler gates on the +> session fork. ## Status amendment (alkhttp port) diff --git a/docs/architecture/open-questions.md b/docs/architecture/open-questions.md index 295a484..3431d17 100644 --- a/docs/architecture/open-questions.md +++ b/docs/architecture/open-questions.md @@ -99,10 +99,22 @@ with their resolutions; new alkhttp OQs start at OQ-01. - **Resolution**: (pending — v1 cut recorded 2026-08-29 in ADR-067 and ADR-048; the recently landed WS robustness work — idle-read timeout, session caps/eviction, pump consolidation — is the foundation the - deferred work builds on) + deferred work builds on. **2026-09-03**: the alkcall mechanisms this + wiring composes on landed — alkcall review 004 Units 1–3: the + per-session fork as dispatch registry (alkcall ADR-047 §4 amendment + #2), the opt-in connect-side serving loop + (`Dispatcher::serve_single_stream`), and the `op/register` bootstrap + op (alkcall ADR-022 amendment 2026-09-03). **2026-09-04**: alkcall + review 005 remediated the landed mechanisms (serving-loop + concurrency, `op/register` collision policy, spec round-trip + completeness) and alkcall 0.3.0 shipped them; alkhttp now consumes + 0.3. What remains here is alkhttp-side wiring only — alkhttp review + 003 Unit 2.) - **Cross-references**: [ADR-067](decisions/067-websocket-carries-channels.md), [ADR-048](decisions/048-websocket-native-session-not-gateway.md), - [websocket.md](websocket.md), tasks/websocket/review-001-ws-data-channel-decision.md + [websocket.md](websocket.md), tasks/websocket/review-001-ws-data-channel-decision.md, + alkcall reviews 004–005 (`alkcall/docs/reviews/004-per-connection-dispatch-and-client-serving-review.md`, + `alkcall/docs/reviews/005-serving-loop-concurrency-and-op-register-review.md`) ## Resolved (ported)