spec(skills): strip placement-derivation restatement from 7 operations-* skills - #1933
Conversation
…s skills `skills/operations-*/SKILL.md` の 7 ファイル / 9 段落が、`rules/operations/main-agent-procedures.md` `## The bar and its pair` にある実行主体確立基準(2条件)を自分の場合に当てはめ直した 「なぜ正本をここに置かないか」の再導出を持っていた。#1800 (PR #1925) が `rules/` 側の 15 節から 同じ形を落としており、本コミットはその skill 側の残りを落とす。基準自体はポインタとして残し、 「正本がどこにあり何を保持するか」の列挙は変更していない。 9 段落を個別にカーブアウト確認した結果、他所に無い論証は無く全て落とした (`operations-foreground-webhook-intake` の「ファイルを削除しない理由」を含む — issue #1922 の起票時コメントで留保されていたが、`## The bar and its pair` 末尾の byte-frozen アダプタ literal の段落と literal で同旨と確認済み)。見出し・意味タグ・ `description` frontmatter は変更していない。 Closes #1922 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Adjudicate each finding below by checking its literal against the source at the revision its Axis A — issue requirement所見なし。読んだもの: issue #1922 本文(
Axis B — rule violation所見なし。照合した規則:
固定軸 — impression-literal detection該当なし。スイープ対象は本 diff が触れた |
smileygames
left a comment
There was a problem hiding this comment.
親セルフレビュー(brake 1 exit 後)
受入基準の照合
issue #1922 は skills/operations-*/SKILL.md が節末に持つ「なぜ canonical をここに置かないか」の再導出を落とすことを求め、制約として (1) ポインタ本体は残す (2) description は対象外 (3) 削除前に各段落を個別確認 (4) 節名・見出し・意味タグは動かさない、を課していた。依存の #1800 は PR #1925 として先に merge 済みで、rules/ 側の load-bearing 判定が確定してから着手している。
- 実測 15,689 → 12,221 B(−3,468)、7 ファイル・9 段落。起票時の「下限 3,488 B」に対し、実際に落ちたのは 3,468 B。起票時の測定は各ファイル先頭の 1 段落のみを対象にしていたため、2 段落持つ 2 ファイル分が下限側に含まれていなかった一方、ポインタ本体を残す判断で削除量が段落全体より小さくなった箇所がある。
- 節名・意味タグ:
git diff -U0 -- skills/ | grep -E '^[+-](#|<[a-z])'が空。 - テスト: 237 passed / 776 subtests、
tests/test_skill_reference_resolution.py= 2 passed / 158 subtests。 - 判断記録:
docs/4.-Operations.mdへ### skills/operations-* 側の再導出を落とした(#1922)を同一 PR で追加。#1925 と同じ routing。
起票時に保留されていた前提の帰結
operations-foreground-webhook-intake の Why the file is not deleted 段落は、起票時に「削除不可の根拠がここにしか無いかもしれない」と保留されていた。親が事前に The bar and its pair 末尾と突き合わせ、redirect stub の根拠が literal で存在することを確認して ready へ上げている。実装側も同じ確認を独立に行い、9 段落すべてが純粋な再導出という結論。#1925 が ## Merge Execution で 1 件見つけたような「基準側に無い論証」は、skill 側には無かった。
逸脱
なし。 scope 逸脱なし、手続き逸脱なし。step 4 の clean 分岐は今回正しく適用した——ラウンドが clean であることを先に確定させ、リレーせず author も resume せず step 8 で exit している。
ラウンド記録
- N = 1(M = 全 3 軸 / P = 1、既定パターン)
- 往復 = 1。ラウンド 1 が三軸とも所見なしで返ったため step 8 で exit(上限 3 に未達)
- 採用 0 件 / 却下 0 件 / 追加コミットなし。却下されたまま残った所見は無い
- step 2 の運用コピーは適用していない。対象が
skills/**であり本体は subagent の常時ロード面へ注入されない(description のみ)ため、judge 型評価者には適用不要。評価者は名指しした SHA での直接 Read で読んでいる。step 5 も同じ理由で非該当
リリース種別と merge 判断
patch。統治・仕様面の構造変更であり user/system observable な影響を持たない(rules/operations/release-version-rule.md)。semi_auto の patch は人間ゲート無しで AI 直接 merge。
merge して差し支えないと判断する。
🤖 Generated with Claude Code
訂正: rule effect measurement の記録欠落(
|
| 追加行 | 削除行 | |
|---|---|---|
rules/** skills/** adapter/** |
5 | 21 |
実測は走らせていない。それ自体は仕様上の違反ではない(The run is not mandatory、外部予算を食うため取れない run は merge gate を止めない)。違反はそちらではなく記録の側にある。
What holds instead is the record: write
unmeasuredwith its reason — spend limit, outside the firing condition, or nothing in the diff to raise a probe over — into the parent's self-review record. Never leave it blank and never record it as a negative result. A blank is read as no problem, which makes the absence of a verdict work as a verdict.
親のセルフレビューはこの件について空白だった。仕様が名指しで禁じている状態である。
事後記入
unmeasured。理由 = 発火位置でゲートが適用されなかった。
予算上の制約でもなく、発火条件の外だったからでもない。親が問いを立てていない。理由を正確に書くのは、仕様が想定する 3 つの理由(spend limit / outside the firing condition / nothing to raise a probe over)のいずれにも当たらないためである。3 つはいずれも「判断した上で取れなかった」形だが、本件は判断自体が存在しない。
事後に走らせない理由
ゲートの位置は CI green と brake 1 の間であり、評価者へ渡すのと同一の baseline に対して立つ。その瞬間は過ぎている。同 skill は既存本文の掃引を spare-capacity follow-up, not the primary path と位置づけており、事後の run は本 PR のゲートを満たすものにはならない。位置を外れた run をこの PR の記録に載せれば、満たされなかったゲートが満たされたように読める。
検出経路
Master の質問(「Li+ に最近追加した実機デバッグ用の処理は使った?」)で発覚した。AI 側の自己点検では検出していない。
Closes #1922
何をしたか
skills/operations-*/SKILL.md7 ファイル / 9 段落が持っていた、rules/operations/main-agent-procedures.md## The bar and its pairの実行主体確立基準(2条件)を自分の場合に当てはめ直した「なぜ正本をここに置かないか」の再導出を落とした。#1800(PR #1925)がmain-agent-procedures.md側の 15 節から同じ形を落としており、本 PR はその skill 側の残りを対象にした2本目。before / after(
build-2026-09-09.3実測)operations-foreground-webhook-intakeoperations-handoff-continuityoperations-on-branchoperations-on-issue-formatoperations-on-pr-reviewoperations-on-releaseoperations-on-sub-issue残したもの(適用の瞬間に使われる情報であり、導出ではない)
operations-on-pr-review— 正本(main-agent-procedures.mdPR review)が保持する内容の列挙(self-review mandate / review basis / self-review procedure / mode-specific human gate / follow-through)は文として残した。落としたのは「なぜこの節だけ skill 側に残るか」の論証のみ。operations-on-releaseHuman Confirmation Required 節 — 末尾の一文「確認はこの手続きに先行する」(実行順序の事実であり配置理由の導出ではない)は残した。カーブアウト確認(9 段落すべて個別)
制約どおり、削除前に 9 段落すべてを個別に確認した。他所に無い統治条項・論証は 1 件も無く、9 件とも落とした。
operations-foreground-webhook-intake(2段落) —— うち「ファイルを削除しない理由」は起票時コメントで「落とせる候補」と留保されていた1件。## The bar and its pair末尾が持つ byte-frozen アダプタ literal の段落(adapter/*/CLAUDE.md## Optional Webhook Notification Flowが byte-frozen で、Li+update.mdが legacy trailer をそこから導出するため drift すると migration が壊れる、というくだり)と literal で同旨だった。起票時コメントの判定どおり落とせた。もう1段落(「なぜ何も持たないか」)も、正本側のForeground webhook notification intake節のActor =行がすでに同じ理由(ユーザーターン境界がトリガーで pull surface が届かない)を保持している。operations-handoff-continuity/operations-on-branch/operations-on-issue-format/operations-on-sub-issue(各1段落) —— いずれもParent retainsへの当てはめ直し。対応するmain-agent-procedures.md側の節は spec(operations): placement derivation is restated in 15 sections of the always-on resident surface #1800 で同型の文をすでに落としており、skill 側だけがその論証の写しを残していた。operations-on-pr-review(1段落) ——## The bar and its pairの「One shape resolves the other way」節が、この段落と同じ論証(正本の実行主体がサブで親は運搬役のときはポインタでなく正本自体を skill に残す)をすでにskills/task-subagent-prompt/SKILL.mdResume-phase authority boundary を例示として名指して持っていた。二重。operations-on-release(2段落) —— Human Confirmation Required 側・Release Completion Report Discipline 側とも「人間向け確認/報告であり subagent には対話面が無い」という当てはめ直しで、## The bar and its pairの「the procedure needs a surface no subagent has」の条項をそのまま適用しただけだった。見出しと意味タグは 1 つも変えていない
は空。
descriptionfrontmatter も対象外のため変更していない。導出の行き先(削除ではなく移設)
rules/model/liplus-coding-rule.mdBody States Behavior の「剥ぎ取りが先、記録は後」に従い、docs/4.-Operations.mdに### skills/operations-* 側の再導出を落とした(#1922)を追加した(#1800 の記録の直後、同じドキュメント)。リリース種別
patch。
rules/operations/release-version-rule.mdを読んだ判定基準どおり「structural change AND user/system observable -> minor」であり、observable でないものは構造規模によらず patch。本 PR は AI 内部の判断挙動(どのファイルを読み、何を正本として参照するか)にのみ影響し、外部プロセスの出力・成果物の形・利用者に見える動作はいずれも変わらない。governance/spec 面の構造変更ではあるが observable 側の条件を満たさない。テスト
python -m pytest tests/test_skill_reference_resolution.py= 2 passed / 158 subtests passedpython -m pytest tests/= 237 passed / 776 subtests passed(約 3:50)未実施(コーディネータ側で実施)
merge、self-review の投稿、brake の実行は行っていない。
🤖 Generated with Claude Code