# Path → scope:* mapping for the labels workflow's scope job # (actions/labels-scope since #130: it reads this mapping at the BASE ref # and its only write is an additive POST, so a label applied while the job # runs survives the machine — its predecessor, actions/labeler@v5, PUT the # whole set and clobbered ceremony#128's `release` mid-job). The scope # taxonomy itself lives in .github/labels.conf; LABELS.md carries the table # these globs implement. Scopes locate, they do not alert — a path that maps # to nothing is fine (the mapping is advisory), so these rows chase the big # surfaces, not every file. # # A row that matches everything is worse than a missing one: it costs the # same silence and adds a wrong answer. `changelog.d/**` sat under # scope:release-flow until #267 measured it — the last 20 PRs (#197–#263) # all carried scope:release-flow and 3 of them touched a release surface, # because BUILDER.md makes every behavior change write a fragment, so the # glob was "any PR that changes behavior" by doctrine. CHANGELOG.md stays: # the same doctrine forbids editing it for an entry, so only the release PR # does. The other rows #267 added — the issueflow reconciler, the three # unmapped guard actions, RELEASES.md, README (which this tree spells # README.md, so the old glob could match nothing) — are the same read of the # same file, gaps rather than wrong answers. # # #302 is the same read once more, from #300's review: lib/attention.sh had # #267 D4's premise exactly (both reconcilers source it, nothing release-side # does) and was not in the rows — a wrong answer, not a gap. The sweep # workflow pair joins beside its trigger pair: the sweeps detached in #209 # and took the reconcile jobs and the cron with them. Two asymmetries are # deliberate, not drift: the TESTS of the shared lib/ files take # scope:labels alone, because lib/ruling.sh and lib/read.sh wear # scope:release-flow only through the lib/** glob being kept whole and a # test file inherits no such glob; and there is still no test/** or # .github/scripts/** catch-all, because both directories span all four # scopes — a catch-all is the changelog.d/** defect again, 100% recall and # no locating power. The enumeration is the price of a test locating its # subject. scope:release-flow: - changed-files: - any-glob-to-any-file: - .github/workflows/release.yml - .github/workflows/self-release.yml - .github/workflows/release-exercise.yml - .github/scripts/self-ref-check.sh - lib/** - bin/** - VERSION - CHANGELOG.md - drills/** - test/decide.test.sh - test/preflight.test.sh - test/facts.test.sh - test/release-chain.test.sh - test/version.test.sh - test/changelog.test.sh - test/self-ref.test.sh - test/changelog-assemble.test.sh - .github/scripts/release-path.sh - test/release-path.test.sh scope:guards: - changed-files: - any-glob-to-any-file: - actions/changelog-armed/** - actions/changelog-assembled/** - actions/changelog-monotonic/** - actions/docs-sync/** - actions/drill-recorded/** - actions/refs-not-closing/** - actions/runner-isolated/** - .github/workflows/refs-guard.yml - test/changelog-armed.test.sh - test/changelog-assembled.test.sh - test/changelog-monotonic.test.sh - test/docs-sync.test.sh - test/drill-recorded.test.sh - test/refs-not-closing.test.sh - test/runner-isolated.test.sh - .github/scripts/marker-check.sh - test/marker-check.test.sh - .github/scripts/vendored-check.sh - test/vendored.test.sh scope:labels: - changed-files: - any-glob-to-any-file: - .github/workflows/labels.yml - .github/workflows/self-labels.yml - .github/workflows/labels-sweep.yml - .github/workflows/self-labels-sweep.yml - .github/labeler.yml - .github/labels.conf - actions/issueflow-reconcile/** - actions/labels-reconcile/** - actions/labels-scope/** # shared by both reconcilers; lib/** keeps scope:release-flow too, # and a mixed file honestly wears both labels (#267 D4, #302 D1) - lib/read.sh - lib/ruling.sh - lib/attention.sh - LABELS.md - test/issueflow-reconcile.test.sh - test/labels.test.sh - test/labels-reconcile.test.sh - test/labels-scope.test.sh # tests of the shared lib/ files: scope:labels ALONE — a test # inherits no lib/** glob, so its row is the one scope its subject # actually locates (#302 D3) - test/attention.test.sh - test/ruling.test.sh - test/labels-triggers.test.sh scope:docs: - changed-files: - any-glob-to-any-file: - README.md - docs/** - AGENTS.md - BUILDER.md - RELEASES.md - REVIEWER.md - TRIAGE.md - CONTRIBUTING.md