initiator autonomy rule carries behavior only - Liplus-Project/liplus-language GitHub Wiki
rules/evolution/initiator-autonomy.md の常時ロード本文は振る舞いだけを載せ、tests/** の散文規則は書く瞬間に読まれる skill へ移す
Question
常時ロードされる rules/evolution/initiator-autonomy.md の本文から、rules/model/liplus-coding-rule.md Body States Behavior の判別線(読んだ者の行いが変わるか)で再掲・理由・説明を外したとき、何が本文に残り、外したものはどこが保持するか。あわせて、振る舞いではあるが適用の瞬間が限られる文(tests/** の散文規則)をどこに置くか。
Current resolution
本文は、brake 1 の発火位置・裁定者・チャネル、self-evolution PR の定義(条件 1・2 と governed surface の基準)、Scope、Recovery axis、および保守規則(再掲しない・数値を持ち込まない・序数ではなく名である)だけを持つ。tests/** の散文規則は skills/operations-on-docs-ownership/SKILL.md Prose in tests に置き、本文にはそこへのポインタ 1 行を残す。
PR #2125(issue #2123)で本文 10,758 B → 7,665 B(−3,093 B、−28.7%)。この PR より前に同ファイルへ当てた 1 周目(理由の剥ぎ取り)は evolution-task-rule-bodies-carry-behavior-only にある。本 entry は 2 周目であり、主に外したのは再掲と説明である。
外したものの合流先(既存の面が既に保持しているもの)
| 外した記述 | 合流先 |
|---|---|
| 冒頭の目次文、「アダプタは宣言・本ルールは詳細」 | docs/2.-Evolution.md ロード条件表、rules/evolution/autonomy-block-shape.md Maintenance ref resolution |
| 「ユーザーリポジトリの bug-fix PR と人間起票の PR は対象外」(条件 1・2 から導ける) | docs/2.-Evolution.md Evolution Loop 節 |
| Scope の「hooks は項目を持たない」「path の名指しは行使済み権限の記録」 | brake1-firing-closed-by-criterion(背景・制約) |
| Position の「実装は常に委譲なので、親は working tree ではなく報告を手に brake に着く」 | implementation-always-delegated、brake-evaluator-baseline-integrity、docs/2.-Evolution.md |
| rule effect measurement の位置・発火条件・主体・記録の再掲 | skills/evolution-rule-effect-measurement/SKILL.md Position on the self-evolution PR pipeline |
| 往復の終わり方(再発で人間へ)の再掲 | skills/evolution-parallel-agent-eval/SKILL.md Procedure step 8、brake1-round-cap-removed-recurrence-escalates |
| 「L1 変更が brake の代わりに持つ他の軸」の列挙、「release / 不可逆の人間ゲートは不変」 | skills/evolution-l1-update-gating/SKILL.md、rules/operations/execution-mode.md、rules/operations/operations.md Post-L1-Merge Runtime Observation、同ファイル Existing maintenance rules still apply / Recovery axis、brake2-removal-l1-gate-unified-on-brake1 |
節 Post-merge axis |
rules/operations/operations.md Post-L1-Merge Runtime Observation(Separation from existing observation axes)、rules/operations/main-agent-procedures.md Merge Execution |
節 Boundary clarification(Sheepdog 三軸の位置づけ) |
docs/G.-Sheepdog-Engineering.md |
本 entry が保持する理由
- loop の内側の主体が
skills/model-loop-safetyを保持しない理由(上限の無い loop について)。 上限の無い loop で収束を担保するのは、出口(所見の無いラウンド)と、再発時に親が次のラウンドを開かず人間へ上げることの 2 つである。loop-safety の判断を loop の内側の主体(著者・評価者)に持たせると、数える主体が loop の内側に残り、その主体が押し問答を決着させる位置に戻る。これは、この loop が裁定役を外した設計(brake-adjudication-by-resumed-author/brake1-round-cap-removed-recurrence-escalates)と逆向きになる。振る舞いとしての「loop-safety の判断をここで回さない」はskills/evolution-parallel-agent-eval/SKILL.mdProcedure step 8 が持つ。旧 entrybrake1-bounded-convergence-loop-on-pr-commentsの制約にあった同種の理由(「収束は上限が担保し、skills/model-loop-safetyの判断を親が保持する形は不要になった。 上限は run ごとに読むものではなく固定であり、ループの内側に数えている actor は居ない」、強調記法は除いた)は、上限の存在を前提にしていた。上限を撤廃した現行の形には当てはまらないため、ここで上限なしを前提に導き直した。 tests/**の散文規則を skill へ移した判断。 この規則は振る舞い(tests/**の docstring / コメントが述べてよいこと)であり、理由として剥いだのではない。変えたのは届き方である。適用の瞬間はtests/**の散文を書くときだけで、書き手は実装サブエージェントになる(実装は常に委譲、implementation-always-delegated)。Parent retainsにも「サブエージェントが持たない面」にも当たらないため、operations skill に正本を置いてよい(rules/operations/main-agent-procedures.mdThe bar and its pair)。移した後も届く読み手は 3 つある。1 つ目は実装サブエージェントで、description に「tests/**の散文を書く直前」の瞬間を足したので invoke で届く。2 つ目は brake 1 の Axis B 評価者で、規則の探索先にskills/**の本文を含むため届く。3 つ目は substrate が無いときに直接実行する親で、実装サブエージェントと同じく invoke で届く。移設元は常時ロード面にポインタ 1 行を残し、Governed surface でtests/**を読んだ者が規則の存在に行き着けるようにした。- 受容した対価。 常時文脈に本文が入る形から、description 一致で invoke される形に変わった。書く瞬間に invoke されるかどうかは、サブエージェントの裁量に依存する。その取りこぼしは brake 1 の Axis B(差分の各行を縛る規則を
skills/**まで探す)が拾うので、ゲートの位置での検出面は変わらない。
Edges
- depends on
source-body-behavior-only-reasoning-relocates— 判別線と移設の規則そのもの - depends on
judgment-record-pointer-requirement-dropped— 理由を剥いだ跡にポインタを置かない(tests/**のポインタは理由ではなく移した振る舞いへの行き先であり、これとは別) - depends on
brake1-round-cap-removed-recurrence-escalates— loop-safety を内側に持たない理由は、上限の撤廃と再発時の人間エスカレーションという現行の終わり方の上に立つ - relates to
evolution-task-rule-bodies-carry-behavior-only— 同じファイルの 1 周目(理由の剥ぎ取り、#2109) - relates to
main-agent-procedures-carry-behavior-only— 同型。編集の瞬間にだけ使う規則を、その瞬間に読まれる skill へ移した先例 - relates to
brake1-firing-closed-by-criterion— Scope から外した 2 文の合流先
Background
issue #2123。rules/evolution/initiator-autonomy.md は毎 session 全体が文脈に入る面にあり、10,758 B あった。issue は 3 つの仮説を置いた。仮説 1(tests/** の散文規則は書くときだけ使う)は成り立った。仮説 2(Merge brake に再掲・理由が残る)も成り立った。仮説 3 は前半(Boundary clarification は説明)だけが成り立った。後半の Scope「A path enters this list on a measured run ...」は、この一覧を編集する者の保守規則であり、その読まれる瞬間がこのファイルを読むときなので、本文に残した。
brake 1 round 1(PR #2125)が 2 件を指摘した。loop-safety の理由を名指した wiki entry が実際にはそれを書いていなかった件と、tests/** 規則の移設判断が wiki に無かった件である。どちらも受け入れ、本 entry を書いた。
Constraints
- 振る舞いは変えない。brake 1 の発火位置・裁定者・チャネル、self-evolution PR の定義、Recovery axis の人間ゲートは文言を保つ。
- アダプタが名指す節(Merge brake / Recovery axis / Existing maintenance rules still apply)と、そこで名指される内容(human = final judge の軸)は本文に残す。
- 条件 2 の誤読ガード(
Both, and neither alone. ...)は、#1700 で実測された「連言の片側だけで判定する」誤りに当たる文なので、振る舞いとして残す。 brake 1が序数ではなく名であるという 1 文は、brake2-removal-l1-gate-unified-on-brake1が Merge brake で閉じると決めているので、短くして残す。
Conclusion
採用 = 再掲・説明・理由を外し、既存の面が持たない理由と移設判断を本 entry が持つ。tests/** の散文規則は skills/operations-on-docs-ownership/SKILL.md へ移す。
却下 = 理由を docs と PR 本文だけに任せる案。Body States Behavior の Order は、剥いだ作業単位が判断記録を書くことを求めている。issue #2123 の制約 2 も、理由の置き場を wiki の Decision Structure と名指している(#2109 / PR #2112 でも同型の案が brake 1 で指摘され却下されている)。
却下 = tests/** 規則を常時ロード面に残す案。適用の瞬間が限られる振る舞いを毎 session 全体に載せることになり、#2123 の目的に反する。