docs(adr): 093 — channels pure channel multiplexing (8-byte header, no stream_type)
Prune the channels spec to reflect the stream-unification resolution (docs/research/stream-unification/findings.md): the channels wire format goes from 9 bytes to 8 bytes, the channels layer no longer carries a stream_type concept, into_sub_streams() is removed, and TTY always uses its 5-byte format (carried transparently in the channels payload). ADR-093 is the umbrella decision (the channels-layer consequence of ADR-092's BiStream handler leaf): every channel is a BiStream, the handler owns its sub-stream multiplexing, the channels layer routes by channel_id only. Amends ADR-071 (8-byte header, no stream_type), ADR-074 (into_sub_streams removed, accept_bi yields BiStream), reverses ADR-077 (TTY always 5-byte), and the channels-facing clauses of ADR-072/073/075/076/080/081. Adds ADR-092 forward-reference note (into_sub_streams preservation subsequently reversed by ADR-093) and the missing ADR-092 cross-reference on ADR-070. Adds OQ-68 (add/strip API shape — built-in vs utility; the contract is decided in ADR-093, the function surface is open; two-way door, low priority, decision-ready when the channels crate's implementation begins). Rewrites the 7 channels spec docs (README, overview, channels-wire, channels-connection, channels-adapter, channel-operations, channel-client) to describe the post-amendment shape as current, with the 8-byte header, the add/strip composition, single accept_bi accessor, BiStream per channel, and TTY-always-5-byte. Touch-up cross-references in hub README, client README, ADR-085, and the OQ-45/47/65 question files (TTY-internal stream_type 3 → STREAM_CTRL_IN; channels 9-byte → 8-byte).
This commit is contained in:
1 parent
c2b7055a64
commit
a3cb44968e
31 files changed
+1501
-519
No files matched your search
@@ -814,11 +814,16 @@ See [open-questions.md](../../open-questions.md) for full details.
|
||||
ALPN would serve the same role over QUIC/TCP without HTTP.
|
||||
- **OQ-65** (open): WebSocket carrying channels — whether the browser
|
||||
path extends from call-protocol-only (ADR-048) to full channels
|
||||
(the 9-byte chunk format over WebSocket binary frames). If chosen,
|
||||
(the 8-byte chunk format over WebSocket binary frames). If chosen,
|
||||
the browser is a first-class channels participant and the hub relay
|
||||
works unchanged for browser legs. The web endpoint advertises
|
||||
`alknet/channels` by default (ADR-086 §3 — the advertisement is
|
||||
settled; OQ-65 governs whether the browser path uses it).
|
||||
- **OQ-68** (open): Channels add/strip API shape — whether the 8-byte
|
||||
header add/strip is built into the channels read/write path or
|
||||
exposed as a standalone utility. The *contract* is decided (ADR-093);
|
||||
the *function surface* is not. Does not block the hub (the hub uses
|
||||
the `ChannelManager` interface either way).
|
||||
- **OQ-52** (open): `CallConnection::wait_for_close()` — the
|
||||
supervision loop needs a way to await connection close. The
|
||||
committed interim is polling `connection().accept_bi()` until
|
||||
|
||||
Reference in new issue
Block a user