Git フックを Lefthook に移行した — 依存ゼロのシェル1本から、並列フックへ

ブランチ保護の監査で「後回し」に切り分けていた Lefthook 移行を、実際に倒した記録。依存ゼロのシェル製 pre-commit（main 直コミット拒否）1本を、Go 製の Lefthook（lefthook.yml 一本）へ移し、pre-commit＝軽いガード＋整形（直列・guard 優先で fail-fast）・pre-push＝typecheck / lint（並列）という構成にした。既存ガードレール（clone・worktree への自動適用と自己修復、main ガード）は壊さず温存。途中で踏んだ「lefthook の postinstall が prepare より先に走り、旧 core.hooksPath を見て追跡対象の .githooks/ を汚す」という順序の罠と、その塞ぎ方まで、実際のコードと一次情報で残します。