docs(adr 070): note the self-limiting from_wss drop monitor (CON-18)

Documents the CON-18 disposition in the v1 session-lifetime section
(teardown handle still future work, but a dead import no longer leaves
a permanent monitor task) and adds the consequence pair: dead imports
self-clean after EOF + bounded grace; registrations landing past the
grace window fall back to the 30s sweeper deadline.
This commit is contained in:
2026-08-30 21:22:04 +00:00
parent d8c51dc191
commit bb709bd101
@@ -116,8 +116,14 @@ layer is done with the import. Consequences, stated explicitly:
surface as live for the process lifetime. A reconnecting assembly surface as live for the process lifetime. A reconnecting assembly
layer should tear down its whole registry and re-import, accepting layer should tear down its whole registry and re-import, accepting
the accumulated server-side sessions until the remote times them out. the accumulated server-side sessions until the remote times them out.
- A close/teardown handle (and with it, safe reconnect) is future work; - **Close/teardown handle**: future work; there is no
v1 deliberately does not build a reconnect layer (OQ-03). `WssSession::close` in v1 (OQ-03). The connection-drop monitor is
however self-limiting (review-002 CON-18): once WS read EOF is
observed, pending calls fail with retryable `CONNECTION_CLOSED`,
registrations racing the drop are drained by a fast-fail sweep
(50 ms interval) during a bounded post-EOF grace window (8
consecutive empty drains), and the monitor task then ends — a dead
import leaves no permanent task behind.
## Consequences ## Consequences
@@ -129,6 +135,10 @@ layer is done with the import. Consequences, stated explicitly:
construction (server upgrade path + consumer path share it). construction (server upgrade path + consumer path share it).
- Same-protocol import means zero translation: the remote node's ops - Same-protocol import means zero translation: the remote node's ops
appear in the local registry with their real specs and error schemas. appear in the local registry with their real specs and error schemas.
- A dead import (peer gone) self-cleans: after EOF the drop monitor
fails everything pending, drains drop-racing registrations for a
bounded grace window, and ends — no per-dead-session task leak
scales with import count (review-002 CON-18).
**Negative:** **Negative:**
@@ -138,6 +148,11 @@ layer is done with the import. Consequences, stated explicitly:
keepalive/timeout tuning — deployment concern, but worth documenting. keepalive/timeout tuning — deployment concern, but worth documenting.
- Reconnection semantics are initially minimal (OQ-03); a consumer - Reconnection semantics are initially minimal (OQ-03); a consumer
wanting hot re-registration must wait for or build the policy. wanting hot re-registration must wait for or build the policy.
- Registrations landing in the pending map after the bounded post-EOF
grace window elapses wait for the 30 s sweeper deadline instead of
failing fast — acceptable because registration-vs-EOF races resolve
well within the window in practice, and the mux write-failure path
covers the rest.
## References ## References