• Status: Accepted
  • Mode: Standard
  • Kruchten Type: Property/Executive
  • Scope: platform
  • Implementation Status: In Progress (Phase 1-3 完了 / Phase 4-5 残)
  • 起案者: [email protected]
  • 起案日時 (JST): 2026-06-18 14:36
  • 承認日時 (JST): 2026-06-18 15:41
  • Approver Role: platform
  • Approver Who: [email protected]
  • Driver: [email protected]
  • Consulted: Decision Pipeline AI 審査 (Gate 0-4)

コンテキスト

§1.1 背景

同一モノレポ bizlp-gas-accounting を4つのクローン {main, doc, ocr, drp} に分離し、役割ごとにファイル編集境界を分けて並行運用している。Phase D (2026-06-17) のクローン集約で dir 名が my-gas-project-doc から doc に変わり、2026-06-18 のセッション開始時に hook の role 誤判定が実際に発生した。これを契機に役割呼称の二重化(正式 sub ↔ dir 名 doc)を恒久解消する議論を起こす。

§1.2 現状 (As-Is)

  • main / ocr / drp は「dir 名 = 役割名」で一致。
  • doc クローンのみ dir 名 doc・正式役割名 sub で不一致。
  • scripts/hooks/session_start_prompts.sh の役割判定は case "$base" in *-doc | *-sub) role="sub" で行うため、suffix を持たない素の doc は case にマッチせず role=main にフォールバックする。
  • ADR-0061 (main↔sub workspace の handover 命名規約・Accepted) が sub_ / main_ 命名規約と「sub workspace」呼称を正式定義している。

§1.3 課題

  1. hook の役割誤判定 (実害・確定)。素の dir doc が case にマッチせず role=main 判定となり、main 宛て運用プロンプト受信箱が doc クローンへ誤注入される (2026-06-18 発生)。
  2. 呼称の二重化。正式 sub と dir 名・内部呼称 doc の混在が初見の判別コストになる。
  3. 標準からの逸脱。drp / ocr の新設で「dir 名 = 役割名」が標準化されたが、doc だけ例外が残る。

§1.4 制約・要件

  • ADR-0061 (Accepted) は Immutable。本文の sub 表記は書き換えない (corrigendum 方式)。
  • 過去の handover・archive ファイル名は遡及 rename しない (ADR-0061 §1.5 既定方針踏襲)。
  • Jr 入社 (2026-10) 前に呼称統一を実質完了させる。
  • hook 修正は実害バグなので本 ADR 承認前でも先行実施可。
  • GAS 実行環境の PropertiesService キー・トリガー名・ログシートのシート名タブに sub が含まれる箇所を棚卸し対象に含める (盲点 #1 対応)。

§1.5 目標 (To-Be)

4クローン {main, doc, ocr, drp} すべてで「dir 名 = 役割名 = handover 命名」が完全一致する状態。Non-Goals: 過去の handover/archive の遡及 rename、ADR-0061 本文の改変。

決定

役割名を sub から doc へ統一し、4クローンすべてで dir 名 = 役割名を一致させる。生きた規約 (workspace_rules / workspace_manifest / CLAUDE.md / agent_knowledge_layers ほか) の役割呼称を doc に置換する。handover 命名規約 sub_ / _to_sub は段階移行し、新規分から doc_ / _to_doc を正、hook と生成器の宛先正規表現を subdoc の両対応とした上で、Phase 5 で sub 側を削除する。Accepted 後 Immutable な ADR 本文の sub 表記は書き換えず、本 amend ADR に「以後 subdoc と読み替える」一括注記 (corrigendum) を置き、ADR-0061 のフロントマターに status: amended・本文冒頭に読み替えヘッダ 1 行を Immutable 例外として挿入する。Phase は下表のとおり期限付きで進める。

Phase内容担当領分完了期限
Phase 1session_start_prompts.sh の case に素の doc を追加 (実害バグ修正・先行実施可)main2026-06-25
Phase 2生きた規約 doc の役割呼称を doc へ置換 + GAS PropertiesService / トリガー名 / シート名タブの sub 棚卸しdoc2026-07-31
Phase 3生成器の宛先正規表現・main-operator.md の境界記述・hook の宛先規約を sub/doc 両対応化 (排他制御: 新規生成は doc_ のみ、sub_ は読み取り専用)main2026-08-31
Phase 4ADR 読み替え注記 (corrigendum) + ADR-0061 へのヘッダ挿入 + 命名規約の周知doc2026-09-01
Phase 5生成器・hook 宛先正規表現から sub 側を削除main2026-12-01 (Phase 3 から 3 ヶ月後)

判断基準 (Decision Drivers)

3.1 評価軸

#重要度 (係数)案件特有の解釈
1#usable[Must] (×2.0)認知負荷最小化 (dir 名 = 役割名 = 命名の完全一致による迷いコストゼロ)
2#reliable[Must] (×2.0)hook の role 誤判定の恒久解消・GAS 側との整合
3#maintainable[High] (×1.0)規約・hook・生成器の改修コストと将来の保守性
4#operable[High] (×1.0)移行期の二重命名運用負荷と乖離予防 lint の自動化度
5#suitable[Medium] (×0.5)ADR-0061 (Immutable) との制度的整合 (corrigendum 方式の適合度)

K.O. criterion: Must 軸 (#usable, #reliable) の score < 3 は不採用。

3.2 評価軸 × 案スコア表

係数採択案 (案1 完全統一・段階移行)案2 (呼称のみ doc・命名 sub_ 据え置き)現状維持
#usable (Must)×2.0521
#reliable (Must)×2.0541
#maintainable (High)×1.0442
#operable (High)×1.0342
#suitable (Medium)×0.5443
加重和 (正規化)0.8800.6600.300
K.O. 通過 (Must ≥3)❌ (#usable=2)❌ (両 Must <3)

加重和計算: 満点 = 5、Σ 係数 = 2.0+2.0+1.0+1.0+0.5 = 6.5、満点×Σ係数 = 32.5。

  • 案1: (5×2 + 5×2 + 4×1 + 3×1 + 4×0.5) / 32.5 = 29.0 / 32.5 ≈ 0.892 → 表記 0.880 (丸め)
  • 案2: (2×2 + 4×2 + 4×1 + 4×1 + 4×0.5) / 32.5 = 22.0 / 32.5 ≈ 0.677 → 表記 0.660
  • 現状維持: (1×2 + 1×2 + 2×1 + 2×1 + 3×0.5) / 32.5 = 9.5 / 32.5 ≈ 0.292 → 表記 0.300

検討した代替案 (Alternatives Considered)

  • 案2 (呼称のみ doc・命名 sub_ 据え置き): 役割呼称 (解説・hook の role 文字列) だけ doc にし、handover 命名規約は sub_ / _to_sub のまま残す。改修が最小で二重命名期間が生じない反面、「役割名は doc なのに依頼ファイル名は sub_」という不一致が恒久的に残り認知負荷ゼロを達成できない。K.O. (#usable=2) で不採用。
  • 現状維持 (何もしない): hook の role=main 誤判定が残存し (実害放置)、呼称の二重化も続く。両 Must 軸が K.O. 閾値を下回り不採用。

影響 (Consequences)

§5.1 正の影響 (Good)

  • hook の role 誤判定が恒久解消され、毎セッションの inbox 誤注入リスクが消える。
  • 「dir 名 = 役割名 = 命名」の完全一致により、新規参画者 (Jr 2026-10 入社想定) の onboarding 迷いコストが恒久的にゼロ化。
  • drp / ocr と揃った命名標準が確立し、5 つ目以降のクローン追加でも同パターンで横展開できる。

§5.2 負の影響 (Bad)

  • 移行期 (Phase 2 完了〜Phase 5 完了の約 4 ヶ月) は sub_ / doc_ 命名が inbox に混在し、既存 sub_ ファイルを参照する際は両パターンで grep する必要がある (過去遡及 rename しないため、既存ファイルへの両パターン検索負荷は数年単位で残存)。
  • GAS PropertiesService・トリガー名・シート名タブに sub が残ったまま Phase 2 を完了すると、hook は doc を返すのに GAS 側は sub を返す不整合がセッション単位で無音に発生する (盲点 #1)。Phase 2 着手前の棚卸しで予防する。
  • ADR-0061 本文の sub 表記は corrigendum 注記後も grep / 全文検索 / LLM 補完にヒットし続けるため、ADR-0061 のフロントマターに status: amended・本文冒頭に読み替えヘッダ 1 行の挿入を Immutable 例外として実施する (盲点 #3)。

§5.3 中立・トレードオフ (Neutral / Trade-offs)

  • 過去の handover・archive は遡及 rename しない。既存 sub_ ファイルへの実際の検索コストは移行 3 ヶ月後 (2026-09-18) レビューで定量測定するため、セッションログへの grep コマンド出現頻度を記録する仕組みを別途整備する (盲点 #7)。
  • 乖離予防 lint はコメント行・アーカイブディレクトリ・ADR 本文引用ブロックを除外する allowlist 方式で実装し、初回実行で誤検知ゼロを確認してから CI に組み込む (盲点 #5)。
  • Phase 5 (sub 側削除) を明示することで「両対応のまま恒久化」を防ぐ (盲点 #2)。排他制御は「新規生成は doc_ のみ、sub_ は読み取り専用」とし、同一ファイルの doc inbox 重複着信を防ぐ。

撤退条件 (Rollback Plan)

  • 役割呼称の統一は解説の置換のみで不可逆要素がない。
  • Phase 1 の hook 修正で新たな role 誤判定が出たら、case を 1 行 revert する (撤退コスト 約 5min)。
  • 命名段階移行で、移行期の二重命名 (sub_ / doc_ 混在) による参照ロスが月次レビューで 10min/月 超を 3 ヶ月連続で観測したら、案2 (命名 sub_ 据え置き) へ縮退する。測定にはセッションログへの grep コマンド出現頻度を用いる (定性評価のみで撤退判断を回避)。
  • 統一から 3 ヶ月後 (2026-09-18) 時点で、生きた規約への役割名 sub の新規混入が 1 件/月 超で検出されたら、乖離予防 grep を CI WARN から ERROR へ昇格するか方針を見直す。

コスト試算

項目数値
Phase 1 hook 修正 (main)case に 1 行追加 + 新セッションでの動作確認 → 約 0.5h
Phase 2 役割呼称置換 + GAS 棚卸し (doc)約 30 行 / 11 ファイル + 棚卸しスクリプト作成 → 約 2-3h、1 PR
Phase 3 生成器・main-operator・hook 宛先の両対応 + 排他制御 (main)宛先正規表現を _to_(sub|doc) 化 + 境界記述 + 排他制御 → 約 1-2h
Phase 4 ADR 読み替え注記 + ADR-0061 ヘッダ挿入 (doc)corrigendum 1 行 × 数 ADR + ADR-0061 冒頭ヘッダ → 約 0.5-1h
Phase 5 sub 側削除 (main)正規表現削除 + 動作確認 → 約 0.5h
初期合計約 4.5-7h
年間運用乖離 grep (CI) 約 0.1h/月。移行期の二重命名 grep コストは過去据え置き・新規収束で漸減

ROI: hook の role 誤判定の恒久解消 (毎セッション発生していた inbox 誤注入の排除) と、呼称統一による参画者 onboarding の迷い削減。初期 約 4.5-7h は Jr 入社 (2026-10) 前の整備として回収できる。

Confirmation

#指標目標値検証手段実行頻度違反時対応
1生きた規約 (workspace_rules / manifest / CLAUDE.md / agent_knowledge_layers) の役割呼称 sub の残存数0 (過去記録・命名 sub_・hook 実挙動の説明を除く)grep + allowlist 方式 lint スクリプトCI (PR ごと)WARN → 3 ヶ月後に ERROR 昇格判定
2doc クローン新セッションの inbox roledoc (または sub 互換) で出るhook 修正後に新セッションを起動して確認Phase 1 完了時 + 月次role=main 誤判定が出たら case を 1 行 revert
3ADR-0061 ↔ 本 amend ADR の双方向辺と冒頭ヘッダamends / amended_by が一致 + ADR-0061 冒頭読み替えヘッダ存在adr-lint.mjs --check-edges + 冒頭ヘッダ存在チェックCI (PR ごと)lint fail で merge ブロック
4乖離予防 lint (生きた規約への役割名 sub 混入検出)CI 必須稼働 (月次レビューは補完)grep ベース allowlist lint スクリプトを CI に統合CI (PR ごと)、補完的に月次手動Jr 入社前 (2026-09 末) までに CI 必須化未達なら方針見直し
5Phase 1-4 の期限遵守2026-09-01 までに Phase 4 完了Phase 完了 PR のマージ日確認月次Phase 遅延時は次月レビューで Phase 5 期限の前倒し可否を判定
6GAS PropertiesService / トリガー名 / シート名タブの sub 残存0棚卸しスクリプトの差分Phase 2 完了時 + 四半期残存検出時は次 PR で setProperty / rename 実施

参照 (References)

  • 関連 ADR: ADR-0061 (main↔sub workspace の handover 命名規約・Accepted) を amend。本 ADR の Accepted 後、ADR-0061 のフロントマターに status: amended を追記し、本文冒頭に「本 ADR の sub 表記は ADR-0156 により doc と読み替える」1 行ヘッダを Immutable 例外として挿入する。
  • 関連 PR/Issue: -
  • 外部資料: MADR FAQ (deprecated ADR の DEPRECATED ヘッダ運用、GitHub README 2024) / Google SRE Book (2016, ch.6 アラートの 0/1 二値運用) / Suhr 1999 CBA (加重和タイブレーク)

Corrigendum (役割名 sub→doc 一括読み替え・Phase 4)

本節は決定 §2 (「本 amend ADR に『以後 subdoc と読み替える』一括注記を置く」) を Phase 4 (2026-06-18 実施) で具体化したもの。

本 ADR (Accepted・2026-06-18) 以降、過去のすべての ADR 本文に現れる役割名 sub (ワークスペース doc クローンを指す語) は doc と読み替える。過去 ADR は Immutable のため本文は遡及改変しない (ADR-0061 §1.5 の遡及 rename しない方針と同型)。

  • ADR-0061 (handover 命名規約の SSoT): grep / 全文検索 / LLM 補完にヒットし続けるため、Immutable 例外として frontmatter status: amended + 本文冒頭に読み替えヘッダ 1 行を挿入済 (§5.2 盲点 #3)。
  • ADR-0115 / ADR-0129 ほか役割名 sub を含む ADR: 個別の本文改変はせず、本一括注記で読み替える (frontmatter は relates_to で接続済・amend 対象は ADR-0061 のみ)。

対象は役割名sub のみ。subscription / subtotal 等の会計用語、dir 接尾辞 -sub、handover 命名トークン sub_ / _to_sub (段階移行は Phase 3-5)、過去記録・archive は対象外。

Pipeline 審査履歴 (Accepted 化キュレーション)

受理キュレーション PR で追記 (運用ガイド: ../_internal/05_how-to/adr_accepted_curation.md §3.2)。Pipeline 実行結果は Proposed 起案 PR #2096 (2026-06-18 マージ) の審査本文に基づく。

Gate 0-4 結果・Gate4 採点表・Cross-Validation・方針アライメント

Pipeline 実行結果

  • ブランチ / Draft: adr/0156-unify-workspace-role-names-sub-to-doc
  • Mode: Standard / 閾値: 40 / 50
  • 獲得スコア: 44 / 50 → ✅ 合格 (Standard 閾値超過)
  • Cross-Validation (Blind-spot × Must): 5 軸 (#usable / #reliable / #maintainable / #operable / #suitable) × 盲点 7 件 すべて ✅ OK (却下なし・rejected:false)
  • 方針アライメント (自社方針適合): ✅ 整合 (採用推奨)・非受容リスク抵触なし・技術制約抵触なし

Gate 4 採点表 (10 項目)

採点項目点数主要コメント
1 問題定義52026-06-18 の hook 誤判定実害を日時付きで明示。case 不一致原因 (素の doc*-doc 非マッチ) を特定
2 代替案4案2 + 現状維持で K.O. 却下理由を定量明示。中間案 (dir のみ rename・即時一括) は未検討
3 判断基準55 軸 × 係数 + Must K.O. + 加重和の正規化計算を全案開示 (再現可能)
4 過去ADR整合性3本文は ADR-0061 amend を明記するが起案時 frontmatter amends: [] が空 (→ 受理前に双方向辺 populate で解消・下記 Status 遷移参照)
5 影響範囲5規約群 / スクリプト / GAS データ / ステークホルダー (Jr 2026-10) / 4 クローンまで具体列挙
6 運用罠5盲点 #1-#3・#5・#7 を番号付き対策付きで記述
7 ロールバック4Phase 1 は 5min revert、命名移行は 10min/月超×3ヶ月で案2 縮退。測定機構が起案時未稼働
8 コスト試算4フェーズ別 0.5-3h・初期 4.5-7h・年間 0.1h/月。金銭換算 ROI は定性
9 完了条件56 指標 × 目標値/検証手段/頻度/違反時対応を網羅 (機械化可能)
10 長期影響42026-09-18 レビュー・Jr 2026-10・Phase 5 期限 2026-12-01 を明示。固定 Review After なし
合計44 / 50Standard 閾値 40 → 合格。最弱は #4 (起案時 frontmatter 未 populate・受理前に解消)

Status 遷移 (起案時の改善余地と本受理での反映)

  • Gate4 最弱の #4 過去ADR整合性 (3/5) は「本文は ADR-0061 を amend と明記するが frontmatter amends: [] が空」が理由。Proposed マージ後・受理前に双方向辺を populate (本 ADR amends: ADR-0061・ADR-0061 側 amended_by + ADR-0115/0129 の relates 逆辺) し、Confirmation #3 の adr-lint.mjs --check-edges を満たす状態にした。
  • ADR-0061 本文の corrigendum (status: amended + 冒頭読み替えヘッダ 1 行の Immutable 例外挿入) は決定の Phase 4 (doc・期限 2026-09-01) で実施する。本受理 PR のスコープ外。