Repository navigation
fix(work-items): make every lane escalation reach attend-queue - #9558
Conversation
…lated PRs escalation-marker.md now defines the trusted escalation authors once: the session's write identity, the target's merge.agent-identity, and <lane_app_slug>[bot] when set. attend-queue, item-content-trust.md and the parked-decision prompt point at it. attend-queue also lists open pull requests carrying the human-gated label through the github adapter's new "List pull requests" operation, since list-items returns issues only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…utcome hand-backs Every report-outcome comment that adds the human-gated label now opens with <!-- work-items:escalation lane=work-resolve-issue kind=escalated -->, then the outcome marker, so /work-items:attend-queue lists the issue as escalated. parseOutcomeMarker reads the outcome marker after that exact line, so issue-prior, work-unblock and the monitor signals still see it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read the lane identity through the forge, never a local checkout; make an untrusted marker count for nothing instead of demoting the item; keep pull requests out of every role-label flip and body update; defer the read-failure rule to the loop-lane convention; fix the pr-run-activity hand-back wording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Incremental security review of The change adds one rule. A Both referenced files exist in the tree: critical-findings: 0 |
|
claude-review reviewed Incremental review of The change adds one paragraph at lines 87-91. A I checked three things:
I did not run the attend-queue evals or any tests. The PR's verification claims in its description are the author's and I did not confirm them. No manifest files changed in this increment, and no hold class applies. |
Now that merge.agent-identity is a trusted escalation author, a [ratify] row can come from an App marker. State that such a row only prompts: the operator's own ratification ratifies, never an App comment, pointing at the work-loop ratification references. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No related issue: lane escalations must reach attend-queue (lane-stop audit 2026-10-24)
Summary
Some lane escalations never reached
/work-items:attend-queue, for three reasons:melodic-automation-lanes[bot], which is not the operator's session login.needs-humanright now.needs-humanbut posted nowork-items:escalationmarker.Fix
plugins/work-items/reference/escalation-marker.mdgets a "Trusted escalation authors" section, the one definition of who counts: the session's write identity, the target'smerge.agent-identityfromdocs/conventions/pr-pipeline.yaml(read from the default branch), and<lane_app_slug>[bot]when that option is set. A marker from anyone else is reported as a suspected spoof.item-content-trust.md, attend-queue's SKILL.md and the parked-decision prompt inprompts/loops/loop-lane-prompts.mdpoint at it. Writers still suppress duplicates on their own write identity only.work-class:label, and it never merges.<!-- work-items:escalation lane=work-resolve-issue kind=escalated -->to every comment that adds the human-gated label: pushback, stopped, a refused patch, a dimension skip, and a turn cap with no restart left. The existing outcome marker moves to line two.parseOutcomeMarkeraccepts that one exact line before the outcome marker, soissue-prior, work-unblock and the monitor signals still read it. The pr-pipeline docs describing the marker are updated to match.Verification
node --testonreport-outcome.test.mjs,label-unblocked.test.mjs,collect.test.mjsandcleanup.test.mjs: 364 passed, 0 failed.agent-ready(limited, funding, turn-cap restart) carry none.scripts/check-affected.sh --uncommitted: 10 passed, 6 skipped. After the review fixes and a merge of main,scripts/check-affected.sh --testson00c2f539: 12 passed, 2 skipped.MARKERregex repeats theESCALATION_MARKERliteral. The marker holds no regex metacharacters, and the tests pin both against an independent literal.Left out: running the attend-queue evals through
claude plugin eval, which is a paid run. The changed-skills check, which check-affected skips locally; CI runs it.Related
.github/scripts/pr-unblock/report-escalation.shandbabysit_merge.py(ATTEND_QUEUE_MARKER).enable-auto-merge.mjsthat posts the same marker.🤖 Generated with Claude Code