Skip to content

v2.9.10 — README Sync & Digest Table Fixes

Choose a tag to compare

@inafev inafev released this 19 Jun 14:07

What's Fixed

README Sync Push Loop (05.1.readme_sync.yml)

The README Automated Sync workflow was stuck in an infinite rebase-conflict loop and failing on every run (exit code 1, run #27829956650).

Root cause: The old retry loop always pulled first (git pull --rebase), then tried to push only on success. After a conflict, the self-healing resolved it — but looped back to pull again instead of attempting a push. Because a concurrent V2 sync workflow kept advancing develop during those 5-second sleeps, every rebase hit a fresh conflict. All 5 retries exhausted, final push failed non-fast-forward.

A secondary bug: during a rebase, --ours refers to the upstream/remote side (not the local commit), so the bot's freshly-computed README metrics were silently discarded each round.

Fix:

  • Pull latest before running the updater (shrinks the conflict window)
  • Retry loop now tries push first, then fetch + git merge -X ours on rejection (correct --ours semantics: keep the bot's output)
  • Re-runs readme_updater.py after each merge so metrics stay consistent with the merged state
  • Jittered backoff (i * 3s) instead of a fixed 5s sleep

Digest Table Broken by Pipe in Title (src/v2_optimizer.py)

Titles containing | — e.g. "Neo, Now in the Terminal | Pulumi Blog" — were breaking Markdown table rows in tech-digest.md because the pipe was parsed as a column separator.

Root cause: render_digest_page() in v2_optimizer.py escaped pipes in the why column (.replace("|", "-")) but not in the link title t. One-line fix: .replace("|", r"\|") on the title.

The 4 already-rendered broken entries in v2-docs/tech-digest.md are corrected directly.


Full changelog: CHANGELOG.md