chore(changelog): regenerate from conventional commits - #220
github-actions[bot] wants to merge 1 commit into
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Closing this PR — it was opened by a buggy changelog workflow that was producing an infinite chain of changelog PRs (each merge of a changelog PR added a new commit, which re-triggered regeneration, which opened the next PR). Fix is in progress in standards#988. After that merges, the next run will produce a single cleanup PR with no spammy bullets, and merging it will end the loop. See maa-framework#219 for diagnosis. |
## Summary Closes #219. The changelog workflow was caught in an infinite PR loop: merging one changelog PR added a new `chore(changelog): regenerate from conventional commits (#NNN)` conventional commit, which git-cliff picked up under Chores, which produced a fresh CHANGELOG diff, which opened the next PR. 21 such commits accumulated on `main` (#192, #195, #199, #201–#218) before detection; PR #220 (which appeared mid-fix) has been closed. ## What changed Three complementary layers (defense in depth): 1. **cliff.toml (new — local override)** — adds a `skip = true` commit parser for the bot's own `chore(changelog): regenerate from conventional commits` subjects (placed **before** the generic `^chore` matcher because `commit_parsers` is first-match-wins). This is the **primary fix** because the regex matches both the bot's branch commit subject and the default GitHub squash-merge subject (`… (#NNN)`), which is what actually lands on `main`. This is an emergency hotfix. The canonical fix is being submitted to `hyperpolymath/standards` in parallel (standards#988), and once that merges this local file should be deleted so the repo returns to consuming the canonical estate config (per the comment in `changelog.yml`). 2. **CHANGELOG.md** — regenerated against the fixed config. **Only the 21 spammy `Regenerate from conventional commits` bullets are removed** (verified: 21 deletions, 0 additions; no other content is altered). 3. **.github/workflows/changelog.yml** — adds a job-level `if:` guard (`${{ !contains(github.event.head_commit.message, '[skip changelog]') }}`) so the reusable isn't even invoked when the triggering push's head commit carries the `[skip changelog]` marker. This complements the reusable's own internal guard job (added in standards#988). ## Verification - Running `git-cliff --config cliff.toml` against current `main` produces a CHANGELOG with **zero** `Regenerate from conventional commits` bullets (was 21 before). - After committing the regenerated CHANGELOG, re-running `git-cliff` produces **no diff** → idempotent; the next workflow run will be a no-op. - Simulated a squash-merge of a future changelog PR (committing with the default squash subject `chore(changelog): regenerate from conventional commits (#NNN)`) and re-running `git-cliff` → **zero diff**; loop is broken. ## Follow-up (after merge) - [ ] Merge standards#988 (canonical fix in the reusable + canonical cliff.toml) - [ ] Once standards#988 is on `standards@main`, delete the local `cliff.toml` in a follow-up PR and rely again on the canonical config - [ ] Re-run the changelog workflow (or rely on the next real push to `main`) to confirm the job exits cleanly with `No CHANGELOG changes; skipping PR.` [skip changelog] Co-authored-by: hyperpolymath-bot <github-actions[bot]@users.noreply.github.com>
Auto-generated by hyperpolymath/standards changelog-reusable.yml.
Closes part of the 2026-05-26 CHANGELOG gap (standards#197 audit).