mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
The base ref mismatch error printed the same value on both sides, so it always read "expected master, got master". All four throw sites computed `baseRef = compare.baseRef ?? resolvedBaseRef`, but the guard only fires when the caller passed a ref, so `baseRef` and the "got" value were the same string by construction. The value that actually differs -- the stored `baseRefName` from the worktree metadata -- was never shown, which left the error undiagnosable from the UI alone. Build the message in one place and have the four guards throw it, naming the refs `stored` and `requested`. The wording deliberately avoids "expected": a caller's ref can be stale, but the stored ref can equally be the wrong one, so the message states both facts and leaves the diagnosis open. The guards stay where they are. Only the message moves, so the condition that fires each throw is still visible at the call site, and both refs are narrowed to plain strings by the time the message is built. Throw conditions are unchanged; only the message text differs. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>