Skip to content

ci: keep the documentation site out of the release notes too - #747

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

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

Conversation

@lens0021

Copy link
Copy Markdown
Collaborator

.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.ai/code/session_019ghEx26MRm9V5CnCLrdUQn


Generated by Claude Code

deploy-docs.yml publishes docs/ the moment a change to it reaches main, so by the time a release
is tagged that change has been live for days. A release does not deliver it, and should not claim
it -- the same reason .tf/ is excluded, and the type a commit carries stops mattering either way.

Nothing moves in the pending release: of the fourteen commits under docs/ since 1.0.0, thirteen are
docs and one build(deps), all of them already hidden and none of them bumping.

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 22:39
@lens0021
lens0021 merged commit 0a86f79 into main Sep 10, 2026
25 checks passed
@lens0021
lens0021 deleted the claude/release-please-exclude-docs branch September 10, 2026 22:42
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