Under the hood
Sync journal for git 'hold' state now records a specific reason code for each change
What
Claude Code's sync journal, which tracks why a remote or local git repository is put on 'hold' (paused from syncing), now uses a fixed set of reason codes: commit_not_held, not_in_history, other_branch, switched_off, diverged, branch_switched, and machine_stopped. A new check function detects start-failed or detached states, and any reason that doesn't match the known set is recorded as other.
Why
This gives a consistent, structured record of why sync was held at any given point, rather than a loosely defined reason.