A sandboxed client can read a live daemon's runtime record while still being unable to reach its endpoint. Discovery previously collapsed that probe failure into absence, so `Manager.Ensure` could start a competing daemon against the same state.
PID-aware discovery now skips definite process-identity mismatches, keeps scanning after a failed probe, and returns a typed `UnreachableError` with the record, endpoint, and underlying probe failure when no later record succeeds. The manager already stops on discovery errors, so this prevents an unsafe start without adding restart policy to the shared package.
The repository hooks had a stale whole-repo lint, NilAway, Testify-helper, and Git-fixture baseline that blocked the daemon change. Most of the resulting test churn is mechanical helper conversion. The fixture changes isolate global and system Git config and strip repository-local variables inherited by hooks, which makes the shuffled suite deterministic under the real commit environment.
Sources of inspiration:
- [Vite Plus v0.2.9](https://github.com/voidzero-dev/vite-plus/releases/tag/v0.2.9), with the sandbox IPC work in [Vite Task #569](voidzero-dev/vite-task#569) and [#576](voidzero-dev/vite-task#576)
- [Kata #266](kenn-io/kata#266), which first kept a live daemon's failed probe distinct from absence
- [RoboRev #1021](kenn-io/roborev#1021), which applied the same boundary to daemon access errors and lifecycle decisions
Co-authored-by: Marius van Niekerk <mariusvniekerk@users.noreply.github.com>
Summary
Motivation
A sandboxed client can sometimes read the daemon runtime metadata while being
unable to access its Unix socket. Previously, health checks reported that no
daemon was running and normal commands could attempt another start, eventually
reporting a startup timeout.
This distinguishes an absent daemon from a live but unreachable one while
preserving the existing
daemon_unavailableCLI error category.