Repository navigation
Conversation
#2185) 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): - The adopted-lesson stall in the Auto-Resolvable test is now decision #2183, since the picker has no readable signal for it. - The multi-parking-comment, interrupted-park and open-promotion gaps are filed as #2184. Closes on promotion: #1812 🤖 Generated with [Claude Code](https://claude.com/claude-code)
…2188) `scripts/pr_review.py status` exited 43 (`UNRECOGNIZED_REVIEWER_OUTPUT`) on a clean Copilot review whose `ccr-overview-v2` overview lists its changes as bold-led bullets inside the collapsed `What changed in this PR` block. `LABEL_LINE` vetted each of those narrative bullets as a metadata label. A develop -> main promotion's overview takes that list form, so every such promotion stopped on this refusal. - **`mask_narrative`** walks the `<details>` tags with an explicit stack. A closed block counts as narrative only where its own content opens on a `<summary>` naming `What changed in this PR`. Only that block's own content is blanked, with offsets and line boundaries kept, and a block nested inside it is still read. `unrecognized_in` then scans the masked body line by line, exactly as it scanned the unmasked one, so every label develop reported outside the narrative is still reported, in the same order. - **Ten tests:** - the narrative skip; - a label beside the narrative, and one in `Review details`, still reported; - an outer block's nested summary, a bare first line, a nested block, a nested narrative, 600 levels of nesting, and body order. Run against the commit that preceded each test's own fix, each fails. Against the real body that surfaced this, the new reader reports no unrecognized shape. - **`DETAILS_TAG` is unchanged.** A widened close spelling was tried and reverted after review showed it matching literal text and swallowing a following section heading. Six local review passes ran on this change, finding 4, 4, 2, 4, 4 and 1 issue. The maintainer chose to land it once a pass found nothing worse than develop on the markup Copilot produces. What was left out is filed: - #2187: nonstandard close spellings, a `<details/>` opener, the order of a label that appears twice, and a missing test for an unclosed narrative. - #2186: `details_spans` duplicating the text before an unclosed block, which predates this change. Closes on promotion: #2182 🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID:
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. Comment |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2189 +/- ##
==========================================
+ Coverage 56.47% 56.60% +0.13%
==========================================
Files 16 16
Lines 7455 7480 +25
==========================================
+ Hits 4210 4234 +24
- Misses 3245 3246 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
It promotes changes to the merge-gating review automation and a governance skill to main, which are fleet-wide and durable if wrong, warranting final human review.
Review effort: Balanced
Findings: None
What changed in this PR
This PR promotes develop to main, carrying two fleet-tooling changes. The first (#2188) fixes scripts/pr_review.py status exiting 43 (UNRECOGNIZED_REVIEWER_OUTPUT) on a clean Copilot review whose overview lists changes as bold-led bullets inside the collapsed What changed in this PR block; a new mask_narrative helper blanks only that block's own content (keeping nested blocks and unclosed blocks readable) before metadata labels are vetted. The second (#2185) narrows the unattended-handoff skill's picker promotion STOP to a decision issue that states it blocks the open promotion, and narrows a resuming worker to follow only the decision its lane waits on, not a lesson issue the same parking comment names.
Changes:
- Add
mask_narrativetoscripts/pr_review.py(explicit-stack<details>walk) and route label vetting through it, with ten new regression tests. - Narrow the
unattended-handoffpicker's promotionSTOPand the worker/parking decision-vs-lesson handling in the skill source. - Regenerate the
.github/skills/and.claude-plugin/fleet-skills/copies and the source digest from the authored.agents/skills/source.
| File | Description |
|---|---|
| scripts/pr_review.py | Adds NARRATIVE_SUMMARY constant and mask_narrative; unrecognized_in now vets labels over the masked body so narrative bullets are not read as metadata labels. |
| tests/test_pr_review.py | Adds a narrated() helper and ten tests covering narrative skip, nested blocks, deep nesting, and body-order reporting. |
| .agents/skills/unattended-handoff/SKILL.md | Source: narrows the picker promotion STOP, the worker decision read, and the parking comment wording. |
| .github/skills/unattended-handoff/SKILL.md | Generated mirror of the source change (verified byte-identical). |
| .claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md | Generated mirror of the source change (verified byte-identical). |
| .claude-plugin/fleet-skills/.source-digests/unattended-handoff | Updated digest; verified to match the authored source tree. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
Promotes develop to main, carrying #2185 and #2188.
scripts/pr_review.py statusfrom exiting 43 on a clean Copilot review whose overview lists its changes as bold-led bullets inside the collapsedWhat changed in this PRblock, 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 Pair Nonstandard details Markup Correctly When Blanking the Overview Narrative #2187, and an olderdetails_spansduplication as Emit an Unclosed details Block's Preceding Text Once in details_spans #2186.unattended-handoffpicker's promotion STOP to adecisionissue 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 Decide How the Unattended Picker Recognizes an Adopted Lesson #2183, and the remaining loop gaps are Close the Unattended Loop's Parking-Comment and Interrupted-Park Gaps #2184.Fixes #2182
Fixes #1812
🤖 Generated with Claude Code