From 13cfbab01c0d752d35bd414781edfef5771fc3dc Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Wed, 11 Mar 2026 10:23:09 -0400 Subject: [PATCH 1/2] fix: stop false-positive core detection in release-all workflow The auto-bump-modules workflow runs `go mod tidy` on root, which changes go.sum and potentially go.mod. These lockfile/tidy changes were counted as "core changes" on subsequent release-all runs, causing: 1. Spurious core releases every run 2. Module releases stuck behind the core release chain (release-modules-no-core-change skipped because core_changed=true) Fixes: - Exclude go.sum from core change detection (lockfile, not source) - Exclude cmd/* from core change detection (tooling, not library) - Add configwatcher and eventlogger to module-release dropdown Co-Authored-By: Claude Opus 4.6 --- .github/workflows/module-release.yml | 2 ++ .github/workflows/release-all.yml | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/module-release.yml b/.github/workflows/module-release.yml index f8990908..54300f58 100644 --- a/.github/workflows/module-release.yml +++ b/.github/workflows/module-release.yml @@ -12,8 +12,10 @@ on: - auth - cache - chimux + - configwatcher - database - eventbus + - eventlogger - httpclient - httpserver - jsonschema diff --git a/.github/workflows/release-all.yml b/.github/workflows/release-all.yml index 222bc52f..dcbe7d1a 100644 --- a/.github/workflows/release-all.yml +++ b/.github/workflows/release-all.yml @@ -42,7 +42,7 @@ jobs: echo "Latest core tag: $LATEST_TAG" HAS_CHANGES=false if [ -z "$LATEST_TAG" ]; then - FILE=$(find . -maxdepth 1 -type f \( -name '*.go' -o -name 'go.mod' -o -name 'go.sum' \) | head -1 || true) + FILE=$(find . -maxdepth 1 -type f \( -name '*.go' -o -name 'go.mod' \) | head -1 || true) if [ -n "$FILE" ]; then HAS_CHANGES=true; fi else CHANGED=$(git diff --name-only ${LATEST_TAG}..HEAD | grep -v '^modules/' || true) @@ -53,8 +53,11 @@ jobs: [[ $f == *.md ]] && continue [[ $f == .github/* ]] && continue [[ $f == examples/* ]] && continue - # Accept .go plus root go.mod/go.sum (allow optional leading ./) - if [[ $f == *.go ]] || [[ $f == go.mod ]] || [[ $f == go.sum ]] || [[ $f == ./go.mod ]] || [[ $f == ./go.sum ]]; then + [[ $f == cmd/* ]] && continue + # Accept .go plus root go.mod (NOT go.sum — it's a lockfile that + # changes whenever auto-bump runs go mod tidy and should not + # trigger a new core release by itself). + if [[ $f == *.go ]] || [[ $f == go.mod ]] || [[ $f == ./go.mod ]]; then RELEVANT+="$f " fi done <<< "$CHANGED" From 5ccb423ac36d19debc465cd7ecff7800983027e8 Mon Sep 17 00:00:00 2001 From: Jon Langevin Date: Wed, 11 Mar 2026 18:11:49 -0400 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20address=20PR=20review=20=E2=80=94=20?= =?UTF-8?q?remove=20cmd/*=20exclusion,=20align=20release.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove cmd/* exclusion from release-all.yml core detection since cmd/ is part of the root module and not independently versioned - Align release.yml core detection to also exclude go.sum, keeping both workflows consistent Co-Authored-By: Claude Opus 4.6 --- .github/workflows/release-all.yml | 1 - .github/workflows/release.yml | 10 +++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-all.yml b/.github/workflows/release-all.yml index dcbe7d1a..56e1f013 100644 --- a/.github/workflows/release-all.yml +++ b/.github/workflows/release-all.yml @@ -53,7 +53,6 @@ jobs: [[ $f == *.md ]] && continue [[ $f == .github/* ]] && continue [[ $f == examples/* ]] && continue - [[ $f == cmd/* ]] && continue # Accept .go plus root go.mod (NOT go.sum — it's a lockfile that # changes whenever auto-bump runs go mod tidy and should not # trigger a new core release by itself). diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 45b21ed5..020571cf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,8 +63,9 @@ jobs: echo "Latest core tag: ${LATEST_TAG:-}" CHANGED=false if [ -z "$LATEST_TAG" ]; then - # No prior release; treat as changed if any go files or go.mod/go.sum exist (initial release scenario) - if git ls-files '*.go' 'go.mod' 'go.sum' | grep -v '^modules/' | head -n1 >/dev/null 2>&1; then CHANGED=true; fi + # No prior release; treat as changed if any go files or go.mod exist (initial release scenario). + # go.sum is excluded — it's a lockfile that changes on every go mod tidy. + if git ls-files '*.go' 'go.mod' | grep -v '^modules/' | head -n1 >/dev/null 2>&1; then CHANGED=true; fi else DIFF=$(git diff --name-only ${LATEST_TAG}..HEAD | grep -v '^modules/' || true) RELEVANT="" @@ -74,7 +75,10 @@ jobs: [[ $f == *.md ]] && continue [[ $f == .github/* ]] && continue [[ $f == examples/* ]] && continue - if [[ $f == *.go ]] || [[ $f == go.mod ]] || [[ $f == go.sum ]] || [[ $f == ./go.mod ]] || [[ $f == ./go.sum ]]; then + # Accept .go plus root go.mod (NOT go.sum — it's a lockfile that + # changes whenever auto-bump runs go mod tidy and should not + # trigger a new core release by itself). + if [[ $f == *.go ]] || [[ $f == go.mod ]] || [[ $f == ./go.mod ]]; then RELEVANT+="$f " fi done <<< "$DIFF"