brake1 evaluator floor lowered to one - Liplus-Project/liplus-language GitHub Wiki
brake 1 の評価者数の床を N>=3 から N=1 へ引き下げ、計数に依る面をすべて撤去する
Question
skills/evolution-parallel-agent-eval の評価者数の床は N>=3 であり、既定も N=3, M=all axes, P=1 であった。この床を N=1 へ引き下げ、既定も N=1 とすることは成立するか。成立するなら、複数評価者の存在に依って立っていた面——集約規則・divergence handling・比率 triage signal・固定軸の絶対閾値——はどう畳むか。
Current resolution
床は N=1、既定も N=1。 引き下げの駆動理由はコストではなく検出面の移設である。#1853 で導入する検証サブエージェント(振る舞いを問う probe)が、複数評価者で担っていた検出面を引き受ける。brake 1 の評価者は diff を読む reader 一体で足り、幅は器具の一部であって門ではない。
発火条件は不変。 全自己進化 PR で brake 1 は必須のままであり(rules/evolution/initiator-autonomy.md Merge brake)、L1 Model Layer 変更も semi_auto の patch auto-merge も免除されない。動いたのは幅だけである。門と幅は別軸であり、幅の引き下げを門の緩和として読むのがここでの誤読である。
複数評価者に依って立つ面は削除する。条件付きで残す形は採らない(rules/model/subtractive-structural-beauty.md Core principle (A))。落ちたのは 4 つ。
- 集約規則(safer-side OR / 全員一致 AND / consistent・partial・negative の三値分類)— N=1 では集約する相手がいない。Procedure step 7 の分岐は「何も受け入れなかった/何かを受け入れた」の二値へ書き直した。
- Divergence handling(same-question check → why-diverged)— 割れる主体が一つしかない。事後に緩い記入を捕まえる面自体は残り、着地先を「著者が所見をソースへ解決できないとき、その No が Axis statement form のどの部分に落ちるか」へ移した。
- 比率 triage signal(3/3・2/3・1/3)— 分母が 1 では信号にならない。
- 固定軸の絶対閾値(2-of-3 で即 refine / 1-of-3 は auto-refine しない)— 字面のままなら全 flag が 1-of-1 となり、auto-refine が一度も発火しない状態になる。
固定軸の畳み方は auto-refine の廃止(Master 判断 2026-09-03)。閾値という機構そのものを撤去し、旗の立った語句はすべて step 7 の著者裁定へ回す。裁くのは計数ではなく除去テストをソースへ当てた結果であり、採否とその理由は commit body に載る。閾値を「1-of-1 で即 refine」へ読み替える案は採らない——それは評価者の flag をそのまま採用に直結させることであり、旧 Rationale が防いでいた過剰な刈り取りをまさに起こす。
旧 Rationale は差し替える。 「behavior-vs-impression の境界は文脈依存であり、N=1 の flag は false-positive risk を運ぶ。閾値が load-bearing な L1 文言の刈りすぎを防ぐ」は、閾値の根拠として書かれていた文である。閾値を消して放置すれば根拠なき残置になる。旗が自らの verdict を運ばないことは変わっていない——変わったのは、それを裁くのが計数から除去テストになったことだけであり、刈りすぎを防いでいるのは今や著者の literal 突き合わせである。
再走条件(a)の意味は N=1 の下で狭まる。 「返った verdict が下限に達していない」は、N=1 では「verdict が一つも返らなかった周」を指す。停止理由で決めないという基準自体(brake1-rerun-gated-on-what-the-round-audited)は不変であり、条件(b)(baseline の SHA 不変)も不変。
N は消えていない。 三軸分解(N × M × P)は器具として残り、親が周ごとに選ぶ。N を複数に採った周では重複所見が 1 件へ畳まれるが、裁き方は変わらない——重複していることは採否の理由にならない。N はセルフレビューに「その周を走らせた幅」として記録し、採否の理由には書かない。
Edges
- supersedes
parallel-subagent-eval-three-axis-decomposition— 三軸分解そのものは不変であり、置き換えるのは「既定を N=3 × 全軸 × 単一前提に明定した」部分のみ。既定は N=1 × 全軸 × 単一前提になった - supersedes
parallel-subagent-eval-cost-acceptance— 同 entry は結論として「N=3 を N=1 に下げては」という再提起をskills/model-accepted-tradeoffで退ける参照点を立てていた。本判断はその想定した形の再提起ではない——同じ証拠でコストを蒸し返したのではなく、検出面を #1853 の probe へ移すという新しい構成の上で Master が幅を決めた。予防コスト < 修復コストという判断軸自体は不変であり、置き換わるのは「その予防が N=3 の幅で買われる」という部分のみ - supersedes
brake1-single-round-cap— 単巡 cap 自体は不変。置き換えるのは打ち切りを「N=3 の 1 巡」と述べた部分のみで、1 巡は N=1 の 1 巡になった。降りた欠陥クラス 3 種と再評価条件(本番実害の観測)はそのまま効く - supersedes
brake1-rerun-gated-on-what-the-round-audited— 停止理由でなく監査内容で決めるという基準は不変。置き換えるのは成立条件(a)をN>=3の下限で述べた部分のみで、N=1 の下では「verdict が一つも返らなかった周」を指す - depends on
brake1-firing-closed-by-criterion— 発火条件は本判断で一切動かない。幅と門が別軸であることが、本判断が門に触れないことの根拠 - relates to
brake1-per-draft-axes-held-at-two— 軸は 3 本(per-draft 2 本 + 固定軸 1 本)のまま不変。動いたのは各軸に答える体の数だけ - conflicts with (現時点で対立 entry なし)
背景
2026-09-03、Master の literal な指示:「brake1 の n=3 並行サブエージェントを 1 個のサブエージェントに変更したい」。固定軸の畳み方について同日、閾値機構を残す案(1-of-1 で即 refine)ではなく auto-refine を廃し全 flag を著者裁定へ回す方を選んだのも Master の判断。
起票は #1855。駆動理由として名指しされたのは #1853(導入予定の検証サブエージェント、行動を問う probe)であり、その本体機構は #1848。
制約
- これはコスト削減判断ではない。 コスト軸で読むと
parallel-subagent-eval-cost-acceptanceの想定した再提起そのものになり、skills/model-accepted-tradeoffに照らして退けられるべき形になる。本判断が立つのは、検出面が #1853 の probe へ移るという構成の上である。#1853 が実装されないまま床だけが下がっている期間は、検出面が薄い——これは受容した残余であり、隠さない - 観測 n=0。 引き下げ後の brake 1 が実測でどう振る舞うかは未観測である。本 PR 自身のマージ前 brake 1 は旧仕様(
N>=3)で走っており、床が下がるのはマージ後から。post-merge observation(rules/evolution/memory-entry-format.mdSelf-Evolution Observation Format、2 週サイクル)に載せる - 再評価条件 = N=1 の brake 1 が、旧 N=3 なら捕まえていたはずの欠陥をマージまで通した観測が出たとき。あるいは #1853 の probe が導入されず、検出面の移設が成立しないまま定着したとき
- 固定軸の false-negative backstop は不変(post-merge observation への経路)。閾値が消えても、旗が立たなかった語句の受け皿はそこに残る