brake1 round cap removed recurrence escalates - Liplus-Project/liplus-language GitHub Wiki

brake 1 の往復上限を撤廃し、同じ指摘の再発を人間へ上げる

Question

brake 1(skills/evolution-parallel-agent-eval)の収束ループは、上限 3 往復で打ち切ることで終わりを担保していた。その上限を外すとき、ループの終わりは何が担保するか。

Current resolution

brake 1 の往復に上限は無い。ループの出口は「指摘ゼロのラウンド」であり、同じ指摘が再発したら親は次のラウンドを開かずに人間へ上げる。

  • 出口は据え置き。 ラウンドが所見を 1 件も返さなければ、そこで抜ける(skills/evolution-parallel-agent-eval/SKILL.md Procedure step 8)。
  • 再発 = 以前のラウンドの裁定が決着させた指摘と実質同じ指摘が、後のラウンドに再び上がること。 決着とは「受け入れて修正した」か「却下した」かのどちらか。どちらと同じでも再発に数える。
  • 再発の判定者はスケジューラである親。 著者が CI green で戻ったとき、親はそのラウンドの所見を以前の裁定と突き合わせて読む。再発があれば次のラウンドを開かず、再発した指摘とそれが繰り返している以前の裁定を示して人間へ上げる。親がループの内側で所見を読むのはこの判定のためだけであり、却下の当否の判断・修正の指示・軸の開き直しはしない(rules/evolution/initiator-autonomy.md Merge brake, Channel)。
  • 同一ラウンド内の再実行上限は別軸として残る。 同じ baseline に対する 3 回目の試行が床に届かなければ人間へ上げる(step 7 Re-run)。これは 1 往復の内側の試行を数えるもので、往復をまたいで数えない。
  • 親は出口で PR スレッド全体を読み、セルフレビューとマージ判断に入る(step 9)。点検の位置は変わらない。

Edges

  • supersedes brake1-bounded-convergence-loop-on-pr-comments — 置き換えるのは「上限 3 往復」と「収束は上限が担保する」の 2 点だけである。PR コメントを直接の伝達面とすること、裁定の置き場が PR コメントであること、評価者を毎ラウンド新規に spawn すること、却下は loop の内側で最終であること(著者は裁き直さない)、親の点検が出口 1 回であることは、同 entry のまま生きている。同 entry の再評価条件(上限内で打ち切った merge が本番実害を出したとき)は、打ち切りが無くなったので対象を失った。同 entry が引き継いでいた brake1-single-round-cap 系譜の「降りた欠陥クラス」のうち、上限の外に落ちていたもの(誤った却下を含む)は、以降のラウンドで再び上がった場合に限り、再発として人間の前に出る経路を得た
  • depends on brake-adjudication-by-resumed-author — 裁定主体(再開した著者)は不変。再発の判定は裁定ではなくスケジューリングの一部として親に置いた
  • depends on brake1-rerun-gated-on-what-the-round-audited — 同一ラウンドの再実行判定とその Ceiling(人間へ)は不変。旧仕様では「数字が同じで宛先が違う」2 つの 3 があったが、往復側の 3 が消え、残るのは人間へ上げる側だけである
  • conflicts with (現時点で対立 entry なし)

背景

2026-09-26、Master 決定(Pullcept の部屋)。Master が「brake1 の 3 回までの制限の撤廃」を依頼し、上限を外すと指摘と修正がいつまでも続きうることを Lin が確認したのに対し、安全策として「同じ指摘が何度も繰り返されたら人間に上げる」を入れると決めた。

続けて Master が「レビューの結果対応自体を見送りする場合」を問い、Lin はいったん「却下済みは再提起されないので見送りでは堂々巡りにならない」と答えた。その後 Lin が訂正した。評価者への「却下済みを出し直さない」は指示であって構造で担保されておらず、上限の無い形ではそれだけでループが続きうる。Master はこの訂正案を承認し、却下済みの指摘の再提起も再発に数えることになった。

起票 = #2101。

制約

  • ループの終わりに数値の上限を置かない。 Master の依頼そのものである。終わりは、出口(指摘ゼロのラウンド)と、再発時の人間へのエスカレーションの 2 つで担保する
  • 親はスケジューラから降りられない(brake1-bounded-convergence-loop-on-pr-comments 制約の基板制約)。再発の判定を置ける主体は、ループの外に立つ親しか無い。著者は当事者であり、評価者は毎ラウンド新規で以前のラウンドを持たない
  • 親がループ内で所見を読むことは、監督の復活ではない。 読む目的は「以前の裁定と同じか」の 1 点に限る。当否を判断した時点で、この loop が外した裁定役が内側へ戻る
  • 却下の最終性は保つ。 著者は再発した却下済みの指摘を裁き直さない。再提起そのものを止める構造は無いので、止まらなかったときの行き先を人間に置いた
  • 「実質同じ」の判定は数値化しない。 判定者(親)の意味的類似の判断に委ねる
  • 受容した代償 = 毎ラウンド新しい指摘が出続ける限り、ループは終わらない。再発ではないためエスカレーションも起きない
  • 再評価条件 = 再発でもない新しい指摘のためだけにラウンドが伸び続け、コストが目に見えて膨らんだとき。あるいは、再発の判定が割れて人間へのエスカレーションが頻発し、人間の負荷になったとき

結論

採用:往復上限を撤廃する。出口は指摘ゼロのラウンドのまま。受け入れて修正した指摘、または却下した指摘と実質同じ指摘が再発したら、親が次のラウンドを開かずに人間へ上げる。

却下した案:

  • 上限を撤廃し、出口(指摘ゼロのラウンド)だけで止める。 修正が効かない指摘や、却下済みを出し直す評価者がいると、ループが終わらない
  • 再発の判定を著者に置く。 著者は指摘の当事者であり、自分の修正が効かなかったかを判定する位置にいない
  • 受け入れて修正した指摘の再発だけを数え、却下済みの再提起は評価者への指示に任せる。 当初はこの形で起票したが、指示は構造で担保されておらず、上限の無い形ではそれだけでループが続きうるため、Master の承認を経て広げた

関連

  • issue #2101 — 本判断の実装
  • issue #1863 / PR #1864 — 上限 3 往復の収束ループを導入した実装