Repository navigation
fix(server): Claude and Grok update only through the install that owns them - #272
Conversation
|
Independent review requested on exact head |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Independent review (GPT-6.1 Sol) of 8ce4b9aWhat: Two blocking resolver findings remain at exact head Findings
Checked and cleared
Verification and limits
Reviewed independently by GPT-6.1 Sol in the Codex harness inside T3 Code; I did not author this change. |
|
Head is now |
Independent review round 2 (GPT-6.1 Sol) of c9339f0What: Two blocking script-classification findings remain at exact head Findings
Disposition of prior findings
Whole-PR review and proof
Elon recordRequirements and who asked: The user requested exact-head round 2 independent review, verification of both prior findings, shell-edge regression checks, upstream comparison, and focused tests. Verdict: failure on c9339f0. Independently reviewed by GPT-6.1 Sol in the Codex harness inside T3 Code; I did not author this change. |
|
Head is now |
Independent review round 3 (GPT-6.1 Sol) of 38d1c10What: No blocking or non-blocking code finding remains in the inspected scope at exact head FindingsNone. This verdict concerns regressions introduced or worsened by this PR, against base Disposition of each prior finding
Whole-PR review and evidence
Elon recordRequirements and who asked: The user requested independent round 3 review of the exact candidate, disposition of every prior finding, upstream comparison, focused tests, one PR comment, and a SHA-bound status. Verdict: success on |
…s them Homebrew grok-build upgrades with brew upgrade --cask. A cask the found brew cannot verify stays manual. Mise launchers and mise install links at native Claude paths stay manual, including exec by mise where or mise which. A real native Claude install still uses claude update. Co-Authored-By: Grok 4.7 <noreply@x.ai>
A ~/.local/bin/claude symlink into the Homebrew mise keg stays manual-only. A native launcher that only mentions mise inside a shell comment still uses claude update. Co-Authored-By: Grok 4.7 <noreply@x.ai>
isMiseWrapperScript again matches only mise x or mise exec on the whole script, the same check as upstream #19157. The Homebrew mise-keg native-shortcut guard stays. Co-Authored-By: Grok 4.7 <noreply@x.ai>
38d1c10 to
be1a1e7
Compare
|
Rebased onto main |
Independent review round 4 (GPT-6.1 Sol) of be1a1e7What: No blocking or non-blocking finding in the requested rebase review of exact head FindingsNone in the inspected scope. Rebase evidence
Interaction checks and proof
Elon recordRequirements and who asked: The user requested exact-SHA rebase verification, interaction checks, focused tests, one PR comment, and a SHA-bound status. Verdict: success on |
Independent review (Grok 4.7) of be1a1e7What: No blocking or non-blocking finding remains in the inspected scope at exact head FindingsNone. This verdict covers what this PR introduces or worsens against base Checked
Proof
Elon recordRequirements and who asked: The user asked for an independent review of exact head Verdict: success on |
|
CI on |
…s them (#272) * fix(server): update Claude and Grok only through the install that owns them Homebrew grok-build upgrades with brew upgrade --cask. A cask the found brew cannot verify stays manual. Mise launchers and mise install links at native Claude paths stay manual, including exec by mise where or mise which. A real native Claude install still uses claude update. Co-Authored-By: Grok 4.7 <noreply@x.ai> * fix(server): ignore mise keg shims and commented mise mentions A ~/.local/bin/claude symlink into the Homebrew mise keg stays manual-only. A native launcher that only mentions mise inside a shell comment still uses claude update. Co-Authored-By: Grok 4.7 <noreply@x.ai> * fix(server): drop the fork's mise where/which launcher heuristic isMiseWrapperScript again matches only mise x or mise exec on the whole script, the same check as upstream #19157. The Homebrew mise-keg native-shortcut guard stays. Co-Authored-By: Grok 4.7 <noreply@x.ai> --------- Co-authored-by: Grok 4.7 <noreply@x.ai>
What: Claude and Grok auto-updates now go through the installer that owns the binary: a Homebrew
grok-buildcask upgrades throughbrew upgrade --cask grok-build, and a mise-managed Claude (any~/.local/binmise launcher) is left to mise instead of runningclaude update.Why:
claude updatematched~/.local/bin/claudebefore the mise checks ran, so on bestia it no-op'd on every start. Andgrok updateon a cask install only writes an unused copy under~/.grok/bin, so rocky stayed on 1.0.13 (upstream pingdotgg/t3code#18768).So what: This takes effect on each machine at its next Chromeria deploy. bestia's provider CLIs are now native installs (runbook
b639b21), and Chromeria's auto-update keeps them current. Its 09:30 run already upgraded OpenCode there.Refs #263 (stays open for the post-deploy bestia boot-log check).
Problem
resolvePackageManagedProviderMaintenancereturned the native updater for any path the driver called native before it checked mise paths and wrappers, so bestia's mise launcher at~/.local/bin/claudegotclaude update, which mise owns and Claude refuses. Grok's own resolver always returned<grok> update, which is wrong for the Homebrew cask.Change
d39ca4a): the Homebrew branch moves unchanged into an exportedresolveHomebrewProviderMaintenance. Grok's resolver checks a cask first: a verifiedgrok-buildcask getsbrew upgrade --cask grok-build, lock keyhomebrew, and is compared against the cask version (,builddropped). A cask that the foundbrewcannot verify stays manual-only. Any other Grok keepsgrok updatewith the instance env. That is correct for npm and mise-npm Grok: the npm package is a bootstrap that runs~/.grok/bin/grok, whichgrok updateupdates. Chromeria auto-updated bestia's Grok this way at 08:03 today.cb3d9a3): the native shortcut applies only when no command path is a mise path and the file is not a mise launcher.~/.local/bin/claude -> <prefix>/Cellar/mise/<v>/bin/mise). An earlier head widened launcher detection tomise where|which; that heuristic was removed after review, because shell text cannot reliably tell commands from comments or heredoc data, and bestia's exec-by-path launchers that needed it were retired today. Launcher detection is upstream'smise x|execcheck, unchanged.provider-auto-updateowner indocs/fork-features.mdlist the four touched upstream files.Upstream #14949 (Chromeria running
mise upgrade) was considered and not ported. On bestia every provider is reached through a launcher that Chromeria probes every 5 minutes, and those launchers now runmise install <tool>@latest, so mise keeps them current with no new Chromeria machinery.Proof
npx -y pnpm@11.10.0 exec vp test run apps/server/src/provider/Drivers/GrokDriver.test.ts apps/server/src/provider/providerMaintenance.test.ts: 45 passed on38d1c10(base54fb0fc).7672551, the new tests fail for the intended reason. The cask spawned no brew and returnedgrok update. The mise launcher and mise-install cases returnedclaude update(lock keyclaudeAgent-native) instead of manual-only. The node-keg Grok and the real native Claude symlink (~/.local/bin/claude -> ~/.local/share/claude/versions/2.1.299) pass before and after.tsc --noEmitfor the server package: exit 0.updateProviderspan at 07:08:37Z brought it to 0.162.1.Updating provider automatically { driver: 'grok' }line at 08:03:49 CEST was followed bygrok-1.0.52at 08:03:52.Elon record
mise use -gkeeps the installed version,mise install X@latestupgrades). Read the bestia launchers and the npm Grok bootstrap. Checked live snapshots and traces on all three machines, and ran the three downgrade-and-watch tests above.Implemented by Grok 4.7 (worker) and coordinated by Claude Opus 5.5, in Claude Code inside T3 Code.
🤖 Generated with Claude Code