Add Triage-Order and Scope Guardrails to pr-review-conduct - #684
Merged
Conversation
Outcome 2 ('not real, so disprove it') read narrowly for a
factually-wrong finding, with no outcome naming a finding that is
real but structurally out of this repo's scope (a verbatim-fidelity
manifest entry, ownership elsewhere). That gap caused a real
mis-triage this session: two out-of-scope-but-real findings on a
downstream PR were classified as outcome 3 ('the maintainer's
call') and left open with a plan to ask later, which never
happened once the session moved to other in-flight work, an
unresolved thread with no closing mechanism.
Broadened outcome 2 to cover both shapes (wrong, or real but out of
scope, either closing the thread on cited evidence). Tightened
outcome 3 to apply only once outcome 2 is ruled out, and to require
the maintainer's answer in the same turn rather than deferred, since
a plan to ask later is resolution by silence the moment attention
moves elsewhere. Added a line closing the second gap this exposed:
a disposition decided on one PR does not carry to a sibling PR or
repo in the same batch, even when the finding shape is identical.
Regenerated .claude-plugin/fleet-skills via build_dist.py.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the pr-review-conduct skill to prevent mis-triage by explicitly distinguishing “out of scope” findings from “value judgment” findings, and by enforcing immediate closure mechanics to avoid unresolved threads being left behind.
Changes:
- Broadened outcome 2 to cover findings that are factually correct but structurally out of scope, with an evidence-backed decline requirement.
- Tightened outcome 3 to apply only after outcome 2 is ruled out, and to require an explicit maintainer answer in the same turn (no “ask later”).
- Added a guardrail that outcomes do not carry across sibling PRs/repos; each instance must be closed independently.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| .agents/skills/pr-review-conduct/SKILL.md | Clarifies triage/closure outcomes to handle out-of-scope findings and prevent “defer-by-silence” thread drift. |
| .claude-plugin/fleet-skills/skills/pr-review-conduct/SKILL.md | Regenerated dist copy to mirror the updated source skill text for Claude plugin consumption. |
| .claude-plugin/fleet-skills/.source-digest | Updates the dist digest stamp to match the regenerated plugin content. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
ptr727
added a commit
that referenced
this pull request
Aug 15, 2026
…Python CI Gates (#718) Thirty-one squashes, `56f4d7d..d54862a`. 115 files, +20436/-5298. **Merge with a merge commit, never a squash, and never with `--delete-branch`.** This pull request's head is `develop` itself. ## What lands **Fleet Skills.** The `.agents/skills/` source tree, the generated `.claude-plugin/` distribution, `scripts/build_dist.py` with its `--check` gate, and `scripts/skills_install.py` with its host stamp (#676). Packaged as skills on top of the scaffold: PR review conduct and Copilot instructions upkeep (#677), comment and doc style (#678), resync-a-repo and fleet-conformance-check (#679), the per-language codestyles (#680), git commit conventions and operational vs release workflow (#681), stand up a repo (#683), and repo-worktree (#717). Coverage gaps closed in three passes (#690, #691, #692) plus the P4 sentence-length opt-in (#697). **Host setup.** The Windows host-setup tooling and its PowerShell gate (#674), the Windows bootstrap loader (#682), Docker install and upgrade on Linux and Windows with a version floor (#701, #705), a `uv` floor in `spec/host-tools.json` (#698), self-healing of a shadowing `uv`, `jq`, or `git-restore-mtime` copy (#689), node's real winget package id (#696), and a README for the Linux host-setup nuances (#710). **Python and CI.** Python tooling in CI with the script tests moved to `scripts/tests` (#704), `ruff format` adopted and gated (#709), and the PSScriptAnalyzer claim conditioned on repos that carry `.ps1` files (#686). **Conduct rules.** Triage-order and scope guardrails in pr-review-conduct (#684), `pr_review.py wait` requesting a review rather than only polling for one (#685), a tech-agnostic signed-commit verification (#708), execution rather than analogy to verify platform-specific code (#715), and a unique worktree for every task (#717). **Docs.** The fleet map and gap register with peer messaging declared (#687), mermaid flow diagrams in the kept-authority docs (#702), and the map pointed at the shipped diagrams and current tooling (#703). ## Issues this promotion closes Each landed on `develop` on its own pull request. The keyword fires only on a merge into `main`, so it sits here rather than on the feature pull requests. Closes #700 Closes #707 Closes #711 Closes #712 Closes #714 Closes #688 #699 stays open on purpose: #717 shipped the layout convention and the skill, and the physical migration of existing checkouts is still tracked there. ## Review record Every squash closed its own Copilot loop on its own pull request before merging to `develop`. This promotion carries no new content of its own, so its review is the merged tree as a whole. ## Consequence worth stating The `GOVERNANCE.md` and `AGENTS.md` sections these squashes changed become the canonical the moment this reaches `main`, and every carrying repository reads as drifted from that point until it resyncs. That is the ordinary consequence of a canonical moving rather than a defect. The Skills installer added here is also how a machine picks the new skills up, so a session that keeps restating a rule already packaged as a skill is the signal to run it.
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.
Why
A real mis-triage this session, on a downstream PR (HomeAutomation-Config#50): two findings were factually real but structurally out of that repo's scope to fix (verbatim-fidelity-locked GOVERNANCE.md content owned by this hub). Neither of the skill's five outcomes named that shape cleanly, so I reached for outcome 3 ("the maintainer's call") and left the threads open with a plan to ask later — which never happened once attention moved to other in-flight work in the same session. That's an unresolved thread with no closing mechanism, exactly what outcome 3's own "never resolve this one by silence" line exists to prevent, just from the other direction (never leave it unresolved by silence either).
What changed
.claude-plugin/fleet-skills/skills/pr-review-conduct/SKILL.mdregenerated viascripts/build_dist.pyto match.Verification
No
scripts/test_*.pycoupling to this file's content (checked before editing, per the Phase 3 gotcha).🤖 Generated with Claude Code