Skip to content

fix: local wrapper固定worktree削除の事故を防止 #269

Closed

Description

@terisuke

課題

ローカル deploy 後の ~/.local/bin/opencode-live-guardrails-wrapper は、作業 worktree 内の built binary と guardrails wrapper を固定参照します。

その worktree を cleanup で削除すると、Git の cleanup 自体は正しくても、ローカルの opencode 起動だけが壊れます。以前は削除前に人間が wrapper を確認する運用に寄っており、再発防止として弱い状態でした。

対応方針

  • local deploy 時に wrapper の固定先を manifest として保存する
  • bun run local:assert-not-pinned -- <worktree-path> を追加し、削除対象 worktree が local wrapper の固定先なら失敗させる
  • manifest が古い場合にも wrapper 本文と entrypoint symlink を確認して fail-safe に寄せる
  • AGENTS.md と Codex memory note に、worktree 削除前の必須手順として残す

完了条件

  • pinned worktree の削除前チェックが失敗する
  • unrelated worktree の削除前チェックが成功する
  • local deploy/check と deployed entrypoint 経由の smoke が通る

Activity

  1. terisuke commented on Jul 1, 2026

    @terisuke
    Author

    対応を PR #270 で merge 済みです。

    Local deploy / fire verification

    • bash -n scripts/local-dev-deploy.sh: pass
    • git diff --check: pass
    • packages/opencode: bun typecheck: pass
    • packages/opencode: bun run test:httpapi: pass(coverage/auth/effect 各 208 routes、fail=0、missing=0、extra=0)
    • repo root: bun run local:deploy: pass
    • repo root: bun run local:check: pass
    • ~/.local/bin/opencode --version: 0.0.0-fix-local-wrapper-pinned-worktree-guard-20260701-202607011448
    • tmp dir: ~/.local/bin/opencode debug info: guardrail.ts / team.ts を profile plugin として読み込み確認
    • packages/opencode: bun test --timeout 30000 test/cli/smokes/local-deploy.test.ts: 8 pass
    • bun run local:assert-not-pinned -- <current-pinned-worktree>: expected block(manifest + wrapper text で検出)
    • bun run local:assert-not-pinned -- <tmpdir>: pass
    • deployed entrypoint 経由の TUI 起動 smoke: 初期画面、GLM-5.2、version 表示を確認して Ctrl-C 終了

    Merge evidence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions