メインコンテンツへスキップ

AIエージェント開発・運用の事故録 #12

SeverityとBlockerを分ける

AIエージェント開発を「発見→修正→再QC」の無限ループから収束させる

公開日:2026年9月23日 著者:飯田 友広(Tomohiro Iida)

この記事の結論

  • SeverityとBlockerを別軸で判定する。P0/P1/Highだけでは現在作業を止めない。

  • FindingはCURRENT_BLOCKER / FOLLOW_UP / IGNOREの三択へ即時分類する。

  • Aレーンは固定DoDを閉じ、Bレーンはhardeningと先回り調査を進める。

  • fail-closedは問題が及ぶscopeへ限定し、承認済み修理と非競合作業を残す。

  • 品質効果はReopen rate、throughputはTime to AcceptedとReview loopsで測る。

AIエージェントへ実装とレビューを任せると、問題を見つける速度が上がります。問題の発見速度が完成速度を上回ると、開発は別の形で止まります。

Netsujoでは、問題を見つけるたびに「正しさを高めること」を優先し、現在の完了単位を閉じる責任を後回しにした時期がありました。結果は単純でした。

発見
  ↓
修正
  ↓
再QC
  ↓
新しい発見
  ↓
再修正
  ↓
再QC ...

個々の指摘へ真面目に対応していました。システム全体では、完成を自分で遠ざけていました。

今回の根本原因は、ルール不足より運用判断の失敗にありました。FOLLOW_UPや並行PREPARATIONの考え方は既に設計していました。停止・続行を決める瞬間に、その設計を意思決定アルゴリズムとして使っていませんでした。

Incident Card

INCIDENT:
重要な指摘を見つけるたび、現在のPRと現在のDoDへ取り込んだ

SYMPTOM:
修正→再QC→新しい指摘→再修正が続き、完了条件が実質的に動き続けた

FALSE_ASSUMPTION:
P0 / P1 / Highなら、今回の作業を止めて今すぐ直すべきである

ROOT_CAUSE:
SeverityとCURRENT_BLOCKERを分離せず、FOLLOW_UPを実際の停止・続行判断へ強制していなかった

IMMEDIATE_FIX:
発見した瞬間に CURRENT_BLOCKER / FOLLOW_UP / IGNORE の三択へ分類する

SYSTEM_FIX:
Aレーンは固定DoDを閉じる。Bレーンは後続問題を先回りして調査・再現・修正準備する

REMAINING_RISK:
新しい証拠が現在DoDの未達や進行中事故を示した場合、FOLLOW_UPをCURRENT_BLOCKERへ昇格させる必要がある

1. SeverityとBlockerを同じものとして扱った

最初の失敗は、重大度ラベルを停止判断そのものとして使ったことです。

P0、P1、Highは、その問題が成立した場合の影響を分類するために使えます。CURRENT_BLOCKERは「今回の固定DoDを満たせないか」を判定します。二つは別の軸です。

1. SeverityとBlockerを同じものとして扱った
Severity今回のDoDへの影響判定動作
HighあるCURRENT_BLOCKER影響scopeだけ止め、最小修正する
HighないFOLLOW_UP重大度を維持し、回避・証拠・再判定条件を残して進む
LowあるCURRENT_BLOCKER軽微でも受入未達なので直す
LowないFOLLOW_UP / IGNORE関係があれば後続へ、無関係なら今回から外す

ここで効く問いは「重大か」です。その次に、別の問いを置きます。

この問題は、今回の固定DoDを満たせなくするか。

Highだから停止、Lowだから通過、というショートカットを禁止しました。

2. QCを欠陥探索へ広げ、合格条件を動かした

独立QCの仕事は、固定された候補が固定された受入条件を満たすか判定することです。

ところが、レビューのたびに新しい脅威モデル、将来のhardening、周辺コードの改善余地まで拾い、その指摘を現在PRへ戻すと、レビューは探索工程へ変わります。探索には自然な終点がありません。

Acceptance QC
入力: 固定候補 + 固定DoD + 必須検査
出力: PASS / CURRENT_BLOCKER

Exploration / Hardening
入力: 広いコード・運用・将来リスク
出力: FOLLOW_UP候補 + 再現 + 修正準備

二つの仕事は両方必要です。同じ終了条件で回すと収束しません。

現在の完了判定では、重大な新事実が出たときだけ前提を再評価します。「もっと良くできる」はDoDを変更する理由にしません。

3. 設計済みのルールを、意思決定へ強制していなかった

今回の失敗で最も大きかったのはここです。

FOLLOW_UPも、並行PREPARATIONも、問題を後続へ分離する考え方も既にありました。設計文書へ書いた時点で安心し、実際の判断時には別の行動を取っていました。

ルールが存在する状態と、ルールが運用を拘束する状態は違います。

今はFindingが発生した時点で、必ず次の三択へ落とします。

3. 設計済みのルールを、意思決定へ強制していなかった
判定条件必須記録次の動作
CURRENT_BLOCKER固定DoD未達、必須安全条件未達、現在の事故経路が成立失敗経路、影響scope、証拠、解除条件最小scopeを止めて修正
FOLLOW_UP重要だが今回のDoDを満たせる。実証済み回避で目的と安全性を保てる重大度、担当、回避証拠、再判定工程、再昇格条件Aを進め、Bで準備
IGNORE今回の目的・対象・リスクに関係しない除外理由現在作業へ入れない

FOLLOW_UPは「後で考える」というメモではありません。再判定条件と再昇格条件を持つ管理状態です。

4. 「安全側」を、広すぎる停止へ変換した

fail-closedは安全設計に必要です。停止scopeを誤ると、復旧経路と無関係な作業まで止まります。

たとえば認証経路Aに問題がある場合、必要な停止対象は認証経路Aへの危険な操作です。検証済みの別経路、非競合作業、承認済み修理まで一律に止める理由はありません。

問題があるdomain
  ├─ 危険な通常操作      → STOP
  ├─ 承認済み最小修理    → ALLOW
  └─ 証拠取得            → ALLOW

影響しないdomain          → CONTINUE

停止には4点を必ず持たせます。

  • 何を止めるか
  • 何を止めないか
  • 何を確認すれば解除できるか
  • 誰が解除判定を持つか

「全部止める」は安全判断の省略になり得ます。

5. 局所的な正しさを、全体throughputより優先した

一件の指摘へ正確に対応していても、全体最適になるとは限りません。

実際の失敗は、追加安全性を少し積むために、完成までの時間、再レビュー回数、認知負荷、統合コストを大きく増やしたことでした。

品質とthroughputは対立概念として扱いません。品質の受入条件を固定し、その条件を最短で満たす経路を設計します。

追うべき数字も変わります。

5. 局所的な正しさを、全体throughputより優先した
指標見たいこと
Time to Accepted固定DoDから受入完了まで何時間かかったか
Review loops / objective一つの目的に何回QCを回したか
Follow-up separation rate非blockerを現在PRから分離できた割合
Reopen rate完了後に本当の受入未達が発覚した割合
B→A escalation rate先回り調査が実際のblockerへ昇格した割合
Rework share既に確認済みの範囲を再確認した時間の割合

FOLLOW_UPを増やして完成だけ早めればよい、という設計でもありません。Reopen rateやB→A escalationが上がれば、分離判定が甘い可能性があります。

Aは終わらせる。Bは後から出る問題を減らす

現在は、仕事を二つの責任へ分けています。

Aレーン: Convergence

Aは現在の完了単位を閉じます。

固定DoD
  ↓
実装
  ↓
必須検証
  ↓
Finding triage
  ↓
CURRENT_BLOCKERだけ修正
  ↓
Acceptance
  ↓
COMPLETE

AのDoDは途中で簡単に増やしません。新しいFindingは三択へ分類します。

Bレーン: Preparation

Bは後続問題を先回りして減らします。

広い探索
  ↓
再現
  ↓
影響範囲の特定
  ↓
回避策
  ↓
限定修正案
  ↓
検証準備
  ↓
FOLLOW_UPとして待機

BがAへ割り込める条件も固定します。

  1. 新しい証拠が現在DoDの未達を示した
  2. 現在の操作に必須な安全条件が崩れた
  3. 進行中の事故経路が確認された
  4. 現在候補の前提が変わり、既存Evidenceを使えなくなった

P0/P1/Highというラベルだけでは割り込みません。

QCの出力を「修正指示」から「判定材料」へ戻す

レビューAIが返すべき情報を、次の形へ寄せています。

FINDING
severity: High
confidence: High
failure_path: ...
affected_scope: ...
relation_to_current_change: ...
relation_to_frozen_DoD: ...
workaround_available: true / false
recommended_class: CURRENT_BLOCKER / FOLLOW_UP / IGNORE
re_evaluate_when: ...

最終分類は統括側が行います。レビューAIがHighを付けた瞬間に全工程が停止する構造は作りません。

これでQCは「欠陥を何個見つけたか」を競う役割から、現在候補を受入可能か判断するための証拠提供へ戻ります。

Evidenceと未検証範囲

今回確認できた事実と、今後測る内容を分けます。

Evidenceと未検証範囲
内容状態
Severityと停止判断を分ける設計が既存資料にあったOBSERVED
レビュー中に合格条件が増える問題を既に記録していたOBSERVED
現在修理と広い基盤改善を別目的へ分ける考え方があったOBSERVED
その設計を日々の停止・続行判断へ一貫して適用できていなかったOBSERVED
CURRENT_BLOCKER / FOLLOW_UP / IGNOREを毎回のFinding triageへ強制するADOPTED RULE
A/B二レーンで収束と先回りを分けるADOPTED RULE
完了時間や再レビュー回数がどれだけ改善するかNOT YET MEASURED

対策を書いたことを効果の証明には使いません。今後はTime to Accepted、Review loops、Reopen rateを継続して測ります。

運用時のチェックリスト

  1. 今回のDoDは着手時に固定されているか
  2. FindingのSeverityと、今回のDoDへの影響を別々に判定したか
  3. Highというラベルだけで停止していないか
  4. Lowというラベルだけで受入未達を許していないか
  5. QCは固定候補と固定DoDに対する受入判定になっているか
  6. 将来hardeningはFOLLOW_UPへ分離したか
  7. FOLLOW_UPへ回避証拠・担当・再判定工程・再昇格条件があるか
  8. 停止scopeは問題のあるdomainと操作に限定されているか
  9. BからAへの割り込み条件を満たしているか
  10. 完了速度と再オープン率を同時に測っているか

運用規則として残したこと

問題を見つける能力が高いほど、終了条件の設計が必要になります。

Netsujoで今回変えたのは、レビューの賢さそのものではありません。停止・続行の判断規則です。

Finding
  ↓
CURRENT_BLOCKER → 今回のDoDを閉じるために最小修正
FOLLOW_UP       → 重大度を保ったままBへ分離
IGNORE          → 今回の目的から外す

Aは終わらせる責任を持ちます。Bは後から出てくる問題を減らす責任を持ちます。

この二つを推奨事項として置かず、Findingが発生するたびに必ず通る判断手順へします。設計したルールは、運用を拘束して初めて機能します。

この記事の著者

飯田 友広

飯田 友広

代表取締役

Netsujo株式会社 代表取締役。京都発のWeb3・AI実装スタートアップを2023年6月に創業。Webサイトを営業基盤として捉え、経営・営業・検索・生成AI・コンバージョン・計測を横断して課題と改善優先順位を整理する「Netsujo SIGNAL」を設計・運営。さらに、ChatGPT・Codex・Claude Codeを状態再構築、競合回避、独立QC、Exact-head検証、停止、復旧まで含む制御ループで運用する社内AI開発基盤「Netsujo Agent OS」を設計・実運転。Netsujoとして京都ビッグデータ活用プラットフォームに参画(小規模企業会員(ベンチャー))し、同プラットフォーム発のワーキンググループ「Chain Up KYOTO」にも参画(2026年3月10日〜)。IVS2026サイドイベント「なぜ京都でWeb3.0ビジネスなのか」はNetsujoとして京都府庁旧議場で主催・企画・登壇・運営(2026年7月2日/京都府 総合政策環境部 デジタル政策推進課は共催)。京都美術工芸大学・龍谷大学での講義に加え、京都高度技術研究所(ASTEM)、旅館業界、就労支援施設、Open Source Conference等で登壇実績。ITコミュニティ「みやこでIT」(connpassメンバー638名・イベント175件・2019年2月から運営)運営。NPO法人NEMTUS理事、BAR KRYPTO運営。Netsujoはソーシャル企業認証制度「S認証」の認証企業(2026年2月認証・2026年4月公表)。技術領域はWeb3/ブロックチェーン/DID/NFT/生成AI/コミュニティ運営。

プロフィールを見る

この記事が向いている方

  • AIレビューで指摘を直すほど、完了条件が増えて開発が終わらない開発責任者

  • P0/P1/Highの指摘が出るたびにPR全体を差し戻しているチーム

  • 安全装置を増やした結果、復旧作業と通常作業まで止まりやすくなった組織

— 壁打ち相談

読者のよくある相談

記事を読んだ後に「自分の状況だとどう判断すべきか」を整理するための壁打ち相談を受け付けています。下記のような相談例が当てはまる方は、お気軽にご連絡ください。

Q. Highの指摘が出たら、必ず現在PRを止めるべきか

Severityと今回DoDへの影響を別々に判定し、現在DoDを阻む場合だけCURRENT_BLOCKERへします。

Q. FOLLOW_UPへ回すと品質を落とさないか

重大度を維持し、回避証拠・担当・再判定工程・再昇格条件を残します。Reopen rateも同時に測ります。

Q. 先回り調査を止める必要があるか

Bレーンで継続します。現在DoDの未達や進行中事故が証明されたときだけAへ割り込みます。

上記いずれかが該当する場合、初回30分の壁打ち相談で論点整理に対応します。記事に書ききれない個別事情を踏まえた判断材料が必要な段階こそ、壁打ちが活きやすいフェーズです。

AI導入・開発運用設計のご相談

AIレビューを、収束する運用へ変える

固定DoD、Finding triage、FOLLOW_UP、A/Bレーン、scope-local fail-closedを現在の開発フローへ落とします。

AI導入について相談する