refactor(supervisor): cgroup boundary + pgroup subtree + single termination path
Replace POSIX-session child management with cgroup-as-boundary +
pgroup-as-subtree. Unify termination through ManagedProcess.terminate();
eliminate sol-spawning-sol inner subprocesses; route fire-and-forget Popens
through TaskQueue via callosum; replace orphan-name reaping with cgroup-
membership sweep; move scheduler dedup truth into the supervisor; add
TaskQueue shutdown coverage. Bump Python floor to 3.11 for process_group=0.
- systemd unit: KillMode=control-group, TimeoutStopSec=30
- start_new_session=True -> process_group=0 in runner, cortex, providers/cli
- Drop supervisor-local ManagedProcess; service metadata in _SERVICE_STATE
- Inner sol import (plaud) and per-file sol indexer subprocess loops removed;
import_one() callable extracted from importers/cli main()
- journal_archive and models.request_health_recheck now emit supervisor.request
via callosum_send instead of detached Popen
- Cgroup sweep at startup (Linux + systemd-only); orphan-name reaper deleted
- Supervisor-side dedup with still_running/wedged classification; supervisor
writes health/scheduler.json (atomic + locked); scheduler reloads in check()
- TaskQueue.shutdown() parallel-terminates active tasks before service shutdown
- SIGTERM cleanup handlers added to cortex and sense (parity with link)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>