From 1a1972d67edfe46dac4e9f7257a6caaa6f1a3038 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 23 Oct 2026 11:40:23 +0200 Subject: [PATCH 1/2] Move item 347 to 0.2.0, beside item 336 --- todo.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/todo.md b/todo.md index 092d5d6b..3204fb21 100644 --- a/todo.md +++ b/todo.md @@ -13,6 +13,7 @@ | ID | Release | Blocked by | Exempt | Item | L | E | I | R | S | Moves | Score | |---|---|---|---|---|---|---|---|---|---|---|---| | 336 | 0.2.0 | | | **Release a patch from CI for every update to what a release carries, once the gate passes with no other change: Go, Go's minor included, any module `go.mod` requires, and GoReleaser.** | 3 | 3 | 3 | 7 | 5 | 1.1 by 6 | 1.6 | +| 347 | 0.2.0 | | | **Run each GitHub Action on the pull request that updates it, publishing nothing, and let Renovate merge each Action update the gate ran.** | 3 | 3 | 2 | 6 | 5 | 1.1 by 4 | 1.1 | | 169 | 0.3.0 | | question | **Reword the decision "A parent row with no child row is a load error" to say what each geo import does with such a row: drop it, or exit where `geo-se.py` would lose a kommun or a län.** | 1 | 2 | 1 | 2 | 1 | code health by 2 | 9.1 | | 345 | 0.3.0 | | question | **Decide how a locale with names in a script such as Han, Devanagari, Arabic or Bengali gets valid emails, and record it in the `slugify` decision.** | 1 | 2 | 1 | 2 | 1 | 2.1 by 2, 3.3 by 3 | 4.8 | | 170 | 0.3.0 | | | **Decide in one function whether a read lands in a name's pick, which `refuseTwiceDrawnIn` calls at load and `keptInPick` at render.** | 3 | 1 | 3 | 5 | 3 | code health by 6 | 17.1 | @@ -209,7 +210,6 @@ | 26 | 0.3.0 | | defect | **Spell `sv_SE.personnummer` with the `+` Skatteverket uses from the year the holder turns 100, judged by a date the caller gives.** | 4 | 2 | 3 | 7 | 6 | 1 by 2, 3 by 6 | 1.1 | | 21 | 0.3.0 | | | **List `title` in both locales, and `sv_SE`'s `birth-number`, in the README's Data list of what each locale carries.** | 1 | 2 | 1 | 2 | 1 | 1 by 1 | 1.1 | | 56 | 0.3.0 | | defect | **Build on a manual run of `test.yml` on `main`.** | 1 | 2 | 1 | 2 | 1 | 1.1 by 1 | 1.1 | -| 347 | 0.3.0 | | | **Run each GitHub Action on the pull request that updates it, publishing nothing, and let Renovate merge each Action update the gate ran.** | 3 | 3 | 2 | 6 | 5 | 1.1 by 4 | 1.1 | | 53 | 0.3.0 | | | **Let a table column carry a `datatype`, so `--format json` writes `"safe": true` and `--format sql` a boolean.** | 3 | 1 | 2 | 4 | 5 | 1 by 2, 4 by 2 | 1.0 | | 223 | 0.3.0 | | | **Let a column draw a key from another record's rows, so an order's `user_id` names a user the same run wrote.** | 3 | 1 | 2 | 4 | 6 | 1 by 4, 4 by 3 | 1.0 | | 201 | 0.3.0 | | | **Place each Swedish street in the postort whose area holds it, so a big postort such as Stockholm carries its own streets.** | 3 | 2 | 2 | 5 | 6 | 1 by 2, 2.1 by 2, 3.3 by 3 | 1.0 | @@ -242,6 +242,14 @@ The maintainer, 2026-10-18: no patch should wait on a human. A dependency bump that passes the tests unchanged changes no row of the README's Versioning table, so it is a patch; a new Go minor leaves `go.mod`'s `go 1.22`, the lowest supported Go, where it is. `release-tooling/patch_release.py cut` already cuts a Go patch this way from the last release's tag; widen it to the rest, and revise the decision "CI releases each Go patch at once, as a fejkdata patch cut from the last release's tag", which leaves a Go minor to the maintainer. Name in the changelog section each platform a new Go minor stops supporting, such as an older macOS, since a binary user loses it in a patch. Make the comprehension seats' places in `patch_release.py`, `packages.yml` and `goreleaser.yaml` easier to read where the change touches them. +### 347. Run each GitHub Action on the pull request that updates it, publishing nothing, and let Renovate merge each Action update the gate ran. + +The maintainer, 2026-10-23: ship it in 0.2.0, beside item 336, since no patch should wait on a human. + +`renovate.json` merges an update itself once the gate passes, but not one from the `github-actions` manager, which also updates the runner that `runs-on` names. Actions wait for a human because some of them run only in jobs that no pull request runs. `.github/workflows/packages.yml` runs only on a release, or by hand for a released tag, with `actions/setup-go`, `goreleaser/goreleaser-action`, `docker/setup-buildx-action`, `docker/login-action`, `actions/upload-pages-artifact` and `actions/deploy-pages`. `.github/workflows/dockerhub-description.yml` runs `peter-evans/dockerhub-description` only on a push to `main`. `test.yml`'s `plan` job runs `actions/download-artifact` only on `main`. An Action major that breaks, once merged untested, first fails in a release run, which may be CI's unattended Go patch. By then the release's tag is published, so a channel the run did not reach serves the old release: goal 1.1's counter-signal. + +Run each of those Actions in the gate on a pull request that changes a workflow. For the Packages workflow, that is a dry run that builds everything and publishes nothing. The dry run must read no secret, since a pull request from a fork gets none. Where an Action cannot run without publishing, keep that one Action waiting for a human, named in `renovate.json`. Then drop `!github-actions` from `renovate.json`'s automerge rule, and update the README Development section's list of updates that wait for a human. Make the comprehension seats' places in `packages.yml`, `goreleaser.yaml` and `test.yml`'s `Relevant changes` easier to read where the change touches them. + ### 169. Reword the decision "A parent row with no child row is a load error" to say what each geo import does with such a row: drop it, or exit where `geo-se.py` would lose a kommun or a län. Its entry says "The import script drops or fills such rows". There are two geo imports, and `geo-se.py` exits when `geo.fence` drops a kommun or a län, while `geo-us.py` drops counties and states. Rewording a decision is the maintainer's call. @@ -921,12 +929,6 @@ The format hard-codes `-`, and its earliest birthdate, 1930-01-01, makes the old A manual run diffs against `origin/main`, so on `main` itself it compares `HEAD` with itself and skips `docker build`. -### 347. Run each GitHub Action on the pull request that updates it, publishing nothing, and let Renovate merge each Action update the gate ran. - -`renovate.json` merges an update itself once the gate passes, but not one from the `github-actions` manager, which also updates the runner that `runs-on` names. Actions wait for a human because some of them run only in jobs that no pull request runs. `.github/workflows/packages.yml` runs only on a release, or by hand for a released tag, with `actions/setup-go`, `goreleaser/goreleaser-action`, `docker/setup-buildx-action`, `docker/login-action`, `actions/upload-pages-artifact` and `actions/deploy-pages`. `.github/workflows/dockerhub-description.yml` runs `peter-evans/dockerhub-description` only on a push to `main`. `test.yml`'s `plan` job runs `actions/download-artifact` only on `main`. An Action major that breaks, once merged untested, first fails in a release run, which may be CI's unattended Go patch. By then the release's tag is published, so a channel the run did not reach serves the old release: goal 1.1's counter-signal. - -Run each of those Actions in the gate on a pull request that changes a workflow. For the Packages workflow, that is a dry run that builds everything and publishes nothing. The dry run must read no secret, since a pull request from a fork gets none. Where an Action cannot run without publishing, keep that one Action waiting for a human, named in `renovate.json`. Then drop `!github-actions` from `renovate.json`'s automerge rule, and update the README Development section's list of updates that wait for a human. Make the comprehension seats' places in `packages.yml`, `goreleaser.yaml` and `test.yml`'s `Relevant changes` easier to read where the change touches them. - ### 53. Let a table column carry a `datatype`, so `--format json` writes `"safe": true` and `--format sql` a boolean. Today only a JSON field takes one, so `misc.httpmethod`'s booleans are typed in Go and text everywhere else. Typing a shipped column changes what `json` and `sql` write, so the capability is a minor and applying it to `misc.httpmethod` is a major. From a4fbde6f795f1b61e8fd578911d87b1f729eb27c Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 23 Oct 2026 11:40:23 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Answer=20prose=20round=201:=200=20?= =?UTF-8?q?=F0=9F=94=B4,=200=20=F0=9F=9F=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit