Skip to content

chore(setup): standalone Dolt を mise/aqua 経由で v2.2.0 に固定 - #65

Open
gotomts wants to merge 1 commit into
mainfrom
chore/pin-dolt-2-2
Open

chore(setup): standalone Dolt を mise/aqua 経由で v2.2.0 に固定#65
gotomts wants to merge 1 commit into
mainfrom
chore/pin-dolt-2-2

Conversation

@gotomts

@gotomts gotomts commented Aug 25, 2026

Copy link
Copy Markdown
Owner

やったこと

Beads の server / shared-server モードが使う standalone dolt CLI を、公式が pin する v2.2.0 に固定した。

  • setup/languages.zsh(Tier 2)に mise::pin aqua:dolthub/dolt 2.2.0 を追加。既存の mise installmise use --global の正規経路をそのまま使う
  • mise::pin の引数名を langtool に一般化(backend 接頭辞付き指定を渡せることをコメントで明示)
  • AGENTS.md「Homebrew パッケージ管理」に、バージョン固定が必要な CLI だけは mise で供給するという例外を明文化

なぜ mise なのか

Homebrew formula は任意バージョンの pin を表現できない(homebrew-core に dolt@2.2 のような versioned formula は無く、versioned_formulae は空)。nix-darwin の homebrew.brews にも version フィールドが無い(name / args / conflicts_with / restart_service / start_service / link のみ)。宣言的に版を固定できる経路が mise しか無いため、この 1 点だけ「CLI は Homebrew」の原則から外す。

なぜ v2.2.0 なのか

Beads 公式(docs/architecture/dolt.mdscripts/ci/install-dolt.sh)が 2.2.0 を pin している。2.3.0 / 2.3.1 は CALL DOLT_RESET('--hard') が新規作成 DB の数 % で恒久破損する回帰を持つ。upstream の実測値: 2.1.8 0/40、2.2.0 0/60、2.3.0 3/60、2.3.1 3/100。

補足

Homebrew の依存 Dolt は削除しない

homebrew-core の beads formula は depends_on "dolt"(版指定なし)を持つため、/opt/homebrew/bin/dolt(現在 2.3.1)が依存として存在する。これは削除しない:

  • brew bundle cleanupdefault role の zap)は kept_formulae + recursive_dependencies を保持するので、beads の依存である dolt は元々 zap 対象外
  • 削除すると beads 自体の依存が壊れる

固定するのは runtime の優先実行体だけ。beads は exec.LookPath("dolt") で解決するので、どちらが動くかは PATH 順序だけで決まる:

  • non-interactive shell(beads が dolt sql-server を spawn する経路): zshenvmise activate --shims~/.local/share/mise/shims を PATH 先頭に置く。brew shellenv はそもそも走らない
  • interactive shell: zshrcmise activate zshbrew shellenv より後に走り、PATH 先頭を取り返す

なお BEADS_DOLT_BIN による明示指定は upstream main には存在するが、Homebrew で入る beads 1.2.2 のバイナリには含まれておらず(strings で 0 件)、かつ managed proxied-server mode 限定。現時点で使える梃子は PATH のみ。

変更しなかったもの

homebrew.nixbeads / dolt、Beadbox、zshrczshenv、生成物、グローバル Claude / Hermes 設定、各リポジトリの .beads/ は未変更。

未実施の実機適用

このブランチは宣言だけで、実機にはまだ何も適用していない。 マージ後に以下が必要:

zsh ~/.dotfiles/setup/languages.zsh   # または setup/migrate.zsh --apply
dolt version                          # 2.2.0 を返すことを確認

mise use --global aqua:dolthub/dolt@2.2.0 の実行自体は本 PR では未実行(実機変更のため)。mise ls-remote aqua:dolthub/dolt で 2.2.0 が解決可能なこと、aqua-registry の pkgs/dolthub/dolt/registry.yaml が darwin/arm64 と semver(">= 0.40.29") を満たすことは確認済み。

既知のギャップ

新テストは zshrc / zshenv の PATH 順序も検証するが、setup-check.yml の trigger paths は setup/** のみ。zshrc 単独の変更では CI が回らない。workflow の paths 拡張は本 PR のスコープ外としたので、別途判断が要る。

動作確認方法

bats setup/tests/languages.bats   # 7/7 pass
bats setup/tests/*.bats           # 97/97 pass (exit 0)

新テスト 2 件:

  1. languages.zsh pins the standalone dolt CLI to 2.2.0 globally via mise's aqua backend
    mise install / mise use --global の両方に aqua:dolthub/dolt@2.2.0 が出ること、dolthub/dolt@2.3 が出ないことを stub 経由で確認
  2. the shell config keeps mise ahead of Homebrew on PATH, so the pinned dolt is the one beads runs
    zshenv の shims activation の存在と、zshrcmise activatebrew shellenv より後の行にあることを確認

ミューテーション確認済み: pin を 2.3.1 に書き換えるとテスト 1 が not ok になる。

🤖 Generated with Claude Code

beads の server / shared-server モードは PATH 上の standalone `dolt` を
exec.LookPath で解決する。beads 公式は 2.2.0 を pin しており、2.3.0/2.3.1 は
CALL DOLT_RESET('--hard') が新規 DB の数 % で恒久破損する回帰を持つ
(upstream 実測: 2.2.0 0/60、2.3.0 3/60、2.3.1 3/100)。

Homebrew formula は任意バージョンの pin を表現できず (`dolt@2.2` のような
versioned formula は存在しない)、nix-darwin の homebrew.brews にも version
フィールドが無い。宣言的に版を固定できる経路が mise だけなので、Tier 2 の
setup/languages.zsh に `aqua:dolthub/dolt@2.2.0` を追加し、この例外を
AGENTS.md の「Homebrew パッケージ管理」に明文化する。

`beads` formula が依存として引き込む dolt 2.3.x は削除しない (beads の依存
なので zap 対象外)。PATH 先頭を mise が取ることで実行体だけを 2.2.0 に寄せる。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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