2.18.2
Released
Nothing in this release changes what you see; it is all under Technical changes.
Technical changes· 3 entries for database, tooling, CI, tests and docs
CI/CD
Release tagging now expects to tag only the tip of
main, because that is all CI can do. 2.18.1 moved tag creation to the refs API on the understanding that the API escaped the refusal a push had hit; it does not. GitHub blocks a bot from creating a ref at a commit whose.github/workflowstree differs from the branch tip however the ref is created, and no token permission or repository setting lifts it —GITHUB_TOKENcannot hold theworkflowspermission. The push says so in as many words; the API returns a bare 403 "Resource not accessible by integration", which is also what an unprivileged token returns, and the run died on the first historical tag without reaching the release it existed to tag. A refusal is now recorded as skipped and the run continues, so the release being merged — which is the tip when the workflow runs — tags itself. The tag for the version at the triggering commit is still required, since the tip restriction cannot explain a refusal there — but only while that release is still whatmainpoints at. The job is handed the commit its event named, and a later push may already have moved past it, which makes the same refusal the ordinary one rather than a token or ruleset fault. (#604)scripts/backfill-release-tags.shcreates the tags CI cannot, from a checkout with push access: authenticated as a person rather than as an app, the restriction does not apply. It fetches, prints what is missing, asks before pushing, and is safe to re-run. It names the publisher with--pushrather than unsettingGITHUB_TOKEN/GH_TOKEN— a token is what selects the Actions path, butGH_TOKENmay equally be the credential Git pushes with throughgh auth setup-git, so clearing it would break the very push the script exists to make. Its preview passes--remote, because publishing reads the remote's tags while a preview reads the local ones, andgit fetch --tagsadds to the local set without removing a tag that exists only in this checkout — so a release tagged locally and never pushed would have been absent from the prompt and created anyway. (#604)release.ymlno longer triggers onv*.*.*tag pushes. A push tomainis what releases; tagging it is separate bookkeeping, and the tag trigger only meant that creating a tag by hand — or filling in one CI had missed — redeployed whatever commit it named. Removing it is what makes the backfill safe to run at all. (#604)