Repository navigation
ci: catch a title that calls the repository a feature of wikven - #748
Merged
Merged
Conversation
The check that refuses feat: and fix: on a documentation-only pull request read docs/, the readmes and the licence. #744 was a ruleset under .tf/, so it went through and reached 1.1.0's changelog as a feature. Widen it to everything that is the repository rather than the program, and make it a required check: it was never one, so a red result would not have stopped the merge either. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
Contributor
OpenTofu Plan |
This was referenced Sep 11, 2026
lens0021
added a commit
that referenced
this pull request
Sep 17, 2026
Following #751, the same thing in three more comments: most of their length goes on what went wrong once rather than on what is true now. In each, the rule that came out of it was already there in the next sentence. Sixteen lines become nine. No behaviour changes. ## `smoke.yml` — the timeout Five lines on one afternoon: a mirror that stopped answering, which file it had already fetched, where apt fell back to. What survives is the reason every job in the repository carries a timeout at all. ```diff - # Every job in this repository carries one of these, and this is the job that earned them. On - # 2026-08-18 the runner's Ubuntu mirror stopped answering during `playwright install - # --with-deps`; apt fell back to archive.ubuntu.com, fetched the release files and then sat - # there. With no timeout the job waited out GitHub's six-hour default before anyone was told - # anything. The mirror is not ours to fix; how long we wait to hear about it is. + # Every job in this repository carries one of these: a runner that stops answering otherwise + # waits out GitHub's six-hour default before anybody is told anything. ``` The paragraph under it — why thirty minutes and not ten — is untouched. ## `smoke.yml` — the browser install The same mirror, twice more, by date. And a local run that passed once, which is a measurement rather than a fact about the code. ```diff - # on the machine before we ask for anything; --with-deps was buying nothing and paying for it. - # Twice -- 2026-08-18 and 2026-08-19 -- azure.archive.ubuntu.com answered nothing at all, apt - # fell back to archive.ubuntu.com, took the four InRelease files and then went quiet on the - # package indexes until the job was killed. A mirror that is not ours, on a path we do not need. + # on the machine before we ask for anything, and an apt call is a mirror that is not ours on a + # path we do not need. ``` The sentence about what Playwright says when either half is not enough stays: that is about any future run, not a past one. ## `semantic-pull-request.yml` — mine, from #748 I wrote this one three days ago and it has the same fault, so it goes the same way. ```diff - # It read the documentation alone until #744, a ruleset under .tf/ that called itself a feature - # and reached 1.1.0's changelog as one. release-please now skips those paths outright, but that - # is a net under the mistake; this is the place it gets caught, and told to whoever made it. + # release-please skips these paths as well, which is a net under the mistake. This is the place it + # is caught and said to whoever made it. ``` ## What is deliberately left alone Comments that explain **why the code is the way it is** — this repository has a word budget for them and they are the reason it passes. Only past-tense narration goes. A regression test's docblock naming the failure it catches stays: that is what the test is for, not a story about it. 🤖 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 17, 2026
…750) Two corrections to **Continuous integration** on `Development`. Both are in translation unit `T:23`, which is the whole bullet list, so they cannot be separate pull requests without one waiting on the other. ## `tofu.yml` does not apply anything The page said: > `updatecli.yml` moves the version pins the image and the docs site carry, and `tofu.yml` **applies** the repository's own settings from `.tf/`. It does not. The action it runs plans, and applies only when the plan contains nothing but imports — [`lens0021/repo-settings-as-code`](https://github.com/lens0021/repo-settings-as-code/blob/main/action.yml): ```bash tofu plan -out="$tfplan" || true if tofu show -json "$tfplan" | jq -e ' [.resource_changes[]? | select(.change.actions != ["no-op"] and .change.actions != ["read"])] | length == 0 '; then tofu apply -auto-approve "$tfplan" fi ``` So the imports that adopt what GitHub already has go through; a create or an update does not. #744 is the proof: merged, and its ruleset still does not exist, which the plan on every `.tf/` pull request since has been saying as `1 to add`. The sentence now says that, and says a merged `.tf/` change is live once somebody runs `tofu apply` and not before — which is the thing a reader most needs to know and the page did not tell them. ## One workflow was never named The list names every workflow in `.github/workflows/` except one: ``` $ for f in .github/workflows/*.yml; do grep -q "$(basename "$f")" docs/Development.wikitext || echo "not mentioned: $(basename "$f")" done not mentioned: semantic-pull-request.yml ``` That is the one a contributor meets first and can look up nowhere — and since #748 it carries a required check that refuses `feat:` and `fix:` on a change to the repository rather than to wikven. A bullet for it, beside the others. ## Translation Korean in the same commit, and restamped with the repository's own `StalenessComputer`, which is what `check-translations` judges with: ``` units: 56, not ok: none ``` Only `T:23`'s stamp moves — `@29ddac02` → `@b34c3152`. No other unit's hash changes, so nothing that was current before this is stale after it. 🤖 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There already is a check for this.
semantic-pull-request.ymlcarries a second job that refusesfeat:andfix: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/,*.mdandLICENSE. A ruleset under.tf/is none of those, so the job said the change was wikven's own and letfeat: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-pathsfor.tfanddocs. 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 thanexclude-paths— the latter can only name directories, so*.mdandLICENSEcannot appear in it.Exercised
The job's own script, lifted out of the workflow with
gh apistubbed, against ten pull requests:feat: ….tf/ruleset.tffeat: ….github/workflows/a.ymlfeat: …docs/a.wikitext,README.mdfeat: …LICENSEfix(build): ….tf/ruleset.tffeat!: ….tf/ruleset.tffeat: …includes/A.phpfeat: …docs/a.wikitext,includes/A.phpdocs: ….tf/ruleset.tfci: ….tf/ruleset.tfRun 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 isdocs-onlyfrommain— the widened job first runs on whatever comes after this. The same goes for the required-check entry, which needs atofu apply; until thenrepository-onlyreports without blocking.Two consequences of that worth knowing about. Between merging and applying,
docs-onlyno longer exists while nothing requiresrepository-only, so for that window neither name blocks. And this pull request cannot check its own title — it touches only.github/and.tf/, soci:is what the new rule would allow, but the rule is not the one that ran.🤖 Generated with Claude Code
https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn