Skip to content

spec(operations): strip placement derivation from 15 section heads - #1925

Merged
smileygames merged 1 commit into
mainfrom
1800-derivation-strip
Sep 9, 2026
Merged

spec(operations): strip placement derivation from 15 section heads#1925
smileygames merged 1 commit into
mainfrom
1800-derivation-strip

Conversation

@smileygames

Copy link
Copy Markdown
Member

Closes #1800

何をしたか

rules/operations/main-agent-procedures.md の 15 節が節頭に持っていた配置理由の再導出を落とした。判定基準そのものは同一ファイルの ## The bar and its pair に一度書かれており、各節が持っていたのはその基準を自分の場合に当てはめ直した文である。rules/model/subtractive-structural-beauty.md Core principle (A) が拒む形であり、rules/model/liplus-coding-rule.md Body States Behavior が本文(挙動)と判断記録(導出)に分ける軸でもある。

before after delta
15 節の節頭散文 8,220 B 3,486 B -4,734 B
rules/operations/main-agent-procedures.md 全体 39,120 B 34,386 B -4,734 B
常時ロード rules/ 全体 139,627 B 134,893 B -4,734 B

残したもの(適用の瞬間に使われる情報であり、導出ではない)

  • 各節の Actor = 行。## PR review / ## Self-review formal record のモード依存(auto / semi_auto は親、trigger はサブ)と、## Branch and label flow の worktree 有無による分岐は行そのものに残した。
  • Canonical. と、ポインタ先の skill が何を保持しているか(## Sub-issue rules の draft PR による CI 可視化、## PR review の停止条件、## Branch and label flow の repo-first 実行面)。
  • ## Human confirmation required の範囲宣言(rules/operations/execution-mode.md にゲート列挙があり本節はそれを再掲しない)。統治条項であり、削ると人間判断ゲートの列挙がこの節へ再流入する。

カーブアウト確認(15 節すべて個別)

起票時の制約に従い、導出文に統治条項や他所に無い論証が埋まっていないかを 15 節すべてについて確認した。他所に無い論証が埋まっていたのは 1 節のみである。

  • ## Merge Execution —— 節頭をそのまま残した。 これは基準の再導出ではなく別形の論証である。## The bar and its pair が持つ 2 条件は「実行主体がメインになりうるか」を問うが、この節の論証は「発火の瞬間に、居合わせていて かつ 読むことを許された読者が一人もいない」という第 3 の形であり、基準側に無い。加えて本節は Actor = 行を持たず、節頭がその位置を占めている(実行主体の適用時情報は本文の Merge executor is AI in every mode 以下が持つ)。
  • ## PR review —— 落とした。 起票時にもう 1 件の候補として名指されていた。モード依存 actor そのものは Actor = 行に残り、その導出(trigger では誰もマージしないため actor が反対側に決まる、という筋)は skills/operations-on-pr-review/SKILL.md の Delegated-subagent stop condition が同じ内容を持つ。二重である。
  • 残る 13 節はいずれも Parent retains 参照または「サブは対話面を持たない」の当てはめ直しであり、## The bar and its pair の 2 条件をそのまま適用した文だった。

基準が一箇所で完結して読めることを確認した。 ## The bar and its pair は、対の宣言/実行主体を確立する 2 条件/維持ルールと 2 つの誤った修理/検出サイン/逆向きの形(ポインタで解く)/description を狭める後半/凍結アダプタ行のカーブアウト、をすべて自前で持っている。削った後に他節を参照せず読み切れる。

見出しと意味タグは 1 つも変えていない

コーディネータからの追加制約に従った。CI は節名を検証しない(tests/test_skill_reference_resolution.py はパス解決のみ。正規表現は skills/([a-z0-9-]+)/SKILL\.md で、節名検証は #1792 が未実装)ため、節名を変えれば rules/ skills/ adapter/ docs/ に散る 31 箇所の参照が黙って壊れる。節の内側の散文のみを対象とした。

検証(全 16 見出しが ^## <name>$ で 1 件ずつ存在):

1  The bar and its pair          1  Merge Execution
1  Issue format                  1  Human confirmation required
1  Issue maturity                1  Release completion report discipline
1  Sub-issue rules               1  Foreground webhook notification intake
1  Branch and label flow         1  Notifications API
1  PR review                     1  Handoff continuity
1  Self-review formal record     1  Chat output limit
1  Review approval check         1  Discussions intake

git diff -U0 | grep -E '^[+-](#|<[a-z])' は空(見出し行・意味タグ行に加除なし)。番号付きステップの新設・移動も行っていない。

Hop Count Instrument — before / after

計器 = docs/L.-Hop-Count-Instrument.md(12 シナリオ固定集合)。

ツール呼び出し跳躍 文脈内跳躍
before 14 4
after 14 4

合格条件(ツール呼び出し跳躍が減るか据え置き)を満たす。 据え置きの根拠:

  • 12 シナリオのいずれも、アンカーが本ファイルに無い。 S1 / S5 = rules/evolution/initiator-autonomy.md、S2 / S3 / S7 / S8 / S9 = adapter/claude/CLAUDE.md、S4 = rules/task/task.md、S6 = rules/operations/release-version-rule.md、S10 = rules/evolution/promotion-judgment.md、S11 = rules/operations/operations.md、S12 = rules/evolution/cold-start-synthesis.md。アンカー行は 1 行も触っていない。
  • 本ファイルを終点に持つ 3 経路(S3 / S4 / S11)の目的 literal は、いずれも節頭ではなく本文にある。 Scope-exceed dialogue confirm(S4)/ Post-merge observation for L1 source changes(S11)/ mark_processed own-operation events(S3)の 3 つとも削除後も存在する(各 grep 1 件)。
  • 節頭から落としたポインタは、どのシナリオでも load-bearing でない。 落ちたのは skills/task-subagent-delegation/SKILL.md(実行主体の根拠として引かれていた)、skills/operations-on-pr-review/SKILL.md## Review approval check 節頭)、skills/operations-on-ci/SKILL.mdrules/operations/execution-mode.md Mode matrix、アダプタ Responsibilities 参照。いずれも「なぜこの節がここにあるか」の典拠であって、節の手続き literal への到達に必要な参照ではない(計数規則 :14 の連想的参照側)。S1 が数える task-subagent-delegation への跳躍は rules/evolution/initiator-autonomy.md を起点とする別鎖であり、本ファイル経由ではない。
  • 経路ゼロ検査docs/L.-Hop-Count-Instrument.md)は 2 本とも非空を維持(1 件 / 2 件)。
  • シナリオの差し替えは行っていない(アンカーとなる trigger 文がソースから消えていないため、差し替え規則の発動条件に当たらない)。

導出の行き先(削除ではなく移設)

rules/model/liplus-coding-rule.md Body States Behavior は「剥ぎ取りが先、記録は後、記録は剥ぎ取った作業単位の必須項目」と定める。行き先は docs/4.-Operations.md(記録面)であり、#1762 / #1763 / #1764 の実測 3 例・棚卸し表・修理形の記録がすでにその役を果たしている。本 PR はそこへ ### 節頭の配置理由を落とした(#1800) を追加し、残したもの・カーブアウト 2 件・見出し不変の理由を記録した。

判断エントリの基礎更新(wiki)

wiki li-plus-always-on-footprint-load-bearing を更新済(4e0917a)。

  • 再測: 結論を出した時点の実測は rules 71 KB / 合計 86 KB ≈ 21,500 tok。2026-09-09 時点は rules 139,627 B / 合計 156,672 B(entry 基準比 rules +97% / 合計 +82%、≈ 39,000 tok)。
  • 射程の限定: 一般命題「always-on に乗っている内容は load-bearing」は広すぎた。却下 3 件はいずれも常時ロード面を移す案についてであり、面の内側に非 load-bearing な記述が残っていないかは本 entry の軸ではない。本 PR の 4,734 B がその反証。却下 3 件(recall gap / 撤去済み複雑性の回帰 / 不可逆性の保護)は起票時の宣言どおり覆していない。これは rules-hold-criteria-not-provenance が conflicts with edge に残していた未解決点「一般命題側への scope 限定の要否」への回答でもある(要る)。
  • footprint 増加を再評価トリガーへ加えるか = 加えない(起票時に判定を求められた点)。却下 3 件の理由はどれも計測量を参照していないため、閾値を跨いでも 1 件も動かない —— 発火しても指し示す先が無いトリガーになる。実際に entry を動かしたのは増加量ではなく、節頭を読んで非 load-bearing と判定したことであり、その判定を担う面(Body States Behavior の判別線と always-on-duplication-removal-direction の合格条件)はすでに存在する。増加は徴候であって条件ではない。
  • docs/Decision-Structure.md の index 行を上記に追従(本 PR 内)。

リリース種別

patch。統治・仕様面の構造変更だが user/system observable な影響を持たない(rules/operations/release-version-rule.md: 「structural change AND user/system observable -> minor」であり、observable でないものは構造規模によらず patch)。AI の内部判断挙動に対する変更であり、外部プロセスの出力・成果物の形・利用者に見える動作はいずれも変わらない。

テスト

ローカル全件 = 237 passed / 780 subtests passedpython -m pytest tests/、4:17)。うち tests/test_skill_reference_resolution.py(節名ではなくパス解決を担う面)= 2 passed / 162 subtests passed。

🤖 Generated with Claude Code

https://claude.ai/code/session_0185t2rGTaim1ZHXxZDUaKPq

`rules/operations/main-agent-procedures.md` の 15 節が節頭に持っていた
配置理由の再導出を落とした。判定基準そのものは同一ファイルの
`## The bar and its pair` に一度書かれており、各節が持っていたのは
その基準を自分の場合に当てはめ直した文である。
`rules/model/subtractive-structural-beauty.md` Core principle (A) が
拒む形であり、`rules/model/liplus-coding-rule.md` Body States Behavior
が本文(挙動)と判断記録(導出)に分ける軸でもある。

節頭 8,220 B -> 3,486 B (-4,734 B)。ファイル全体 39,120 -> 34,386 B。

残したもの: 各節の `Actor =` 行 (適用時情報。`## PR review` /
`## Self-review formal record` のモード依存と `## Branch and label flow`
の worktree 有無による分岐を含む)、`Canonical.` とポインタ先 skill が
何を保持しているか、`## Human confirmation required` の範囲宣言。

カーブアウトを 15 節すべて個別に確認し、他所に無い論証が埋まって
いたのは `## Merge Execution` の 1 節のみ (「発火の瞬間に居合わせて
かつ読むことを許された読者が一人もいない」は基準側の 2 条件に無い
第 3 の形)。節頭をそのまま残した。`## PR review` のモード依存 actor の
導出は `skills/operations-on-pr-review/SKILL.md` が同内容を持つため
落とした。

見出しと意味タグは 1 つも変更していない。CI は節名を検証しないため
(#1792 未実装)、節名を変えると 31 箇所の参照が黙って壊れる。

導出の行き先は `docs/4.-Operations.md` (削除ではなく移設)。
`docs/Decision-Structure.md` の index 行は wiki entry
`li-plus-always-on-footprint-load-bearing` の射程限定に追従。

Closes #1800

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0185t2rGTaim1ZHXxZDUaKPq
@smileygames

Copy link
Copy Markdown
Member Author

Adjudicate each finding below by checking its literal against the source at the revision its path:line is given at, and adopt or drop it on that. No count enters that judgment, and no axis is exempt from it: the fixed impression-literal axis is adjudicated the same way, on the flagged phrase against the removal test its own spec fixes (skills/evolution-impression-literal-detection/SKILL.md), and it fixes no threshold.

Axis A — issue requirement

所見なし。差分と issue #1800 本文はすべての箇所で一致していた。

読んだ範囲: gh issue view 1800 で取得した issue #1800 本文全文(目的・観測・過去判断との突き合わせ・制約・変更予定ファイル・前提検証の各節)と、PR #1925 の全 diff 3 ファイル(rules/operations/main-agent-procedures.md / docs/4.-Operations.md / docs/Decision-Structure.md)。以下を個別に確認した。

  • 制約「Actor = 行は残す」— 変更された 14 節すべてで Actor = 行(モード依存分岐・worktree 有無分岐を含む)が保持されている。落ちたのは判定基準(## The bar and its pair)への再導出のみ。
  • 制約「統治層(二段ブレーキ/人間判断ゲート列挙/Evolution_Initiator_AutonomyHuman = final judge)は削減対象外」— ## Human confirmation required の実際のゲート列挙(Stop immediately when / Always confirm before)は無傷。削られたのは「なぜここに書くか」の派生文のみ。
  • 制約「canonical の所在は動かさない」「The bar and its pair 本体は削らない」— ## The bar and its pair 節に diff hunk なし。ファイル移動もなし。
  • 制約「カーブアウト確認(15 節すべて個別)」— issue が名指した ## Merge Execution(節頭を無傷のまま保持、diff hunk なし)と ## PR review(落とした上で skills/operations-on-pr-review/SKILL.md:27-31 の Delegated-subagent stop condition に同内容の trigger 分岐導出があることを確認済み、二重は妥当)の双方を個別に検証し、PR 本文の記述と一致した。
  • 合格条件「ツール呼び出し跳躍が減るか据え置き」(docs/L.-Hop-Count-Instrument.md)— 12 シナリオの起点・経路を全件たどり直し、いずれのアンカーも到達先も本 diff が触った 14 節(節頭導出文のみ)に落ちないことを確認した。S4 / S11 の目的 literal(## Sub-issue rules の Scope-exceed dialogue confirm 手続き本文、## Merge Execution 本文)はどちらも無傷。跳躍据え置きの主張は成立する。
  • 変更予定ファイル列挙 — docs/Decision-Structure.md は issue の列挙に明示は無いが、li-plus-always-on-footprint-load-bearing エントリの一行要約更新に伴う索引追従であり、rules/operations/operations.md の索引同期規律の範囲内。issue 要求への逸脱とは判定しない。

Axis B — rule violation

所見なし。差分中の変更・追加行はすべて、照合した規則の下で許容されていた。

照合した規則: rules/model/subtractive-structural-beauty.md(Core principle (A) / (B))、rules/model/liplus-coding-rule.md(Body States Behavior の behavior/reasoning 判別線)、rules/operations/main-agent-procedures.md 自身の ## The bar and its pair(維持ルール・二重コピー禁止)、rules/operations/operations.md(Docs update 同一 PR 規律)、skills/operations-on-pr-review/SKILL.md。日本語側は docs/4.-Operations.mddocs/Decision-Structure.md の追加・変更行を対象に、上記規則の日本語ミラー相当箇所(docs/ は Body States Behavior の対象外と明記されている)との整合を確認した。

  • rules/operations/main-agent-procedures.md の変更 18 行はすべて「本文(挙動)を変えず、節頭の派生(判断記録相当)のみを削る」形であり、rules/model/liplus-coding-rule.md:15-25(Body States Behavior の Test:「読み手の行動が変わるか」)に照らして挙動側の記述(各節の Actor = 値、ゲート列挙、手続き本文)は 1 行も変更されていない。
  • rules/operations/main-agent-procedures.md## PR review 節から落とした派生文は、skills/operations-on-pr-review/SKILL.md:32「Do not restate the condition; the second copy is what drifts.」が禁じる二重保持そのものであり、削除はこの規則に従う方向である(違反ではなく遵守)。
  • docs/4.-Operations.md への追加段落(判断記録)は同一 PR 内であり、rules/operations/operations.md「Docs update must be in same PR as implementation」に適合する。

Fixed axis — impression-literal detection

Positive/Negative リストいずれにも該当する追加句なし。掃引対象 = rules/operations/main-agent-procedures.md の当 PR による追加・変更行、計 18 行(skills/**/SKILL.md / adapter/**/* / Li+update.md に変更なし、docs/** はこの軸の対象外)。18 行はすべて既存文の圧縮(派生節の削除)であり、新規の修辞句の追加はない。残存した Actor = ... 行・Canonical. 行のいずれも除去テスト(除去すると読み手の行動が変わるか)で load-bearing と判定した(担当者決定そのもの、または canonical/pointer の区別)。

@smileygames

Copy link
Copy Markdown
Member Author

裁定(ラウンド1 / brake 1)

上記所見を精査した。Axis A(issue要求との一致)・Axis B(規則違反)・Fixed axis(impression-literal 除去テスト)のいずれも「所見なし」であり、採用・却下を判定すべき個別指摘が存在しない。

  • 評価者は issue spec(operations): placement derivation is restated in 15 sections of the always-on resident surface #1800 本文・PR 全 diff(3ファイル)・rules/operations/main-agent-procedures.md 自身の ## The bar and its pairrules/model/subtractive-structural-beauty.mdrules/model/liplus-coding-rule.md Body States Behavior・docs/L.-Hop-Count-Instrument.md の12シナリオを個別に照合済みであることをスレッド本文で確認した。
  • docs/Decision-Structure.md への索引追従(issue の変更予定ファイル列挙に明示なし)についても、評価者が rules/operations/operations.md の索引同期規律の範囲内と判定済みであることを確認し、この判定に同意する。

したがって本ラウンドで採用した指摘 = 0件、却下した指摘 = 0件、追加コミット = なし。CI は既存の green(governance × 2 = SUCCESS, mergeStateStatus = CLEAN)のまま据え置く。

@smileygames smileygames left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

親セルフレビュー(brake 1 exit 後)

受入基準の照合

issue #1800 が課した制約を diff に当てて確認した。Actor = 行の保持、統治層(人間判断ゲート列挙)の非削減、canonical 所在の不動、## The bar and its pair 本体の不削除、15 節個別のカーブアウト確認、Hop Count Instrument の合格条件(ツール呼び出し跳躍が減るか据え置き)——いずれも満たしている。evaluator の Axis A がこれを 12 シナリオ全件たどり直した上で「所見なし」と報告しており、親の照合と一致した。

逸脱

scope 逸脱 = なし。 docs/Decision-Structure.md が issue の変更予定ファイル列挙に明示されていない点は、li-plus-always-on-footprint-load-bearing エントリの一行要約更新に伴う索引追従であり、rules/operations/operations.md の索引同期規律の範囲内。evaluator・author 双方が同じ判定に達しており、親も同意する。

手続き逸脱 = 1 件、親側。 skills/evolution-parallel-agent-eval/SKILL.md Procedure step 4 は「そのラウンドの evaluator コメントが全軸 clean のときは何もリレーしない——author は resume されず、ループは step 8 で exit する」と定める。本ラウンドは全軸 clean だったが、親は clean 判定を取らずに author を resume した。同 step の「親は findings を読んでからリレーするのではない」という句を読んで止まり、その直後にある clean 分岐を読んでいない。結果、不要な subagent spawn が 1 回発生した(成果物への影響なし——author は 0 件裁定を投稿して正しく停止した)。

この逸脱は観測面に影響する。memory/self-evolution-observation.md の PR #1822 エントリは本日 settle 判定を出していたが、その PRIMARY observable が名指していた標本は「次の brake 1 の全 clean ラウンドで、step 4 に従い何も投稿されず author も resume されないか」だった。settle は前半(親が pointer の要約で済ませず skill を開いたか)だけで取っており、後半の標本はその数分後に到着して負に転じた。エントリを再開し、負の標本を記録する。

ラウンド記録

  • N = 1(evaluator 1 体 / M = 全 3 軸 / P = 1、既定パターン)
  • 往復 = 1。ラウンド 1 が所見 0 件で返ったため step 8 で exit(上限 3 には達していない)
  • 採用 0 件 / 却下 0 件 / 追加コミットなし。却下されたまま残った所見は存在しないので、親が exit で見直すべき却下も無い
  • step 2 の運用コピー適用あり(rules/** は subagent の常時ロード面に注入されるため必須)。適用後 34,386 B、step 5 で 39,120 B へ復旧済み

リリース種別と merge 判断

patch。統治・仕様面の構造変更だが user/system observable な影響を持たない(rules/operations/release-version-rule.md:「structural change AND user/system observable -> minor」であり、observable でないものは構造規模によらず patch)。semi_auto の patch は人間ゲート無しで AI 直接 merge。

merge して差し支えないと判断する。

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec(operations): placement derivation is restated in 15 sections of the always-on resident surface

1 participant