fix(hooks): make detached trail-refresh diagnosable and throttled
Commit

Two re-analysis follow-ups to the #450 detached trails-enablement refresh.
Diagnosability: the __refresh_trail_enablement child runs with stdout/stderr discarded and never initialized file logging, and runTrailEnablementRefresh swallowed the scope/auth/network errors — so a failing background refresh (the exact #450 unreachable-host symptom) left no trace in .entire/logs/entire.log, stderr, or doctor bundles. The child now initializes file logging (mirroring the other hook-side commands) and the refresh logs its outcome at debug, restoring the diagnostic trail the inline path used to emit.
Spawn throttle: when the host is unreachable the refresh never writes the cache, so enablement stays unknown and the hourly TTL never starts — previously every SessionStart (and every concurrent worktree) forked a fresh child that re-opened the repo, re-resolved auth, and re-dialed the dead host. A flock-guarded per-repo marker keyed to the shared git-common-dir now collapses a burst of hooks to roughly one child per refresh-timeout window, while still retrying promptly once the host recovers.
Both paths stay best-effort: any error resolving, locking, or logging falls through to the prior behavior. Adds mutation-verified tests for the log trail, the throttle window, and the spawn-path wiring.