The changes job's go filter was an allowlist of 12 entries. PRs touching Go compile inputs outside it skipped all Go CI while ci-success passed:
- go:embed targets: providers/*/provider.yaml, hack/pro/provider.yaml, pkg/inject/inject.sh, pkg/dockerfile/test_Dockerfile
- testdata read by tests: cmd/workspace/up/testdata, pkg/secrets/testdata
- test input read via relative path: sites/docs-devsy-sh/public/install.sh (hack/install_script)
- build config: .golangci.yaml, .golangci-version, Taskfile.yml, mise.toml, mise.lock
Replace the allowlist with directory-level entries for cmd, pkg, providers, hack, e2e, plus **/testdata/**. Positive globs only; no negation. Docs, desktop and most of sites/ still do not trigger Go CI.
Summary
The
changesjob'sgofilter in.github/workflows/pr-ci.ymlwas an allowlist of 12 entries. PRs that changed Go compile inputs outside it skipped every Go job, andci-successstill passed. This PR replaces the allowlist with directory-level entries and adds the missing inputs.Part of the pr-ci.yml restructuring series (path filter correctness). Only the
changesfilter is edited.Gap found
I checked the filter against
go list -test -jsonfor linux, darwin and windows, over the tracked tree at origin/main. The universe was 1937 files.Covered by the old filter: 1920/1937. Missed:
providers/{apple,docker,kubernetes,microsandbox,podman,pro}/provider.yamlgo:embedinproviders/providers.gohack/pro/provider.yamlgo:embedinhack/pro/main.gopkg/inject/inject.shgo:embedinpkg/inject/inject.gopkg/dockerfile/test_Dockerfilego:embedinpkg/dockerfile/parse_test.gocmd/workspace/up/testdata/sops-project-secrets.enc.yamlpkg/secrets/testdata/sops-age.yamlsites/docs-devsy-sh/public/install.sh../../sites/...byhack/install_script/install_test.go.golangci.yaml,.golangci-version,Taskfile.yml,mise.toml,mise.lockChange
The
gofilter now has these entries:**/*.go,main.gocmd/**,pkg/**,providers/**,hack/**,e2e/**,**/testdata/**sites/docs-devsy-sh/public/install.sh(single file, to avoid pulling in the docs site)go.mod,go.sum,mise.toml,mise.lock,.golangci.yaml,.golangci-version,.goreleaser.yml,Taskfile.yml,THIRD_PARTY_LICENSES.md,.github/workflows/pr-ci.ymlThe old entries
hack/microsandbox/**,hack/provider_update_ci/**,hack/podman_ci/**,hack/licenses/**andhack/run-managed-policy-e2e.share covered byhack/**. Positive globs only. No negation.Verification
desktop/,sites/,*.md, other workflows,package.json,biome.json,renovate.json,community.yaml,paseo.jsonand.pre-commit-config.yaml: no unintended hits. Five hits:.github/workflows/pr-ci.ymlandTHIRD_PARTY_LICENSES.md(intended), plus three.mdfiles inside Go-owned trees (see below).minimatch@10(dot: true) against all 2654 tracked files. Every missed file above now matches, and the only non-Go-tree matches are the intended config,main.go,go.mod/go.sum,THIRD_PARTY_LICENSES.md,.github/workflows/pr-ci.ymland the install script.filtersstring parses and itsgolist matches the intended list.actionlint: no new findings. It reports one error at line ~937 (background: trueon the free-disk-space step). That is on origin/main too and out of scope.prek run --files .github/workflows/pr-ci.yml: all hooks passed.Known over-triggers (safe direction)
e2e/README.md,e2e/tests/up/MICROSANDBOX.mdandhack/ci/agent-skill-evaluation.mdare docs inside Go-owned trees, so changes to them run Go CI. Directory-level matching is the trade-off. Excluding them needs negation globs, which I did not use.hack/ci/validate-agent-skill.shalso runs Go CI when it changes.Checker limitations
go listreports 166 files under the local Go build cache (cgo and generated). They are outside the repo and were skipped.*.go. It does not see files that a shell step reads at runtime (hack/ci/validate-agent-skill.shis inhack/**anyway).Summary by CodeRabbit