Subj : src/ssh/design-channel-io-api.md To : Git commit to main/sbbs/master From : Deuc¨ Date : Sat Mar 28 2026 16:46:56 https://gitlab.synchro.net/main/sbbs/-/commit/d5a9dd33ac68c0f3fd88906d Modified Files: src/ssh/design-channel-io-api.md Log Message: Revise channel I/O design: two models, deferred window, linear accumulation Replace unified read/write proposal with two distinct I/O models: - Stream API (dssh_channel_read/write) for session channels (shell/exec) - Zero-copy callback for subsystem channels (sftp, etc.) Key design decisions: - Max packet size per-session (set once, used in all channel opens) - Max window size per-channel (deferred to channel request/accept) - Channel accept as finalization point (server callback, client function) - Linear accumulation buffer for subsystem callbacks (no ring, no wrap) - Flow control via natural window exhaustion during accumulation Co-Authored-By: Claude Opus 4.6 (1M context) --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .