Extract branch sanitization to shared contracts module

Move sanitizeBranchFragment and sanitizeFeatureBranchName from three
duplicate definitions (CodexTextGeneration, GitManager, GitActionsControl)
into packages/contracts/src/git.ts. Remove the redundant double-sanitization
of branch names between the TextGeneration and GitManager layers —
CodexTextGeneration now owns sanitization of model output while GitManager
trusts the result and only sanitizes the custom commit message path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
b1608f41adJulius Marminge committed on 3/3/2026, 4:46:05 AM· committed by Julius Marmingeparent78d89e3
4 files changedLine totals unavailable