# Changelog ## 0.1.0 (Unreleased) Initial release. ### Features - Async process supervision built on Python `asyncio` - Zero external dependencies — pure Python stdlib - INI-based configuration compatible with Supervisor conventions - Process lifecycle management with state machine (STOPPED, STARTING, RUNNING, BACKOFF, STOPPING, EXITED, FATAL, UNHEALTHY) - Multiple process instances via `numprocs` - Process groups with batch start/stop operations - TCP and script-based health checks with configurable intervals, timeouts, and retries - Auto-restart on process exit and health check failure - Configurable start retries with FATAL state on exhaustion - Hot configuration reload (add/remove programs without restart) - Unix socket RPC with length-prefixed JSON protocol - CLI control tool (`supervicectl`) with status, start, stop, restart, reload commands - Graceful and forced restart (`--force` flag for SIGKILL) - Process group kill (kills entire process tree, not just main PID) - Double-fork daemonization with PID file locking (`fcntl.flock`) - Log rotation via `RotatingFileHandler` - Per-process uptime tracking and display - User switching with `setuid`/`setgid` (requires root) - Linux orphan prevention via `prctl(PR_SET_PDEATHSIG)` - Log file path substitution with `%(process_num)s` - Quote-aware environment variable parsing - SIGHUP handling (logged and ignored) - Bounded event queue with backpressure (prevents memory exhaustion) - Restrictive Unix socket permissions (`0o600`) - Full `mypy --strict` compliance - Comprehensive test suite (63 tests)