docs(review 007 Unit 2): WS-31 discovery-shadowing note + record corrections
- WS-31: websocket.md §"Data channels for browsers" + ADR-067's landed note record that WS-session discovery is the bootstrap set — the hook's bootstrap `services/*` registrations overwrite a base-registry `services/*` registration on the WS path by design (a deployment's custom `services/list` is shadowed on WS sessions only). - ADR-048's landed note: correction + completion — the WS-26 retention sentence was aspirational at the landed commit (WS-28) and is now real; the UP-02 posture's override half is now an explicit surface (`with_ws_op_register_acl` / `OpRegisterAcl`), with the note that `ChannelsPolicy` could not carry an op ACL. - ADR-067's landed note: review-007 notes (WS-28 fix + gate, WS-29 surface, WS-31 record). - OQ-05 resolution: the retention claim carries the WS-28 correction. - review-006 UP-02 log + WS-26 paragraph: corrections marking what the pre-fix tree did not have, with the landed remediation named. - review-002 WS-17: the "bounded at 64 sessions" claim corrected — the bare-registry semaphore was per-request and bounded nothing; `SessionSlots` is the shared-cap surface. - review-007 status: open for remediation → remediated, with the decisions taken (both "implement" options) and the gate names. Verification: cargo test 454 passed / 0 failed; cargo doc --no-deps clean (6 pre-existing warnings, identical at baseline). Review: docs/reviews/007-ws-data-channel-surface-review.md
This commit is contained in:
@@ -51,6 +51,22 @@ Accepted
|
||||
> `AccessControl::default()` (the SRV-10 permissive-crate-default
|
||||
> precedent); deployments gate via a stricter `ChannelsPolicy`
|
||||
> passed through the hook (review 006 UP-02 decision).
|
||||
>
|
||||
> **Review-007 correction + completion (2026-09-05):** the retention
|
||||
> sentence above was, at the time of the landed note, aspirational —
|
||||
> review 007 WS-28 found the `ConnectionGuard` dropping at the end of
|
||||
> its `if let` block (the handle visible for microseconds) and
|
||||
> remediation bound it in the channel-0 task's frame; the retention is
|
||||
> now real, gated by
|
||||
> `live_connections_visible_mid_session_and_drain_after_teardown`.
|
||||
> The ACL posture's second half is likewise now real as an explicit
|
||||
> surface (the `ChannelsPolicy` object could not carry an op ACL):
|
||||
> `HttpAdapter::with_ws_op_register_acl` / the `OpRegisterAcl`
|
||||
> request extension set the `op/register` op's `AccessControl` —
|
||||
> default unchanged (`AccessControl::default()`, any authenticated
|
||||
> peer may announce); a deployment restricting which authenticated
|
||||
> peers may announce threads a stricter value. The UP-02 posture
|
||||
> stands; only the override surface it named now exists.
|
||||
|
||||
## Status amendment (alkhttp port)
|
||||
|
||||
|
||||
@@ -119,6 +119,18 @@ On upgrade, the handler:
|
||||
> (WS-26). Gates: the six e2e scenarios in
|
||||
> `tests/ws_upgrade_session.rs` + the `services/list-peers` announced-op
|
||||
> discovery gate (alkcall 0.3.1).
|
||||
>
|
||||
> **Review-007 notes (2026-09-05):** WS-28 fixed the WS-26 retention —
|
||||
> the `ConnectionGuard` now lives in the channel-0 task's frame (its
|
||||
> drop removes the handle on any teardown path), verified by
|
||||
> `live_connections_visible_mid_session_and_drain_after_teardown`.
|
||||
> WS-29 implemented the `op/register` override surface the review-006
|
||||
> UP-02 posture named: `HttpAdapter::with_ws_op_register_acl` on the
|
||||
> built-in surface, the `OpRegisterAcl` request extension on
|
||||
> bare-registry routes (default still `AccessControl::default()`).
|
||||
> WS-31 recorded: WS-session discovery is the bootstrap set — the
|
||||
> hook's bootstrap registrations overwrite a base-registry
|
||||
> `services/*` registration on the WS path by design.
|
||||
|
||||
Everything ADR-048 says about dispatch — `call.requested` →
|
||||
`Dispatcher::dispatch_requested` with `AccessControl::check` gating,
|
||||
|
||||
Reference in New Issue
Block a user