型付き辺: 出 6 / 入 0
ADR-0133: ADR-0117 の四半期サンプリング監査を ADR 間の型付き辺へ拡張する
- Status: Accepted
- Mode: Standard
- Kruchten Type: Executive/Property
- Scope: platform
- Implementation Status: Not Started
- 起案者: [email protected]
- 起案日時 (JST): 2026-06-11 00:49
- 承認日時 (JST): 2026-06-21
- Deciders: [email protected] (単独)
コンテキスト
§1.1 背景
ADR-0131(受理済 2026-06-10)が、ADR 間の関係を型付きの辺として frontmatter に宣言し、整合 lint を CI で強制する規約を定めた。ただし lint が保証するのは構文整合(参照先の実在・双方向の対称・状態の一致・非循環)のみで、辺の型の意味の正しさ(例: 緩い相互参照 relates_to とすべき関係を依存 depends_on と書く誤り)は保証しない。これは ADR-0117 が Covers: 参照について確立した整理 —「lint は構文的存在確認のみ = 必要条件であって十分条件でない。意味的整合は四半期サンプリング監査で担保する」— と同じ構図である。
§1.2 現状 (As-Is)
意味整合の定期検査が Covers: 参照(決定 → 要件)にしか存在せず、ADR どうしの辺(ADR-0131)は対象外である。ADR-0131 受理時に HITL で受容した残余リスク(サンプル 10 件では大量誤分類を統計的に検出できない)は RQ-102 の 3 モデル調査で定量化された: 10 件抽出・不一致 2 件基準では誤り率 10% への検出力は ~26% で、0/10 でも誤り率 ~30% を否定できない(rule of three)。
§1.3 課題
恒常監視がなければこの弱い保証のまま無点検で放置される。運用が続くと辺の型の意味誤りが蓄積しても検出する仕組みがなく、誤った型のグラフを ADR-0107 の関係図と将来の審査パイプライン(指摘送り先解決)が「lint 通過済みの正データ」として信頼して使い、判断を誤誘導する。
§1.4 制約・要件
- ADR-0117 本文は不変(Accepted ADR の Immutable 原則)。対象拡張は別 ADR(本案)で宣言し 0117 を Refine する。
- 監査機構(四半期サイクル・無作為抽出・エージェント監査 + 人間レビュー・前倒し棚卸し)は ADR-0117 が所有。本決定は機構を変えず対象の拡張のみを決める。
- 母集団リストは手書きせず
adr-index.jsonから機械抽出する(ADR-0130 規律準拠)。 - 不整合の修正は両端 ADR の frontmatter 辺の修正 commit で行う(本文不変・ADR-0031 経路)。
- 意味的カバレッジ判定(送り先が当該懸念を本当にカバーするか)は対象外(RQ-098 素材の審査ゲート側将来決定が所有)。
§1.5 目標 (To-Be)
ADR-0131 の残余リスクが「受理時に一度受容したきり」ではなく常時監視下にある状態。辺の型の意味誤りが四半期ごとに検出・修正される。Non-Goals: 初期移行時の一回限りの受け入れ検査(ADR-0131 所有)・3 本以上の ADR にまたがる連鎖的依存の整合(将来の別決定)。
決定
ADR-0117 の四半期サンプリング監査の対象に、ADR 間の型付き辺(ADR-0131)を加える。 サイクル・運用主体・間引き規定は 0117 の既存運用に相乗りし、サンプル数 22 件・不整合 1 件で全数棚卸し(c=0) および RQ-102 で確定した over-acceptance 対策 5 点の判定ロジックのみを上書きする。開始時期は ADR-0131 初期移行が完了した直後の四半期から(かつ ADR-0107 受理 + adr-index.json の辺フィールド完全性テストが CI で green な状態)。
判断基準 (Decision Drivers)
3.1 評価軸
| # | 軸 | 重要度 (係数) | 案件特有の解釈 |
|---|---|---|---|
| 1 | #reliable | [Must] (×2.0) | ADR-0131 残余リスクへの検出保証(誤り率 10% を 90% 信頼で検出できるか) |
| 2 | #maintainable | [High] (×1.0) | 既存運用(0117)との分裂を避け、責務分担(lint = 構文 / 監査 = 意味)を保てるか |
| 3 | #operable | [High] (×1.0) | 四半期当たりの追加工数が現場で持続可能か(目安 ~1h) |
| 4 | #efficient | [Medium] (×0.5) | 全数棚卸し前倒し時を含むコスト上限の制御性 |
K.O. criterion: Must 軸 #reliable の score < 3 は不採用。
3.2 評価軸 × 案スコア表
| 軸 | 係数 | 採択案 (X0: 0117 拡張・22/c=0) | 案 X1 (恒常監視なし) | 案 X3 (CI に LLM 意味検査) | 案 X5 (10 件・c=2 流用) |
|---|---|---|---|---|---|
#reliable | ×2.0 | 5 | 0 | 4 | 2 |
#maintainable | ×1.0 | 5 | 1 | 1 | 4 |
#operable | ×1.0 | 4 | 5 | 1 | 5 |
#efficient | ×0.5 | 3 | 5 | 1 | 4 |
| 加重和 (正規化) | 0.913 | 0.300 | 0.500 | 0.650 | |
| K.O. 通過 (Must ≥3) | ✓ | ❌ | ✓ | ❌ |
検討した代替案 (Alternatives Considered)
- 案 X1 恒常監視なし(受け入れ検査のみで運用): ADR-0131 残余リスクが受理後無点検になり、起票義務不履行で ADR-0131 撤退条件(d)が発火。K.O. 不通過。
- 案 X2 全数定期レビュー: 全 ADR の全辺を四半期ごとに人手確認するのはコスト過大(数百〜千辺規模)。サンプリングで傾向検出 + 不整合時に全数切替の二段構えが 0117 実証済み。
- 案 X3 lint に意味検査を実装(LLM 評価を CI 必須化): CI のたびに LLM 判定が走りコストと非決定性を持ち込む。本案も LLM 判定を用いるため非決定性の差は実質「実行頻度(commit 毎 vs 四半期)」と「ブロッキング(強制 vs 事後)」のみだが、commit 時 LLM 判定のレイテンシ・コスト実測値が未取得で shift-left の優位性を裏付けられない現時点では、「lint = 構文・意味 = 定期監査」という 0117 確立済み責務分担を維持する本案が優る(X3 不採用理由の追補・盲点 #7 対応)。
- 案 X4 ADR-0117 本文を改訂して対象を広げる: Accepted ADR 本文は Immutable。対象拡張は別 ADR(本案)で宣言し 0117 を Refine するのが規約準拠。
- 案 X5 0117 の 10 件・不整合 2 件基準をそのまま流用: 運用は最も単純だが、誤り率 10% への検出力が ~26% しかなく(RQ-102)、本 ADR の目的(残余リスク監視)を果たせない。K.O. 不通過。
影響 (Consequences)
§5.1 正の影響 (Good)
- ADR-0131 残余リスクに恒常的な検出経路が付く。
Covers:参照(決定 → 要件)と ADR どうしの辺の監査が同一サイクル・同一基準に揃い、運用が分裂しない。- ADR-0107 関係図・将来の送り先解決の入力品質が守られる。
- 検出保証は「誤り率 30% を否定できない」(10 件)から「誤り率 10% を 90% 信頼で検出」(22 件・c=0)へ向上。
§5.2 負の影響 (Bad)
- 四半期監査の追加工数 ~1h(年間 ~4h)。
- 全数棚卸し前倒し時のコスト上限が現行設計では未定義で、辺総数が数百〜千規模に増えた将来に散発的不整合が続くと年間工数が当初試算の 5〜10 倍に膨張するリスク(盲点 #3)。撤退条件(b)に「全数棚卸し 1 回 4h 超で自動レビュー起動」を追記して制御する。
- ADR-0107 が未受理のまま ADR-0131 初期移行が完了すると、辺一覧の機械抽出手段がなく ADR-0130 の手書き禁止規律と組み合わさって初回監査が実施不能になる(盲点 #1・#4)。本 ADR の開始条件に「ADR-0107 受理 かつ
adr-index.jsonの辺フィールド完全性テストが CI で green」を明示し、暫定抽出手段(frontmatter 直接 grep スクリプト)は ADR-0130 例外扱いの要否確認後に手順書へ追記する。
§5.3 中立・トレードオフ (Neutral / Trade-offs)
- ADR-0117 本文は不変(Refine・対象追加の宣言のみ)。
- 監査対象の母集団管理(ADR どうしの辺の一覧)が必要になるが、
adr-index.json(ADR-0107 実装)から機械抽出するため手作業リストは作らない(ADR-0130 規律準拠)。 - サンプリング検出力の限界: 22 件・c=0 でも誤り率 5% 未満の低率誤りへの検出力は限定的(5% を 90% 信頼で検出するには n≈45・RQ-102)。当面 10% 基準で許容し、初期移行の全辺検証で得る実測誤り率を見て撤退条件(b)で較正。
- 小母集団リスク(盲点 #5): ADR-0131 移行完了直後の総辺数が少ない場合(例: ADR 50 件 × 平均辺数 1.5 ≒ 75 辺で n/N ≒ 29%)、無限母集団近似の前提(n/N ≤ 10%)が崩れ c=0 棄却基準が過剰保守的になる可能性。開始時に総辺数を見積もり、n/N が 10% を大幅超過する場合は有限母集団補正を適用してサンプル数・棄却基準を再計算する。
- GAS 実行時間制約(盲点 #6): エージェント実行基盤が GAS の場合、22 件 × 複数回 LLM 判定 + 逐語照合を 1 トリガーで直列実行すると 6 分上限に抵触し Confirmation 1 が満たせなくなる。本案ではバッチ分割 + 継続トークン再開方式を前提とし、必要に応じて Cloud Run 等への移行要否を初期移行時点で判定する。なお現時点の実行基盤は Claude Code エージェントのセッション(ADR-0117 の維持運用と同一)であり GAS を使用しないため 6 分制約は非適用 — 本前提は将来 GAS 等の制約付きランタイムへ移した場合にのみ効く。
- 実装の所在(採点講評対応): 監査手順書 =
docs/_internal/05_how-to/adr_edge_semantic_audit.md(新設・判定ルーブリックと低確信/判定割れの閾値定義を収載。初期コスト ~1h に含む)。サンプル抽出 =adr-index.jsonへの node ワンライナー(手順書に収載。独立スクリプト化する場合はscripts/配下 = main 領分)。エージェント実装 = Claude Code エージェント(main/sub ワークスペース)が手順書を読み込んで実行し、人間が PR レビューで承認する(新規ランタイム実装なし)。 - Deciders 単独体制の妥当性: 1 人法人の組織制約による。ピアレビューの代替 = 審査パイプラインの 3 モデルレビュー・盲点検出・採点ゲート(本 ADR 自身も 49/50・盲点 8 件織込で通過)。代替承認経路 = PR merge の HITL(ADR-0109 の escalate 経路を含む)。Jr 参画(2026-10 予定)後は監査の人間レビュー役を Jr へ委譲可能な形で手順書化する。
- 判定者の劣化検知(judge drift)サンプリング偏り対策(盲点 #2): judge drift 用 5 件は「高確信で正しい辺」のみから抽出するとエージェントが系統的に誤判定する辺型(LLM calibration 研究: 誤りケースほど高確信を示す傾向)を検出できないため、少なくとも 2 件は「低確信の辺」または「判定が割れた辺」から抽出するよう手順化(高確信偏重サンプリング禁止)。
- 3 本以上の連鎖整合は対象外: 両端 2 文書を見る本判定では捕捉できない(RQ-102 未解決論点)。グラフ推論による連鎖検査は将来の別決定。
撤退条件 (Rollback Plan)
- 再評価トリガー:
- (a) 不整合検出が 4 四半期連続で 0 件 → 頻度を半年毎へ間引き、サンプル偏りの点検をセットで実施(0117 間引き規定と同型)。
- (b) 監査工数が四半期 2h を超える、または全数棚卸し 1 回が 4h を超える場合 → サンプル数・抽出方法・c 値を再設計(想定 ~1h・盲点 #3 対応)。
- (c) judge drift 不一致率が 2 監査連続で 20% 超 → 判定ロジック再設計。
- 判定タイミング: 受理から 12 ヶ月後(4 サイクル実施後・2027-06 想定。0117 の Review After 2027-06-04 と同時期で併せて点検)。
- 判定主体: 代表取締役。
- ロールバック手順: 監査対象から ADR どうしの辺を外すのみ(~5min)。蓄積した監査記録は残置。
コスト試算
- 初期: 監査手順への対象追加(サンプル抽出の
adr-index.jsonワンライナー + 判定ルーブリックの手順化) ~1h。 - 継続: 四半期 ~1h(22 件 × 数分のエージェント判定レビュー + judge drift 検証 5 件 + 記録)。年間 ~4h。
- 全数棚卸し前倒し時(別試算・盲点 #3): 辺総数 N に対し概算 N × 数分。N=100 で ~2h、N=300 で ~5〜6h、N=1000 で ~15〜20h。1 回 4h 超で撤退条件(b)再設計レビュー起動。
- 削減効果: 誤った型のグラフによる誤誘導(関係図の誤読・送り先の誤解決)の防止。無点検期間に意味誤りが蓄積してからの全数手直し(推定 ~10h 規模)を回避。検出保証は「誤り率 30% を否定できない」(10 件)から「誤り率 10% を 90% 信頼で検出」(22 件・c=0)へ向上。
Confirmation
- 検証手段:
- 四半期監査の実施記録(抽出 22 件・不整合数・逐語引用・judge drift 不一致率)が残っていること。GAS バッチ分割運用時は全件分の判定記録が継続トークン再開で連結されていること。
- 不整合 1 件以上の四半期に、辺の全数棚卸しが前倒し実施されていること(c=0)。
- judge drift 不一致率が監査ごとに記録され、撤退条件(c)の閾値(2 監査連続 20% 超)と照合されていること。drift 用 5 件のうち少なくとも 2 件が低確信または判定割れ辺から抽出されていること(盲点 #2)。
- 本 ADR の受理をもって ADR-0131 Confirmation 5(起票義務)が履行済みになること(撤退条件(d)発火回避)。
- 初期移行完了後の最初の 2 サイクルで、実測誤り率と辺クラスタ別の偏在を記録し、22 件・c=0 設計値の妥当性および層別抽出設計の要否を再評価すること(盲点 #8)。
- 実行頻度: 四半期ごと。初回は ADR-0131 初期移行完了 + ADR-0107 受理 +
adr-index.json辺フィールド完全性テスト green の直後の四半期。 - 違反時の対応: 監査の未実施が 2 四半期続いた場合は ADR-0131 判定タイミング(受理 3 ヶ月レビュー)で運用体制を見直す。
参照 (References)
- 関連 ADR:
- ADR-0117(受理済・Refine 対象): 監査機構の所有者。本決定はその対象に ADR どうしの辺を加える Refine(本文不変)。サイクル・運用主体・間引き規定を流用し、サンプル数・判定基準のみ RQ-102 で上書き。0117 自身の
Covers:監査 10 件の検出力の弱さは 0117 Review After(2027-06-04)で扱う(本決定スコープ外)。 - ADR-0131(受理済・準拠): 起票義務(Confirmation 5)の履行先が本 ADR。残余リスク(受け入れ検査 10 件の検出力不足)の恒常監視側。
- ADR-0107(Proposed・依存): 監査のサンプル抽出元 =
adr-index.json(0107 実装)。本 ADR の開始条件に ADR-0107 受理 + 完全性テスト green を明示。 - ADR-0130(受理済・準拠): 監査対象の母集団リストは手書きせず
adr-index.jsonから機械抽出。 - ADR-0031(準拠): 不整合修正は frontmatter 追記・修正の経路に乗る(本文不変)。
- ADR-0117(受理済・Refine 対象): 監査機構の所有者。本決定はその対象に ADR どうしの辺を加える Refine(本文不変)。サイクル・運用主体・間引き規定を流用し、サンプル数・判定基準のみ RQ-102 で上書き。0117 自身の
- 関連 PR/Issue: PR #1708(本起票)
- 外部資料:
- RQ-102(3 モデル調査・
docs/research/rq-102-edge-type-semantic-verification-synthesis.md): サンプル数 22/c=0・判定ロジック 5 点・judge drift 検知の設計根拠。 - LLM calibration 文献(例: Kadavath et al. 2022): high-confidence overconfidence の根拠(盲点 #2)。
- RQ-102(3 モデル調査・