a73x

89ebdc4d

docs(e2e): give the paste leg's waits the reasons they actually run on

a73x   2026-08-15 18:33

Commit message
docs(e2e): give the paste leg's waits the reasons they actually run on

Both comments reached a true conclusion through a mechanism that was not
the one doing the work — the shape this branch has now hit four times, and
the shape a future editor acts on because the conclusion checks out.

The exit repaint is not the last traffic on the master; the shell's prompt
follows it. What holds is the ordering: nvim writes before it exits, so
everything after comes after the write.

And the settle before `:wq` was credited to a repaint, which settle's own
docstring disclaims — it proves silence, never arrival. The real guarantee
is that the verb cannot return inside its quiet window whatever the screen
does, and that separation is what puts ESC and the colon in different reads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

test/e2e.sh
Old New
@@ -2885,18 +2885,20 @@ settle 500 20000
2885 # Two sends, not one. Delivered in the same read as the colon, nvim's input 2885 # Two sends, not one. Delivered in the same read as the colon, nvim's input
2886 # parser is entitled to read the ESC as the Alt- prefix of Alt-colon rather 2886 # parser is entitled to read the ESC as the Alt- prefix of Alt-colon rather
2887 # than as leaving insert mode, and the file would never be written. The 2887 # than as leaving insert mode, and the file would never be written. The
2888 # settle between them is a condition, not a timer: nvim repaints the mode 2888 # settle between them is not a timer for a repaint: what the split needs is
2889 # line on leaving insert, so the silence ending this verb IS that repaint 2889 # the ESC and the colon landing in different reads, and this verb cannot
2890 # being over, and it outlasts by far the 50ms ttimeoutlen the ambiguity 2890 # return in under its quiet window whatever the screen does, which is that
2891 # actually turns on. 2891 # separation — by far outlasting the 50ms ttimeoutlen the ambiguity turns
2892 # on. (settle proves silence, never arrival; see its docstring.)
2892 send \x1b 2893 send \x1b
2893 settle 300 15000 2894 settle 300 15000
2894 send :wq\r 2895 send :wq\r
2895 # What makes the file safe to read after this is the ORDERING, not the 2896 # What makes the file safe to read after this is the ORDERING, not the
2896 # number: nvim writes the buffer before it exits, and its exit repaint is 2897 # number: nvim writes the buffer before it exits, so everything that follows
2897 # the last traffic the master ever sees, so silence after that repaint 2898 # on the master — its exit repaint, then the shell's prompt — comes after
2898 # cannot precede the write. The 800 is slack on top of a guarantee, not a 2899 # the write, and silence measured past all of that cannot precede it. The
2899 # measurement of how long nvim takes. 2900 # 800 is slack on top of a guarantee, not a measurement of how long nvim
2901 # takes.
2900 settle 800 20000 2902 settle 800 20000
2901 send \x1c 2903 send \x1c
2902 waitexit 10000 2904 waitexit 10000