ci(smoke): every smoke leg gates + fix matrix collapse (no false-green)#882
Merged
Conversation
Two defects let the release dry run report green despite real smoke failures:
1. Matrix collapse — the smoke matrices used {variant:[standard,ui],
include:$OS_LIST}. GitHub's include-merge overwrites the variant combos
last-wins with each OS entry, so only the LAST OS ran (both variants) and the
earlier ones were silently dropped. In broad mode windows smoke only ran
windows-11-arm (emulated x86_64), never windows-latest (native); unix only
macos-15; portable only ubuntu-22.04-arm. Rebuild each matrix as an explicit
os x variant cartesian so every leg actually runs.
2. Optional escape hatch — the broad legs carried optional:true +
continue-on-error: matrix.optional, so a failing leg didn't fail _smoke.yml
and didn't gate the dry run or a release. Removed all optional flags + the
continue-on-error lines; every product-smoke leg now gates.
smoke-packages stays continue-on-error (external Glama directory image, not the
shipped product). fail-fast:false kept so all legs still run for a full picture.
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
This was referenced Jul 5, 2026
timothybrush
pushed a commit
to timothybrush/codebase-memory-mcp
that referenced
this pull request
Jul 5, 2026
Two release-blockers surfaced once DeusData#882 made every smoke leg a required gate (continue-on-error previously masked them): - smoke-unix ran the *dynamic* linux binary on ubuntu-22.04 / 22.04-arm, where it cannot start (it links glibc 2.38+) -> Phase 1 died. Older-glibc coverage is the -portable (static) binary's job and is green via the smoke-linux-portable broad legs, so drop the impossible dynamic broad legs (keep macOS). - the ClamAV scan died on every linux leg: apt auto-starts the clamav-freshclam daemon which holds the freshclam log lock, so the manual freshclam failed with "Failed to lock the log file ... Resource temporarily unavailable". Stop the daemon first. Also add native ARM64 Windows as a first-class release target -- the one platform we test (windows-11-arm) but never shipped: - build-windows-arm64 job (CLANGARM64) producing codebase-memory-mcp[-ui]-windows-arm64.zip - smoke-windows is now arch-aware: windows-11-arm smokes the NATIVE arm64 binary instead of the x86_64 binary under emulation - a native soak-quick-windows-arm64 leg (no sanitizer -- ASan is unavailable on native ARM64 Windows) - arm64 detection in install.ps1 release.yml already publishes windows-arm64 (asset filter + merge-multiple) and build_update_url/detect_arch already resolve it; npm/pip/install.sh compute arm64 already. scoop/winget/chocolatey per-version manifests are updated at release time. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes two defects that let the release dry run report green despite real smoke-windows failures (surfaced by the strict release dry run). Companion to #872 (which did the same for
_test.yml).1. Matrix collapse — native platforms silently weren't running
The smoke matrices used
{variant:[standard,ui], include:$OS_LIST}. GitHub'sinclude-merge overwrites the variant combos last-wins with each OS entry, so only the last OS ran (both variants) and the earlier ones were dropped. In broad mode:windows-11-arm(emulated x86_64), neverwindows-latest(native x86_64)macos-15; portable → onlyubuntu-22.04-armSo the dry-run smoke was testing one OS per category. Rebuilt each matrix as an explicit os × variant cartesian (flat
includelist) so every leg runs. Windows smoke now =windows-latest+windows-2025+windows-11-arm, each × standard/ui.2. Optional escape hatch — failures didn't gate
The broad legs carried
optional:true+continue-on-error: ${{ matrix.optional == true }}, so a failing leg didn't fail_smoke.yml→ didn't gate the dry run or a release (release.ymlcalls the same_smoke.yml, andrelease-draft'sif: !failure()was bypassed). Removed alloptionalflags + thecontinue-on-errorlines. Every product-smoke leg now gates.Kept intentionally
smoke-packagesstayscontinue-on-error: true— it builds the external Glama directory image + brew tap, not the shipped product binary; a broken directory listing must not block a release.fail-fast: falsekept so all legs still run for a complete picture on any failure.Scope / CI-sensitivity
.github/workflows/_smoke.ymlonly. Makes nativewindows-latest(and windows-2025, and the broad unix/portable) smoke required gates for the dry run and release._test.yml(harden dry run to strict all-green: windows-11-arm mem_rss + no optional legs #872) and_soak.yml(flat matrix, no collapse) already gate correctly.optional/continue-on-errorremain exceptsmoke-packages.Refs #872.