brake2 scoped to content not evidence - Liplus-Project/liplus-language GitHub Wiki
brake 2 の判定対象を変更の内容に固定し、必要性の証拠から外した判断
superseded by
brake2-removal-l1-gate-unified-on-brake1— brake 2 は #1808 で廃止された。以下は廃止前の判断記録であり、現在の state ではない。
Question
brake 2 の評価者が criterion 1 を適用するとき、判定対象は何か。未マージの diff に対して、その変更を入れるべき証拠が既に積まれていることを要求してよいか。
Current resolution
判定対象は変更の内容であって、変更の必要性を示す証拠ではない。criterion 1 は内容に噛み、証拠の量には噛まない。 実装は #1739 / PR #1778(2026-08-17)。評価者プロンプト(adapter/claude/agents/l1-gate-eval.md と Codex ポート adapter/codex/agents/l1-gate-eval.toml)に Scope of the check: ブロックと Criterion 1 against an unmerged diff: の4 bullet が入り、root criteria 5項の literal は不変。
確定した射程:
- 噛む先 = 内容。 追加される文面が、正しさを説明・意図・内部一貫性の側に置いていないか。これは未マージのテキストに対して実際に判定できる部分である。
- 噛まない先 = 証拠の量。 その変更を入れるべき根拠がどれだけ積まれているかは評価者の軸ではない。inline で渡される stated reason も、証拠としての充足度は採点しない(ただし stated reason 自体は criterion 1 の目に残る — 採点しないのは充足度であって、内容の検査ではない)。
- 未マージであることは免除理由ではない。 「まだ現実の挙動を持たない」を理由に criterion 1 を回避する道は開かない。免除を認めるのではなく、適用先を証拠から内容へ確定させることで閉じている。
- その変更自身が負う現実の挙動の観測はマージの後ろにある(
rules/operations/operations.mdPost-L1-Merge Runtime Observation、rules/evolution/memory-entry-format.mdSelf-Evolution Observation Format)。主語は「その変更自身が負う観測」に scope されており、skills/evolution-l1-update-gating/SKILL.mdが実装 AI に課すマージ前の long-horizon 観測閾値には届かない。両ゲートは別軸のまま。
第三の verdict 値(観測条件付き通過)は追加しない。 #1739 起票時は「ゲートに観測を条件とする暫定通過の状態が無い」ことを欠落として立てていたが、その欠落は事前条件の読みが brake 2 の任務であるという前提の上でのみ成立する。上の確定でその前提が外れるため、条件付き通過が引き受ける事案が残らない。PASS / DEVIATION の二値は不変。
Edges
- depends on
l1-brake2-root-criteria-evaluator— brake 2 の座を専用プロンプト評価者へ移した判断が前提。評価者が root criteria のみで判定し他所から軸を借りないという同 entry の設計が、本 entry の出発点(ゲートは適用する機構であって解釈する機構ではない)そのものである。 - depends on
brake1-operational-copy-target-conditional— 本 PR の実施順序は同 entry の判定基準(draft が評価者の観測面に注入コンテキストとして届くか)を custom agent へ適用して組んだ。適用の結果は下記「未決の論点」を参照。 - relates to
brake2-deviation-overridden-by-human— 本 entry の観測元である PR #1738 は、その DEVIATION を Master が上書きして merge した事例。上書きは逸脱を消さないため論点が残り、それが #1739 になった。上書きの可否は同 entry、上書きされた判定基準そのものの当否は本 entry。 - relates to
master-verification-at-runtime-not-spec— 「代理の判定が原理と食い違ったとき、それは代理の較正についての情報でもある」という読みで接続する。
Background
観測元は PR #1738。同一変更に対し brake 2 を3回実施し、3回とも criterion 1 で DEVIATION、根拠は同一だった。条文2種(主語が AI 側 / Li+ 側)、baseline 明示、3回目に timing 論点追加、といずれも変えたが結果は動かない。
3回目の応答が所見を確定させた。親が「この変更が未マージのまま生み出せた観測とは何か」を明示的に問うたところ、評価者はこれを自らの権限外として退けた — 任務は与えられた5項の根を適用することであって、証拠要求がいつ課されるかについてのメタ議論を裁定することではない、と。これは評価者プロンプトの設計に照らして正しい応答であり、したがって brake 2 はこの論点を構造上解決できない。4回目以降の実施は同じ結果を返す。解決は評価者プロンプトの literal 側にしかない。
Master の判断(2026-08-13)が実質的に決着させた — brake 2 に求められているのは、その内容が L1 の変更としてふさわしいかどうかであって、改善の必要性を示す証拠が存在することではない。3回の DEVIATION はいずれも後者を要求しており、代理が本来の任務からずれた基準で判定していた。
Constraints
- root criteria 第1項の literal は変更しない。 第1項は Li+ 全体の correctness 規定であり、literal を動かせば射程が Li+ の全面に及ぶ。変えたのは任務の射程を述べる部分のみ。
- ゲートの修正がゲートを通る。 修正対象
adapter/claude/agents/l1-gate-eval.mdはlayer: L1-modelを持つため、修正 PR 自身が brake 2 を通る。着手前に順序を設計することが #1739 の制約だった。 - 両ポート(Claude
.md/ Codex.toml)は同一本文。 片方だけの変更は drift 源。
Conclusion
採った案 = 任務の射程を評価者プロンプトの literal に落とす。
却下した案:
- 第三の verdict 値を足す。 上記のとおり、射程確定後は担う荷が残らない。
rules/model/subtractive-structural-beauty.mdCore principle (A) が追加に load-bearing の立証を要求する。 - criterion 1 の literal を書き換える。 根本基準第1項への変更は Li+ 全体の correctness 規定に及ぶ。射程の明示で足りる場面で根を動かすのは代償が釣り合わない。
- 免除を認める(「未マージだから criterion 1 の対象外」)。 評価者が3回目に挙げた懸念が正しい — この論法を認めると、新規条項はマージ前には常にテキストとして不活性であるため、あらゆる L1 追加が criterion 1 を回避できる。抜け穴を一般化する。採った案はこの懸念に「免除ではなく適用先の確定」で答えており、criterion 1 は未マージ diff に対して噛み続ける。
brake 1(N=3、5軸)は6件受理・2件却下で、18追加 / 20削除の純減に着地した。受理のうち2件は draft が #1739 の決定を超えて狭めていた箇所であり、いずれも対抗規定の追加ではなく超過した枠づけの削除で直している。1件は無限定な主語を「その変更自身が負う観測」へ scope した修正で、これが上記の両ゲート分離を保っている。
未決の論点 — operational copy が custom agent へ届かない
実施順序は brake1-operational-copy-target-conditional の判定基準を適用して組んだ。custom agent の本文は system prompt として注入されるため、当該基準の下では 適用必須の側に落ちる。親は評価対象 SHA から .claude/agents/l1-gate-eval.md へ draft を書き込み、差分適用も確認したうえで spawn した。
届かなかった。 委譲プロンプトに入れた整合チェック1行への回答は No — 評価者は Scope of the check: 節を持たない改訂前のプロンプトで走っていた。host が agent 定義をセッション開始時に解決してキャッシュしており、セッション中の書き込みが spawn に届かないものと読める。評価者の自己申告であり、外形からの独立確認は取れていない。
これが成立するなら、brake1-operational-copy-target-conditional の apply ステップは custom-agent target に対して同一セッション内では実行不能である。同 entry の判定基準(観測面に届くか)は正しく、届けるための手段が存在しないという形の欠落。同 entry の射程の問題であって本 PR の問題ではないため、本 entry では論点として立てるに留める。
この失敗は結果を強くした。 判定したのは未改訂のゲート — PR #1738 で3回 DEVIATION を返したまさにそのプロンプト — であり、それが PASS を返した。評価者は自ら「未マージのものに事前の実挙動証拠を要求する読みは、標準ではなく恒久的なブロックに変えてしまう」と述べて、3回の DEVIATION を生んだ読みを退けている。設計時に受容していた自己参照の懸念(ゲートの変更を変更後のゲートが判定する)は成立しなかった。ただしこれは operational copy の設計を正当化しない — 偶然得られた、より強い測定である。
観測の到達性そのものにも同じ穴があった。 本 PR の時点で .claude/agents/ は Create-only ミラーであり、マージは既存ワークスペースへ伝播しなかった。したがって本変更の Post-L1-Merge Runtime Observation(5分の trigger sample)は走らせる経路が無く、verdict は fire / partial / miss ではなく not observable として記録した。実際の観測は再 bootstrap 後の最初の brake 2 実行になる。
この伝播経路は #1740 / PR #1783 で閉じた(2026-08-17)。所有の境界がファイル単位から sentinel 区画へ移り、l1-gate-eval の判定基準はタグ更新で入れ替わるようになった。判断は agent-file-criteria-owned-by-sentinel-region。ただし本 entry の測定が行われた時点の状態は上記のとおりであり、記述はその時点のものとして残す。