コンテンツにスキップ

Architecture Decision Records

決まったことはここにある。 他のドキュメントは「いまどうなっているか」を書く場所で、 「なぜそう決めたか」と「何を捨てたか」はここに置く。

なぜ ADR を導入したか

docs/design.md は決定を「追記(日付)」で積む形だった。これが一度壊れた。

§4.4 は「固定枠 8 本を人が一度だけ信頼する(案 B)」と書き、§6 の決定表もそう記録している。 だが 2026-08-18 の追記が案 A(起動前の自動書き込み)へ切り替えており、実装もそうなっている。 本文と決定表は古いまま残り、bin/ccs が CCS_SCRATCH_SLOTS に添えたコメントも 「毎回新しいディレクトリを作ると trust ダイアログが毎回出る」という古い理由を語り続けていた。

結果として、2026-08-20 に「8 枠は trust ダイアログ回避のため」という前提で設計を議論し、 その前提が既に 2 日前に無効化されていたことに気づくまで時間を使った(→ ADR-0001)。

追記で上書きする形式は、読む人が最新の追記まで辿り着けたときにしか機能しない。 決定は 1 ファイル 1 決定にして、覆ったら Superseded と明記する。

書き方

NNNN-<短い-kebab-case>.md。番号は連番、欠番は作らない。

# ADR-NNNN: <決定を言い切る一文>

- **状態**: Accepted | Superseded by ADR-NNNN | Deprecated
- **日付**: YYYY-MM-DD
- **関連**: #<issue>, ADR-NNNN, docs/xxx.md §N

## 文脈
何に困っていたか。制約は何か。

## 決定
何を決めたか。言い切る。

## 根拠
なぜそう決めたか。**実測があるなら再現できる形で載せる。**

## 捨てた案
検討して採らなかったものと、その理由。後から掘り返さないために書く。

## 影響
コード・ドキュメント・運用に何が起きるか。

規律

  • 決定を覆すときは、古い ADR を消さない。 状態を Superseded by ADR-NNNN に変え、 新しい ADR に「何を覆したか」を書く。履歴が残らないと同じ議論を繰り返す
  • docs/design.md に決定を書かない。 design.md は現状の説明に徹し、決定は ADR を参照する
  • コードのコメントが設計判断を語るときは、ADR 番号を添える。 理由が変わったとき、 コメントだけ取り残されるのを防ぐ

一覧

# 決定 状態 日付
0001 使い捨て作業枠は固定 8 枠をやめ、セッションごとに一意なディレクトリを作る Accepted 2026-08-20
0002 同一性は workspaceId と sessionId で表し、名前は表示用のラベルに落とす Accepted 2026-08-21
0003 worktree はリポジトリ配下の .worktrees/ に置き、素性は git から引く Accepted 2026-08-26
0004 作業枠の成果物は ~/ghq/local/<owner>/<name> へ昇格する。根治(枠に CLAUDE.md)を先に置き、外部への作成は ccs がやらない Accepted(未決 2) 2026-08-31