Skip to content

ci: keep the repository's own settings out of the release notes - #746

Merged
lens0021 merged 1 commit into
mainfrom
claude/release-please-exclude-tf
Sep 10, 2026
Merged

lens0021 merged 1 commit into
mainfrom
claude/release-please-exclude-tf

Conversation

@lens0021

Copy link
Copy Markdown
Collaborator

#744 landed as feat:. It is not one: .tf/ says how GitHub is configured, and a reader of the release notes has no wiki that behaves differently for it. release-please read the label it was given and put it under Features in #618.

What can and cannot be corrected

A merged commit's type cannot be changed — main takes no rewrite, and release-please offers nothing that retypes an earlier commit. Release-As: is the one footer that reaches back, and it would change nothing here anyway: ten other feat: commits since 1.0.0 already settle the minor bump, so 1.1.0 is 1.1.0 either way. The mistake cost a changelog line, not a version.

What the configuration does offer is exclude-paths, which drops a commit whose every file sits under one of the named paths — before the type is ever read. So this is not a correction of one commit but of the rule that let it through: nothing under .tf/ reaches a release again, however it is labelled.

Effect

release-please re-reads the range on every run, so #618 loses the entry on the next one. Of every commit since 1.0.0, exactly one touches nothing but .tf/ — #744 — so that is the only line that moves.

🤖 Generated with Claude Code

https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn


Generated by Claude Code

.tf/ describes how GitHub is configured, not what wikven does, so a change there belongs in no
release. It reached one as a feature in #744, which release-please read the way it was labelled.
exclude-paths drops a commit whose every file is under the path, so the type it carries stops
mattering.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
@lens0021
lens0021 enabled auto-merge (squash) September 10, 2026 15:37
@lens0021
lens0021 merged commit 95d944c into main Sep 10, 2026
24 checks passed
@lens0021
lens0021 deleted the claude/release-please-exclude-tf branch September 10, 2026 15:39
lens0021 added a commit that referenced this pull request Sep 10, 2026
`.tf/` was excluded in #746 because a release does not deliver it.
`docs/` is the same case for a different reason: `deploy-docs.yml`
publishes it the moment a change reaches `main`, so by the time a
version is tagged that change has been live on the site for days. A
release has nothing to claim there, whatever type the commit carries.

## Nothing moves

Of the commits since 1.0.0 that touch `docs/` and nothing else, thirteen
are `docs:` and one is `build(deps)`. Both are already hidden and
neither bumps, so the pending 1.1.0 reads exactly as it does now. This
only closes the gap a mislabelled commit would go through — which is the
gap #744 went through.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn

---
_Generated by [Claude
Code](https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn)_

Co-authored-by: Claude <noreply@anthropic.com>
lens0021 added a commit that referenced this pull request Sep 10, 2026
There already is a check for this. `semantic-pull-request.yml` carries a
second job that refuses `feat:` and `fix:` on a pull request touching
nothing but documentation, for exactly the reason #744 turned out to
matter: the title becomes the squash commit's subject, and
release-please reads it.

#744 went through it twice over.

**Its list was too narrow.** It read `docs/`, `*.md` and `LICENSE`. A
ruleset under `.tf/` is none of those, so the job said the change was
wikven's own and let `feat:` stand. Widened here to everything that is
the repository rather than the program — the two above plus `.tf/` and
`.github/`.

**It could not have blocked anything anyway.** The job is not in the
required checks, so a red result leaves the pull request mergeable, and
auto-merge would have merged it regardless. Added to the list in
`.tf/ruleset.tf`.

Renamed `docs-only` → `repository-only`, since it no longer reads only
documentation, and the required check has to name it.

#746 and #747 gave release-please `exclude-paths` for `.tf` and `docs`.
That is a net under the mistake: the commit is dropped silently, and
nobody learns anything. This is where it gets caught and said out loud,
which is also why the check's list is wider than `exclude-paths` — the
latter can only name directories, so `*.md` and `LICENSE` cannot appear
in it.

## Exercised

The job's own script, lifted out of the workflow with `gh api` stubbed,
against ten pull requests:

| title | files | result |
| --- | --- | --- |
| `feat: …` | `.tf/ruleset.tf` | refused |
| `feat: …` | `.github/workflows/a.yml` | refused |
| `feat: …` | `docs/a.wikitext`, `README.md` | refused |
| `feat: …` | `LICENSE` | refused |
| `fix(build): …` | `.tf/ruleset.tf` | refused |
| `feat!: …` | `.tf/ruleset.tf` | refused |
| `feat: …` | `includes/A.php` | allowed |
| `feat: …` | `docs/a.wikitext`, `includes/A.php` | allowed |
| `docs: …` | `.tf/ruleset.tf` | allowed |
| `ci: …` | `.tf/ruleset.tf` | allowed |

Run locally, and it has to be: the workflow triggers on
`pull_request_target`, which runs the version on the base branch. The
check reporting on this pull request is `docs-only` from `main` — the
widened job first runs on whatever comes after this. The same goes for
the required-check entry, which needs a `tofu apply`; until then
`repository-only` reports without blocking.

Two consequences of that worth knowing about. Between merging and
applying, `docs-only` no longer exists while nothing requires
`repository-only`, so for that window neither name blocks. And this pull
request cannot check its own title — it touches only `.github/` and
`.tf/`, so `ci:` is what the new rule would allow, but the rule is not
the one that ran.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants