- Shipped
- September 3, 2026 at 5:50 PM UTC
- Author
- Kamo
- Commit
- e9274bc
The existing tests pin argv and framing in isolation; these four prove the pieces actually move bytes. A shell is forked under a genuine pty.fork and pumped over a socketpair, so what runs is the select loop, the frame decode on the way in, the encode on the way out, the resize ioctl and the EOF handling — the agent's whole half of the protocol. The one thing stubbed is `su - <user>`, which needs root and a provisioned account; the spawner is injected to exec a plain shell instead. The EIO case is the one worth having. A PTY signals its child's exit with EIO on read rather than a clean EOF, and getting that wrong turns a normal `exit` into an exception — the browser would see a crash where it should see a close. 111 tests pass.