Merge pull request #310 from dan-claude-bot/build/302-labeler-map-rows
fix: the labeler map learns lib/attention.sh — and the surfaces it never knew
This commit is contained in:
commit
b32d8253e7
3 changed files with 88 additions and 1 deletions
32
.github/labeler.yml
vendored
32
.github/labeler.yml
vendored
|
|
@ -19,6 +19,20 @@
|
|||
# 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:
|
||||
|
|
@ -37,6 +51,9 @@ scope:release-flow:
|
|||
- 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:
|
||||
|
|
@ -55,25 +72,38 @@ scope:guards:
|
|||
- 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)
|
||||
# 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:
|
||||
|
|
|
|||
6
changelog.d/302.md
Normal file
6
changelog.d/302.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
### Fixed
|
||||
|
||||
- `lib/attention.sh` locates as label machinery beside its two shelf-mates —
|
||||
`[scope:release-flow]` alone was a wrong answer of the class #267 measured
|
||||
— and the map learns the sweep workflow pair, the shared-lib tests, and
|
||||
seven enumerated test/guard surfaces (#302).
|
||||
|
|
@ -175,6 +175,57 @@ EOF
|
|||
check "derive: an unmapped path is silence, not an error" 0 "[]" \
|
||||
derives "$(files FLEET.md .github/workflows/ci.yml)"
|
||||
|
||||
# --- #302: one wrong answer and the surfaces the map never learned ------
|
||||
# Every path asserted ALONE, per #300 round 1: a set holding a script and
|
||||
# its test derives the scope when either row matches, so bundling would
|
||||
# let a row be deleted with the case still green.
|
||||
|
||||
# D1, the reported bug replayed: both reconcilers source lib/attention.sh,
|
||||
# nothing release-side does — [scope:release-flow] alone was a wrong
|
||||
# answer, and the honest set is both, same as its two shelf-mates
|
||||
check "derive: lib/attention.sh is release-flow AND labels" 0 \
|
||||
"[scope:release-flow,scope:labels]" derives 'lib/attention.sh'
|
||||
|
||||
# D2: the sweep half of the automation, detached from the trigger half in
|
||||
# #209 — cadence, permissions and job wiring must locate
|
||||
check "derive: the labels sweep workflow is scope:labels" 0 \
|
||||
"[scope:labels]" derives '.github/workflows/labels-sweep.yml'
|
||||
check "derive: the self sweep workflow is scope:labels" 0 \
|
||||
"[scope:labels]" derives '.github/workflows/self-labels-sweep.yml'
|
||||
|
||||
# D3, the deliberate asymmetry with D1: a test file inherits no lib/**
|
||||
# glob, so its row is the one scope its subject actually locates
|
||||
check "derive: attention's test is scope:labels alone" 0 \
|
||||
"[scope:labels]" derives 'test/attention.test.sh'
|
||||
check "derive: ruling's test is scope:labels alone" 0 \
|
||||
"[scope:labels]" derives 'test/ruling.test.sh'
|
||||
|
||||
# D4: the same read's remaining gaps, one row each
|
||||
check "derive: the trigger-surface pins are scope:labels" 0 \
|
||||
"[scope:labels]" derives 'test/labels-triggers.test.sh'
|
||||
check "derive: the assemble test is scope:release-flow" 0 \
|
||||
"[scope:release-flow]" derives 'test/changelog-assemble.test.sh'
|
||||
check "derive: the release-path manifest is scope:release-flow" 0 \
|
||||
"[scope:release-flow]" derives '.github/scripts/release-path.sh'
|
||||
check "derive: the release-path test is scope:release-flow" 0 \
|
||||
"[scope:release-flow]" derives 'test/release-path.test.sh'
|
||||
check "derive: the marker-check guard is scope:guards" 0 \
|
||||
"[scope:guards]" derives '.github/scripts/marker-check.sh'
|
||||
check "derive: the marker-check test is scope:guards" 0 \
|
||||
"[scope:guards]" derives 'test/marker-check.test.sh'
|
||||
check "derive: the vendored-check guard is scope:guards" 0 \
|
||||
"[scope:guards]" derives '.github/scripts/vendored-check.sh'
|
||||
check "derive: the vendored test is scope:guards" 0 \
|
||||
"[scope:guards]" derives 'test/vendored.test.sh'
|
||||
|
||||
# D7: no test/** or .github/scripts/** catch-all — both directories span
|
||||
# all four scopes, so this pair reds under any catch-all row: each file
|
||||
# would gain the other's scope beside its own
|
||||
check "derive: test/version.test.sh is release-flow alone" 0 \
|
||||
"[scope:release-flow]" derives 'test/version.test.sh'
|
||||
check "derive: this test file is scope:labels alone" 0 \
|
||||
"[scope:labels]" derives 'test/labels-scope.test.sh'
|
||||
|
||||
# refusals: unsupported shapes fail loudly, naming the label
|
||||
cat >"$TMP/allglobs.yml" <<'EOF'
|
||||
scope:x:
|
||||
|
|
|
|||
Loading…
Reference in a new issue