Require Execution, Not Analogy, to Verify Platform-Specific Code - #715
Merged
Conversation
Per issue #712: an agent must not claim platform-specific code (PowerShell on Windows, macOS-only mktemp/ssh-agent behavior, a WSL-specific path quirk) works, is verified, or is fixed unless it actually executed that code on that platform. Reasoning by analogy to an already-tested equivalent on a different platform is a plausible first pass, not verification, and must be reported as exactly that. Adds the canonical rule to GOVERNANCE.md "Verification Discipline", its decision-moment excerpt to the agent-conduct skill's "Before Claiming Done", and a caveat on pr-review-conduct's outcome 1 so a platform-specific review finding is not marked fixed by a SHA alone.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an explicit verification-discipline rule that platform-specific code must only be claimed as verified/fixed after executing it on the target platform, and propagates that rule to the two Skills that surface verification/review-loop guidance at decision time.
Changes:
- Extend
GOVERNANCE.md"Verification Discipline" with a new rule requiring on-platform execution to claim platform-specific fixes are verified. - Add a matching "Before Claiming Done" bullet to
agent-conductso the rule is surfaced at the moment an agent is about to claim success. - Update
pr-review-conductoutcome (1) to clarify that closing a platform-specific finding requires on-platform execution, not just a fix SHA.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| GOVERNANCE.md | Adds canonical rule text to Verification Discipline covering platform-specific verification requirements. |
| .agents/skills/agent-conduct/SKILL.md | Surfaces the new platform-specific verification rule in the "Before Claiming Done" checklist. |
| .agents/skills/pr-review-conduct/SKILL.md | Clarifies that resolving platform-specific review findings requires execution on the target platform, not analogy + SHA. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
python3 scripts/build_dist.py --check failed in CI: the two .agents/skills/ files this PR edited (agent-conduct, pr-review-conduct) weren't reflected in the generated .claude-plugin/fleet-skills copy. Ran python3 scripts/build_dist.py to regenerate it.
…tion-rule # Conflicts: # .claude-plugin/fleet-skills/.source-digest
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.
Adds the rule from #712: an agent must not claim platform-specific code (PowerShell on
Windows, a macOS-only
mktemp/ssh-agentbehavior, a WSL-specific path quirk) works,is verified, or is fixed unless it actually executed that code on that platform.
Reasoning by structural analogy to an already-tested equivalent on a different platform
is a plausible first pass, not verification, and has to be reported as exactly that.
Three spots, matching the existing pattern where GOVERNANCE.md keeps the canonical rule
text and the skills excerpt or reference it at their decision moment:
GOVERNANCE.md"Verification Discipline": the full rule, alongside the othergreen-but-wrong checks in that section.
.agents/skills/agent-conduct/SKILL.md"Before Claiming Done": the same rule,abbreviated to match its sibling bullets there.
.agents/skills/pr-review-conduct/SKILL.mdoutcome 1 ("Real, so fix it"): a caveatthat a platform-specific review finding is not closed by a SHA alone, since that is
the exact moment the incident behind Never Let an Agent Assert Platform-Specific Code Works Without Running It There #712 happened (round 4 of PR Make the Signed-Commit Verification Tech-Agnostic #708's review loop).
Per "Issue-closing keywords" in "Branching Model," the closing keyword belongs on the
develop -> mainpromotion PR, not here. This references #712 rather than closing it.Local gates run:
prose_lint.py(full check set, diff-scoped),repo_gate.py,unittest discover -s scripts/tests(665 tests),spec/validate.py. All green.