feat(copilot): gate this repository on its own integrity check - #118
Closed
imran-siddique wants to merge 1 commit into
Closed
feat(copilot): gate this repository on its own integrity check#118imran-siddique wants to merge 1 commit into
imran-siddique wants to merge 1 commit into
Conversation
Copilot agent composition unchangedNothing added, nothing subtracted in the instructions, skills and MCP configuration this repository gives Copilot. |
imran-siddique
force-pushed
the
fix/copilot-mcp-paths
branch
from
August 15, 2026 22:32
8c624d0 to
a5d3a18
Compare
We ship a pull-request gate for other people's repositories and did not run it on our own. copilot-tests.yml called `verify`, but with no baseline committed that exits 0 saying so, and nothing was enforced. Commits `.agentrust/copilot-baseline.json` and adds copilot-integrity.yml with `fail-on-drift: true`. The baseline is empty on purpose. This repository has none of the surfaces the check looks for: no .github/copilot-instructions.md, no .github/instructions/, no AGENTS.md, no skill roots. So the first thing the gate can fire on is someone adding one, which is exactly the event worth catching and reviewing. The new workflow cannot carry a `copilot/**` path filter the way the test workflow does. AGENTS.md resolves to the nearest one, so a file added deep in the tree changes what Copilot reads there; a path filter would make the gate absent precisely when it matters. It therefore runs on every pull request. Commenting is switched off for pull requests from forks, where GITHUB_TOKEN is read-only, so a contribution that did nothing wrong is not failed by a comment step it cannot satisfy. Drops the duplicate `verify` step from copilot-tests.yml. Two jobs enforcing one rule on different triggers is worse than one job that always runs; the snapshot step stays as a smoke test. Closes #74 Signed-off-by: Imran Siddique <imran.siddique@opaque.co>
imran-siddique
force-pushed
the
feat/copilot-self-gate
branch
from
August 15, 2026 22:33
55f0ea7 to
0ec9926
Compare
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.
Closes #74. Stacked on #117, so the diff here is only the gate. Base retargets to
mainonce #117 merges.We ship a pull-request gate for other people's repositories and did not run it on our own.
copilot-tests.ymlcalledverify, but with no baseline committed that exits 0 saying "No approved baseline", so nothing was enforced.What changes
.agentrust/copilot-baseline.jsoncommitted, viapython copilot/engine/capture.py approve..github/workflows/copilot-integrity.yml, running the local./copilotaction withfail-on-drift: true.verifystep drops out ofcopilot-tests.yml.The baseline is empty, and that is the point
This repository has none of the surfaces the check looks for: no
.github/copilot-instructions.md, no.github/instructions/, noAGENTS.md, no skill roots, no MCP config. So the first thing this gate can fire on is someone adding one. That is exactly the event worth catching, because it is the moment this repository starts telling a coding agent how to behave.Three decisions worth reviewing
Enforcing rather than advisory. #74 offered
fail-on-drift: falseas a starting point for a baseline that needs settling. An empty baseline has nothing to settle, and a report-only gate is the same non-enforcement posture the issue was filed about.No path filter.
copilot-tests.ymlis scoped tocopilot/**, which is right for tests and wrong for this.AGENTS.mdresolves to the nearest one, so a file added three directories down changes what Copilot reads in that subtree. A path filter would mean the gate is absent exactly when it matters, so this runs on every pull request.No comment on fork pull requests.
GITHUB_TOKENis read-only for those, so the comment step would 403 and fail a contribution that did nothing wrong. The check itself still runs and still blocks; only the comment is skipped. The step summary carries the same content either way.Verified locally