Repository navigation
Finish the pull_request paths-ignore sweep on the 16 remaining repos #5
Description
Activity
matt-edmondson commented
on Sep 8, 2026 ContributorAuthorMore actionsTriage
Priority: Medium Effort: Medium
What needs to be done: Finish removing
paths-ignorefrom thepull_requesttrigger (keeping it onpush) across the 16 remaining non-archived repos, after clearing local work that's currently in the way.Suggested next steps / acceptance criteria:
- Push or set aside in-progress work in the 7 active-feature-branch repos and the 9 with unpushed
maincommits - Run
scripts/Remove-PathsIgnore.ps1(infrastructure repo) across the 16 repos, committing with[skip ci]unless a release is actually wanted - Confirm each file retains exactly one
paths-ignore, underpushonly - Skip the 2 archived repos permanently
Blockers / dependencies: Blocks any ruleset (.github#2) requiring the
Build, Test & Releasecheck on repos still carrying the old filter — otherwise.md-only PRs (including PRs touchingDESCRIPTION.md/TAGS.md) become unmergeable
Generated by Claude Code
- Push or set aside in-progress work in the 7 active-feature-branch repos and the 9 with unpushed
matt-edmondson commented
on Sep 22, 2026 ContributorAuthorMore actionsTriage
Still actionable, premise re-verified — and the recorded blocker dissolves if the sweep goes through pull requests instead of pushes. Not assigning myself; the routing question below is yours, not mine.
Checked this as part of a backlog sweep and it is the only open unassigned issue in the org I found that has not already been triaged out.
The premise holds
ktsu-dev/ImGuiApp's.github/workflows/dotnet.ymlatf47dba0still has the filter on both triggers:on: push: branches: [main, develop] paths-ignore: ["**.md", ".github/ISSUE_TEMPLATE/**", ".github/pull_request_template.md"] pull_request: paths-ignore: ["**.md", ".github/ISSUE_TEMPLATE/**", ".github/pull_request_template.md"]
So the sweep really is unfinished, four weeks on, and ImGuiApp is on the "unpushed commits on
main" list.The blocker is about local working copies, not about the repos
Both stated blockers are properties of your machine, not of the repositories:
Seven repos are on active feature branches. Sweeping them would commit onto in-progress work.
Nine repos onmaincarry unpushed commits. The sweep ends ingit push, which pushes the whole branch, so it would publish unrelated work.Both follow from the Method —
Remove-PathsIgnore.ps1edits in place and ends ingit pushfrom whatever checkout it runs in. A branch cut from a fresh clone oforigin/main, carrying one commit that touches one file, cannot commit onto in-progress work and cannot publish unpushed commits, because it has never seen them. The 16 repos become 16 one-file pull requests, and your local checkouts stay untouched.Why I stopped rather than doing it
Three things make this your call rather than a drive-by:
- It is a different method from the one the issue specifies. The issue says commit with
[skip ci]and push, deliberately, so KtsuBuild does not cut a version. A pull request is a different act with different release and CI consequences, and 16 of them is a visible amount of org-wide traffic. - The list may be stale. It was written 2026-08-27 and names
dotnet.yml, whilektsu-dev/.github's ownCLAUDE.mdnow describes repos moving ontoci.ymldispatching toci-shared.yml. Some of the 16 may have been swept or restructured since. Worth re-deriving the list before acting on it rather than trusting the one in the body — I verified only ImGuiApp. scripts/Remove-PathsIgnore.ps1is not reachable. It lives in the infrastructure repo, which Stand up the infrastructure repo and Terraform CI with drift detection #4, Replace deprecated github_repository attributes in standard.tf #7, Correct two factual errors in the Terraform design spec #8 and Harden the metadata transform against long topics and newlines #9 have each independently established is not in this organization. The edit is small enough not to need it, but the Method as written cannot be followed.
What would unblock it
Say which route you want:
- Pull requests — I can take the 16 as a batch across runs, one PR per repo, each removing
paths-ignorefrom thepull_requesttrigger only and leaving thepushone alone. Your local work is unaffected either way. - Direct
[skip ci]pushes tomain, as the issue specifies — then it wants your machine, or somewhere the local checkouts are not in the way.
Either way, worth re-deriving the remaining list first; I would rather not open PRs against repos that were swept in the last four weeks.
Generated by Claude Code
- It is a different method from the one the issue specifies. The issue says commit with
matt-edmondson commented
on Sep 25, 2026 ContributorAuthorMore actionsThe sweep was reverted, fleet-wide, and the template is why
The "41 repos already swept" figure no longer holds for any of them. PR #26 fixes the cause; the sweep itself still needs your routing decision, so I am unassigning rather than acting on it.
Measured
I sampled 28 repositories against current
main— the 15 this issue names as remaining, plus 13 it counts as already swept, as a control — by fetching each.github/workflows/dotnet.ymland parsing its trigger block.All 28 still carry
paths-ignoreunderpull_request. The control group is the finding:CaseConverter,RunCommand,Frontmatter,Schema,Semantics,Coder,Navigation,Keybinding,FileDeduplicator,JsonRequiredConditionally,KtsuTools,PreciseNumber,TextFilter— every one of them was swept, and every one has it back.Why
CaseConverter's history, confirmed by fetching the file at each SHA:commit date pull_requestcf13319"always run CI on pull requests"2026-08-23 no filter — this issue's sweep a4cec36"adopt the unified dotnet workflow"2026-08-26 filter back 53bf50b"adopt the consolidated .NET workflow"2026-09-14 filter still there Neither revert was deliberate. Both replaced the whole workflow file from a template whose trigger block is symmetric, and
53bf50b's message describes the result as "byte-identical in every repository" — so the second revert was broadcast fleet-wide.The same symmetric block is in this repository, in
docs/shared-ci.md, as the canonicalci.ymlthat "every repository holds byte-identical". Sweeping again without changing it would be reverted a third time.What #26 does
Removes
paths-ignorefrom thepull_requesttrigger in that template, keeps it onpush(release gating runs offshould_release, not the event type, so a docs-only push tomainwould cut a version), states the asymmetry in the document, and addsscripts/tests/shared-ci-template.tests.ps1asserting both halves — because making the two triggers symmetric is the obvious tidy-up and is precisely what broke it twice.What is still open here, and why I stopped
The count in this issue's body is stale in the unhelpful direction: it is not 16 repositories, it is all of them. The two categories it lists — seven on feature branches, nine with unpushed
maincommits — are also properties of your local working copies rather than of the repositories, as noted on 2026-09-22, so a branch cut from a fresh clone oforigin/mainsidesteps both.What has not changed is that the routing question from 2026-09-22 is still unanswered, and it is a bigger question now that the list is ~28 rather than 16:
- Pull requests — one per repository, each removing
paths-ignorefrompull_requestonly. I can take these as a batch across runs. - Direct
[skip ci]pushes tomain, as the Method specifies — that wants your machine, or somewhere the local checkouts are not in the way.
Opening that many pull requests across the org is visible enough that I would rather be told than assume.
One more thing worth knowing for sequencing: no repository has adopted
ci.ymlyet. None of the 28 sampled has one, so the shared-pipeline migration has not started anywhere.CLAUDE.mddescribes--fallback-workflow dotnet.ymlas a migration crutch that "comes off once the warnings stop"; right now it is carrying the whole fleet. If the migration is close, the cheapest route is to let it do the sweep — repositories adoptingci.ymlafter #26 land on a correct trigger block and need no separate visit. If it is not close, the sweep is worth doing on its own.Unassigning. Nothing pushed to any repository other than this one.
Generated by Claude Code
- Pull requests — one per repository, each removing
matt-edmondson commented
on Sep 26, 2026 ContributorAuthorMore actionsTriage (re-run after 2026-09-25 update)
- Category: Improvement (CI hygiene across the organization)
- Priority: Medium
- Assignment: Organization maintainer, shared workflows and templates
- Status: The earlier sweep was undone. The workflow template re-added
paths-ignoreonpull_requesttwice, and all 28 sampled repos have it again. PR Stop the shared ci.yml template filtering paths on pull_request #26 fixes the template and is no longer open. Re-running the sweep before that fix reaches the template source would be wasted work. - Blocking question: Should changes go out as PRs or as direct pushes? This is still unanswered and needs a maintainer decision.
- Related: No repository has adopted
ci.ymlyet, which overlaps the move onto the shared pipeline. - In progress: No open PR matches.
Next step: Confirm the template fix from #26 is live, answer the PRs-or-direct-push question, then redo the sweep once.
Generated by Claude Code
matt-edmondson commented
on Sep 28, 2026 ContributorAuthorMore actionsDecision (maintainer, 2026-09-28)
Routing question answered: no separate sweep. Do the migration to
ci.ymlinstead.- Move each repository off
dotnet.ymland onto the sharedci.yml→ci-shared.ymlpipeline. The canonicalci.ymlindocs/shared-ci.mdalready haspaths-ignoreonpushonly (Stop the shared ci.yml template filtering paths on pull_request #26), so each migrated repo lands on the correct trigger block without a separate visit. - Neither PRs-per-repo nor direct
[skip ci]pushes are wanted for the sweep on its own. - Once the migration stops producing
--fallback-workflow dotnet.ymlwarnings in the profile README run, remove that flag (perCLAUDE.md).
Related decisions that can ride the same per-repo migration change:
- Stop committing derived metadata to main in KtsuBuild #6 is decided as "stop committing metadata entirely". Each repo's migration should also delete
VERSION.md,CHANGELOG.mdandLATEST_CHANGELOG.mdand add them to.gitignore.
Next reader: re-derive the list of repos still on
dotnet.yml(as of 2026-09-25, none hadci.yml), then migrate them. This issue can close once no repo carriespaths-ignoreunderpull_request.
Generated by Claude Code
- Move each repository off
Context
Every
dotnet.ymlskipped CI for pull requests touching only.mdfiles:That makes any ruleset requiring
Build, Test & Releaseblock such PRs permanently, because the check never reports. It also affects PRs editingDESCRIPTION.mdandTAGS.md, which the Terraform workspace derives repository metadata from.The filter has been removed from the
pull_requesttrigger in 41 repos. Thepushtrigger keeps its ownpaths-ignore, deliberately, because release gating runs off KtsuBuild'sshould_releaserather than the event type, so a docs-only push tomaincould otherwise cut a release.Verified on the pilot: a PR touching
README.mdnow runsBuild, Test & Release, where previously it ran nothing.Remaining
Seven repos are on active feature branches. Sweeping them would commit onto in-progress work:
AppDataStorage,Essentials,GitIntegration,KtsuBuild,PkmnDB, plus theBlastMerge-essentials-diandImGuiApp-imagegui-supportclones.Nine repos on
maincarry unpushed commits. The sweep ends ingit push, which pushes the whole branch, so it would publish unrelated work:Abstractions,Common,Ecosystem,FileSystemProvider,ImGuiApp,IntervalAction,PersistenceProvider,SerializationProvider,UniversalSerializerTwo are archived and read-only, so they are out of scope permanently:
CrossRepoActions,SyncFileContents.Acceptance criteria
paths-ignore, underpushMethod
scripts/Remove-PathsIgnore.ps1in the infrastructure repo does the edit. Commit with[skip ci]in the subject unless a release is wanted, because KtsuBuild cuts a version on any untagged commit tomain.VersionType.Skipfires only when there are no commits in range or all commits carry that tag.Do not rebase.
icon.pngis stored in Git LFS across this org and rebases fail on the smudge filter. Fetch and reset toorigin/main, re-apply, and push.