0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIで紐解くAI-DLC v2:限界と注意点

0
Last updated at Posted at 2026-07-03

本記事の位置づけ — 本記事は、awslabs/aidlc-workflows リポジトリの規範ルールおよび利用ガイドを素材として、筆者が AI を活用して読み解き、まとめた解釈です。AWS が公式に発表した方法論ではなく、一次資料の翻訳・要約でもありません。

シリーズ — 本記事は AIで紐解くAI-DLC v2 シリーズの一部です。

参照した版Claude Code 実装を対象に、2026 年 6 月時点の v2.1.3(コミット c95070ecore/)を参照しています。Kiro・Codex 実装は対象外で、記述が異なる場合があります。OSS 実装は更新が続いているため、最新の状態は公式リポジトリをご確認ください。


概要

AI-DLC v2 の各機構は、ドキュメントや概念図のうえでは整然と動きます。けれど実装(core/)に踏み込むと、「助言にとどまり止めない検証」「型はあるがまだ発行されない指示」「コメントが実体に追いついていない箇所」といった段差が見えてきます。これらは欠陥の告発ではなく、速く動いている実装に注記・型・文書が追いつく途中の、いまの限界です。

本記事は導入を検討する立場に向けて、各機構の仕組みそのものは個別記事に委ねたうえで、その「限界・注意点」の側面だけを出典つきで一望します。どこまでを仕様として頼れて、どこからが将来分なのか。煽らず誇張せず、ソースに当たって読み解きます。

助言どまりの検証と唯一の停止点

「検証ゲートが自動でブロックする」という理解は、実装上は成り立ちません。ワークフローを止める唯一の機構は人の承認ゲートで、それ以外の「検証」はすべて助言(advisory)です。

止めないセンサー

センサー4本は、すべて default_severity: advisory です。発火フックは常に exit 0 を返す契約で(aidlc-sensor-fire.ts「always exit 0」)、不正な入力もファイル不在も静かに通します。コメント自身が「Blocking semantics defer to the future ralph driver」と書くとおり、ブロック機構はそもそも未実装で、将来のドライバ実装に委ねられています。

判定ロジックも、不確かなものは PASSED と判定します。真理値表(aidlc-sensor.ts のコメント)は8行あり(a/0/b/c/d/e/f/default)、最後の default は「到達しないはず(should be unreachable)」と注記された安全網です。実際に到達する7行のうち、FAILED になるのは1行だけ ―「スクリプトが正常終了(exit 0)し、かつ pass === false」のとき(c)です。タイムアウト超過(a)は FAILED ではなく第3の結果 BUDGET_OVERRIDE になり、spawn 失敗・ツール不在(exit 127)・不正 JSON・想定外の終了コードは、すべて PASSED と判定されます(「Sensor outcomes are advisory」)。

センサーが PASSED を返しても「問題なし」とは限りません。「止める根拠を見つけられなかった」に近い状態です。詳しい仕組みは別記事「センサー」で扱います。

止めないレビュアー

レビュアーは成果物に READY / NOT-READY の判定を返しますが、NOT-READY でもワークフローは止まりません。往復回数の上限に達してもなお NOT-READY なら、未解決の指摘を添えてそのまま承認ゲートへ進みます(「Proceed to approval gate with unresolved findings noted」)。プロトコル自身が「Does not block the workflow — the human always gets final say at the gate」と明記します。学習ゲート(ステージ完了時に学びを記録する助言的な工程)も同じく「advisory and additive — it never blocks the gate」です。つまり機械的な検証(センサー・レビュアー・学習ゲート)はどれも門ではなく助言で、止める判断は最後に人へ集約されます。詳しくは別記事「レビュアー」「承認ゲート」で扱います。

合否を持たないフェーズ境界検証

監査イベント PHASE_VERIFIED は、フェーズ境界をまたぐたびに無条件で発行され、フィールドは "Phase boundary": "X → Y" だけです(aidlc-state.ts)。合否を持たない監査マーカーであって、「このフェーズは検証に合格した」という判定ではありません。名前から「検証ゲート」を連想すると誤読します。詳細は別記事「フェーズ境界検証」「状態と監査」で扱います。

CI やパイプラインに「自動で落ちる門」を期待してこの仕組みを置くと、期待は外れます。助言にとどまる検証は通知と監査行を残すだけで、止める権限は持ちません。品質を強制したいなら、止める役割は人の承認ゲート側に設計する前提になります。

型はあるが未発行の指示

機構によっては、型としては定義済みでも、まだ実際には発行されないものがあります。「在る」ことと「動く」ことは別です。

進行エンジンが次の一手として返す指示(directive)は、判別共用体(種類をタグで見分ける型)として9種定義されています。このうちエンジンが実際に発行するのは7種で、run-stage / invoke-swarm / ask / print / error / doneparked(長尺のワークフローをステージ境界で一時停止する終端指示)が並びます。残る dispatch-subagentpresent-gate の2種は、型としてはあるが発行されません。コメント自身が「present-gate and dispatch-subagent — arrive in later waves; this handler … cleanly omits those two」と書きます(aidlc-orchestrate.ts)。

設計上の「予約」と、未実装は別物です。この2種は将来の波(later waves)に向けた予約スロットで、型に枠を確保しておけば、後で発行を足すときにスキーマを広げずに済みます。読む側としては、型にあるからといって「使える」と前提にしないのが安全です。指示の全体像は別記事「進行の中核」で扱います。

コメントと実体のドリフト

ソースのコメントや散文が、同じ core/ 内の実体とズレている箇所があります。ここでは公式 docs を片側に使わず、core/ 内で完結する食い違い(コード対コード、散文対集計)だけを集めました。

ドリフト コメント/散文の主張 実体(v2.1.3) 出典
ステージ数 docstring が一貫して「31 stage files」 ステージ定義は32本 aidlc-graph.ts:8,1207,1263stages/** 実数え
全ステージ実行スコープ enterprise が「全32を実行する唯一のスコープ」 feature も全32を実行。散文どうしが矛盾 scopes/aidlc-enterprise.mdaidlc-feature.md 対フロントマター集計
スコープ別ステージ数(§8 表) mvp 約25・bugfix 約8・refactor 約9・security-patch 約10、workshop は表に無い 実集計は mvp 22・bugfix 7・refactor 8・security-patch 9、workshop は25で表から欠落 stage-protocol.md §8 対 scopes: 集計
ルール解決チェーン core 内の利用ガイドが {{HARNESS_DIR}}/rules/ と「5層(…→stage)」を記述 コードは core/memory/ 配下で org→team→project→phase の4層、stage 層は無い rules-reading.mdaidlc-graph.tsSCOPE_PRIORITY

scopes: フロントマターを全32本で集計した実数は次のとおりです(参考)。

scope 実行するステージ数
enterprise 32 / 32
feature 32 / 32
workshop 25 / 32
mvp 22 / 32
infra 13 / 32
security-patch 9 / 32
poc 8 / 32
refactor 8 / 32
bugfix 7 / 32

これらは「バグ」ではなく、速く動く実装にコメントや概数の散文がズレている典型です。読む側としては、core/ のコメントや概数表を確定値として鵜呑みにせず、必要なら実体(ファイル数・フロントマター)を数えて確かめるのが安全です。スコープの内訳は別記事「スコープ」で扱います。

注意点の読み方

ここで挙げた限界は、どれも欠陥の告発ではありません。速く動いている実装と、追いつく途中のコメント・型・文書のあいだの、いまの段差です。導入判断の実務に落とすと、次のように読めます。

  • 助言にとどまる検証(センサー・レビュアー)に「自動で落とす門」を期待しない。止めるのは承認ゲートだけ。
  • 型としてある機能(dispatch-subagent / present-gate)を「使える」と前提にしない。
  • core/ のコメントや概数の散文を確定仕様として鵜呑みにせず、必要なら実体を数える。

導入の可否そのものをどう組み立てるかは別記事「導入判断」で、全体像の地図は別記事「概念マップ」で扱います。

参照元

ファイル 内容
core/sensors/ センサー4本。すべて default_severity: advisory
core/hooks/aidlc-sensor-fire.ts 発火フック。「always exit 0」「Blocking … defer to the future ralph driver」
core/tools/aidlc-sensor.ts 判定の真理値表(8行・到達7行)。FAILED は1行のみ、他は PASSED。「Sensor outcomes are advisory」
core/aidlc-common/protocols/stage-protocol.md 承認ゲートが唯一の停止点、§12a レビュアーは「Does not block」、§13 学習ゲートは「it never blocks the gate」、§8 スコープ表
core/tools/aidlc-state.ts PHASE_VERIFIED をフェーズ境界で無条件発行、合否フィールドなし
core/tools/aidlc-directive.ts 指示9種の判別共用体(parked を含む)
core/tools/aidlc-orchestrate.ts 発行7種と、omit する dispatch-subagent / present-gate(later waves)
core/tools/aidlc-graph.ts docstring が「31 stage files」(実体32)。SCOPE_PRIORITY の4層チェーン(stage 層なし)
core/aidlc-common/stages/ ステージ定義の実体32本。各 scopes: フロントマターのスコープ別集計
core/scopes/aidlc-enterprise.md / aidlc-feature.md 「enterprise が全32実行の唯一」対「feature も全32実行」の散文矛盾
core/knowledge/aidlc-shared/rules-reading.md 利用ガイドが {{HARNESS_DIR}}/rules/・「5層」を記述(コードは core/memory/ の4層)

関連記事

前の記事: 状態と監査
次の記事: 導入判断
目次: AIで紐解くAI-DLC v2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?