Scope lease-failure escalation to --force-with-lease

main

Commit

Soph4mo ago

The lease-failure marker set in gitproto is intentionally broad to catch phrasing across servers (stale info / fetch first / non-fast-forward / does not match). That's right under --force-with-lease, where the user has explicitly promised "rerun if target moved." But the same server messages can mean ordinary policy rejection on a --force-blind or non-force best-effort run, which BestEffort is allowed to downgrade to warnings.

Gate leaseFailureError on cfg.ForceWithLease so the escalation only fires when the lease contract is actually in effect. Other rejection paths follow the BestEffort warn-and-continue contract as documented.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com Entire-Checkpoint: 153a4deb52ba

Checkpoints

can you look at https://github.com/entireio/git-sync/issues/46 and then chat

Claude CodeOpus 4.7[1m]
View session
Checkpoint 1