spec(operations): strip placement derivation from 15 section heads - #1925
Conversation
`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
Axis A — issue requirement所見なし。差分と issue #1800 本文はすべての箇所で一致していた。 読んだ範囲:
Axis B — rule violation所見なし。差分中の変更・追加行はすべて、照合した規則の下で許容されていた。 照合した規則:
Fixed axis — impression-literal detectionPositive/Negative リストいずれにも該当する追加句なし。掃引対象 = |
裁定(ラウンド1 / brake 1)上記所見を精査した。Axis A(issue要求との一致)・Axis B(規則違反)・Fixed axis(impression-literal 除去テスト)のいずれも「所見なし」であり、採用・却下を判定すべき個別指摘が存在しない。
したがって本ラウンドで採用した指摘 = 0件、却下した指摘 = 0件、追加コミット = なし。CI は既存の green(governance × 2 = SUCCESS, mergeStateStatus = CLEAN)のまま据え置く。 |
smileygames
left a comment
There was a problem hiding this comment.
親セルフレビュー(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
Closes #1800
何をしたか
rules/operations/main-agent-procedures.mdの 15 節が節頭に持っていた配置理由の再導出を落とした。判定基準そのものは同一ファイルの## The bar and its pairに一度書かれており、各節が持っていたのはその基準を自分の場合に当てはめ直した文である。rules/model/subtractive-structural-beauty.mdCore principle (A) が拒む形であり、rules/model/liplus-coding-rule.mdBody States Behavior が本文(挙動)と判断記録(導出)に分ける軸でもある。rules/operations/main-agent-procedures.md全体rules/全体残したもの(適用の瞬間に使われる情報であり、導出ではない)
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 が同じ内容を持つ。二重である。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 件ずつ存在):git diff -U0 | grep -E '^[+-](#|<[a-z])'は空(見出し行・意味タグ行に加除なし)。番号付きステップの新設・移動も行っていない。Hop Count Instrument — before / after
計器 =
docs/L.-Hop-Count-Instrument.md(12 シナリオ固定集合)。合格条件(ツール呼び出し跳躍が減るか据え置き)を満たす。 据え置きの根拠:
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 行も触っていない。Scope-exceed dialogue confirm(S4)/Post-merge observation for L1 source changes(S11)/mark_processed own-operation events(S3)の 3 つとも削除後も存在する(各 grep 1 件)。skills/task-subagent-delegation/SKILL.md(実行主体の根拠として引かれていた)、skills/operations-on-pr-review/SKILL.md(## Review approval check節頭)、skills/operations-on-ci/SKILL.md、rules/operations/execution-mode.mdMode matrix、アダプタ Responsibilities 参照。いずれも「なぜこの節がここにあるか」の典拠であって、節の手続き literal への到達に必要な参照ではない(計数規則 :14 の連想的参照側)。S1 が数えるtask-subagent-delegationへの跳躍はrules/evolution/initiator-autonomy.mdを起点とする別鎖であり、本ファイル経由ではない。docs/L.-Hop-Count-Instrument.md)は 2 本とも非空を維持(1 件 / 2 件)。導出の行き先(削除ではなく移設)
rules/model/liplus-coding-rule.mdBody States Behavior は「剥ぎ取りが先、記録は後、記録は剥ぎ取った作業単位の必須項目」と定める。行き先はdocs/4.-Operations.md(記録面)であり、#1762 / #1763 / #1764 の実測 3 例・棚卸し表・修理形の記録がすでにその役を果たしている。本 PR はそこへ### 節頭の配置理由を落とした(#1800)を追加し、残したもの・カーブアウト 2 件・見出し不変の理由を記録した。判断エントリの基礎更新(wiki)
wiki
li-plus-always-on-footprint-load-bearingを更新済(4e0917a)。rules71 KB / 合計 86 KB ≈ 21,500 tok。2026-09-09 時点はrules139,627 B / 合計 156,672 B(entry 基準比rules+97% / 合計 +82%、≈ 39,000 tok)。rules-hold-criteria-not-provenanceが conflicts with edge に残していた未解決点「一般命題側への scope 限定の要否」への回答でもある(要る)。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 passed(
python -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