mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #241] [MERGED] ci: self-enroll this repo in its own agents-md-integrity reusable #248
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#248
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/241
Author: @mattmillerai
Created: 8/27/2026
Status: ✅ Merged
Merged: 8/27/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-9615-ci-agents-md-integrity📝 Commits (2)
088b505ci: self-enroll this repo in its own agents-md-integrity reusable73555cdci(agents-md-integrity): route the self-caller and scope its tamper claim (BE-9615)📊 Changes
3 files changed (+46 additions, -6 deletions)
View changed files
📝
.github/reviewers.yml(+5 -0)➕
.github/workflows/ci-agents-md-integrity.yml(+35 -0)📝
AGENTS.md(+6 -6)📄 Description
ELI-5
This repo ships the workflow that checks other repos'
AGENTS.mdfiles, but it never ran that check on itself — its ownAGENTS.mddrifted to 305 lines and no PR check caught it (a reviewer did, on #227). This PR turns the checker on for this repo, so that class of drift can never merge silently again.What changed
.github/workflows/ci-agents-md-integrity.yml: a thin caller enrolling this repo in its own reusableagents-md-integrity.yml, following the existing self-enrollment convention (ci-cursor-review.yml/ci-groom.yml) and the canonical caller indocs/callers/agents-md-integrity.md. Bothuses:andworkflows_ref:pin the same merged-main full SHA (75685ed9fd20a8ab4e74b3d17d2002dae63224c2, tip of main at authoring time) — identical on purpose, since the reusable fail-fasts on a missing/shortworkflows_ref. Deliberately NOT a local./path: per the AGENTS.md conventions, a local path would run the PR's own copy of the checker, letting a PR weaken the logic judging it.pull_requesttrigger is unfiltered (no path filter), matching the canonical caller doc — the job is seconds of stdlib Python, and an unfiltered trigger keeps it eligible as a required status check later (a path-filtered required check wedges PRs that skip it).AGENTS.md: the self-gating bullet flips back to the affirmative — it IS itself gated, via the new caller — keeping the under-200/aim-≤150,@AGENTS.md-shim, and no-.cursorrulesclauses; and the self-enrollment caller list in the conventions section now includesci-agents-md-integrity.yml. This resolves the review finding deferred from #227 (the "no caller backing it" thread). Because the new caller runs on this PR itself, the check validates the claim in the same run..github/reviewers.yml: the agents-md rule enumerated the reusable, the checker package and the test workflow but noci-caller, so the new self-caller matched no glob and fell through todefault_pool. It is now named outright, as the assign-reviewers rule already does for its ownci-caller — otherwise PRs touching only this tamper-sensitive file (including the bump fleet's SHA-bump PRs once enrolled) would route to non-owners.Review-round changes (
73555cd)Three panel findings from the first review round, all fixed in the follow-up commit:
reviewers.yml) — described above.pull_requestGitHub still reads the caller file itself from the PR's own ref, so a PR can loosenwith:, repointuses:, or delete the job and still report green under the same check name. The header now claims only the half that holds and names what would close the other half (a CODEOWNERS entry for.github/workflows/**, or a branch rule — repo-policy changes, out of scope here).# v1 — github-workflows main (75685ed), asserting both that the SHA is thev1tag and that it is an untagged main commit. It was also only half-maintained:bump-callers.shrewrites thegithub-workflows main (<short>)form on every bump and never touches# v1, so after the first automated bump it would have claimedv1for a commit the tag does not point at. It now uses the sibling self-callers'# github-workflows main (<short>)form, which the bumper keeps honest.Expected CI on this PR
AGENTS.md Integritycheck fires on this PR (the caller lands with the trigger that runs it) and should pass —AGENTS.mdis 150 lines — with one non-fatal warning: the repo has no.github/CODEOWNERS, andrequire_codeownersdefaults to false. CODEOWNERS is deliberately not added here (out of scope).test-workflow-pinsruns (path-filtered to.github/workflows/**); its suite and lint pass locally (see Provenance).Provenance
python3 -m unittest discover -s .github/workflow-pins/tests: 308 passed, 0 failed;python3 -m unittest discover -s .github/agents-md-integrity/tests: 46 passed, 0 failed;python3 -m unittest discover -s .github/refresh-reviewers/tests: 48 passed, 0 failed;python3 .github/workflow-pins/check_workflow_pins.py: OK (11 workflows declareworkflows_ref, none defaulted, every checkout guarded);python3 .github/agents-md-integrity/check_agents_md.py --root .: passed with 1 warning (missing CODEOWNERS, expected). The editedreviewers.ymlwas additionally round-tripped throughrefresh-reviewers/generate.py's own parser to confirm the new path lands in the intended rule and in no earlier one.Residual
AGENTS_MD_CALLERSroster variable. Until that happens thebump-agents-md-callersfleet exits 0 against a roster that does not name this repo, both pins here stay frozen, and no run log reports the drift — exactly the repeated mistake the AGENTS.md enrollment bullet warns about, and whichci-groom.ymlalready hit. The caller header now states this in the file itself, and it is filed as a follow-up.AGENTS.mdhas no DRI and the caller file has no ownership gate. That is a repo-policy decision for a maintainer, not a change this PR should make unilaterally.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.