## 概要
goalbuddy.py に完全自律ループ `run` を追加。MMPO/Goal Buddyの実践化(id=473)の残課題だった「Workerフェーズの自動委譲」を実装し、E2Eで実証した。
## 実装内容
### run サブコマンド(完全自律ループ)
`python3 goalbuddy.py run [state.yaml] [max_iter] [workdir]`
- フロー: judge(全Oracle実行) → 全pass:【ALL_MET】exit0終了 / 未達あり:未達SliceをWorker委譲→バックオフ→再judge
- max_iter(既定10)到達で【NOT_MET】exit2
- 反復間は指数バックオフ(retry-policy系統B: 10/20/40/…最大300s)
- 各反復で state.yaml に進捗・worker_log・history を永続化(長文脈でブレない)
### Worker マルチバックエンド(環境変数 GOALBUDDY_WORKER)
- `auto`(既定): codex → grok の順にフォールバック(task-router.md準拠)
- `codex`: `codex exec -s workspace-write --skip-git-repo-check`。usage limit/model error を本文検知でNG扱い
- `grok`: `grok agent headless --always-approve`(stdin)
- `mock`: `$GOALBUDDY_MOCK_CMD` 実行(テスト用)
- 全滅時 WORKER_UNAVAILABLE。CLAUDE.md準拠で `claude -p` 不使用
## 検証結果
- **ALL_METケース**: 最初から満たすSliceで iter1 即終了 exit0 ✓
- **E2Eループ(mock Worker)**: hello.txt 未作成から開始 → iter1でWorker委譲→実作業(GOALBUDDY_OK書込) → iter2でOracle満たし【ALL_MET】exit0。state.yamlにS1=done・history・worker_log永続化を確認 ✓
- **codex実Worker**: フロー(judge→委譲→バックオフ→再judge→NOT_MET)は完全動作したが、codexが「gpt-5.2-codexはChatGPTアカウント非対応」→モデル指定削除後は「usage limit到達(7/1まで)」。**ループ機構の問題でなく外部要因**
## 既知制約(2026-06-02・外部要因)
- codex: 使用上限到達(7/1復活)。復活後 auto で自動採用
- grok: `grok agent` が対話pager UIを開く。headless実行に WebSocketリレー設定が必要(未整備)
- → 実作業バックエンドは要整備だが、自律ループ機構自体は mock で実証済み
## instinct(学び)
- codex-delegation.md の `gpt-5.2-codex` は古い。codex CLIはモデル指定なし(デフォルト)が無難。外部CLI委譲時はモデル名と使用上限を先に確認(MEMORY instinct「インストール済みバージョンの対応状況を先に確認」に合致)
- Worker は単一CLI依存にせずマルチバックエンド+フォールバックにすると、1つが上限/障害でもループが死なない
## ファイル
- `~/workspace/tools/goalbuddy/goalbuddy.py`(run/run_worker追加) + README.md(バックエンド仕様・既知制約)
- 関連: goal-judge SKILL.md / anchor_state_check.py(hook) / symphony-loop と併用
2026-06-02 完成: goalbuddy 完全自律ループ(run・Worker自動委譲マルチバックエンド・E2E実証)