Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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 |
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down