Skip to content

evolution rule carries behavior only

Yoshiharu Uematsu edited this page Sep 30, 2026 · 2 revisions

rules/evolution/evolution.md の常時ロード本文は振る舞いだけを載せ、レイヤーの位置づけと他面の写しは持たない

Question

常時ロードされる rules/evolution/evolution.md の本文に、rules/model/liplus-coding-rule.md Body States Behavior の識別線(読んだ者の行いが変わるか)を 2 周目として当てたとき、何が本文に残り、外したものはどこが保持するか。

Current resolution

本文は、ループの正本への 1 行の転送点(Evolution Layer)、L1 のランタイム不変条件を再定義しないこと・蒸留したパターンを issue で提案し直接編集しないこと・Li+ ソース更新が標準のパイプラインを通り運用ルールを迂回しないこと(Evolution Axis Separation)、cold-start での昇格候補の surface 契約(Pattern Detection Surfacing At Cold-start)だけを持つ。レイヤー位置・責務の一覧・一次軸と現在の状態・読み手 / 書き手対の説明は持たない。

issue #2140 で 3,943 B → 1,752 B(−2,191 B、−55.6%)。1 周目(理由の剥ぎ取り)は evolution-task-rule-bodies-carry-behavior-only にある。本 entry は 2 周目で、主に外したのは位置の記述と他面の再掲である。H1 / H2 の見出しと semantic tag は変えていない。

外したものの合流先

外した記述 合流先
Evolution Layer の Layer = / 自己更新面の一文 / Requires = / Load timing = frontmatter(layer: L2-evolution、alwaysApply: true)と docs/2.-Evolution.md Purpose Declaration 節。task-rule-carries-behavior-only / operations-rule-carries-behavior-only が ## Task Layer / ## Operations Layer 相当を外したのと同型
Evolution Layer の Foregrounds(責務の一覧) docs/2.-Evolution.md のロード条件の表。各 skill は description 一致で発火し、常時ロードの rule は索引を経ずに届く
Evolution Layer の Backgrounded here(ランタイム不変条件は L1 に残る) 同じファイルの Evolution Axis Separation 1 行目
Evolution Layer の「このレイヤーは Li+ が自分を観測し書き換える面」「Core = 走るためのルール / Evolution = ルールを書き換えるためのルール」「両レイヤーは層内順序に従う」 docs/2.-Evolution.md 冒頭と Purpose Declaration 節。層内順序は rules/model/axis-separation.md
Evolution Layer の一次軸・到達目標・現在の状態(判断層 Sheepdog 到達、brake 1、基質層の保留) 起動権限と brake は adapter/claude/CLAUDE.md の Evolution_Initiator_Autonomy と rules/evolution/initiator-autonomy.md。目標と現在の状態は docs/2.-Evolution.md Purpose Declaration 節、基質層は docs/G.-Sheepdog-Engineering.md。「現在の状態」は時間で古くなる記述で、常時ロード面に置くと読み手が辿った時点の事実と食い違う
Evolution Axis Separation の Relation to L1 / L3 / L4 ...: の見出し語と「進化はランタイムルールが surface する観測を使う」 docs/2.-Evolution.md 他レイヤーとの接続節。本文には禁止と行い(再定義しない / issue で提案する / 迂回しない)だけを残した
Evolution Axis Separation の読み手 / 書き手対(judgment learning は読み手、decision structure write は書き手)、Decision Structure は意味グラフで維持は refactor、Wiki 書き出しは永続化ティアリングを迂回しない skills/evolution-judgment-learning/SKILL.md(判断形成前に過去判断 graph を query する)、skills/evolution-decision-structure-write/SKILL.md 冒頭と Boundary with Persistence Tiering 節、adapter/claude/CLAUDE.md の Decision_Structure_Write_Autonomy の Boundary clarification。いずれも同じ内容を持ち、うち CLAUDE.md は常時ロード
Pattern Detection Surfacing の Observe stage output contract: の見出し語と「本仕様は振る舞いの契約だけを定める」 docs/2.-Evolution.md Pattern detection surfacing at cold-start 節(同じ文を持つ)
Pattern Detection Surfacing の「surface された候補は session 開始時の observe 段の判断を補う」 同上。行いを決めるのは直後の「迂回しない」の方なので、本文にはそちらを残した

外さなかったもの

  • Threshold values and concrete detection logic belong to the adapter. tests/test_on_session_start_observation_surface.py の docstring がこの文を逐語で引き、3 つの hook の実装コメントと docs/6.-Adapter.md がこの委譲を根拠にしきい値を adapter に置いている。しきい値を rule に書き込まない、という編集者の行いを決める文でもある。後半の「本仕様は振る舞いの契約だけを定める」は位置づけなので外した。
  • Evolution Axis Separation の 3 つの行い。 L1 のランタイム不変条件を L2 で再定義しない、蒸留したパターンは issue body へ外部化し Li+ 仕様の改善は直接編集ではなく issue で提案する、Li+ ソース更新は標準のパイプラインを通り運用ルールを迂回しない。どれも禁止か行いで、他の常時ロード面に同じ文は無い(rules/task/task.md の primary externalization destination = issue は独立判断の外部化についての文で、蒸留したパターンは射程外)。
  • Surfacing は昇格ではなく、昇格判断は distill → reflect → L1 Update Gating を通り、永続化ティアリングを迂回しない。 surface された候補をそのまま昇格させる取り違えを止める文。
  • ## Evolution Layer 節そのもの。 issue #2140 の制約(見出し名は変えない)に従い、ループの段の定義(skills/evolution-loop/SKILL.md)と起動権限・brake(rules/evolution/initiator-autonomy.md)への 1 行の転送点として残した。この 1 行は見出しを残すための最小の本文であり、振る舞いではない。 skills/evolution-loop/SKILL.md は description 一致で自動起動し、initiator-autonomy.md と Evolution_Initiator_Autonomy は常時ロードなので、この行が無くてもどの場面でも読み手の行いも時期も変わらない(Application-moment sentence を書けない行)。本文に置く理由は見出しの保持だけで、見出しを外す判断が別に下りたときは、この行も一緒に外してよい。その場合は docs/K.-Source-File-Format.md の tag 例の行と docs/2.-Evolution.md の always-on ファイル表の「Evolution Layer = …」を同じ PR で外す(PR #2142 brake 1 round 1 の所見、修正案 A を採用)。memory-entry-format-rule-carries-behavior-only が他ファイルから名指される節を 1 行の転送点として残したのと同型。

追随した面

  • docs/2.-Evolution.md の always-on ファイル表の行。以前は本ファイルの節を「Purpose / Axis Separation / Pattern Detection Surfacing / Mutability」と書いていたが、Mutability 節は本 issue 以前から既に存在しなかった。

Edges

Background

issue #2140。rules/evolution/evolution.md は毎 session 全体が文脈に入る面にあり、3,943 B あった。1 周目(PR #2112)は理由句を剥いだが、## Evolution Layer 節はレイヤーの位置づけと責務の一覧を、Evolution Axis Separation 節は skill と CLAUDE.md が既に持つ読み手 / 書き手対の説明を、それぞれ残していた。どれも読んだ者の行いを変えない。

Constraints

  • 振る舞いの行は落とさない(issue #2140 制約)。
  • 見出し名は変えない(hook 3 本・tests/test_on_session_start_observation_surface.py・docs/6.-Adapter.md が Pattern Detection Surfacing At Cold-start を、docs/2.-Evolution.md が Evolution Axis Separation を名指す。docs/K.-Source-File-Format.md は ## Evolution Layer を tag 導出の例に使う)。
  • tests/ の期待は変えない。
  • version type は patch。

Conclusion

採用 = レイヤーの位置づけ・責務の一覧・一次軸と現在の状態を frontmatter と docs/2.-Evolution.md に任せ、読み手 / 書き手対の説明は skill と CLAUDE.md の正本に任せて外す。Evolution Layer 節は 1 行の転送点として残す。

却下 = ## Evolution Layer 節を節ごと外す案。task.md / operations.md の先例とは同型だが、issue #2140 の制約が見出しを保つことを求めている。

却下 = 一次軸の 1 行(Primary axis = AI-led evolution loop)を本文に残す案。ループを AI 単独で起こしてよいことは Evolution_Initiator_Autonomy が常時ロード面で既に言っており、写しになる。

Related

  • issue #2140
  • PR #2112(1 周目、issue #2109)

要求仕様書 (1-6)

参考文書 (A-L)

判断構造

Clone this wiki locally