From e344b67f12ebe763cb1b31403534232a772dd513 Mon Sep 17 00:00:00 2001 From: Fadion Dashi Date: Fri, 28 Aug 2026 00:13:59 +0200 Subject: [PATCH] ci: run the examples suite before a release too The release workflow's verify job runs the characterization suite and the README blocks, and did not run the examples. check-examples.sh was added to CI in #58 and never mirrored here, so between then and now a tag could have published a commit whose examples were broken. v1.0.0 was not, but only because CI caught them on master first, which is luck rather than a guarantee. The same class of thing as the two builtin name lists: two places that have to say the same thing, with nothing making them. There is no check here either, so both now carry a comment pointing at the other. Collapsing the three into one script would remove the drift outright, and costs the thing the separate steps buy: a failure is attributed to the suite that failed rather than to a wrapper. Not worth trading for two files that change about once a year. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 4 ++++ .github/workflows/release.yml | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09b3238..b3493c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -175,6 +175,10 @@ jobs: - name: Examples run: bash scripts/check-examples.sh + # Adding a suite here means adding it to the release workflow's `verify` + # job too. Nothing enforces that the two agree, and the last time they + # drifted it was this step that was missing from a release. + # Cheap, and both targets have found real bugs. 30s each, as in CLAUDE.md. fuzz: needs: changes diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 934334e..5bacac5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,11 +51,16 @@ jobs: fi echo "version $version" + # The same correctness suites the CI workflow's `language` job runs, so a + # tag cannot publish something master would have rejected. These two lists + # have to agree: check-examples.sh was added to CI and not here, and went + # missing from every release until somebody thought to compare them. - run: go build -o aria . - run: go vet ./... - run: go test ./... - run: bash scripts/characterize.sh verify - run: bash scripts/check-readme.sh + - run: bash scripts/check-examples.sh build: name: ${{ matrix.name }}