promotion judgment rule carries behavior only - Liplus-Project/liplus-language GitHub Wiki
rules/evolution/promotion-judgment.md の常時ロード本文は昇格判定の振る舞いだけを載せ、他の軸との関係の説明は持たない
Question
常時ロードされる rules/evolution/promotion-judgment.md の本文に、rules/model/liplus-coding-rule.md Body States Behavior の識別線(読んだ者の行いが変わるか)を 2 周目として当てたとき、何が本文に残り、外したものはどこが保持するか。
Current resolution
本文は Trigger、Cluster、Tally(保管面・アダプタ別 tally の禁止・追記の非直列と機構追加の禁止・書式・3d 窓・disposition log)、Threshold Rules(閾値表・actor と発火モーメント・全出口の disposition 行・起票前と全削除前の突き合わせ)、Exception、Issue Creation Metadata、および「ここで起票された issue は L1 更新を認めない」の 1 行だけを持つ。レイヤー位置と、L1 更新ゲーティング・永続化ティアリングとの関係の説明は持たない。
PR #2132(issue #2130)で 7,315 B → 5,871 B(−1,444 B、−19.7%)。1 周目(理由の剥ぎ取り)は evolution-task-rule-bodies-carry-behavior-only にある。本 entry は 2 周目で、主に外したのは位置の記述・軸の関係の説明・他面の再掲である。節の見出しは改名していない。削除した 2 節(Position / Relation to Persistence Tiering)は、どのファイルからも節名で参照されていなかった(grep -rn promotion-judgment で確認)。
外したものの合流先
| 外した記述 | 合流先 |
|---|---|
## Position(Layer = / 役割の一文 / Requires = / Load timing =) |
frontmatter(layer: L2-evolution、alwaysApply: true)、docs/2.-Evolution.md の always-on ファイル表と Promotion Judgment 節。main-agent-procedures-carry-behavior-only / operations-rule-carries-behavior-only が ## Position 相当を外したのと同型 |
| Relation to L1 Update Gating の「観測 → 起票の前段」「ノイズ床を越えたことを示すだけ、更新を認めるのは L1 Update Gating。軸は別」 | docs/2.-Evolution.md Promotion Judgment 節。本文には振る舞いの 1 行(起票は L1 更新を認めず、同 skill の長期観測を要する)を残した |
## Relation to Persistence Tiering の全文 |
docs/2.-Evolution.md Promotion Judgment 節 |
| Trigger の「self-eval 面はそれ自体では起票しない」 | skills/evolution-self-eval/SKILL.md(Repeat detection at this surface is an observation, not a filing trigger) |
| Threshold Rules の「窓を過ぎた cluster は判定が消すまで毎 session 再 surface される」 | rules/evolution/cold-start-synthesis.md Promotion Tally Expiry Surface(同じ文を持つ) |
Issue Creation Metadata の promotion の括弧(作成経路フラグ、type とは別軸) |
rules/task/task.md Marker |
Tally の No past-occurrence carryover. |
同じファイルの Threshold Rules 表 4 行目(no past-occurrence carryover) |
Cluster の Judge = AI. |
同じ文の前半(judged by the AI) |
| Tally の、ロックを足さない理由 | docs/2.-Evolution.md Promotion Judgment 節(理由は #2018 本文「同時書き込みは対策しない(受容する残余)」から引いた)。本文は「追記は直列化されず、落ちても黙り、検出は人手」と禁止だけを持つ |
外さなかったもの
Name fit, ownership feel and adapter independence justify none of it.理由の形をしているが、実体は将来の提案で持ち出される正当化を先に封じる禁止である。tally-placed-under-the-mechanism-name-not-an-adapter-homeが禁止を将来の再提案への参照先として残すと決めた文の一部。The requirement covers all three, not sub-threshold alone.前文と重なって見えるが、1 周目(PR #2112)が理由だけを剥いで残した文であり、disposition 行を sub-threshold の出口だけに書く読みを止める。- Retention の「書き手は trim しない、session-start hook が消す」。
tests/test_on_session_start_tally_retention.pyの docstring が、Tally が除去を書き手ではなく hook に置くことを観測対象として名指している。 - Tally の
detection is by hand。 一度外したが brake 1 round 1 の所見 F1 で戻した。silentlyは機構が検知しないことしか言わず、衝突を見つける担い手が読み手であることは言わない。before a collision has been observedの観測を誰が行うかを決める句なので、振る舞いである。 - Relation to L1 Update Gating の節そのもの。 起票を L1 更新の許可と読む取り違えを止める 1 行が振る舞いとして残るため、節は 1 行で残した。
追随した面
docs/L.-Hop-Count-Instrument.mdの S10 の行番号(:26→:15、閾値表:70-75→:78-83)。同ファイルが「行番号は当該ファイルを触る PR で更新する」と定める。:70-75は本 PR 以前から既に古かった。アンカー文(A drift / pattern observation occurring at any moment)は変えていない。
Edges
- depends on
source-body-behavior-only-reasoning-relocates— 識別線と移設の規則そのもの - depends on
tally-placed-under-the-mechanism-name-not-an-adapter-home— アダプタ別 tally の禁止文を残す根拠 - relates to
evolution-task-rule-bodies-carry-behavior-only— 同じファイルの 1 周目(理由の剥ぎ取り、issue #2109 / PR #2112) - relates to
operations-rule-carries-behavior-only— 同型の 2 周目(#2127) - relates to
initiator-autonomy-rule-carries-behavior-only— 同型の 2 周目(#2123)
Background
issue #2130。rules/evolution/promotion-judgment.md は毎 session 全体が文脈に入る面にあり、7,315 B あった。1 周目(PR #2112)は各行の理由句を剥いだが、Position と 2 つの Relation 節は節ごと残っていた。2 つの Relation 節は、他の機構との軸の違いを説明するだけで、閾値判定の場面での行いを変えない。
Constraints
- AI の振る舞いは変えない(issue #2130 目的)。
- 節の見出し名は変えない(
rules/evolution/memory-entry-format.mdほかが Tally / Threshold Rules / Issue Creation Metadata を名指す。同ファイルは並行作業 issue #2131 が編集中)。 tests/の期待は変えない。- version type は patch。
Conclusion
採用 = 位置の記述と軸の関係の説明を docs/2.-Evolution.md の新しい Promotion Judgment 節へ移し、他面の再掲は正本に任せて外す。関係の説明のうち振る舞いの 1 行(起票は L1 更新を認めない)だけは本文に残す。
却下 = Relation to L1 Update Gating を節ごと外す案。skills/evolution-l1-update-gating/SKILL.md は L1 変更の提案時に自分で発火するが、起票の瞬間に「閾値を越えた = 更新してよい」と読む取り違えを止める文は本文側にしか無い。
却下 = Relation to Persistence Tiering を 1 行のルーティング文として残す案。memory ↔ docs の仕分けは skills/evolution-persistence-tiering/SKILL.md の description が自分の発火の瞬間を持ち、閾値判定の場面でこの文を読んで行いが変わる読み手がいない。