Skip to content

Narrow the Unattended Picker's Promotion Stop and Worker Decision Read - #2185

Merged
ptr727 merged 6 commits into
developfrom
feature/unattended-picker-1812
Sep 30, 2026
Merged

ptr727 merged 6 commits into
developfrom
feature/unattended-picker-1812

Conversation

@ptr727

@ptr727 ptr727 commented Sep 30, 2026

Copy link
Copy Markdown
Owner

Narrows two over-broad matches in the unattended-handoff skill.

  • The picker's promotion STOP now fires only on an open decision issue stating, in its body or in a comment on it, that it blocks the open develop -> main pull request. That is the wording "Parking" step 2 already requires. Before, it fired on any issue that named the promotion, so a lesson citing it stopped every main or release run. The step also names its read, --json number,body,comments under the full-page check, because gh issue view --comments prints no body when run without a terminal.
  • A resuming worker follows only the decision issue the parking comment names as what the lane waits on. It neither follows nor parks on a lesson issue the same comment names. "Parking" step 3 now requires the comment to keep the two apart.

Out of scope, by the maintainer's choice after five local review passes (4, 2, 4, 4 and 1 findings):

Closes on promotion: #1812

🤖 Generated with Claude Code

An adopted lesson issue keeps the options it was filed with after its
decision label comes off, so the Auto-Resolvable test now counts a
choice as closed once the maintainer's answer is recorded on the issue.

The picker's promotion STOP now matches only a decision issue stating
that it blocks the open develop -> main pull request, the wording
Parking step 2 already requires, rather than any issue naming it.

A resuming worker now follows only the decision issue the parking
comment names as what the lane waits on, and neither follows nor parks
on a lesson issue the same comment names.

Closes on promotion: #1812
The promotion STOP now also reads comments on a decision issue, since
Parking step 2's reuse path records a newly blocked pull request as a
comment. A choice overtaken at triage counts as closed like an answered
one. The parking comment names the decision it waits on apart from any
lesson issue, and a worker resuming a lane whose waited-on decision has
no answer finishes parking rather than proceeding.
A choice now counts as closed only once the issue's decision label has
come off with the answer or reason recorded, so a comment from anyone
without triage rights cannot close one. A resuming worker treats the
lane as interrupted mid-park only where the parking comment is on the
current link and its decision still carries the label, and checks that
before following the recorded answer or reason.
The Auto-Resolvable test returns to its original wording, since telling
an adopted lesson apart from an issue that never carried decision needs
a signal the picker can read, which is now its own decision. The
promotion check names its read with an explicit limit and the full-page
check, and worker step 1 acts on the newest parking comment only where
it names a decision issue.
Worker step 1 returns to following the answer on the decision issue
the lane waits on, the interrupted-park branch having drawn a finding
in every pass without being part of what the change set out to fix.
The promotion check reads each open decision issue's body and comments
through --json, since gh issue view --comments prints no body when it
runs without a terminal.
Copilot AI balanced review requested due to automatic review settings September 30, 2026 23:35
@ptr727 ptr727 added the skills Agent skill label Sep 30, 2026
@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 581381e1-5983-4837-8c17-557962f1d7ee

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 56.47%. Comparing base (4b4a92b) to head (31261ec).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #2185   +/-   ##
========================================
  Coverage    56.47%   56.47%           
========================================
  Files           16       16           
  Lines         7455     7455           
========================================
  Hits          4210     4210           
  Misses        3245     3245           
Flag Coverage Δ
python-3.13 56.47% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The prose-only narrowing is internally consistent, the generated mirrors and digest match the source, and the sole finding is an optional line-wrap nit that does not block approval.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

This PR narrows two over-broad matches in the unattended-handoff skill so the unattended loop stops and resumes on the right signals. The picker's promotion STOP now fires only when an open decision issue actually states it blocks the open develop -> main promotion PR (in body or a comment), rather than any issue that merely names the promotion, and a resuming worker follows only the decision issue the parking comment names as what the lane waits on, ignoring any lesson issue the same comment cites. The hand-authored source lives in .agents/skills/; the .github/skills/ and .claude-plugin/fleet-skills/ mirrors plus the source digest are regenerated from it.

Changes:

  • Picker step 1: STOP only on a decision issue stating it blocks the promotion PR, read via gh issue list --json number,body,comments under step 2's full-page check.
  • Worker step 1 and Parking step 3: separate the waited-on decision issue from any lesson issue named in the same parking comment.
  • Regenerated the two SKILL.md mirrors and updated the source digest.
File Description
.agents/​skills/​unattended-handoff/​SKILL.md Canonical source: narrows the picker's promotion STOP and the worker's decision-issue read.
.github/​skills/​unattended-handoff/​SKILL.md Generated mirror, byte-identical to source.
.claude-plugin/​fleet-skills/​skills/​unattended-handoff/​SKILL.md Generated mirror, byte-identical to source.
.claude-plugin/​fleet-skills/​.source-digests/​unattended-handoff Regenerated digest (31784baf190feb5b), verified to match the source tree.

Verification notes: the three SKILL.md copies are byte-identical, the stored digest reproduces build_dist.py's tree_digest exactly, the text is ASCII-clean with no mid-sentence semicolons or bare issue refs, and the internal cross-references all resolve. The deferred gaps (#2183, #2184) are documented as out of scope. The only finding is a minor, optional wrap-consistency nit on line 203.


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .agents/skills/unattended-handoff/SKILL.md Outdated
Copilot AI balanced review requested due to automatic review settings September 30, 2026 23:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

It is a narrow, internally consistent documentation edit whose generated mirrors and source digest were verified in sync with the authored source, with no defects found.

Review effort: Balanced
Findings: None

Resolved since last review (1)

@ptr727
ptr727 merged commit ee0f430 into develop Sep 30, 2026
11 checks passed
@ptr727
ptr727 deleted the feature/unattended-picker-1812 branch September 30, 2026 23:49
ptr727 added a commit that referenced this pull request Oct 1, 2026
… and Narrow the Unattended Picker (#2189)

## Summary

Promotes develop to main, carrying
[#2185](#2185) and
[#2188](#2188).

- **#2188** stops `scripts/pr_review.py status` from exiting 43 on a
clean Copilot review whose overview lists its changes as bold-led
bullets inside the collapsed `What changed in this PR` block, which a
promotion's overview does. The narrative block's own content is blanked
before metadata labels are vetted, while every other label is still
vetted in the same order. Markup cases left out are filed as #2187, and
an older `details_spans` duplication as #2186.
- **#2185** narrows the `unattended-handoff` picker's promotion STOP to
a `decision` issue stating, in its body or a comment, that it blocks the
open promotion. The picker now reads those issues as JSON so their
bodies are visible. A resuming worker follows only the decision its lane
waits on, never a lesson issue the same parking comment names. The
adopted-lesson stall is now decision #2183, and the remaining loop gaps
are #2184.

Fixes #2182
Fixes #1812

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skills Agent skill

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants