internal: chunk CI poll under Bash cap to avoid gated-review deadlock (tend#694)#6023
Open
prql-bot wants to merge 2 commits into
Open
internal: chunk CI poll under Bash cap to avoid gated-review deadlock (tend#694)#6023prql-bot wants to merge 2 commits into
prql-bot wants to merge 2 commits into
Conversation
…adlock The bundled running-in-ci poll loops 15×60s, exceeding the Bash 10-min cap, so the harness auto-backgrounds it; the background completion notification is unreliable in CI, so gated reviews deadlock and never post. Observed losing the #6022 review deliverable. Add a running-tend override to chunk the poll under the cap until max-sixty/tend#694 is fixed upstream. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
for more information, see https://pre-commit.ci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The bundled
running-in-ciCI-monitoring poll runs a single foreground loop of 15 one-minute iterations (for i in $(seq 1 15); do sleep 60). That 15-minute loop exceeds the Bash tool's 10-minute cap, so the harness auto-backgrounds it. A backgrounded poll's completion notification is not reliably delivered to a CI session, so when the wait is gated (a review approval/dismissal, a pushed-fix verification) the session waits on a notification that never arrives and ends without posting the gated action.This is max-sixty/tend#694 (open, still present in tend 0.1.6 — the current pin after #6018). review-runs has tracked it as High/structural for ~2 weeks, but every prior occurrence was harmless (work shipped before the poll, or the poll happened to finish under the cap). This window is the first occurrence that lost a deliverable.
Evidence
The
tend-reviewrun on dependabot PR #6022 (bumpmax-sixty/tend0.1.4 → 0.1.6) — run 27776642433, 12 min, $1.71 — did the full review (clean mechanical bump, all 8 refs verified, benign release notes), hit acheck-ok-to-mergered from a cancelled concurrency sibling, and correctly decided to gate its approval on a fresh poll. The poll auto-backgrounded; the session then loopedTaskGet/Readon the background task waiting for a completion notification, never got one, and ended. PR #6022 received no review at all (gh api .../pulls/6022/reviews→ empty). The job still reportedsuccess, so the lost deliverable is invisible in CI — exactly the failure mode that won't be caught next time without codification.(#6022 was later auto-closed when the bot's consolidated #6018 merged, so no outcome harm landed this time — but the deadlock will recur on any gated review/ci-fix until #694 is fixed.)
Why a local override
#694 is already filed upstream and the recipe lives in a bundled skill, so review-runs has correctly declined to act for ~18 daily windows. Two things changed: (1) the defect is now confirmed to lose deliverables, not just burn time, and (2) commenting on the existing upstream thread is off-limits per
running-in-ciscope rules, so PRQL'srunning-tendoverlay ("repo wins") is the only available lever while upstream lingers.The override only changes how the wait executes — chunked sub-cap foreground polls instead of one 15-min loop — preserving the bundled rollup logic. It's forward-compatible: once #694 is fixed upstream the bundled loop no longer auto-backgrounds, and this guidance simply becomes a no-op.
🤖 Generated with Claude Code