Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/agent-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Claims about a pull request being reviewed, clean, or mergeable are owned by the

- **Durable knowledge lands in the committed docs, not in agent memory**, as part of the change that surfaced it, per `GOVERNANCE.md` "Durable Knowledge and Self-Improvement". Memory does not survive a new session or machine, so it holds only environment nuance and in-flight state.
- **Where the governing doc is carried from the hub, file the finding against `ptr727/ProjectTemplate`.** Patching the local copy leaves every sibling repo with the same trap. Search open and closed issues first, then update the matching issue or file a new one.
- **A review flags an instance, so fix the class**: sweep for the siblings before replying, because reviewers sample rather than enumerate.
- **A review flags an instance, so a fix covers the class, bounded to what this change touched or broke**: when fixing a finding, sweep for its siblings before replying, because reviewers sample rather than enumerate, fix each one that sits in a file the diff touches or that the change itself put wrong, and file the rest rather than folding them in, per `GOVERNANCE.md` "Verification Discipline".
Comment thread
ptr727 marked this conversation as resolved.
- **A rule that keeps needing restating** is usually a stale or missing skills install, so run `python3 scripts/skills_install.py --report` from a hub checkout (the `fleet-conformance-check` skill) before concluding the rule does not exist.

## Delegation, in One Paragraph
Expand Down
29 changes: 24 additions & 5 deletions .agents/skills/pr-review-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,14 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
2. A review is confirmed on the **current head SHA**, matched by commit SHA rather than assumed
from a green merge-state. A push makes checks go green *before* the re-review lands, and the
matched review is **read**, not just counted. A review can carry the head SHA and still decline
the PR outright, or say it read only part of the changed files. `pr_review.py`'s
`review_on_head` names Copilot's own coverage specifically, the currently required reviewer,
not "no review of any kind covers this head": a trialed advisory reviewer (CodeRabbit,
Qodo) carrying the exact head under `other_reviewed`, with an empty review body and no new
threads, is its own ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
the PR outright, or say it read only part of the changed files. The coverage this item
requires is Copilot's, and CodeRabbit and Qodo are advisory, since the hub's
`docs/pr-reviewer-evaluation.md` "Status" names Copilot the incumbent and says no candidate is
a required reviewer: an advisory reviewer's absence blocks nothing, while its findings owe
item 3 exactly as Copilot's do. `pr_review.py`'s `review_on_head` names Copilot's own coverage
specifically, not "no review of any kind covers this head": an advisory reviewer carrying the
exact head under `other_reviewed`, with an empty review body and no new threads, is its own
ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
Comment thread
ptr727 marked this conversation as resolved.
3. **Every** finding on that head SHA is closed: threads resolved, issue-level comments (which
have no resolve action) triaged and replied to, **and** the low-confidence findings collapsed
in the review body investigated and answered. Those appear in no thread, so polling threads
Expand All @@ -55,6 +58,22 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
give each one the same triage the low-confidence findings above already get (#1058). Qodo's own
`Resolved`/`Dismissed` self-tracked badge is a fast pre-triage signal, not a substitute for
reading the finding, spot-verify against `gh pr diff` rather than trusting it outright.
What closing a finding owes turns on whether it is `pre-existing`. A finding on text inside a
canonical Markdown unit, one the hub's `scripts/canonical_review.py list` names, classed
`pre-existing` by the classes `local-strict-review` "Disposing of Findings" defines for a
local pass, applied here to a PR-hosted finding, is outcome 4 of "Every finding ends in one
of five outcomes" below applied once per unit rather than once per finding: the round gathers
that unit's such findings onto the unit's tracker, an open hub issue whose title carries the
unit key, retitled by the change that moves the key and filed by whichever round first needs
it, and answers each finding with that issue's link, resolving a thread on that reply, so a
`pre-existing` remark on a sentence the change never touched costs one link rather than a
decline or an issue per finding. The batch runs in the hub, which authors the text of every
Comment thread
ptr727 marked this conversation as resolved.
verbatim unit. A carrying repository routes a finding on a verbatim unit by fidelity rather
than by class, since a resync writes the whole text there: it declines the finding under
that section's outcome 2, ownership sitting elsewhere, and files it on the same tracker,
while a finding on an intent unit is filed there too, the carrier adapting its own copy
meanwhile, since the defect is still fixed at the source. Every other finding, a `style`
remark on untouched text included, takes its own outcome in that section.
Comment thread
ptr727 marked this conversation as resolved.
4. Nothing in the review was a shape the tooling could not read (an unrecognized heading, a moved
section, an unfamiliar coverage wording). An unrecognized shape blocks the gate on its own.
File an issue naming it and quoting the body, rather than guessing what the new wording
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/fleet-skills/.source-digests/agent-conduct
Original file line number Diff line number Diff line change
@@ -1 +1 @@
be7d43fc59180c19
c159c9d53085e97d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
96806c16138e5c6a
b72736e1747ad6bc
2 changes: 1 addition & 1 deletion .claude-plugin/fleet-skills/skills/agent-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Claims about a pull request being reviewed, clean, or mergeable are owned by the

- **Durable knowledge lands in the committed docs, not in agent memory**, as part of the change that surfaced it, per `GOVERNANCE.md` "Durable Knowledge and Self-Improvement". Memory does not survive a new session or machine, so it holds only environment nuance and in-flight state.
- **Where the governing doc is carried from the hub, file the finding against `ptr727/ProjectTemplate`.** Patching the local copy leaves every sibling repo with the same trap. Search open and closed issues first, then update the matching issue or file a new one.
- **A review flags an instance, so fix the class**: sweep for the siblings before replying, because reviewers sample rather than enumerate.
- **A review flags an instance, so a fix covers the class, bounded to what this change touched or broke**: when fixing a finding, sweep for its siblings before replying, because reviewers sample rather than enumerate, fix each one that sits in a file the diff touches or that the change itself put wrong, and file the rest rather than folding them in, per `GOVERNANCE.md` "Verification Discipline".
- **A rule that keeps needing restating** is usually a stale or missing skills install, so run `python3 scripts/skills_install.py --report` from a hub checkout (the `fleet-conformance-check` skill) before concluding the rule does not exist.

## Delegation, in One Paragraph
Expand Down
29 changes: 24 additions & 5 deletions .claude-plugin/fleet-skills/skills/pr-review-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,14 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
2. A review is confirmed on the **current head SHA**, matched by commit SHA rather than assumed
from a green merge-state. A push makes checks go green *before* the re-review lands, and the
matched review is **read**, not just counted. A review can carry the head SHA and still decline
the PR outright, or say it read only part of the changed files. `pr_review.py`'s
`review_on_head` names Copilot's own coverage specifically, the currently required reviewer,
not "no review of any kind covers this head": a trialed advisory reviewer (CodeRabbit,
Qodo) carrying the exact head under `other_reviewed`, with an empty review body and no new
threads, is its own ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
the PR outright, or say it read only part of the changed files. The coverage this item
requires is Copilot's, and CodeRabbit and Qodo are advisory, since the hub's
`docs/pr-reviewer-evaluation.md` "Status" names Copilot the incumbent and says no candidate is
a required reviewer: an advisory reviewer's absence blocks nothing, while its findings owe
item 3 exactly as Copilot's do. `pr_review.py`'s `review_on_head` names Copilot's own coverage
specifically, not "no review of any kind covers this head": an advisory reviewer carrying the
exact head under `other_reviewed`, with an empty review body and no new threads, is its own
ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
3. **Every** finding on that head SHA is closed: threads resolved, issue-level comments (which
have no resolve action) triaged and replied to, **and** the low-confidence findings collapsed
in the review body investigated and answered. Those appear in no thread, so polling threads
Expand All @@ -55,6 +58,22 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
give each one the same triage the low-confidence findings above already get (#1058). Qodo's own
`Resolved`/`Dismissed` self-tracked badge is a fast pre-triage signal, not a substitute for
reading the finding, spot-verify against `gh pr diff` rather than trusting it outright.
What closing a finding owes turns on whether it is `pre-existing`. A finding on text inside a
canonical Markdown unit, one the hub's `scripts/canonical_review.py list` names, classed
`pre-existing` by the classes `local-strict-review` "Disposing of Findings" defines for a
local pass, applied here to a PR-hosted finding, is outcome 4 of "Every finding ends in one
of five outcomes" below applied once per unit rather than once per finding: the round gathers
that unit's such findings onto the unit's tracker, an open hub issue whose title carries the
unit key, retitled by the change that moves the key and filed by whichever round first needs
it, and answers each finding with that issue's link, resolving a thread on that reply, so a
`pre-existing` remark on a sentence the change never touched costs one link rather than a
decline or an issue per finding. The batch runs in the hub, which authors the text of every
verbatim unit. A carrying repository routes a finding on a verbatim unit by fidelity rather
than by class, since a resync writes the whole text there: it declines the finding under
that section's outcome 2, ownership sitting elsewhere, and files it on the same tracker,
while a finding on an intent unit is filed there too, the carrier adapting its own copy
meanwhile, since the defect is still fixed at the source. Every other finding, a `style`
remark on untouched text included, takes its own outcome in that section.
4. Nothing in the review was a shape the tooling could not read (an unrecognized heading, a moved
section, an unfamiliar coverage wording). An unrecognized shape blocks the gate on its own.
File an issue naming it and quoting the body, rather than guessing what the new wording
Expand Down
2 changes: 1 addition & 1 deletion .github/skills/agent-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Claims about a pull request being reviewed, clean, or mergeable are owned by the

- **Durable knowledge lands in the committed docs, not in agent memory**, as part of the change that surfaced it, per `GOVERNANCE.md` "Durable Knowledge and Self-Improvement". Memory does not survive a new session or machine, so it holds only environment nuance and in-flight state.
- **Where the governing doc is carried from the hub, file the finding against `ptr727/ProjectTemplate`.** Patching the local copy leaves every sibling repo with the same trap. Search open and closed issues first, then update the matching issue or file a new one.
- **A review flags an instance, so fix the class**: sweep for the siblings before replying, because reviewers sample rather than enumerate.
- **A review flags an instance, so a fix covers the class, bounded to what this change touched or broke**: when fixing a finding, sweep for its siblings before replying, because reviewers sample rather than enumerate, fix each one that sits in a file the diff touches or that the change itself put wrong, and file the rest rather than folding them in, per `GOVERNANCE.md` "Verification Discipline".
- **A rule that keeps needing restating** is usually a stale or missing skills install, so run `python3 scripts/skills_install.py --report` from a hub checkout (the `fleet-conformance-check` skill) before concluding the rule does not exist.

## Delegation, in One Paragraph
Expand Down
29 changes: 24 additions & 5 deletions .github/skills/pr-review-conduct/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,14 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
2. A review is confirmed on the **current head SHA**, matched by commit SHA rather than assumed
from a green merge-state. A push makes checks go green *before* the re-review lands, and the
matched review is **read**, not just counted. A review can carry the head SHA and still decline
the PR outright, or say it read only part of the changed files. `pr_review.py`'s
`review_on_head` names Copilot's own coverage specifically, the currently required reviewer,
not "no review of any kind covers this head": a trialed advisory reviewer (CodeRabbit,
Qodo) carrying the exact head under `other_reviewed`, with an empty review body and no new
threads, is its own ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
the PR outright, or say it read only part of the changed files. The coverage this item
requires is Copilot's, and CodeRabbit and Qodo are advisory, since the hub's
`docs/pr-reviewer-evaluation.md` "Status" names Copilot the incumbent and says no candidate is
a required reviewer: an advisory reviewer's absence blocks nothing, while its findings owe
item 3 exactly as Copilot's do. `pr_review.py`'s `review_on_head` names Copilot's own coverage
specifically, not "no review of any kind covers this head": an advisory reviewer carrying the
exact head under `other_reviewed`, with an empty review body and no new threads, is its own
ordinary "reviewed, nothing to flag" shape, not a missing review (#1066).
3. **Every** finding on that head SHA is closed: threads resolved, issue-level comments (which
have no resolve action) triaged and replied to, **and** the low-confidence findings collapsed
in the review body investigated and answered. Those appear in no thread, so polling threads
Expand All @@ -55,6 +58,22 @@ visible comments, routinely still carries a finding nobody has answered. Treatin
give each one the same triage the low-confidence findings above already get (#1058). Qodo's own
`Resolved`/`Dismissed` self-tracked badge is a fast pre-triage signal, not a substitute for
reading the finding, spot-verify against `gh pr diff` rather than trusting it outright.
What closing a finding owes turns on whether it is `pre-existing`. A finding on text inside a
canonical Markdown unit, one the hub's `scripts/canonical_review.py list` names, classed
`pre-existing` by the classes `local-strict-review` "Disposing of Findings" defines for a
local pass, applied here to a PR-hosted finding, is outcome 4 of "Every finding ends in one
of five outcomes" below applied once per unit rather than once per finding: the round gathers
that unit's such findings onto the unit's tracker, an open hub issue whose title carries the
unit key, retitled by the change that moves the key and filed by whichever round first needs
it, and answers each finding with that issue's link, resolving a thread on that reply, so a
`pre-existing` remark on a sentence the change never touched costs one link rather than a
decline or an issue per finding. The batch runs in the hub, which authors the text of every
verbatim unit. A carrying repository routes a finding on a verbatim unit by fidelity rather
than by class, since a resync writes the whole text there: it declines the finding under
that section's outcome 2, ownership sitting elsewhere, and files it on the same tracker,
while a finding on an intent unit is filed there too, the carrier adapting its own copy
meanwhile, since the defect is still fixed at the source. Every other finding, a `style`
remark on untouched text included, takes its own outcome in that section.
4. Nothing in the review was a shape the tooling could not read (an unrecognized heading, a moved
section, an unfamiliar coverage wording). An unrecognized shape blocks the gate on its own.
File an issue naming it and quoting the body, rather than guessing what the new wording
Expand Down
2 changes: 1 addition & 1 deletion GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ The checks that separate work actually done from work that merely reports succes
- **A launched process is not a result, and a cause nobody observed is not a diagnosis.** "The watcher is armed" names a process rather than a finding, so what gets reported is the output that process produced, and where it produced none, that absence is the report. The failure it prevents is an agent standing still on a condition that was met half an hour earlier, having announced the wait and never read it. Naming an external cause for such a stall afterwards, a throttle or a quota that appears nowhere in the record, turns a local defect into a story about someone else and closes the investigation on the wrong party, so read the record for the cause before naming one, and where the record does not carry it, report the cause as unknown.
- **A workflow change is only fully exercised by CI.** Extracting a `run:` block and executing it locally validates the script and nothing else, because `secrets: inherit`, `permissions:`, `needs:` wiring, and reusable-workflow inputs resolve only in a real run.
- **Platform-specific code is "verified" only on the platform it runs on.** PowerShell on Windows, a macOS-only `mktemp`/`ssh-agent` behavior, a WSL-specific path quirk: an agent reasoning about such code from a different host, however carefully, has not executed it, and reasoning by structural analogy to an already-tested equivalent on another platform ("the POSIX version works, so the PowerShell version should too") is a plausible first pass, not verification. State it as exactly that, an unverified structural match, and never in the same words used for a tested fact. When no agent in the loop has access to the target platform, say so, and either defer the platform-specific portion to a human or an agent that has that access, or ship it clearly labeled unverified.
- **A review flags an instance, so fix the class.** When a reviewer cites one stale claim, one silent-narrowing pattern, or one mis-worded contract, sweep for its siblings before replying. Reviewers sample rather than enumerate.
- **A review flags an instance, so a fix covers the class, bounded to what this change touched or broke.** When a reviewer cites one stale claim, one silent-narrowing pattern, or one mis-worded contract, and the finding is being fixed, sweep for its siblings before replying, since reviewers sample rather than enumerate, and fix each sibling that sits in a file the diff already touches. A sibling the change itself put in disagreement is this change's to fix wherever it sits, because the change made it wrong. A sibling that was wrong before the change and sits in a file the diff does not touch is filed rather than folded in, because every file the diff grows into is one more that each round reads again, so a sweep that widens the diff widens the loop it was meant to close.
Comment thread
ptr727 marked this conversation as resolved.

This section keeps the full rules and is surfaced at its decision moment by the `agent-conduct` Skill at `.agents/skills/agent-conduct/SKILL.md` in the hub, not a repo-relative link since that path is hub-local and not carried into every fleet repo.

Expand Down
Loading