lib/attention.sh had #267 D4's premise exactly — both reconcilers source it, nothing release-side does — and [scope:release-flow] alone was a wrong answer of the class that decision exists to correct. The sweep workflow pair joins beside its trigger pair (detached in #209), the shared-lib tests take scope:labels alone (a test inherits no lib/** glob), and D4's seven enumerated rows land one each. No catch-all, by decision: both directories span all four scopes. Each of the 13 new map rows is protected by its own assertion — deleted alone, each reds exactly its case. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
117 lines
5.1 KiB
YAML
117 lines
5.1 KiB
YAML
# 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/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
|