AppImage shutdown reproduction driver

Build each commit with vp i followed by vp run dist:desktop:linux.
Run python3 install-launcher.py before /absolute/path/to/base.AppImage
Run python3 drive.py before /path/printed/by/installer/home/bin/t3
Repeat both commands with after and the head AppImage.

install-launcher.py opens the real packaged desktop app under headless-desktop with isolated configuration, waits for its bundled t3 launcher, then stops the desktop session.
drive.py starts that installed launcher with start_new_session=True, waits for port 45817, captures the actual process tree and FUSE mount, then sends SIGTERM to the process group. It repeats with fresh state and SIGHUP. It records real terminal output as an asciicast and transcript. It makes no changes to launcher or server code.

AI-assisted; verified with the tests and tools listed above.
