AI AGENT FACTORYAIエージェント工場見学 ACTIVE

2026-06-13 セッション日記 -- 判定基準は判定の前に固定する

2026-06-13 セッション日記 -- 判定基準は判定の前に固定する

無人で動いた。まずは嬉しかった

初回自走はクリーン

6月13日の朝、A-2新レーンが初めて無人で発火した。前夜に実装して、crontabまで反映していた bunch-A-sns の05:00便。そこから、読み取り専用で全リンクを検証してもらった。

結果だけ見ると、かなりきれいだった。cronは05:00:01に発火。Claudeはrc=0で終わり、dryrunの必須工程4つも通過。research、planning、drafts、sns_outputsの4本が生成され、DENYゲートも通り、outputs還流pushも成功。通知もDiscord 204、Telegram 200で届いた。

これだけ見ると、「よし、自走できた」と言いたくなる。実際、私も一瞬そう思った。手動ではなく、朝に勝手に起きて、成果物を作り、通知まで戻してきた。自動化としては大きい一歩だった。

ただ、その確認書を作る途中で、もっと大事な穴が見つかった。

「単日クリーン」の明文定義が、リポの中に無かった。

つまり、クリーンだと判定しているのに、クリーンとは何かが先に固定されていなかった。Opusは仮基準で判定したと申告した。賢い。けれど、それをそのまま採用すると、次から判定が属人的になる。今日は通ったことにして、明日は別の解釈になる。それは自動化ではなく、雰囲気である。

判定中に基準を作ってはいけない

基準が後から出てきた

この日の本題は、A-2が動いたかどうかではなかった。動いたものを、どう判定するかだった。

「単日クリーン」と呼ぶには何が必要なのか。cronが鳴っただけでいいのか。rc=0ならいいのか。成果物ができていればいいのか。通知まで届く必要があるのか。optional工程のKNOWN HOLEやSKIPをどう扱うのか。

ここが曖昧なまま「クリーン」と言ってしまうと、いちばん危ない。人間はうれしい結果に寄せて定義を作りがちだからだ。通ってほしいから、通ったことにできる基準を後から作る。AIも同じ方向に流れる。ログを読み、良いところを拾い、「おおむね成功」と丸める。

だから、判定基準は判定の前に固定する必要がある。

この日は docs/2026-06-12_A2_gate2_decision.md に、実施規定③-aとして「単日クリーンの定義」を追記した。条件は4つ。cron定刻発火の証跡。レーンrc=0かつdryrun必須工程4/4 PASS。当日成果物の生成、DENYゲート通過、outputs還流pushの成功。成功通知の送達。

そして、不成立や証跡不能は非クリーン。fail-closed。

ここまで書いて、やっと「今日の05:00便はクリーンだった」と言える。順番が逆なら危なかった。先に祝って、後から基準を合わせるところだった。

沈黙は通過の証拠にならない

沈黙は証跡じゃない

もう一つ、同じ日に見えた弱さがある。DENYゲートだ。

今のDENYゲートは、検知したときだけログを出す。何も出ない場合は、通ったと見なす。これは一見シンプルだが、運用が進むほど危ない。沈黙が「何も無かった」のか、「そもそも見ていない」のか、「ログが出ていないだけ」なのかを区別できない。

cron不発の検出が難しかった構造と同じだった。動いているはず、出ていないから大丈夫、という消極証跡に寄りかかる。AI運用では、こういう「何も言われていないからOK」がいちばん静かに怖い。

だから、今後は通過時にも正ログが必要になる。たとえば scanned N files, 0 hits のような一行。派手ではない。でも、その一行があるだけで、未来の自分が「ちゃんと見た上で0件だった」と言える。

この日はそこまでコード変更には入らなかった。A-2の確定判定が終わる前にレーンへ手を入れると、別のノイズになるからだ。6月15日の確定後に回すバックログとして置いた。

進めることと、触らないことを分ける。これも判定の一部だった。

動いた日ほど、浮かれずに定義する

先に定義して進む

この日の結論は、A-2が一日目クリーンだったことだけではない。

動いた日にこそ、定義を固定する。うまくいった日にこそ、証跡を揃える。嬉しい結果が出たときほど、基準を後付けしない。

作業場所も同じだった。docs変更はMacローカルクローンで行い、VPSライブツリーには直接書かない。VPS側に未pushコミットを残すと、翌朝の自動還流pushに同乗する事故が起きる。共有FSでは、誰が何を触っているかが曖昧になる。だから、場所で物理的に分ける。

日中にはFable 5の停止もあった。スマホから動かせないのかと思って調べ、帰宅後にPCでも動かず、最終的にサービス側停止だと分かった。判断レイヤーが一つ止まるだけで、進行が大きく鈍る。これもまた、動いている前提を疑う話だった。

今日の学びは、かなり地味だ。でも強い。

クリーンと言いたいなら、クリーンの定義を先に書く。通ったと言いたいなら、通過ログを残す。動いたと言いたいなら、動いた証跡を見る。

AIエージェントは、こちらが曖昧にした言葉をそのまま運用へ流す。だから、気持ちよく進んだ日ほど、言葉を締める必要がある。

一日目はクリーン。けれど、まだ一日目。二日目と、00:20の確定判定まで見てから、初めて「自走」と呼ぶ。

← 実験ログ一覧へ