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
@@ -2,7 +2,26 @@
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
Accepted (amended 2026-07-18 by ADR-093 — backpressure is per-`channel_id`,
|
||||
not per-`(channel_id, stream_type)`; the channels layer has one reassembly
|
||||
buffer per channel, yielding a `BiStream` — see "Amendment (ADR-093,
|
||||
2026-07-18)" below)
|
||||
|
||||
## Amendment (ADR-093, 2026-07-18)
|
||||
|
||||
The bounded-buffer backpressure is per-`channel_id` (not per
|
||||
`(channel_id, stream_type)`). The channels layer has one reassembly
|
||||
buffer per channel (yielding a `BiStream`), not one per
|
||||
`(channel_id, stream_type)`. The 1 MiB default and the 256-channel cap are
|
||||
unchanged; the per-channel memory ceiling is 1 MiB (was up to 5 MiB for a
|
||||
TTY channel with 5 active stream_types under the per-stream_type model).
|
||||
This is a net improvement (lower memory ceiling per channel), not a
|
||||
regression. The bounded-buffer *approach* is unchanged; only the
|
||||
buffer granularity changes (per-channel, not per-stream_type).
|
||||
|
||||
The body below describes the **original** (per-stream_type) shape; the
|
||||
amendment above is the operative decision. See ADR-093 for the resolution
|
||||
rationale.
|
||||
|
||||
## Context
|
||||
|
||||
@@ -134,7 +153,10 @@ doesn't change the wire format, so even that reversal is feasible.
|
||||
|
||||
## References
|
||||
|
||||
- ADR-071: channels wire format (the chunks the buffers hold)
|
||||
- ADR-071: channels wire format (the chunks the buffers hold, as amended
|
||||
by ADR-093)
|
||||
- ADR-093: channels pure channel multiplexing (amends this ADR —
|
||||
per-channel reassembly buffer, not per-`(channel_id, stream_type)`)
|
||||
- ADR-073: channel lifecycle operations (`channel:too_many_channels` error)
|
||||
- ADR-075: ChannelManager (`buffer_cap`, `max_channels`, `next_id` fields)
|
||||
- `docs/research/alknet-channels/poc-summary.md` §POC Target 1 (backpressure
|
||||
|
||||
Reference in new issue
Block a user