sync + sync/atomic annotations across 13 files in go-process. health.go is committed separately via #298 (combined sync annotation + fmt/strings banned-import purge). Co-authored-by: Codex <noreply@openai.com> Closes tasks.lthn.sh/view.php?id=296
Removes testify + davecgh/go-spew + pmezard/go-difflib from go.mod; rewrites assert/require calls across 13 _test.go files (buffer/daemon/errors/exec/global/health/pidfile/process/program/ registry/runner/service + pkg/api/provider) to stdlib t.Fatalf patterns. go vet + go test all clean (GOWORK=off). Closes tasks.lthn.sh/view.php?id=719 Co-authored-by: Codex <noreply@openai.com> Via-codex-lane: Cyclops-719 dispatch (haiku forwarder, ~17min lane)
Co-Authored-By: Virgil <virgil@lethean.io>
- Update CLAUDE.md: document Detach, DisableCapture, ShutdownTimeout, auto-registration, graceful shutdown, and error handling conventions; add missing go-log and go-io dependencies - Replace ServiceError type in process_global.go with coreerr.E() sentinel errors for consistency with the rest of the package - Wrap raw error returns in Registry.Register, Registry.Unregister, and PIDFile.Release with coreerr.E() for proper context - Add tests for Service.Kill, Service.Output, Service.OnShutdown, Service.OnStartup, Service.RunWithOptions, Service.Running, Process.Signal, Daemon.Run (context cancellation), Daemon.Stop (idempotent), DisableCapture, Detach, env vars, exec.WithDir, exec.WithEnv, exec.WithStdin/Stdout/Stderr, exec.RunQuiet - Coverage: root 82.7% → 88.3%, exec/ 61.9% → 87.3% Co-Authored-By: Virgil <virgil@lethean.io>
When Registry is set on DaemonOptions, Start() auto-registers the daemon (filling PID and Health address) and Stop() auto-unregisters it. Consumers without a registry are completely unaffected. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>