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,25 @@
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
Accepted (amended 2026-07-18 by ADR-093 — the 9-byte wire format is now
|
||||
8-byte; `ChannelSubStreams` / `SubStreamHandle` removed; the channels
|
||||
layer has no `stream_type` concept — see "Amendment (ADR-093, 2026-07-18)"
|
||||
below)
|
||||
|
||||
## Amendment (ADR-093, 2026-07-18)
|
||||
|
||||
The wire format in `channels-core` is now **8-byte** (not 9-byte); the
|
||||
`ChannelSubStreams` / `SubStreamHandle` typed destructure accessor is
|
||||
**removed** (the channels layer has no `stream_type` concept —
|
||||
`accept_bi` yields a `BiStream`, and the handler owns its sub-stream
|
||||
multiplexing). The channel 0 pre-negotiation in `channels-call` no
|
||||
longer constructs "reassembly buffers with `stream_types` [0, 1]" — it
|
||||
constructs one reassembly buffer for `channel_id = 0`, yielding a
|
||||
`BiStream` to the `CallAdapter`. The "What moves where" table's "9-byte
|
||||
wire format" row is now "8-byte wire format"; the `ChannelSubStreams`
|
||||
row is removed. The two-crate split (`channels-core` /
|
||||
`channels-call`), the dep graph, and the "hub and worker are consumers"
|
||||
principle are unchanged. See ADR-093 for the resolution rationale.
|
||||
|
||||
## Context
|
||||
|
||||
@@ -212,10 +230,15 @@ the dependency direction (hub/worker → channels, not channels → hub/worker).
|
||||
- ADR-003: crate decomposition (no-handler-depends-on-another-handler —
|
||||
preserved; the channels sub-crates depend on core/call, not on handlers)
|
||||
- ADR-071: channels wire format (revised — substrate simplification; the
|
||||
wire format is in `channels-core`)
|
||||
wire format is in `channels-core`; **amended by ADR-093 — 8-byte header,
|
||||
no `stream_type`**)
|
||||
- ADR-093: channels pure channel multiplexing (amends this ADR — 8-byte
|
||||
wire format; `ChannelSubStreams` / `SubStreamHandle` removed; the
|
||||
channels layer has no `stream_type` concept)
|
||||
- ADR-072: channel 0 pre-negotiated (moves to `channels-call`)
|
||||
- ADR-073: channel lifecycle operations (move to `channels-call`)
|
||||
- ADR-074: ChannelBidiStreamSource (in `channels-core`)
|
||||
- ADR-074: ChannelBidiStreamSource (in `channels-core`; **amended by
|
||||
ADR-093 — `into_sub_streams` removed, `accept_bi` yields `BiStream`**)
|
||||
- ADR-075: ChannelsAdapter and ChannelManager (split: core demux in
|
||||
`channels-core`, call coupling in `channels-call`)
|
||||
- ADR-079: hub relay (in `alknet-hub` — the hub crate consumes
|
||||
|
||||
Reference in new issue
Block a user