Problem
commit_and_push_translations_branch (.github/workflows/assets/lib.sh) pushes translation branches with git push --force-with-lease. When the lease is rejected because the remote branch advanced concurrently, it fails fast with a phase_err ("force-with-lease push rejected ... re-run after fetch or resolve manually"). A transient concurrent advance during the daily scheduled run therefore fails the whole run, even though fetching and re-attempting would succeed.
Acceptance Criteria
- On a rejected
force-with-lease, retry up to 3 attempts, running git fetch for the branch between attempts so the local ref reflects the advanced remote before re-attempting.
- After the final attempt still fails, surface the existing rejection error unchanged (fail closed).
- The existing fail-fast bats test is updated to cover the new behavior: the push succeeds after a transient rejection, and still fails after the retries are exhausted.
Problem
commit_and_push_translations_branch(.github/workflows/assets/lib.sh) pushes translation branches withgit push --force-with-lease. When the lease is rejected because the remote branch advanced concurrently, it fails fast with aphase_err("force-with-lease push rejected ... re-run after fetch or resolve manually"). A transient concurrent advance during the daily scheduled run therefore fails the whole run, even though fetching and re-attempting would succeed.Acceptance Criteria
force-with-lease, retry up to 3 attempts, runninggit fetchfor the branch between attempts so the local ref reflects the advanced remote before re-attempting.