main agent procedures carry behavior only - Liplus-Project/liplus-language GitHub Wiki

main-agent-procedures.md の常時ロード本文は、メインが場面で何をするかを決める文だけを載せる

Question

rules/operations/main-agent-procedures.md(常時ロード、33,592 B)の本文から、rules/model/liplus-coding-rule.md Body States Behavior の識別線(その文を読む者の行いが変わるか)で、メインが運用の場面で何をするかを決めていない文を外したとき、外した文はどこが持つか。実行に使う手順は、それを使う場面で読まれる面に置く。

Current resolution

常時ロード本文は、メインの運用場面(issue、ブランチ、PR、マージ、人間確認、webhook 取込、引き継ぎ)で行いを決める文だけを持つ。Li+ の source を編集するエージェントだけが使う手順は skill が持ち、設定する側の前提は adapter / docs が持つ。

PR #2120(issue #2117)で 33,592 B → 30,476 B(-3,116 B、約 9%)。見出し・semantic tag は ## Position を除いて不変。## Optional Webhook Notification Flow(adapter の byte-frozen ブロック)には触れていない。

文を読んで識別線を当てた結果は次のとおり。

外した文

位置 識別線の結果 移し先
## The bar and its pair の「実行主体がメインになりうる」の 2 条件と、それを読む単位(要求ごと、ファイルごとではない) 使われるのは operations-* skill に要求を書き加える場面だけ。メインの運用場面では行いが変わらない skills/operations-on-actor-placement/SKILL.md の Actor criterion(文面のまま)
同節の維持ルール(正本を移してポインタを残す)、誤った修復 2 つ、検出サイン、運び手にはポインタを残す分岐、description の絞り込みとリダイレクトスタブ、編集できないアダプタリテラルの扱い 同上。Li+ の source を編集するエージェントの行いだけを決める 同 skill の Maintenance rule(文面のまま。リダイレクトの所在だけ「main-agent-procedures.md に持つ」へ直した)
## Position(Layer = / Requires = / Load timing = と 1 文) 行いが変わらない。Layer と Load timing は frontmatter(layer: L4-operations、alwaysApply: true)と同一、1 文は The bar and its pair の対が述べている frontmatter と The bar and its pair の対(新しい置き場は作らない)
## Foreground webhook notification intake の Preconditions:(github-webhook-mcp >= v0.11.3、MCP サーバーの登録場所) 取込の場面でメインが何をするかを決めない。配信を設定する側の前提 adapter/claude/hooks-settings.md の mcp_tool entry behavior と docs/B.-Configuration.md(既に同じ内容を持つ)

判断の要点は「外した文が誰の行いを決めていたか」である。3 か所とも、メインの運用場面で読む者の行いは変わらない。維持ルールと判定基準は、読む者が Li+ の source の編集者(実装サブエージェント、または不在時フォールバックのメイン)に限られるので、skills/evolution-rule-effect-measurement が「Li+ source に行を足す瞬間」を description に名指すのと同じ形で、編集の瞬間を description に名指す skill へ置いた。

残した文とその理由

  • 禁止と対(The bar and its pair の対の 1 文、メインの読める面の定義)。メインが読んでよい面を決める。
  • 凍結ブロックから正本へ向かう案内。adapter の ## Optional Webhook Notification Flow が名指す skill はリダイレクトスタブで、手順は Foreground webhook notification intake にある、という 1 文。issue #2117 の制約 2。
  • Canonical. とポインタ先の skill が保持するものの行。#1800 が「適用の瞬間に使われる情報」として残すと判断した行であり(docs/4.-Operations.md の「節頭の配置理由を落とした(#1800)」)、その判断を覆す測定が無い。サブエージェントを停止条件や repo-first 実行面へ導く行を含む。
  • 所有判定 step 2 の残存制限と「step 2 を作成に狭め戻さない」禁止。measurement-caught-what-read-based-removal-test-missed が、読みの除去テストを通した削除を実測が 1 件差し戻した型として記録した文。機序を述べる平叙文で、常駐の既定の傾き(迷えば保持)に逆らう側にある。
  • not connected が毎ターン出るときの扱い。読み手がそれを見たときの行いを決める。

Edges

  • depends on source-body-behavior-only-reasoning-relocates — 識別線と、外した文は削除でなく移す規則
  • depends on measurement-caught-what-read-based-removal-test-missed — 同じファイルの蒸留を実測が 1 件差し戻した。「既定の傾きに逆らう側の文」は外さない
  • relates to operations-adapter-bodies-carry-behavior-only — 同じファイルの理由・重複の蒸留(#2110)。本件は文の役割(誰の行いを決めるか)で切った
  • relates to li-plus-always-on-footprint-load-bearing — 同 entry が却下したのは、毎瞬間に効く規律(must-fire)を skill へ移す案。本件が skill へ移したのは Li+ source の編集の瞬間にだけ使う手順で、その瞬間の発火は rules/operations/operations.md の 1 文(常駐)と The bar and its pair の 1 行ポインタが常駐で引く。却下の理由(想起の隙間)は動かさない

Background

issue #2117。常時ロードの rules/ 全体は 129,280 B、rules/operations/main-agent-procedures.md は単独最大で、#1787 の移設で常駐面へ集まった。#1800(節頭の配置理由)と #2111(理由・重複)で 2 回蒸留した後の残りを、文の役割で読み直した。

Constraints

  • 各場面でメインが実行する手順は変えない。The bar and its pair の対を崩さない(issue #2117 の制約 1)。
  • adapter の ## Optional Webhook Notification Flow は byte-frozen で、触らない。
  • 参照(rules/ skills/ adapter/ docs/ tests/)は変更後もすべて解決する。tests/test_skill_reference_resolution.py が節名の解決を見ており、The bar and its pair の節名は残した。
  • L1 Model Layer のファイルと cold-start-synthesis.md、ルール・skill 間の重複整理には触れない(issue #2117 の制約 6)。

Conclusion

採用: 維持ルールと判定基準を、編集の瞬間に読まれる skill(operations-on-actor-placement)へ移し、## Position と設定前提を外して、メインの運用場面で行いを決める文だけを常駐させる。削れた量は約 9% で、常駐面には新しい skill の description(358 B)が加わる。

却下: 量を出すために Canonical. 行や所有判定の残存制限まで外す案。前者は #1800 の判断を覆す測定が無く、後者は実測が差し戻した型そのものである。

Related