870bc2ab20
The earlier build-script fix only watched .git/HEAD, which catches branch switches and detached-HEAD moves but NOT git commit on the current branch — the commit updates the underlying ref file (refs/heads/<name> or packed-refs after pack-refs), and HEAD itself stays unchanged. So the embedded short-SHA in deepseek --version went stale on the same-branch-commit case the fix was supposed to cover. Resolve the symbolic ref at build time and watch: - the loose ref file (refs/heads/<branch>) - packed-refs (Cargo treats a non-existent rerun-if-changed path as always-changed, which covers the loose to packed transition after git pack-refs) Detached HEAD is unchanged: HEAD itself contains a SHA, no symbolic deref happens, and HEAD-as-watched still triggers on every move. Adds parse_symbolic_ref + 4 unit tests covering: stripped prefix, no trailing newline, detached SHA, empty input. Smoke verified: with the previous fix, an empty commit on the same branch did not bust the cache. With this commit, it does. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>