You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci: end a work-resolve-issue kill-switch deny neutral, keeping work-unblock's re-fire #10753
A work-resolve-issue run that the token broker refuses with reason kill-switch at apply-issue-patch / run or report-outcome / run still ends red. This happened in 3 runs since 2026-10-24 (for example run 40597922545). The lane breaker turns the repository kill switch on after the run has read its variables, so only the broker's live read stops it. A kill switch is a designed stop and should not count as a failure.
#10737 adds request-lane-token's kill-switch-ok input and uses it in pr-merge and intake-triage. It leaves work-resolve-issue alone. work-unblock re-fires a stopped issue by finding the failed Request the lane token step and its ##[error]lane-token-denied ... reason kill-switch line (.github/scripts/work-unblock/label-unblocked.mjs, DENIAL.token and the mints.some(... "success") short-circuit). A green step would therefore leave the issue unclaimed.
Fix
Teach label-unblocked.mjs to read a skip-reason=kill-switch stop as a breaker trip. That means a successful mint step that minted no token, together with its lane-token-stopped notice, or a job output naming the stop.
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Understood: make a kill-switch refusal in work-resolve-issue runs end green, while work-unblock keeps re-firing the issue as a breaker trip. It should read the successful mint step's lane-token-stopped notice with skip-reasonkill-switch, and keep the old failed-step path for earlier runs.
Decision recorded. The refinement's two questions (#10753 (comment)) are settled from main at 57f3225:
[quote truncated; the full decision is at the link] #10753 (comment)
That decision settles the open questions. Nothing further is needed from you.
Not admitted to the issue lane: a criterion names .github/workflows/pr-run-activity-write.yml, which the issue lane cannot push (patch-protected-path); a builder session takes it. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).
melodic-automation-lanes commented on Oct 28, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: A kill-switch refusal in work-resolve-issue ends green, and work-unblock still re-fires the issue as a breaker trip, read from a skip-reason=kill-switch stop.
Dependencies
#10737: not in the checkout, so the kill-switch-ok input, the skip-reason=kill-switch output and the lane-token-stopped notice do not exist yet
Should this issue wait until #10737 merges, so its kill-switch-ok input, skip-reason=kill-switch output and lane-token-stopped notice exist to build on?
RECOMMENDED: Yes. Hold it behind #10737 and write the criteria after that PR lands, against its real output names. Basis: .base/.github/actions/request-lane-token/action.yml:93 documents only skip-reason=workflow-modified, and a search of .base/.github finds no kill-switch-ok.
Which signal should label-unblocked.mjs read as a breaker trip: a successful mint step with no token plus its lane-token-stopped notice, or a job output naming the stop?
RECOMMENDED: Read the successful mint step with no token and its notice. Keep the failed-step DENIAL.token path for runs that predate the change. Basis: .base/.github/scripts/work-unblock/label-unblocked.mjs:246
Sources read
/home/runner/work/claude-code-plugins/claude-code-plugins/.base/.github/actions/request-lane-token/action.yml:93: describes an opt-in that ends the step green with a skip-reason output, and only workflow-modified exists today
/home/runner/work/claude-code-plugins/claude-code-plugins/.base/.github/workflows/pr-run-activity-write.yml:1051: the request-lane-token step, with no kill-switch-ok input set
/home/runner/work/claude-code-plugins/claude-code-plugins/.base/.github/scripts/work-unblock/label-unblocked.mjs:246: BREAKER = kill-switch, read from the failed token step
/home/runner/work/claude-code-plugins/claude-code-plugins/.base/.github: a search finds no kill-switch-ok anywhere
To answer, post a comment that starts with this line:
**Decision recorded.** <answer>
Automated refinement by the lanes App. Answer with a comment whose first line is **Decision recorded.**.
Which signal does label-unblocked.mjs read? The successful mint step's lane-token-stopped notice with skip-reasonkill-switch. The failed-step DENIAL.token path (.github/scripts/work-unblock/label-unblocked.mjs:264-269, :1080-1088) stays for runs that predate the change.
This changes no intent: a kill switch still stops the run, and only the run's colour changes.
Acceptance criteria:
A kill-switch refusal in a work-resolve-issue run ends green (.github/workflows/pr-run-activity-write.yml:1073). (body, unchanged)
work-unblock still re-fires that issue as a breaker trip, and a test covers it. (body, unchanged)
A run from before the change, failed with lane-token-denied ... reason kill-switch, is still read as a breaker trip. (body, amended: keeps the existing path, per question 2)
Activity
github-actions commentedon Oct 28, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Understood: make a kill-switch refusal in work-resolve-issue runs end green, while work-unblock keeps re-firing the issue as a breaker trip. It should read the successful mint step's
lane-token-stoppednotice withskip-reasonkill-switch, and keep the old failed-step path for earlier runs.That decision settles the open questions. Nothing further is needed from you.
Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 28, 2026
Not admitted to the issue lane: a criterion names .github/workflows/pr-run-activity-write.yml, which the issue lane cannot push (patch-protected-path); a builder session takes it. Admission takes the issue once each of those is met, when intake triages it again (
.github/actions/resolve-config/admission-rules.json).melodic-automation-lanes commentedon Oct 28, 2026
The latest triage verdict holds nothing: admission moved the issue to
status: confirmed; its comment says why.melodic-automation-lanes commentedon Oct 28, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: A kill-switch refusal in work-resolve-issue ends green, and work-unblock still re-fires the issue as a breaker trip, read from a skip-reason=kill-switch stop.
Dependencies
Related work
Open questions
RECOMMENDED: Yes. Hold it behind #10737 and write the criteria after that PR lands, against its real output names. Basis: .base/.github/actions/request-lane-token/action.yml:93 documents only skip-reason=workflow-modified, and a search of .base/.github finds no kill-switch-ok.
RECOMMENDED: Read the successful mint step with no token and its notice. Keep the failed-step DENIAL.token path for runs that predate the change. Basis: .base/.github/scripts/work-unblock/label-unblocked.mjs:246
Sources read
To answer, post a comment that starts with this line:
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Oct 30, 2026
Decision recorded. The refinement's two questions (#10753 (comment)) are settled from main at 57f3225:
request-lane-tokennow haskill-switch-ok(.github/actions/request-lane-token/action.yml:92). With it, akill-switch403 ends the step green with alane-token-stoppednotice, no token andskip-reasonkill-switch(.github/actions/request-lane-token/README.md:27,:39). fix(pr-pipeline): let a kill-switch stop skip cleanly and re-fire pr-unblock heads after the switch lifts #10844 (bd6c37d) opted pull request runs in, but kept issue runs red on purpose until work-unblock can read the new stop:kill-switch-ok: ${{ inputs.issue-number == '' && ... }}(.github/workflows/pr-run-activity-write.yml:1073). That leftover is this issue.label-unblocked.mjsread? The successful mint step'slane-token-stoppednotice withskip-reasonkill-switch. The failed-stepDENIAL.tokenpath (.github/scripts/work-unblock/label-unblocked.mjs:264-269,:1080-1088) stays for runs that predate the change.This changes no intent: a kill switch still stops the run, and only the run's colour changes.
Acceptance criteria:
.github/workflows/pr-run-activity-write.yml:1073). (body, unchanged)breakertrip, and a test covers it. (body, unchanged)lane-token-denied ... reason kill-switch, is still read as a breaker trip. (body, amended: keeps the existing path, per question 2)ci: keep a kill-switch stop from reading as a reported or passed run