OSIIX Library

AIエージェントの検証範囲を、失敗コストから設計する

確認項目の多さだけでは、その検証が適切だったかを評価できない。

Type
ケーススタディ / Engineering Note
Author
mars70

1. 導入

確認項目の多さだけでは、その検証が適切だったかを評価できない。小さな文言修正の前に広い監査を行えば実装までの距離は伸びる。一方、公開直前には、候補が承認範囲内かを広く見る意味がある。

同じWebサイト運用の2事例を対照する。CASE Aは限定的な編集の前で検証範囲が広がり、編集せず停止した事例、CASE Bは配備前に実行対象を限定した事例である。Evidence強度は異なる。一般法則ではなく、検証の配置を考える枠組みを示す。

2. 「タスクと検証範囲の不均衡」とは何か

「タスクと検証範囲の不均衡」とは、操作段階、可逆性、影響範囲、失敗コストに対して、確認対象や停止点の広さが釣り合わない状態を指す。確認が多いこと自体を問題にする言葉ではない。一方、失敗コストの高い境界で必要な確認が不足している場合も、不均衡と評価できる。

評価したいのは「慎重だったか」や確認数ではなく、失敗が起こり得る地点の手前に、その失敗を見つけられる検証があったかである。

3. CASE A――小さな変更の前で監査範囲が拡張した

依頼は、日本語・英語トップページのHero copyだけを変更するものだった。既存HTML構造を保ち、CSS、metadata、navigation、href、無関係な状態は変更しない境界も明示されていた。

先行する監査では、サイト構造、Library、Projects、Tools、About、sitemap、HeroのHTML/CSSに加え、live HTTP、canonicalとhreflang、remote/live byte parity、配備経路、別機能のruntime boundaryまで対象が広がった。回収済みの完全チャット出力ではCHANGED_FILES: Noneで、Hero実装は行われず、Do not editで停止している。

UIにはWorked for 17m 28sと表示された。これはUI elapsed表示としてのみ扱う。監査処理そのものの正味時間とは断定できず、各確認項目に費やした時間の内訳も分からない。

記事上の評価としては、可逆性の高いtext-only変更の実装前として、検証範囲が相対的に大きくなったと解釈できる。ただし、各確認が不要または無駄だったとは判断できず、範囲拡張の原因も未検証である。

Evidence: Hero変更の指示、サイト現況監査の完全チャット出力、評価境界を記録した保存資料を参照する。

4. CASE B――配備境界で対象を限定した

CASE Bで使用できるのは保存された判断記録である。それによれば、full-tree dry-runに関する記録を受け、deploy-allは実行されず、scope外候補としてRansomware V2の日本語・英語関連ファイルが記録された。その後、配備対象をpublic/index.htmlpublic/en/index.htmlへ限定し、限定配備後はLIVE_VALIDATEDと記録されている。

一方、full-tree dry-runとscoped dry-runの生ログはいずれも未回収である。本稿は出力全体を直接検証しておらず、候補の完全な一覧や、そのまま実行した場合の結果を確定できない。

安全に述べられるのは、「dry-runに関する保存記録を受け、deploy-allは実行されず、配備対象を2ファイルへ限定する判断が行われた」ところまでである。これは配備境界でscopeを見直した記録だが、事故防止や、scope外ファイルが確実に公開されるところだったことの証明ではない。

Evidence: scope限定の判断と配備結果、Ransomware V2関連候補、raw logが未回収であることを示す保存記録を参照する。

5. 2事例を同じ「確認量」で評価しない

次の表は観測事実の一覧ではなく、CASE A/Bを材料にした記事側の評価である。とくにCASE Bは保存された判断記録による限定的な支持であり、raw logを直接確認したCASEではない。

評価軸CASE ACASE B
Task stage編集前deploy前
Reversibilityローカル編集前で高い配備実行前なら戻しやすいが、実行後は公開状態へ影響する
Blast radius承認済みのJA/EN Hero copypublic treeへ広がり得る配備対象
Failure cost誤った文言の反映や既存Hero構造の破損。承認範囲はJA/ENの局所変更未承認対象を公開範囲へ含める可能性
観測された進行結果編集せず停止deploy-allを実行せず、2ファイル限定へ変更したとの記録
Evidence strength完全チャット出力により直接支持保存された判断記録による支持。raw dry-runログなし
適切と考えられる検証範囲対象HTML、構造維持、exact diffを中心にする配備候補全体を確認し、承認済みpathへ実行対象を限定する

前者はまだ変更していない段階、後者は公開範囲へ作用する直前である。同じ確認でも、検出できる失敗と回避できる損失は異なる。

6. リスクに応じて検証を配置する

以下はEvidenceから直接証明された結果ではなく、2事例を材料にした一般的な設計提案(GENERAL DISCUSSION)である。

  • 編集前: 対象を誤読し得る。可逆性は高く影響はローカルである。対象path、禁止事項、既存差分を確認する。
  • commit前: 無関係な変更を履歴化し得る。まだローカルで修正できるが、commit候補全体へ影響する。exact diff、changed paths、最小限のテストを確認する。
  • push前: 誤った履歴を共有し得る。revertは可能でもremote利用者へ影響する。親commit、remote drift、commit内容、push先を確認する。
  • deploy前: 未承認対象を公開し得る。実行前なら停止できるが影響範囲はpublic treeである。配備候補、write set、dry-run、復旧手段を確認する。
  • deploy後: sourceと公開結果がずれ得る。復旧可能でも公開影響は始まっている。対象URL、内容一致、必要な非回帰項目を確認する。

高コストな検証を全gateへ複製するのではなく、編集前はscope、commit前は差分、deploy前は公開候補と復旧可能性、deploy後は最終状態を重く見る。検証の実務上の価値は、そのgateで起こり得る失敗を判別できるかによって大きく左右される。

7. この事例から分からないこと

  • CASE Bのfull-tree dry-runとscoped dry-runのraw logは未回収である。
  • 17m28sには作業別の時間内訳がない。
  • CASE Aで監査範囲が拡張した原因は検証されていない。
  • CASE Bで事故防止の因果は証明されていない。
  • 対象は単一プロジェクトの2事例である。
  • 他のAI agentやプロジェクトでの再現性は検証されていない。
  • 最適な確認量を、このEvidenceから決定することはできない。

そのため、context、prompt、モデル更新、サービス内部の変更、server latencyなどを原因として結論づけることもできない。本稿が扱うのは、残された記録から区別できる作業段階と検証範囲である。

8. 結論

限定的で可逆性の高い編集と、公開範囲へ影響する配備操作では、適切な検証範囲が異なる。確認を一律に増やすことも、一律に減らすことも、この違いには答えてくれない。

実務で問うべきなのは、現在の操作段階、戻せる範囲、影響先、失敗時の損失である。その答えに応じ、対象、差分、配備候補、最終状態の確認を各境界へ置く。今回の2事例は一般法則を証明しないが、「確認量」ではなく「検証の配置」を設計する出発点にはなる。