5 クローン並行運用 (ADR-0159 · main / doc / mas / ocr / drp / vlt の 6 clone 実測) における .claude/settings.json の drift を実測する記録。設定 file は gitignored (memory [claude-settings-json-gitignored]) のため git diff で検出できず、Local file system 上の直接読み比較でのみ差分検出可能。

  • テンプレ SSoT: scripts/hooks/settings.example.json (2504 bytes · 2026-07-03 最新)
  • セットアップ手順: docs/_internal/05_how-to/hooks_setup.md
  • 検査方法: 各 clone の .claude/settings.json を Read で並列取得 → テンプレとの diff で drift 検出

Scan #1 (2026-07-06 · vlt session 21 実測)

実測結果 (6 clone)

clonesize (bytes)mtimenamepermissions.allow (16 entry)Stop hookenv override状態
main16082026-07-04 22:40"main"欠落なしdrift 1 種
doc23922026-07-03 16:39"doc"欠落CLAUDE_CODE_EFFORT_LEVEL: "max"drift 1 種 (env override は意図的 · doc 固有)
mas16072026-06-23 20:09"mas"欠落なしdrift 1 種
ocr15532026-06-12 17:39欠落欠落欠落なしdrift 3 種 (最古)
drp23512026-07-04 17:18"drp"なし✅ テンプレ完全同期
vlt23512026-07-04 22:24❌ "main" (更新漏れ) → 修正済 "vlt"なし✅ (name 修正で解消)

drift の意義付け

  • permissions.allow 欠落 (main / mas / ocr): テンプレの 16 script (adr-lint · adr-index · docs-nav-lint · adr-draft-lint · adr-lint-doc-consistency · handover-frontmatter-lint · check-adr-draft-checklist-sync の各 2 form) の allow-list が欠落 → 該当 script 実行時に permission prompt が頻発する。Claude Code CLI 起動時の使い勝手劣化 · session 中の作業速度低下要因。
  • Stop hook 欠落 (doc / ocr): context_budget_warn.sh が発火しないため、session 終了時の context 使用率警告が働かず。60% 超え自動 close 発火の判断材料が失われる可能性。
  • name フィールド欠落 or 誤値 (ocr / vlt): テンプレには存在しない拡張 field だが、各 clone が「自分がどの clone か」を明示する運用値。誤値 (vlt = "main") は本 scan で修正済。ocr の欠落は本 scan では未修正。
  • env.CLAUDE_CODE_EFFORT_LEVEL (doc のみ): doc clone 固有の運用値 · docs 執筆で max effort を default 化 · 意図的 drift = drift 扱いしない。

修正指示 (各 clone owner 用)

各 clone の owner (session 起動者) は次 session 開幕時に以下を実施:

  • main clone: scripts/hooks/settings.example.jsonpermissions.allow 16 entry を丸ごと .claude/settings.json にコピー · Stop hook は既にあるため他は変更不要
  • mas clone: 同上 (permissions.allow 16 entry 追加)
  • ocr clone: (1) "name": "ocr" 追加 · (2) permissions.allow 16 entry 追加 · (3) Stop hook block 追加
  • doc clone: Stop hook block 追加 (env.CLAUDE_CODE_EFFORT_LEVEL: "max" は温存)
  • drp clone: 変更不要 (完全同期)
  • vlt clone: 本 scan で修正済 ("name": "main""name": "vlt")

検査手順 (再現性)

次回 drift scan 実施時は以下の Bash 一括コマンドで size / mtime を比較:

ls -la /Users/ts_kuma/projects/bizlp/{main,doc,mas,ocr,drp,vlt}/.claude/settings.json
ls -la /Users/ts_kuma/projects/bizlp/vlt/scripts/hooks/settings.example.json

各 clone の詳細確認は Read tool で 6 file を並列取得し、permissions.allow の 16 entry 有無 + Stop hook block 有無 + name field の一致を目視で検査する。

時間コスト: 全 6 file 並列 Read + drift 分析 = 5-10 分 (context 消費 ~5-8k tokens)。

推奨実施頻度: セッションクローズ handover に「settings.json drift 状態」節が定着するまで、月 1 回 (毎月月初の main clone session で全 clone scan)。テンプレ (scripts/hooks/settings.example.json) 更新時は臨時 scan。

将来の drift 予防

drift 予防のための追加施策候補 (本 log 蓄積で優先順位確定後に着手):

  1. CI で settings.example.json の change 検出時に全 clone 同期 handover を自動生成: .github/workflows/settings-template-drift-detect.yml (新設 · main clone 領分) で scripts/hooks/settings.example.json change 検出 → 5 clone × handover 5 本を自動起票 (order-mechanical or order-needs-approval で分岐判断)
  2. .claude/settings.json の一部を git 追跡化: gitignored 制約を解いて hook 定義部分だけ track 対象化 (permissions.allow と Stop hook block を明示的に SSoT 化) · env override は Local 温存 pattern
  3. Session 開幕 mechanical に drift 自己検査 step 追加: 各 clone 開幕時に diff scripts/hooks/settings.example.json <(jq '{permissions:.permissions, hooks:.hooks}' .claude/settings.json) を実行し、drift 検出時は自動で警告表示

現状 (Scan #1) 検出 drift 5 種のうち 1 種 (vlt name) は本 scan で解消 · 残 4 種は各 clone owner の次 session 開幕時実施待ち。

関連 SSoT

  • テンプレ SSoT: scripts/hooks/settings.example.json (2504 bytes · 2026-07-03 最新)
  • セットアップ手順: docs/_internal/05_how-to/hooks_setup.md
  • workspace 運用: docs/_internal/05_how-to/workspace_rules.md (ADR-0181 · 6 列化)
  • 関連 memory: [claude-settings-json-gitignored] (.claude/settings.json gitignored · env override 削除は再起動後有効化)
  • 関連 ADR: ADR-0159 (5 clone 並行運用) · ADR-0181 (vlt clone 新設 · 2026-07-01)