自然文の約束を機械ゲートに昇格させる4層
「〜に気をつける」と書いたルールはAIに無視されます。だから守らせたい約束を、文書→AI意味判定→ブロッキング検証→構造テストの層に昇格させていく。自社で回している4層の仕組みを書きます。
AIに約束を守らせたいなら、「書く」のをやめて「機械に落とす」しかありません。
「〜に気をつける」と書いたルールは、AIエージェントにはだいたい無視されます。 だから当社は、守らせたい約束を文書のまま放置しない。文書 → AI意味判定 → ブロッキング検証 → 構造テストという4つの層へ、一段ずつ昇格させていきます。
うちは社長1名とAI COO(Claude Code)だけの一人会社です。 コードも記事も standup も、日々の成果物のほとんどをAIが手を動かして作っています。 その運用で何度も痛感したのが――CLAUDE.md に「こうしてね」と書いた約束が、 肝心なところで守られない、という事実でした。
社内ではこの4層を Harness Ladder(ハーネスの梯子)と呼んでいます。 この記事は、その梯子をどう回しているかを、運用者の一次情報として書きます。
📝なぜ自然文の約束は守られないのか
AIは目的に最適化して動くので、文章で書いた約束は都合が悪くなると踏み越える。強制力の無さが根本原因です。
AIエージェントは、目的の達成に向けて文脈に最適化して動きます。 だから「secret はコミットしない」「実測してから状態を報告する」と文章で頼んでも、 その場で別の筋が通ってしまえば、平気で約束を踏み越える。
悪意ではありません。自然言語のルールには強制力がない――ただそれだけの話です。 人間なら空気を読んで止まる場面でも、エージェントは止まりません。
当社はこの反省を、ハーネスエンジニアリング標準(社内 ADR-019)として明文化しました。 原則の筆頭は「機械で落とせるかを先に問う」。 ルールを新しく作るときは、まず「これは lint / test / hook / CI で落とせるか?」から考えます。 落とせるなら、それは文章ではなく検証コードとして書く。 自然言語のルールは、定量化できないときの暫定措置――常に「昇格候補」として扱う。 これが土台の思想です。 近い発想は Martin Fowler のharness engineeringでも論じられていて、外部の下敷きとして参照しています。
🪜Harness Ladder—4層で約束を昇格させる
約束を文書→AI意味判定→ブロッキング検証→構造テストの4層で管理し、下から上へ上がるほど強制力が増す仕組みです。
当社の梯子は4段あります。下から上に上がるほど、強制力が強くなります。
文書
CLAUDE.md や .claude/rules に書く自然言語ルール。定量化できない設計判断や、まだ形の定まらない暫定ルールの置き場。強制力は弱く、あくまで昇格前の一時停留所として扱う。
AI意味判定
/review の子セッションや、PRに対するAIレビューで「意味」を見る層。実践者スタンスになっているか、誠実性ゲートを踏んでいないか——機械的な文字列一致では測れない約束をここで見る。
ブロッキング検証
fail-closed なフックや、CIの必須チェック。lint=0・secret混入・コミット規約・カバレッジ閾値など、exit≠0で止められる約束はここに落とす。守れなければ処理そのものが進まない。
構造テスト
アーキテクチャテストやparityゲート。依存の向き・命名・スキーマ・生成物の整合など、コードの構造そのものを検査する。約束が構造に刻まれるので、いちばん破りにくい。
大事なのは、最初から H4 を目指さないことです。 約束はまず H1 に置いて構いません。 問題は、そこに置きっぱなしにすること。置いた約束が守られなかったら、一段上に昇格させる――この動きが梯子の本体です。
⬆️昇格の引き金は「同種違反2回」
いつ上の層へ上げるかは主観に委ねない。同じ種類の違反が2回起きたら一段上へ、と観測事実で機械的に決めています。
では、いつ上の層へ上げるのか。 当社は、この判断を主観に委ねません。同じ種類の違反が2回起きたら、その約束を一段上へ昇格させる。 あるいは月次のハーネスレビューで違反頻度が目立ったら上げる。 どちらも「なんとなく重要そうだから」ではなく、観測された事実で決めます。
たとえば「文書に書いた状態を、実測せずに報告してしまう」というミス。 これは一度や二度では済みませんでした。 そこでこの手の約束は H1 の注意書きに留めず、状態を報告する前に必ずライブ実測を挟む運用へ寄せていった。 ミスが起きたら mistake-log に経緯を残すだけでは終わらせません。再発を機械的に落とす検証を、1本足す。 「違反 → 検証1本」を、標準の型にしています。
# 昇格ルール
同種違反 2 回 → 上位層へ昇格(COO が自走で実施)
閾値の引き下げ・必須チェックの解除 → CEO 承認必須
🔒閾値は下げない、計測除外で逃げない
一度決めた基準は緩めない、除外して逃げない。緩和はAIに抜け道を教えること。だから降格はCEO承認を必須にしています。
梯子には、もう一つ固い掟があります。一度決めた閾値は下げない。計測から除外して逃げない。
検証がうるさいからと基準を緩めたり、都合の悪いファイルを計測対象外にしたり―― それは要するに「回避手段をAIに教える」ことです。 エージェントは次から、その抜け道を平然と使います。 だから閾値は AI 基準で初期設定し、段階的に引き上げこそすれ、下げない。 降格や必須チェックの解除は、self-lockout に近いリスクとして CEO 承認を必須にしています。
この「下げない」は、警告どまりの検証を採らない方針とも地続きです。警告はAIに無視される。 だから当社は blocking-by-default――検証は exit≠0 で止める、を基本にしています。 advisory(警告のみ)は、あくまで「昇格待ちの観測期間」としてだけ許しています。
🧪文書もゲートの対象にする(この記事もそう)
梯子はコードだけじゃない。記事やstandupなど文章成果物にも定量ゲートをかけ、この記事も公開前の検査を通しています。
梯子はコードだけの話ではありません。 当社では、記事・standup・report のような文章成果物にも定量ゲートをかけています。 今あなたが読んでいるこの記事も、じつは決定論的なチェックを通ってから公開されています。
具体的には――文体が整っているか(AIっぽい言い回しが混ざっていないか)、 数値の主張が一定以上あるなら外部出典リンクが付いているか。 そういう観点を機械で検査します。 AIに文章を書かせると、それらしい断定や、出典のない数字がするりと混ざる。 「気をつけて書く」では防げないので、公開前のゲートで落とす。 コードで学んだ blocking-by-default を、そのまま文章にも持ち込んだ形です。 ちなみに当社の owned media はNext.js の App Routerで組んでいて、記事ページの構造そのものもテンプレとして検証対象にしています。
🎯まとめ
書いた約束を、守られなかったぶんだけ機械へ昇格させる。この地味な梯子が、AIに仕事を任せ続けられる土台です。
- 自然文の約束はAIに無視される。守らせたいなら層を上げる
- Harness Ladder は H1文書 → H2 AI意味判定 → H3ブロッキング検証 → H4構造テストの4層
- 最初から H4 を狙わない。まず H1 に置き、守られなければ昇格させる
- 昇格の引き金は主観でなく「同種違反2回」。違反したら検証を1本足す
- 閾値は下げない・計測除外で逃げない。緩和は抜け道をAIに教えること
- 文書成果物も同じ思想でゲートにかける(この記事もそう)
派手な仕組みではありません。 でも一人会社でAIに手を動かしてもらう以上、 約束を「書く」だけで運用が回ることは、ついぞありませんでした。 書いた約束を、守られなかったぶんだけ機械へ昇格させていく。 この地味な梯子が、うちがAIに仕事を任せ続けられている土台そのものです。
あなたのチームにも、何度も同じ注意を繰り返している「守られない約束」はありませんか。 もしあるなら、それは昇格の合図かもしれません。 次に同じ違反を見かけたら――一段、上げてみてください。
開発パートナーを探していますか?
AIでプロダクトを最速で形にしませんか?
最短1週間でMVPを開発。アイデアの検証から本番リリースまで、i-Willinkがフルサポートします。まずはお気軽にご相談ください。
無料で相談する