Receivers were child Popen processes of gemastik-panel systemd cgroup; restarting the panel killed all team receivers (SLA -> 0/6, 401 on /api/team/N/status proxy). Now each team receiver is a systemd service (gemastik-receiver-teamN.service) generated by gen_receiver_services.py with per-team env (ports, containers, COMPOSE_LOCATION, .env). Verified: panel restart no longer kills receivers; 18/18 SLA stays UP.