Real isolated Linux TCP receiver-backpressure experiment, run 2026-09-20. Run: sudo python3 lab.py in dedicated podman-machine-default. The enclosing shell starts VM, uses SSH sudo, and stops VM in an EXIT trap. Final exit0; Machine stopped successfully. No installation, host routes or production I/O. Linux6.18.10-200.fc43.aarch64 / Python3.14.3 / iproute2 ss6.14.0. Owned net18-04709bfd-a/b, veth eth0, 10.18.0.1:34198 to10.18.0.2:46018. Both namespace names are logged as removed; capture/endpoint children cleaned. Before bind/listen, B requests SO_RCVBUF4096, listener getsockopt8192; accepted socket also8192. A requests SO_SNDBUF8192 before connect, reads16384. Linux buffer accounting includes extra bookkeeping space. The readback is not an advertised-window size. Explicit SO_RCVBUF disables receive-buffer automatic tuning for this socket; this experiment DOES NOT validate automatic tuning. Capture READY precedes handshake. Both endpoints report CONNECTED. B waits on GO without calling recv. A receives GO and reports enter_sendall for262144B, then calls sendall. Capture recognizes B's actual zero-window frame10 and immediately reports an event over its stdout pipe. Parent checks that A has not reported return, reads ss from both namespaces, checks again, then releases B's receive barrier. No fixed sleep guesses whether zero window has occurred. Actual handshake: frame2 A SYN: SEQ875099452, window64240, WS10. frame3 B SYNACK: SEQ2753565509, ACK875099453, window2896, WS0. Both SYNs contain WS, enabling negotiated scaling. SYN/SYNACK window fields are unscaled. Subsequent A window63 means64512 for the B-to-A direction; B window2896 means2896 for A-to-B. The shifts belong to each advertiser. frame10 B ACK875103797/window0; frame11 after resume B sameACK/window2896. This proves a positive window, zero window, and positive window recovery in this run; it is not a smooth monotonic-window-decline claim. At the zero-window barrier, A ss: ESTAB, Recv-Q0/Send-Q13032, skmem tb16384, notsent13032, rwnd_limited46ms(100.0%). B ss: ESTAB, Recv-Q4344/Send-Q0, r7224/rb8192. All original ss fields are in run.jsonl. A had entered its sendall call and no completion report was available before or after these snapshots. This combines program progress with kernel queues; it does not identify a CPU scheduling state or a specific kernel stack frame. The receive buffer was never equated to window bytes or network capacity. Actual application source is bytes(range(256))*1024. B appends bytes returned by recv and compares every byte with expected data, then hashes the actual buffer:262144B, SHA256 2312394bd99545d9de131c24efb781e765ac1aec243f2ed9347597a793a415e9. A enter_sendall timestamp7522845778ns; observed zero7565805729ns; resume7572413058ns; sendall returned7574003984ns; B complete7574229860ns. Zero-to-resume6.607329ms. Sendall returned before B's completion report in this run. Local send completion is not proof of peer application completion. These are user-space monotonic timestamps with scheduling overhead, not wire/kernel timestamps or production benchmarks. Additional observed behavior is retained, not suppressed: frame8 and frame9 are A SEQ875102349 with1448 payload bytes; ss A bytes_retrans1448, retrans0/1, dsack_dups1; B skmem d1. This duplicate occurs BEFORE frame10 zero window. There was no deliberate network fault injection and no kernel tracepoint attribution. Do not label it a proven zero-window probe or infer a unique loss/retransmission cause from these fields. No RST appeared. Zero- window persist/probe behavior remains unverified; reading resumes promptly. All217 raw frames retained with decoded frame correspondence. Capture is at B's veth, with potential offload/aggregation artifacts (max captured TCP payload2896B); it is not a physical wire trace. Decoder handles only the controlled untagged/unfragmented IPv4 TCP frames, extracts WS from options, and does not verify checksums or fully interpret other options. Small buffer, local RTT and this payload do not establish Internet throughput or memory limits. Finite12s endpoint/barrier timeouts,30s capture deadline,4096-frame bound and owned-resource finally cleanup constrain this experiment. First actual VM run succeeded. No failed network experiment to omit. CLI checked: --help0, --bad2, macOS default guard1 before network mutation. Python no-excuse checker zero violations; diff --check passed. No commit/push. Sources checked during writing: https://man7.org/linux/man-pages/man7/tcp.7.html https://www.rfc-editor.org/rfc/rfc7323.html