カンバンボード用語
カンバンモードを扱うドキュメントと運用メモは、9つの用語を共有しています — ボード、チェーン、セッションランチャーのガイドのどこを開いても同じ言葉が出てきます。このページはそれらの用語を一箇所に集めて定義します。各項目は定義1行と例1つで構成され、他のドキュメントはこの意味を前提に書かれています。
まず最につまずきやすい点から: レーン (lane) と列 (column) は別の言葉です。この区別は以下で別セクションとして扱います。
ボードは5つの列で固定されています:
flowchart TD
Backlog["backlog — 待ち列
(所有セッションなし)"]
Plan["plan 列
(plan コンパニオン)"]
Run["run 列
(run コンパニオン)"]
Sync["sync 列
(sync コンパニオン + レビュー判定)"]
Done["done — 終着
(ここには何もディスパッチされない)"]
Backlog --> Plan --> Run --> Sync --> Donebacklog と done には意図的に所有セッションがいません。中央の3列がそれぞれ1つのコンパニオン役割に対応するため、ディスパッチは決定ではなく照合になります — カードがどの列にいるかを見れば、誰に送るべきかが決まります。review 列は存在しません: レビュー判定は sync ゲートが吸収し、sync 段階がレビュー・レンズを自ら回します。
| 用語 | 意味 | 例 |
|---|---|---|
| レーン (lane) | カード1枚を最後まで運ぶ並行作業ストリーム1つ。セッション1つとワークツリー1つの組。物理カンバンボードのスイムレーンのように、それぞれの流れは自分の車線を走り、作業ツリーを決して共有しません。「レーンローカル検証」 (lane-local verification) とは、そのレーンの変更が影響しうるテストだけをそのレーンが実行するという意味です。 | run セッションがワークツリー .claude/worktrees/t0 で作業するのがレーン1つ |
| カード (card) | ボード上の作業単位1つ。運営者が /moai todo "<説明>" で投入し、短いIDで呼びます。カードはワークツリー1つ、進行記録1つ、完了エビデンスを所有します。 | t0 — 1行修正のカード |
| 列 (column) | ボードの段階1つ。順序は固定: backlog → plan → run → sync → done。中央の3列はそれぞれ1つのコンパニオン役割に対応します。 | /moai run <SPEC-ID> は run 列で行われます |
| バックログ (backlog) | ボードの入口の待ち列。所有セッションは意図的に不在です — 作業は運営者が投入したときだけボードに入ります。 | /moai todo "rename hint is stale" がカード1枚をバックログに追加 |
| リード (lead) | 唯一の調整セッション (moai cc -k)。自分で読んだエビデンスに基づいてだけカードを次の列へ進め、段階の間には運営者にそのセッションの /clear を依頼し、コードは自分で書きません。 | カードをワークツリー指示とともにディスパッチしたそのセッション |
| コンパニオン (companion) | 人が直接、ターミナル1つずつで起動する作業セッション (moai cc -k --name <role>)。名前はロール名だけで付き、同じロール名がすでに生きていれば次の番号が付きます。一度に1つの列の作業を担当します。 | plan, run, sync |
| ランID (run-id) | リードが起動時に表示する短い識別子。リーダーソケットのパスと MOAI_KANBAN_ID にのみ入り、リードを含めどのセッション名にも入りません — すべてのセッションはロール名で呼ばれます。 | リードが表示する a1b2c3。セッション名そのものは lead |
| ワークツリー (worktree) | カードの作業が行われる隔離されたチェックアウト。ランチャーで入ります (moai cc -w <name> / EnterWorktree) — raw git worktree add では作りません。ディレクトリ名がカード ID を持ち、ブランチ名は何をしたかが分かる WT-<slug> 形式です — ハイフン 3 トークン以内、24 文字以内、カード ID は入れません。ワークツリーは段階より長生きします: 1つがrunからsyncまでを貫きます。 | ブランチ WT-todo-queue の .claude/worktrees/t0 |
| ディスパッチ (dispatch) | リードからコンパニオン1体への指示。作業のコピーではなくポインタです — カードID、SPEC ID、段階コマンド、完了シグナル。運営者の会話言語で書かれます。 | “card: t0 — wt: EnterWorktree(t0) … evidence: .moai/reports/t0/” |
列 (column) は作業の段階を指し、レーン (lane) はその段階を通ってカード1枚を運ぶ主体を指します。一方はボード上の停留所、他方は停留所を通るルートです。
flowchart TD
subgraph LaneA["レーン — カード t0: run セッション + worktrees/t0"]
A0["カード t0"] --> A1["実装と検証は
worktrees/t0 の中だけ"]
end
subgraph LaneB["レーン — カード t1: 2 番目の run セッション + worktrees/t1"]
B0["カード t1"] --> B1["実装と検証は
worktrees/t1 の中だけ"]
end2つのレーンが同じボードで同時に流れても、互いのワークツリーには最後まで入り込みません。これが並行を安全にする仕組みです — どのレーンのコミットも別のレーンの作業ツリーに漏れません。
すべての用語が一度ずつ登場する実際の流れです:
- 運営者が
/moai todo "rename hint is stale"でカードt0をバックログに入れます。 - リードがキューから
t0を選び、plan コンパニオンにディスパッチします。 planコンパニオンがSPECを書いたら、リードは自分でエビデンスを読み、カードを次の列へ進めます。runがワークツリー.claude/worktrees/t0で実装します。ブランチはカード ID ではなく、やったことを表す名前を使います (WT-t0ではなくWT-todo-queue) — このセッションとワークツリーの組がまさにレーンで、検証もレーンの中で (変更が影響しうるテストだけ) 走ります。リードが起動時に表示するa1b2c3がランIDで、リードセッション名そのものはleadです。- sync 列も同じように通り — そこで sync ゲートがレビュー判定を吸収して下します — sync がPRを出した時点でカードはdoneに到達します。
この間ずっと、カードの作業は .claude/worktrees/t0 だけで行われます。並行して走っていた別レーンのワークツリーとは最後まで混ざりません。
- カンバンモード — 参入条件、Origin-Trail Chain の設計、チェーンの段階
/moai todo— カードをボードに載せるバックログキュー- ハーネスエンジニアリング — フェーズチェイニングと観測がハーネス設計の上にどう載っているか