test: fake real-subprocess/native-runtime tests in the unit gate master
De-native the five real-subprocess / native-runtime test bodies from the 2026-07-15 unit-gate audit so `make ci` no longer spawns real subprocesses, sends OS signals, polls process status on a wall clock, or shells to live ffmpeg. Dispositions: - T1 test_supervisor.py: replaced the `sh -c 'kill -STOP $$'` subprocess + wall-clock psutil.status() poll with a monkeypatched psutil.Process stub returning STATUS_STOPPED. This is the sole coverage of the stopped -> _start_termination_thread(reason="stopped") branch, so faked (not removed). Anti-vacuity: forcing the stub status to STATUS_RUNNING fails the test ("Expected 'mock' to be called once. Called 0 times."); reverting restores pass. - T2 test_talents_process.py: replaced the `python -m solstone.think.talents` subprocess + real SIGTERM race with two in-process tests — main() swallows asyncio.CancelledError and exits 0 with traceback-free stderr; main_async() registers a SIGTERM handler bound to the running task's cancel. - T3 test_transcribe.py (+ tests/fixtures/audio/*.m4a): replaced test-time ffmpeg AAC encodes with two committed .m4a fixtures decoded via load_audio's PyAV worker (no ffmpeg at decode). Multi-track fixture (silence + 440Hz@volume=4) mixes to RMS ~0.174 > 0.1. Kept one live encode->decode round-trip as @pytest.mark.integration. - T4 transcripts test_segment_routes.py / test_serve_file.py: converted the ffmpeg-muxer self-check (asserts atom order / true duration, no sol-pbc logic) to @pytest.mark.integration; added ffmpeg/ffprobe skip guards to the remaining unit consumers (two segment duration tests + the serve_file client fixture) so they skip rather than hard-fail on ffmpeg-less hosts. - T5 test_pdf_worker.py: split the truncation test — deep-truncation -> corrupt exit-code mapping (owned) stays a unit test; the mild tail-truncation pdfium-repair invariant (upstream behavior) moved to @pytest.mark.integration. Integration budget: 2 ffmpeg integration tests (T3 round-trip + T4 self-check); the T5 pdfium check is separate and uncapped. All excluded from the default `-m "not integration and not performance"` gate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>