Skip to content

Installer: a successful git clone no longer looks like a crash, and GM_VERSION can't ship stale - #2

Merged
recla93 merged 1 commit into
masterfrom
fix/installer-cold-start-and-gm-version-guard
Aug 4, 2026
Merged

Installer: a successful git clone no longer looks like a crash, and GM_VERSION can't ship stale#2
recla93 merged 1 commit into
masterfrom
fix/installer-cold-start-and-gm-version-guard

Conversation

@recla93

@recla93 recla93 commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Two installer bugs found while chasing a tester's failed install, plus the CI guard that stops one of them recurring.

A successful git clone read as a failure

& git clone --depth 1 --branch "v$GmVersion" ... $target 2>&1 | Out-Host

git writes its normal Cloning into '...' progress to stderr, and PS 5.1 wraps every redirected stderr line in a NativeCommandError. The tester's log showed a full PowerShell error block on a clone that had actually worked. The redirect is the problem — success is decided by $LASTEXITCODE, so it's simply gone.

GM_VERSION had drifted three releases

The constant names a version of a different repo and nothing kept it in sync: it sat at 1.1.2 while Gray Matter shipped 1.4.0. The tag-not-found fallback never fires, because v1.1.2 does exist — so a user without a local GM got a two-versions-old gateway paired with a current Neuron. That is the same venv skew the pip check on the GM side now reports.

Bumped to 1.4.0, and release.yml now gates on it: the test job compares the constant in both launchers against gray-matter's latest release tag and fails the release on drift.

install.ps1=1.4.0  install.sh=1.4.0  gray-matter latest=1.4.0

⚠️ This gates the release job. The next Gray Matter release will red this pipeline until GM_VERSION is bumped here — that is the intent, not a bug.

constraints.txt was never actually passed

Its own header claims "install.ps1 passes this automatically when present." Nothing did. Both launchers pass it now, which is what caps mcp at <2 on the standalone path.

Verification

  • 324 tests pass
  • install.ps1 parses; install.sh and install.command pass bash -n
  • The guard's logic was dry-run locally against the live tag list before committing (an earlier sed in it silently matched nothing — caught and fixed)

🤖 Generated with Claude Code

…, guard GM_VERSION

`& git clone ... 2>&1 | Out-Host` — git writes its normal "Cloning into..."
progress to stderr, and PS 5.1 wraps every redirected stderr line in a
NativeCommandError. A clone that succeeded read as a failure. The redirect IS
the problem; success is decided by $LASTEXITCODE.

GM_VERSION, the constant naming a version of a DIFFERENT repo, sat at 1.1.2
while Gray Matter shipped 1.4.0 — three releases of silent drift, and the
tag-not-found fallback never fires because v1.1.2 exists. A user without a
local GM got a two-versions-old gateway paired with a current Neuron: the same
venv skew that pip check now reports on the GM side.

Bumped, and release.yml gates on it: the tag job compares the constant in both
launchers against gray-matter's latest release tag and fails the release on
drift, so this cannot ship stale again by forgetting.

Both installers also pass constraints.txt now. The file's own comment claimed
"install.ps1 passes this automatically when present" — nothing did.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@recla93
recla93 merged commit 45de674 into master Aug 4, 2026
4 checks passed
@recla93
recla93 deleted the fix/installer-cold-start-and-gm-version-guard branch August 4, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant