Skip to content

ci(release): key release notes on the real type labels, not just dependencies - #735

Merged
JarryShaw merged 1 commit into
mainfrom
ci/release-yml-per-type-categories
Sep 24, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/release-yml-per-type-categories

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

Please follow the guide below

What is the purpose of your pull request?

  • fix — corrects a defect
  • feat — adds a feature
  • perf — changes performance, not behaviour
  • refactor — changes neither behaviour nor performance
  • test — tests only
  • docs — documentation only
  • ci — workflows or build tooling
  • chore — anything else

Description of your pull request and other information

Replaces the two-category .github/release.yml (Dependencies / catch-all) with one category
per type label, now that all 499 merged PRs carry a reliable type label. Order is derived from
a 330-PR survey of label overlaps: breaking first so it never gets buried under fix/release/
ci; release second so old "New distribution" PRs land there and not under ci/fix/
dependencies; dependencies moved from first to second-to-last (judgement call, reasoning in
the file's own comments — flip it if wrong). review:* labels documented as never eligible for
a category or an exclude.labels entry, since either would drop reviewed PRs from the notes.

Pure YAML config, no code path — no coverage delta, no test to add. Validated: YAML parses,
schema checked against GitHub's documented release.yml keys (category title+labels only,
no invented keys), and label combinations traced by hand against the new ordering (see PR
description / session report for the traces, e.g. #691 breaking+fix → Breaking, #21 release+ci
→ Release). actionlint was not available in this environment to also check it.

@JarryShaw JarryShaw added ci Pull requests that change CI or workflow configuration (ci: subject prefix) review: pending No verdict for the current head - never reviewed, or the head moved since the last one labels Sep 24, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

✅ GOOD TO MERGE @ c1517a8aa — no exclude.labels risk exists; ordering, schema, and labels all check out.

@JarryShaw

Copy link
Copy Markdown
Owner Author

✅ GOOD TO MERGE @ c1517a8aa — no exclude.labels risk exists; ordering, schema, and labels all check out.

Claim Verdict Evidence I obtained
review:*/wip/blocked in any exclude.labels Not present grep -n exclude on the PR-head file → 2 hits, both in prose (lines 77, 79); Ruby YAML.load_file parse shows zero exclude key anywhere in the structure
YAML valid / schema correct Valid Parsed PR-head file: 13 categories, each only {title, labels}, no invented keys, * last
perf+ci PRs (#731, #725) land right Correct Both carry perf+ci (gh pr view --json labels); order has ci (pos 6) ahead of perf (pos 7) → both file under "CI & Build" — same rule as the documented #727 precedent, and both titles are ci:-prefixed, so that's the right call
All 12 category labels exist Confirmed gh label list: breaking, release, feat, fix, refactor, ci, perf, docs, chore, test, const, dependencies all present — refactor/release are not missing, contra the brief
Existing label with no category and no * fallback None * sits last, catches everything unmatched
Stale "only Dependabot labels anything" prose replaced Mostly accurate Spot-checked 15 PRs the comment cites (#3,4,6,9,11,12,14,15,21,22,25,41,340,637,691,697,703,727) against real labels — 15/15 label sets match; the ordering conclusions drawn from them hold
"499/499 merged PRs carry a type label" Number wrong, substance true Actual merged count = 334 (search API and gh pr list agree); all-state PR count = 505 — neither is 499. Independently verified 0 merged PRs (and 0 of all 505) lack a type label, so the underlying claim is true, just mislabeled
"refactor's only overlap is with breaking (1x)" Undercounted Actual breaking+refactor = #3, #4, #6 (3, not 1); #4 also carries feat. Doesn't change output — breaking and feat both already outrank refactor regardless of the count
breaking+fix "38x+5" (43) Minor drift Measured 44 now; consistent with a PR or two merging since the 330-PR sample was taken

Nothing found changes where any PR actually files, and the flagged risk (review labels in exclude.labels) does not exist in this file at either scope. The numeric slips above are comment-only and cosmetic.

✅ GOOD TO MERGE @ c1517a8aa — no exclude.labels risk exists; ordering, schema, and labels all check out.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: pending No verdict for the current head - never reviewed, or the head moved since the last one labels Sep 24, 2026
…ndencies

Every merged PR now carries a type label (zero exceptions), so the old
two-category split (Dependencies / catch-all) is stale -- its own comment
cited a 40-PR survey where only Dependabot labelled anything, which is no
longer true.

- Add one category per type label (13 total incl. catch-all), ordered from a
  334-PR label-overlap survey so breaking always outranks fix/feat/release/ci,
  and release outranks ci/fix/dependencies for old "New distribution" PRs.
- Move dependencies to second-to-last (was first) so a future PR mixing a
  real change with a dependency-bump label surfaces under the real category.
- Document why review: labels must never key a category or appear in any
  exclude.labels -- either would drop every reviewed PR from the notes.

No code path touched; pure YAML config, so no coverage delta and no test.
Validated: YAML parses, schema matches GitHub's documented release.yml keys,
and PR label combinations traced against the new ordering by hand.
@JarryShaw
JarryShaw force-pushed the ci/release-yml-per-type-categories branch from c1517a8 to ecf57f9 Compare September 24, 2026 13:27
@JarryShaw JarryShaw added review: pending No verdict for the current head - never reviewed, or the head moved since the last one and removed review: good-to-go Cross-review at the current head says ready; CI state is separate labels Sep 24, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Re-measured the comment's numbers directly (gh pr list --state merged --limit 1000 + gh search prs, cross-checked per-PR via gh pr view):

  • Merged PRs: 334 (not 499). Zero lack a type label — reworded to "zero exceptions" instead of a hardcoded N/N that goes stale on the next merge.
  • breaking+fix: 44 (39 without test, +5 with) — was 38+5=43, drifted since the original sample.
  • breaking+refactor: still 1× (Regular update #6) among merged PRs — the original text was correct. The review's "3×, test/rc/abc #3/Regular update [test/rc/abc] #4/Regular update #6" counted test/rc/abc #3 and Regular update [test/rc/abc] #4, which are CLOSED (never merged), outside the comment's own stated "sampling merged pull requests" scope.
  • Also refreshed drifted totals in the frequency table (fix 123→124, ci 39→41, perf 4→7) and the multi-label-overlap count (67→69) while in there.

Config itself (12 categories, order, no exclude.labels) untouched — diff is comment-only. New head: ecf57f9f8. Flipped label to review: pending since head moved past c1517a8aa.

@JarryShaw

Copy link
Copy Markdown
Owner Author

✅ GOOD TO MERGE @ ecf57f9f8 — comment-only delta, every corrected figure independently re-derived and correct, still no exclude key at any scope.

@JarryShaw

Copy link
Copy Markdown
Owner Author

✅ GOOD TO MERGE @ ecf57f9f8 — comment-only delta, every corrected figure independently re-derived and correct, still no exclude key at any scope.

Narrow re-check; supersedes the c1517a8aa verdict. Diff c1517a8aa..ecf57f9f8 is 8+/8−, every line a # line in the L14–57 block — the non-comment lines are sha256-identical (c6ce0db4…), so changelog, categories, titles, labels and order are untouched; the PR still changes only .github/release.yml.

New head parses: 13 categories, each exactly {title, labels} with one label, * last and nowhere else, all 12 keyed labels present in the repo, and no exclude key at any scope — the only two hits (L77, L79) are prose describing what not to do.

claim in the comment measured independently
sample 334 merged, 0 untyped ("zero exceptions") 334 merged, 0 without a type label ✅
breaking+refactor = 1× #6 only — #3/#4 are CLOSED, never merged ✅
breaking+fix 39× (+5 with test) 44 total = 39 + 5 ✅
fix / ci / perf = 124 / 41 / 7 124 / 41 / 7 ✅
more than one type label = 69 69 ✅

Commit message now agrees with the file (zero exceptions, 334-PR, 13 categories); the stale 499/499 and 330 are gone.

Two caveats, neither blocking: L43 cites #727 for ci+perf, but three merged PRs carry both (#725, #727, #731) — the sentence claims an example rather than a count, and all three are genuinely CI-first, so the ordering ruling holds. And release's "ci (3×)" is a residual count — 7 raw, less #25/#26/#28 already enumerated under breaking — which is correct, and is exactly the scope discipline the earlier refactor correction lacked.

No test run, deliberately: a comment-only change to a config file with no import path, so the coverage rule genuinely does not apply here rather than being quietly skipped.

✅ GOOD TO MERGE @ ecf57f9f8 — comment-only delta, every corrected figure independently re-derived and correct, still no exclude key at any scope.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: pending No verdict for the current head - never reviewed, or the head moved since the last one labels Sep 24, 2026
@JarryShaw
JarryShaw merged commit 51fde33 into main Sep 24, 2026
24 checks passed
@JarryShaw
JarryShaw deleted the ci/release-yml-per-type-categories branch September 24, 2026 14:37
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Sep 24, 2026
@JarryShaw JarryShaw added this to the 1.5 milestone Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Pull requests that change CI or workflow configuration (ci: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant