# MissionUpdate

タスクの **Mission Brief**（`goal` / `done` / `open` / `clarifications` / `user_constraints` / `decisions` / `current_focus`）を更新するメタツール。ワークスペースのツール設定に関係なく常時利用可能（META_TOOL）。

Mission Brief は毎 movement のシステムプロンプト冒頭に常に描画され、会話が長くなった後やステップをまたいでも消えない「参照点」になる。ユーザーも Overview タブから直接編集できる。

## いつ使うか

- **新規タスクの最初のツール呼び出しで `goal` を必ず set する。** ユーザーが最初に依頼した本質的な要件を verbatim（言い換えず原文のまま）で固定する。後で会話が長くなっても、ここを見れば「本来何を頼まれたか」がぶれない。
- 作業の節目で `done`（完了したマイルストーン）と `open`（残作業・ブロッカー）を更新する。重複作業の防止と、次の一手の見通しに使う。
- ユーザーが途中で補足・制約を足してきたら `clarifications` に記録する（「これは壊さないで」「言語は英語で」など）。

## 引数

| 引数 | 説明 |
|------|------|
| `goal` | タスク全体のゴール。ユーザーの本質的な要件を原文で。Markdown 可 |
| `done` | これまでに完了した主要マイルストーン。箇条書き推奨 |
| `open` | 残っている作業・未解決のブロッカー。箇条書き推奨 |
| `clarifications` | ユーザーから追加された補足・制約。Markdown 可 |
| `user_constraints` | ユーザーが明示した恒久的な制約（「X は変えないで」「認証フローは維持」等）。可能なら `comment:N` / `transcript:N` を出典として添える |
| `decisions` | 検討の末に確定した設計判断とその理由。後で蒸し返さないための記録 |
| `current_focus` | いま取り組んでいる作業の焦点。movement をまたいで現在地を見失わないため |

すべて任意だが、最低1つは指定する必要がある（全フィールド未指定はエラー）。`user_constraints` / `decisions` は `SearchTaskConversation` で掘り起こした古い制約・判断を pin しておく置き場所に向く。

## 部分置換セマンティクス

**指定したフィールドだけ**が上書きされ、未指定のフィールドは現状のまま残る。`done` だけ渡せば `goal` は変わらない。

```js
// 冒頭: goal を固定
MissionUpdate({ goal: "売上 CSV を月次集計して棒グラフ付き PDF にする" })

// 進行中: 完了分と残りを更新（goal はそのまま）
MissionUpdate({ done: "- CSV パース\n- 月次集計", open: "- PDF レンダリング" })
```

## 制約・注意

- 各フィールドは **2000 文字**で打ち切られる（超過分は `…[truncated]` 付きで切られる）。要点を簡潔に。
- 全フィールドを空文字で渡すと Mission Brief は**クリア**される。
- **サブタスクなど `local_task` に紐付かない実行コンテキストでは使えない**。その場合は no-op としてエラーを返すので、サブタスク側では呼ばないこと。
- 保存単位はタスク（per-LocalTask）。ジョブや movement 単位ではないので、ASK ラウンドや follow-up メッセージをまたいでも保持される。

## 関連

ステップ間で得た教訓は `transition` / `complete` の `lessons` フィールドで記録する（Mission Brief とは別系統）。
