Problem
The post-merge blog visual-baseline auto-refresh in .github/workflows/web-deploy.yml ("Commit pre-refreshed blog baseline" step, git push origin HEAD:develop at ~line 328) is rejected by the develop branch-protection rule: GH013: Changes must be made through a pull request. All 5 retries fail, so the refreshed web/tests/visual-baselines/blog.png never lands.
Observed concretely after #2896 (commit 0ec62e4d4) published the 4.0.3 release post: develop run 27254568247 pre-refreshed the baseline but could not push it back, leaving the baseline stale on develop. Every subsequent web/**-touching PR (e.g. #2913) then fails the Visual regression check with a deterministic ~60k-pixel diff (the new post card shifting the blog index) until someone refreshes manually.
Impact
Every blog-post merge strands a stale baseline and red-Xes all later web-touching PRs — manual refresh-visual-baselines.yml runs are needed each time. Silent failure mode: the deploy run itself stays green.
Suggested approach
Convert the auto-refresh push to a PR + auto-merge flow, same pattern as refresh-packages-baseline.yml. Note the PAT used must have Pull-requests: write in addition to Contents: write, or the auto-merge step fails silently (prior art: the scoop/homebrew auto-update chain).
Acceptance criteria
- Merging a blog post to develop results in the refreshed blog baseline landing on develop without manual intervention (via auto-merged PR).
- A subsequent
web/** PR passes Visual regression without a manual baseline refresh.
Source
Found during the 2026-06-09 framework-review remediation campaign while diagnosing the #2913 Visual-regression failure.
Problem
The post-merge blog visual-baseline auto-refresh in
.github/workflows/web-deploy.yml("Commit pre-refreshed blog baseline" step,git push origin HEAD:developat ~line 328) is rejected by the develop branch-protection rule:GH013: Changes must be made through a pull request. All 5 retries fail, so the refreshedweb/tests/visual-baselines/blog.pngnever lands.Observed concretely after #2896 (commit
0ec62e4d4) published the 4.0.3 release post: develop run 27254568247 pre-refreshed the baseline but could not push it back, leaving the baseline stale on develop. Every subsequentweb/**-touching PR (e.g. #2913) then fails theVisual regressioncheck with a deterministic ~60k-pixel diff (the new post card shifting the blog index) until someone refreshes manually.Impact
Every blog-post merge strands a stale baseline and red-Xes all later web-touching PRs — manual
refresh-visual-baselines.ymlruns are needed each time. Silent failure mode: the deploy run itself stays green.Suggested approach
Convert the auto-refresh push to a PR + auto-merge flow, same pattern as
refresh-packages-baseline.yml. Note the PAT used must have Pull-requests: write in addition to Contents: write, or the auto-merge step fails silently (prior art: the scoop/homebrew auto-update chain).Acceptance criteria
web/**PR passes Visual regression without a manual baseline refresh.Source
Found during the 2026-06-09 framework-review remediation campaign while diagnosing the #2913 Visual-regression failure.