mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 00:02:23 +00:00
An interrupted `tty7 run` strands a pane. So does a window reconciling its layout while something else edits the tree — measured at 17 from 160 operations, every one a live `zsh` holding a pty and its descriptors, and `tty7 pane close --orphans` ended all 17. None of that was news to tty7: `pane ls --all` names them, the switcher lists them, and the reaper works. What was missing is that nothing volunteered they existed. `doctor` printed `status pid …, up 6s, 2 panes` and counted the stray among them, so the one verb somebody runs when something feels wrong had the number and did not say what it meant. A row and a `server.orphans` count. Deliberately not an exit code: one stray after an interrupted `run` is ordinary and the reference documents it as such, so `tty7 doctor || alert` firing on it would cry wolf. What was missing was the sentence, not an alarm. Counted inside the arm that already has the machine tree in hand for the dangling-context row, so it costs no extra round trip, and under `server` because it takes a server to have panes at all. The first draft put the count at the top level of the JSON, and `the_doctor_json_sections_are_the_ones_the_reference_names` — added earlier today for exactly this — caught it as an undocumented section before it went anywhere.