Adds simpleaudit_studio/lifecycle.py so agents can safely start, reuse,
stop, restart, reset and uninstall a local stack without killing unrelated
processes or resetting real data.
- Instance identity: sha256 of canonical checkout path (dev) or data dir
(spin); file locks (owner.lock non-blocking, ports.lock blocking).
- Port allocation before Django starts; worktree baseline 8100.
- _live() validates PID running + create_time + UID to reject PID reuse.
- Destructive boundaries: refuses custom SIMPLEAUDIT_DATA_DIR /
SIMPLEAUDIT_SQLITE_PATH on reset/uninstall; uv cache cleanup is
package-scoped only (never global `uv cache clean`).
- manage.py `dev` and spin CLI dispatch subcommands before django.setup().
- devctl.sh rewritten as a thin compatibility wrapper; all legacy
kill -9 / pgrep / lsof port-based cleanup removed.
Fix orphaned runserver on shutdown: _stop_web now SIGTERMs the reloader
subtree by PID (psutil), never by process group, because the reloader tree
shares the o…