skills(running-in-ci): forbid ScheduleWakeup and fire-and-forget background bash in CI#593
Closed
tend-agent wants to merge 1 commit into
Closed
skills(running-in-ci): forbid ScheduleWakeup and fire-and-forget background bash in CI#593tend-agent wants to merge 1 commit into
tend-agent wants to merge 1 commit into
Conversation
…ground bash in CI ScheduleWakeup is a /loop dynamic-mode tool with no fire mechanism in single-shot CI; calling it after backgrounding work leaves the action idle until the 6h Actions cap. Same hazard for backgrounding a Bash command then ending the turn — no follow-up turn arrives to receive the completion notification. Observed on PRQL/prql tend-mention run 26347739838: bot posted its plan comment at 01:04:39Z, called ScheduleWakeup(270s) expecting to come back after a `task prqlc:pull-request` background bash finished, then sat idle until cancelled at 06:44:16Z. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This was referenced May 24, 2026
Owner
|
no! we need to change our criteria; this is structural and it's not critical |
Collaborator
Author
|
Understood — closing this. The gate let it through because "structural" currently grants a 1-occurrence bypass regardless of evidence level. Filed #602 to tighten the criteria so structural classification raises recurrence confidence but doesn't override Gate 1 — only Critical findings act on a single occurrence. |
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
A
tend-mentionhandle job onPRQL/prql(run 26347739838) ran for the full GitHub Actions 6-hour cap (00:43:51Z → 06:44:16Z, cancelled) after completing its actual work in ~20 minutes. Session log7ffd00a0-8c0c-4282-b99b-d8ade07ad34b.jsonlends at 01:04:44Z — the runner sat idle for ~5h40m doing no further work before GitHub Actions killed it.The bot's last logged action was a
ScheduleWakeupcall:{ "delaySeconds": 270, "reason": "Fallback in case task notification is missed; primary signal is background completion notification.", "prompt": "Continue: check if `task prqlc:pull-request` finished, finalize merge cleanup commit, and push to PR #5741." }The bot had backgrounded
task prqlc:pull-requestwithrun_in_background: trueand calledScheduleWakeupas a fallback for the bash-completion notification. In CI:ScheduleWakeupis a/loopdynamic-mode tool — its description says so explicitly ("Schedule when to resume work in /loop dynamic mode"). Single-shot CI runs are not in/loopmode, so the wakeup never fires.Net effect: the bot's final comment (PR #5741, comment 4526992996) promised follow-up work it never delivered, and the job burned ~5h40m of GitHub Actions runtime doing nothing.
Root cause
ScheduleWakeupand "background-bash-then-exit" both assume a future turn will fire. In single-shot CI, no such turn exists.Fix
One bullet added to Restrictions in
plugins/tend-ci-runner/skills/running-in-ci/SKILL.md. Tells the bot to either block on long-running work synchronously, finish what it can without waiting, or hand off in its final response (e.g. comment with what's left) and exit.Gate assessment
ScheduleWakeupcall → session-log cutoff → 6h cap). The lost wall-clock time and broken promise to the maintainer are unambiguous.ScheduleWakeupis documented as/loop-only; in CI it has no fire mechanism. The same conditions (backgrounded long task + bot ends turn) will produce the same outcome every time.Distinct from #572, which covers an unbounded
untilpoll deadlock — same outcome (6h cap), different root cause and different fix.Evidence log: https://gist.github.com/5686b1fca82c08d385d9031a79be4a3e