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.md Self-Evolution Observation Format、2 週サイクル)に載せる
  • 再評価条件 = N=1 の brake 1 が、旧 N=3 なら捕まえていたはずの欠陥をマージまで通した観測が出たとき。あるいは #1853 の probe が導入されず、検出面の移設が成立しないまま定着したとき
  • 固定軸の false-negative backstop は不変(post-merge observation への経路)。閾値が消えても、旗が立たなかった語句の受け皿はそこに残る