Skip to content

fix: inherit the service starter CLI in managed runs - #309

Merged
version-1 merged 3 commits into
mainfrom
fix/inherit-service-cli
Aug 13, 2026
Merged

fix: inherit the service starter CLI in managed runs#309
version-1 merged 3 commits into
mainfrom
fix/inherit-service-cli

Conversation

@version-1

Copy link
Copy Markdown
Owner

managed serviceで起動元Tasq CLIを継承する

Summary

tqdev service startで起動したorchestrator配下のagentが、PATH上の別バージョンのtqを実行し、tq updateによって親サービスを停止する問題を防ぎます。サービス起動元CLIを実行契約として継承し、agentのTasq操作とservice lifecycleの安全性を揃えました。

主な変更点:

  • 起動元CLIの正規化済み絶対パスをTQ_EXECUTABLEとしてmanaged serviceへ伝播
  • agentの初回・継続promptで"$TQ_EXECUTABLE"を使用し、旧構成ではtqへfallback
  • managed run内のtq updatetq service stopを状態変更前に拒否

やったこと

  • TQ_EXECUTABLETQ_MANAGED_RUNの環境契約を追加
  • service起動環境から同名の既存変数を除去し、起動元の値で一意に設定
  • 既定task-work promptとcontinuation guidanceへ{{ tq.command }}を導入
  • CLI拒否動作、環境伝播、managed/unmanaged promptの回帰テストを追加
  • Symphony workflow contractを英語・日本語で同期更新

動作確認

  • go test ./...
  • git diff --check
  • managed run内で update service stopが処理開始前に失敗することをテスト

レビュー & 動作確認 チェックリスト

  • CLI同一性 - tqdev service start由来のpromptが"$TQ_EXECUTABLE"を使用すること
  • 自己停止防止 - managed run内からサービス更新・停止が実行されないこと
  • 後方互換性 - 環境契約なしの直接orchestrator起動ではtqへfallbackすること

推奨テスト計画:

  1. PATH上に別のtqがある状態でtqdev service startを実行する
  2. agent promptのTasq操作がTQ_EXECUTABLE経由になることを確認する
  3. managed agentからtq updateまたはtq service stopを試し、拒否されることを確認する

その他気になることや相談ごと

TQ_MANAGED_RUNはagentの誤操作を防ぐ安全柵であり、悪意ある子プロセスに対するsecurity boundaryではありません。

Propagate the normalized service-start executable through managed services and render agent tracker commands with that executable. Reject update and service stop inside managed runs to prevent agents from terminating their owning orchestrator.\n\nTests: go test ./...
Copy the service starter into TQ_HOME before launching background services so go-run entrypoints remain usable by later agent runs. Require the managed-run marker before rendering TQ_EXECUTABLE and align the prompt design documentation.\n\nTests: go test ./...
Create the managed CLI snapshot only after the start lock, running-service checks, and migration preflight succeed. Add a regression test proving a rejected service start cannot replace the active snapshot and synchronize the recorded prompt body.\n\nTests: go test ./internal/cli/tq ./internal/orchestrator/runner
@version-1
version-1 merged commit 80e4aed into main Aug 13, 2026
5 checks passed
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