fef0bc56b2
Review fold: build "\a" + sequence once and dispatch it to exactly one sink (app loop when the Application runs, write_tty otherwise) instead of two branches with two writes and two try/excepts. terminal_notify.notify() had a single caller (that fallback), so write_tty is the public no-app entry and notify() is gone. The loop-side write keeps the never-raises contract on a dead tty (EIO/closed file) the same way _pet_flush_kitty_frame does, and _ring_bell skips entirely once _terminal_io_broken is set. pty A/B re-run on this stack: 400 rings vs 90 frames, 0 aborted, 0 painted, 400/400 delivered.