cdaf0cf091
The composite action .github/actions/e2e-screen-record owns setup and lifecycle on all three OSes: ffmpeg via apt/brew-verify/winget+cache, capture via x11grab/gdigrab/avfoundation, mkv at 15fps stopped by 'q' on live stdin with kill fallback. Linux runners have no display, so start brings up a dedicated Xvfb :99 and exports DISPLAY - one display serves both the recorder and any app a later step launches. Recording moves out of the GUI driver into workflow infrastructure - that is what makes it uniform - and a missing ffmpeg or a zero-frame file now FAILS the leg instead of skipping silently: the graceful-skip path is how the windows leg shipped no recording.mkv while green. Lifecycle proven locally: start against lavfi testsrc, q-stop, ffprobe duration check (record-start.sh/record-stop.sh under nix ffmpeg).