fix(ci): quiet pr-lockfile artifact noise, retry Playwright apt install - #1119
fix(ci): quiet pr-lockfile artifact noise, retry Playwright apt install#1119allyblockcast[bot] wants to merge 2 commits into
Conversation
merge_group runs fail ~1 in 3 (BLO-22675). Two contributing signatures, verified against actual job logs rather than assumed from the error text: - Every "Restore regenerated PR lockfile" step downloaded unconditionally and logged a scary ##[error] "Artifact not found" whenever the policy job hadn't uploaded one (the common case — most PRs don't touch a manifest). continue-on-error already kept it from failing the job, but the annotation reads as a real failure cause during triage and cost a full agent run to rule out. Gate the download on needs.policy.outputs.lockfile_regenerated so it's silent when unneeded. - The e2e job's "Install Playwright system dependencies" step has no retry, so a transient apt mirror hiccup (observed: security.ubuntu.com "Mirror sync in progress?") fails the whole run outright. Retry 3x. Two of five sampled failures in this run were genuine runner-pool infra (mid-job SIGTERM, "Service Unavailable" resolving action download info) and two were real test flakes (e2e locator timeout, a vitest submodule-inspection assertion) — neither fixable from this workflow file. Tracked as follow-ups on BLO-22675 rather than papered over here.
|
🔗 Paperclip issue: BLO-22675 |
1 similar comment
|
🔗 Paperclip issue: BLO-22675 |
|
Hey @allyblockcast[bot]! Before this PR can be reviewed, a few things need attention: Missing or incomplete:
Once updated, push a new commit and these checks will re-run automatically. — commitperclip |
Ally — Consolidated PR ReviewLenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex. The synced skill runners were unavailable in this pod, so their checklists were applied directly to the exact diff. Critical Issues (0)Important Issues (1)
Suggestions (1)
Strengths
Recommended Action
|
…trailing sleep Ally review on PR #1119 flagged two real issues in the prior commit: - No regression test for the 7 duplicated lockfile-download guards or the Playwright install-deps retry/backoff, so a future edit could silently drop a guard or change the attempt count without any check catching it. Add scripts/__tests__/pr-lockfile-artifact-guard.test.mjs, following the pr-verify-lane-outcome.test.mjs pattern of extracting and executing the real workflow script rather than re-implementing it, and wire it up as an explicit policy-job step like its siblings (these test files are not auto-discovered). - The retry loop's third and final failed attempt still logged "retrying" and slept 15s before exiting, so three failures cost 45s instead of the intended 30s max. Guard the message/sleep with `[ "$attempt" -lt 3 ]`.
|
Thanks for the review. Pushed fb62b12 addressing both real findings:
On point 3 (independent-author gate): confirmed this PR — like the other 4 most recently opened bot-authored PRs (#1120, #1118, #1116, #1115) — was opened under the |
Ally — Consolidated PR ReviewLenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex. The synced skill runners were unavailable in this pod, so their checklists were applied directly to the exact diff. Looks good. Prior Findings Dispositioned (1)
Critical Issues (0)Important Issues (0)Strengths
Recommended Action
|
Thinking Path
Linked Issues or Issue Description
Refs: BLO-22675 (paperclip.blockcast.net) — "Merge queue is failing ~1 in 3 runs across four unrelated jobs — PRs need manual admin merges to land"
What Changed
download-artifactsteps behindif: needs.policy.outputs.lockfile_regenerated == '1', so the step is skipped (not attempted-and-swallowed) on the common case where the policy job didn't upload anything.pnpm exec playwright install-deps chromiumin thee2ejob, to absorb transient apt mirror errors (observed:security.ubuntu.com"File has unexpected size... Mirror sync in progress?").Verification
gh api repos/Blockcast/paperclip/actions/jobs/<id>/logs) for all 5 failed runs in the issue's trailing-15 sample, rather than trusting the failing-step name alone. Findings, with evidence:31107120860(e2e / Install Playwright system deps) — apt mirror sync error onsecurity.ubuntu.com, not the pr-lockfile artifact (that download iscontinue-on-error: trueand never fails the job) — addressed by the retry above.31116201133(3 shards of Verify serialized server / Set up job) —Failed to resolve action download info: Service Unavailablebefore any workflow step ran — runner-pool infra, not fixable from this file. Filed as a follow-up.31113892541(General tests server 3/4 / Run grouped general test suites) —The runner has received a shutdown signalmid-test-run (pod evicted/killed) — runner-pool infra. Same follow-up.31099969740(e2e / Run e2e tests) — genuine flaky test:mcp-user-storiesPlaywright locator-visibility timeout. Not an infra failure; routing to QA.31095848976(General tests server 2/4) — genuine flaky test:workspace-runtime.test.tssubmodule-inspection-timeout assertion. Not an infra failure; routing separately.node --test ./scripts/__tests__/pr-verify-lane-outcome.test.mjs— still 13/13 passing (this file's lane-outcome semantics are unaffected by the change).js-yaml) and thatneeds.policy.outputs.lockfile_regeneratedis a real, already-declared job output every touched job already hasneeds: policy(directly or transitively) for.arc-runnersnamespace showsFailedSchedulingevents at 2026-08-06T21:28Z citing "6 Insufficient ephemeral-storage" across the ARC runner-host node pool — corroborates the runner-pool-infra classification above; tracked in the follow-up issue rather than fixed here (needs its own investigation of ephemeral-storage requests/image GC, not a workflow-file change).Risks
verify's lane-outcome logic (cancelled/skipped/failed) is untouched.Model Used
Claude Sonnet 5 (
claude-sonnet-5[1m]), 1M context window, via Claude Code — used to pull and read live GitHub Actions job logs and cluster state (Prometheus, kubectl-read-only) to verify actual root causes before editing the workflow, and to author this change.Checklist
Fixes: #/Closes #/Refs #OR (b) described the issue in-PR following the relevant issue template