Skip to content

spec(brake): distill parallel-agent-eval SKILL.md, 2nd body-states-behavior pass - #1927

Merged
smileygames merged 2 commits into
mainfrom
1923-distill-parallel-agent-eval
Sep 10, 2026
Merged

spec(brake): distill parallel-agent-eval SKILL.md, 2nd body-states-behavior pass#1927
smileygames merged 2 commits into
mainfrom
1923-distill-parallel-agent-eval

Conversation

@smileygames

Copy link
Copy Markdown
Member

Closes #1923

変更内容

skills/evolution-parallel-agent-eval/SKILL.mdrules/model/liplus-coding-rule.md Body States Behavior を 2 周目として適用し、42,621 → 38,596 B(−4,025、−9.4%)。1 周目(#1845)が理由づけを剥いだ跡に残っていたのは主に再掲——同じ節の中で先の文が既に固定した振る舞いを言い換えて二度置く形であり、一文ずつ見る読みでは落ちず、節を通して読む位置でしか捕まらない。

実装前の検証で issue 本文より一段強い制約を確認した。外部からの節名参照は 6 ファイル 13 箇所あり、うち 3 箇所は Procedure のステップ番号そのものを引いている。CI はどちらも検証していない(tests/test_skill_reference_resolution.py はファイルパスの解決のみを主張する)。したがって:

  • ステップ番号は不動(分割・統合・削除なし。削るのはステップ内部の文のみ)
  • 節名・小見出しは改名なし
  • 逐語 literal(引用ブロック 10 本)は byte 同一
  • Constraint は節ごと保持(model floor / findings 投稿先の供給元)

節別の削減率: Report shape −20.6% / Constraint −12.1% / Axis statement form −10.7% / Procedure −9.2% / Trigger −2.9%。Non-scope / Boundary / Implementation Note は不変。

docs/2.-Evolution.md の skill 本文バイト記録を 2 周分へ更新し、docs/Decision-Structure.md へ判断記録エントリ parallel-agent-eval-residual-is-restatement の索引行を追加。

あえて手を付けなかったもの

  • ## Procedure のステップ番号・節名・小見出しの改名や再構成(外部 13 箇所の参照が壊れるため)
  • Constraint 節の削除(task-subagent-prompt / task-subagent-spawn への供給元のため保持)
  • 引用ブロックの文言変更(逐語 literal は brake 1 の evaluator prompt / preamble の供給元)
  • 判断記録に移設した理由づけそのものの新規判断(既存の Body States Behavior の適用を同一ファイルへ 2 回目かけただけであり、新しい設計判断は含まない)

リリース種別

patch

根拠:rules/operations/release-version-rule.md の判定軸は「変更規模 + user/system observable 性」。本変更は Li+ source(skill 本文)の内部蒸留であり、governance structure change ではあるが user/system から観測可能な挙動変化を主張していない(本文は「振る舞いは同一のはず」という設計適用であり、外部 probe による等価性測定は行っていない)。「internal rule / governance structure change with no user/system observable impact」に該当するため patch と判断した。

`skills/evolution-parallel-agent-eval/SKILL.md` へ `rules/model/liplus-coding-rule.md`
Body States Behavior を 2 周目として適用し、42,621 → 38,596 B(−4,025、−9.4%)。
1 周目(#1845)が理由づけを剥いだ跡に残っていたのは主に再掲——同じ節の中で先の文が
既に固定した振る舞いを言い換えて二度置く形であり、一文ずつ見る読みでは落ちず、
節を通して読む位置でしか捕まらない。

実装前の検証で issue 本文より一段強い制約を置いた。外部からの節名参照は 6 ファイル
13 箇所あり、うち 3 箇所は `Procedure` のステップ番号そのものを引いている。CI は
どちらも検証していない(`tests/test_skill_reference_resolution.py` はファイルパスの
解決のみを主張する)。したがって:

- ステップ番号は不動(分割・統合・削除なし。削るのはステップ内部の文のみ)
- 節名・小見出しは改名なし
- 逐語 literal(引用ブロック 10 本)は byte 同一
- `Constraint` は節ごと保持(model floor / findings 投稿先の供給元)

剥いだ理由のうち既存の記録面が持たない分は判断記録
`parallel-agent-eval-residual-is-restatement`(wiki、索引行を同 PR で追加)が保持する。
抜いた跡へポインタは置かない(#1852 で要件撤廃済み)。`docs/2.-Evolution.md` の
skill 本文バイト記録を 2 周分へ更新し、同時にその bullet に残っていた撤廃済みの
ポインタ要件の一文を落とした。

節別: Report shape −20.6% / Constraint −12.1% / Axis statement form −10.7% /
Procedure −9.2% / Trigger −2.9%。Non-scope / Boundary / Implementation Note は不変。

tests/ 全 237 件 pass。

#1923

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MCNUyyWUZjGWYaTH4NM4sk
@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

Finding 1

Issue #1923 の本文(forming→ready の条件として明記):

rules/model/liplus-coding-rule.md Body States Behavior の線引き(behavior か reasoning か)を ## Procedure の各文に当てる。適用の瞬間に誰が何をするかが変わる文は残す。読み手の納得だけが変わる文は判断記録(wiki)へ移設する。
削除ではなく移設が既定(Body States Behavior: relocate, do not delete)。移設先を先に決めること。

diff 側(削除のみで移設なし)— skills/evolution-parallel-agent-eval/SKILL.md:84(base commit b838c451d504f5763bed877bad82605b468c3508 時点。head 6151bc3 では当該文自体が消えている):

Two things carry that choice: the instrument reads the target from outside rather than from its own prior verdict, and the PR thread already holds what a resumed context would hold. It is provisional — whether fresh spawn or resume detects more is unmeasured, and #1848 is where it gets measured.

除去テスト(この文を消して読み手の conduct が変わるか)に当てると No——直前の文「every round spawns its evaluators fresh; an evaluator is never resumed across rounds」がすでに振る舞いを固定しており、この文は理由(why fresh spawn)である。理由なので Body States Behavior の既定に従えば判断記録への移設が要る。本 PR が新設した唯一の判断記録エントリ parallel-agent-eval-residual-is-restatement の保持リストは (a)〜(e) の5点で尽きており、この理由はそこにも docs/Decision-Structure.md の既存エントリにも skills/evolution-parallel-agent-eval/SKILL.md の他箇所(head 時点で grep — 該当文言なし)にも見当たらない。移設先を確定してから削るという issue の手順を踏まずに削除のみが行われている。

Finding 2

同じ issue 本文の同一段落(上記引用と同一)。

diff 側(削除のみで移設なし)— skills/evolution-parallel-agent-eval/SKILL.md:219(base commit b838c451d504f5763bed877bad82605b468c3508 時点):

Holding two instruments is worth something only while neither has spoken first: an evaluator told a region measured clean is told there is nothing there, and what goes missing is the finding it would have raised itself. Scope alone leaves it free to work the faces nothing has measured, under no pressure on the faces something has

除去テストに当てると No——直前の文がすでに「評価者は測定の scope だけを受け取り verdict は受け取らない」という振る舞いを固定しており、この一文はなぜそう分離するかの理由(隔離の効用の説明)である。Finding 1 と同じ理由で、この理由も新設エントリの (a)〜(e) にも既存エントリにも本ファイル内の他箇所にも見当たらず、移設されないまま削除されている。

Axis B — rule violation

Finding 1(Axis A Finding 1 と同一行)

規則 literal — rules/model/liplus-coding-rule.md:35,376151bc3 時点。本 PR はこのファイルを変更していない):

Test: does the conduct of whoever reads the sentence change? Changes (what to do, or when, is fixed by it) -> behavior, keep it in the body. What changes is only whether the reader is convinced -> reasoning, relocate it.
Destination: relocate, do not delete.

診断: skills/evolution-parallel-agent-eval/SKILL.md:84(base)の当該文は上記 Test で reasoning と判定される(Axis A Finding 1 参照)。Destination: relocate, do not delete. に対し、本 PR は relocate を行わず delete のみを行っている。

Finding 2(Axis A Finding 2 と同一行)

規則 literal は Finding 1 と同一(rules/model/liplus-coding-rule.md:35,37)。

診断: skills/evolution-parallel-agent-eval/SKILL.md:219(base)の当該文も同じ Test で reasoning と判定され(Axis A Finding 2 参照)、Destination: relocate, do not delete. に反して delete のみが行われている。

上記2行を除き、diff が触れた行(skills/evolution-parallel-agent-eval/SKILL.md の変更ハンク全体、docs/2.-Evolution.mddocs/Decision-Structure.md の変更行)を rules/model/liplus-coding-rule.md(Body States Behavior 含む全文)、rules/evolution/initiator-autonomy.mdskills/evolution-impression-literal-detection/SKILL.mdrules/operations/operations.md(docs 同時更新要件)、rules/model/subtractive-structural-beauty.md に照らして確認したが、他に literal 違反は見つからなかった。特に:## Procedure のステップ番号(1〜9)・節名・小見出し・引用ブロック10本は base/head 間で byte 同一(diff <(grep '^>' skill_at_base.md) <(grep '^>' skill_at_sha.md) で差分ゼロを確認)であり、issue #1923 が課した「ステップ番号・節名は改名も分割も統合もしない」制約への違反はない。

Fixed axis — impression-literal detection

Clean。対象は skills/evolution-parallel-agent-eval/SKILL.md の差分(docs/** はこの軸の scope 外——エージェントが自らの指示として読み実行する散文ではないため)。追加行 29 行・削除(=書き換え対象)行 31 行を通読し、各行に除去テストを当てたが、push surplus・感情語・出典不明の借用語のいずれのパターンにも該当する句はなかった。むしろ本差分は "double the default" のような残余説明句を削る方向(縮約)であり、新規に印象語・弁証を足した箇所は無い。

@smileygames

Copy link
Copy Markdown
Member Author

両 finding(Axis A / Axis B とも同一行なので実質 2 件)を、指摘どおり path:line を base commit b838c451c の該当箇所で確認したうえで、次の理由で 却下 します。

Finding 1(SKILL.md:84 base、fresh spawn の暫定性・#1848 が測定先)

evaluator の除去テスト自体(この文単体は reasoning)には同意します。ただし「この理由はそこ(新設エントリ)にも docs/Decision-Structure.md の既存エントリにも見当たらない」という前提が事実と異なります。

既存エントリ brake1-bounded-convergence-loop-on-pr-comments#1863 / PR #1864、2026-09-03 merged、docs/Decision-Structure.md に索引済み)が、削除された文と同じ内容を既に一言一句に近い形で保持しています:

評価者は毎ラウンド新規 spawn(暫定、測定先 #1848

このエントリは今回の PR より前から存在し、今回の PR は一切触っていません。したがって Body States BehaviorDestination: relocate, do not delete は既に満たされています——移設先は新設エントリではなく、既存の brake1-bounded-convergence-loop-on-pr-comments でした。同じ理由づけを新設エントリへ重複して書く必要はなく(rules/model/subtractive-structural-beauty.md Core principle (A) の二重化回避にも合致)、本文からの delete のみは規則違反ではありません。

Finding 2(SKILL.md:219 base、"Holding two instruments..." の理由)

同様に、除去テストへの同意はしますが、"見当たらない" の前提が事実と異なります。

docs/2.-Evolution.md 290行目(base・head で byte 同一、今回の PR はこの段落を変更していません)が、削除された文とほぼ同一の理由づけを既に保持しています:

器具を二つ持つ意味は、片方が先に喋った時点で失われる——「この面は測って差が無かった」を先に読んだ評価者は、そこには何も無いと告げられており、落ちるのは自力で上げたはずの所見である(#1849 の A-2 は 2/3 の検出であり…)

同ファイルの当該箇条書きは「本節は記録面であり同規則の scope 外——理由を持ち続けてよい」と明記されており、docs/2.-Evolution.md が正当な保持先です。移設は既に完了済みの状態であり、SKILL.md 側の再掲を delete しただけの本 PR は Destination: relocate, do not delete に違反しません。

結論

両 finding とも、評価者の grep 対象が SKILL.md 自身と一部の新設・既存 wiki エントリに留まり、docs/2.-Evolution.md(該当 SKILL.md セクションの記録面ミラー)と brake1-bounded-convergence-loop-on-pr-comments(既存 wiki エントリ)まで届いていなかったための誤検出と判断します。診断(reasoning の判定)自体は正しく、除去テストの適用も正しい——外れていたのは「保持先が存在しない」という前提のみです。

Fixed axis(impression-literal detection)は clean 判定に異論なし。

裁定の結果、本 PR への追加コミットは不要と判断します。修正コミットは行いません。

@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

Clean。issue #1923 の本文(forming→ready の帰結を含む)と、head 6151bc3 時点の diff 全ハンク(docs/2.-Evolution.md / docs/Decision-Structure.md / skills/evolution-parallel-agent-eval/SKILL.md)を通読した。実測数値の一致を独自に検証: base commit b838c451dSKILL.md は 42,621 B、head 6151bc3 は 38,596 B(wc -c 実測、差分 −4,025)で、issue 本文・PR 本文が主張する数値と一致する。issue が課した制約(節名・小見出し・Procedure のステップ番号は改名も分割も統合もしない)についても、外部から名指しされている 6 ファイル・13 箇所(initiator-autonomy.md / evolution-impression-literal-detection / operations-on-pr-review / task-subagent-prompt / task-subagent-spawn / task-subagent-state-labels)はいずれも本 diff の変更対象に入っておらず、この PR 自体がステップ番号・節名を動かしていないことも diff のハンク一覧から確認できる。issue が要求した「移設先を先に決める」点も、本 diff が新設する判断記録エントリ parallel-agent-eval-residual-is-restatementdocs/Decision-Structure.md の追加行)が満たしている。

Axis B — rule violation

Clean。round 1 の Finding 1/2 が指摘した2箇所(base SKILL.md:84 の "It is provisional — ... #1848 is where it gets measured." と base SKILL.md:219 の "Holding two instruments is worth something only while neither has spoken first...")は既に著者が却下済みで、既存 wiki エントリ brake1-bounded-convergence-loop-on-pr-commentsdocs/2.-Evolution.md 290行目に同内容が確認できることを独自に再検証し、却下は妥当と判断したため再提起しない。

その上で、本 diff が新たに削除した理由づけ文(rules/model/liplus-coding-rule.md Body States Behavior の Test / Destination: relocate, do not delete. に照らして relocate 済みかを個別に検証したもの)を追加で洗った。具体的には base 側の次の3箇所を検証した:

  • Procedure step 3「resolved language」項の "which names PR comments among the conversational replies the base language governs ... which is why the parent names it." → 同一ファイルの Report shape「Language」項(head SKILL.md:193)に "a subagent cannot resolve that value from its own context" として同旨が残置されており、削除ではなく同一本文内の再掲解消である。
  • Constraint「A rejection is final inside the loop」項の "What this buys is the cap's usefulness: re-argument could fill all three round trips with one contested point, and the only actor able to settle such a standoff is the parent..." → 既存 wiki エントリ brake1-bounded-convergence-loop-on-pr-commentsspec(evolution): turn brake 1 into a bounded convergence loop with PR comments as the subagent channel #1863 / PR spec(evolution): turn brake 1 into a bounded convergence loop over PR comments [rules, skills, docs] #1864、本 PR 以前から存在、本 PR は無変更)に「却下は loop の内側では最終(再提起を許すと 3 往復が一件の押し問答で埋まり、裁定役の親が上限の内側へ戻る)」として同内容が既に保持されている。
  • Design Dimensions 冒頭の "The recurring form this closes is one axis name carrying more than one question — joined visibly, or compressed into a single predicate that reads as one." → docs/2.-Evolution.md 288行目(本 PR 無変更)に「Brake 1 axis wording is authored from gist while its target is read literally #1692、3 日で 7 回観測、うち 5 回が『一つの軸名が複数の問いを抱える』形。可視に連結されている場合と、一語の述語へ圧縮されて一問に読める場合とがある」として同内容が既に保持されている。

3箇所とも Destination: relocate, do not delete. は既に(本 PR 以前の時点で)満たされており、本 diff の delete は違反ではない。

以上に加え、diff が触れた行全てを rules/model/liplus-coding-rule.md(全文)、rules/evolution/initiator-autonomy.mdskills/evolution-impression-literal-detection/SKILL.mdrules/operations/operations.mdrules/model/subtractive-structural-beauty.md に照らして確認したが、他に literal 違反は見つからなかった。

Fixed axis — impression-literal detection

Clean。対象は skills/evolution-parallel-agent-eval/SKILL.md の差分(docs/** は散文としてエージェントが自らの指示として読み実行する対象ではないため scope 外)。追加・書き換え行を通読し、新規に加わった句のうち push surplus・感情語・出典不明の借用語のいずれかに該当するものは無かった。本差分は既存文の圧縮・重複解消が中心であり、新規の弁証・修辞は加わっていない。

@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 #1923 は「Body States Behavior の 2 周目適用で再掲を剥ぐ」ことを求め、制約として節名・小見出し・Procedure のステップ番号の不動と、削除ではなく移設(移設先を先に決めること)を課していた。

  • 実測: skills/evolution-parallel-agent-eval/SKILL.md 42,621 → 38,596 B(−4,025、−9.4%)。round 2 の評価者が base b838c451d と head 6151bc3 の双方を wc -c で独自に取り直し、issue 本文・PR 本文の主張と一致することを確認している。
  • 節名・ステップ番号: 外部から名指しされている 6 ファイル 13 箇所はいずれも本 diff の変更対象に入っておらず、diff のハンク一覧からも改名・分割・統合が無いことが確認できる。
  • 移設先: 本 PR が新設した判断記録エントリ parallel-agent-eval-residual-is-restatementdocs/Decision-Structure.md の追加行)。

却下 2 件の検分(出口での親の読み)

round 1 は Axis A / Axis B に所見 1 件ずつ(同一の 2 行を別角度から指すもの)を返し、著者は両方を却下した。却下は loop の内側では最終であり、検分はこの位置に置かれている。**両方とも妥当と判断する。**評価者の診断(除去テストで 2 文とも reasoning と判定)は正しく、外れていたのは「この推論はどこにも保存されていない」という前提のほうだった。親が実物に当てて確認した:

  • Finding 1(base SKILL.md:84、fresh spawn が暫定である旨と測定先 #1848)— wiki エントリ brake1-bounded-convergence-loop-on-pr-comments の 17 行目が「各ラウンドの評価者は毎回新規に spawn し、resume しない…ただしどちらが多く検出するかは未測定であり、この選択は暫定である(測定先 = #1848)」として保持している。同エントリ 53 行目・59 行目にも却下案の記録と #1848 への導線がある。docs/2.-Evolution.md にも同内容が現存。
  • Finding 2(base SKILL.md:219、二つの計器の隔離理由)— docs/2.-Evolution.md が「器具を二つ持つ意味は、片方が先に喋った時点で失われる——『この面は測って差が無かった』を先に読んだ評価者は、そこには何も無いと告げられており、落ちるのは自力で上げたはずの所見である」として保持している。base と head で byte 一致であり、本 PR は触れていない。

いずれも移設は本 PR より前に完了しており、SKILL.md 側に残っていたのは再掲である。rules/model/liplus-coding-rule.md Body States Behavior の Destination: relocate, do not delete は移設済みの再掲の削除を禁じない。却下を覆す理由は無い。

ラウンド記録

  • N = 1(M = 全 3 軸 / P = 1、既定パターン)、評価者は各ラウンドで新規 spawn
  • 往復 = 2(上限 3 に未達)。round 1 = 所見 2 件 → 著者が両方却下・コミット無し。round 2 = 却下確定の拘束を掛けて新規 spawn、三軸とも clean で step 8 の exit 条件成立
  • 採用 0 件 / 却下 2 件(いずれも上記のとおり妥当)/ 追加コミット無し。baseline SHA は 2 ラウンドを通じて 6151bc3 で不動
  • step 2 の運用コピーは適用していない。対象が skills/** であり本体は subagent の常時ロード面へ注入されない(description のみ)ため、judge 型の評価者には適用不要。評価者は名指しした SHA での直接 Read で対象を読んでいる。step 5 の復旧も同じ理由で非該当

リリース種別と merge 判断

patch。Li+ source の内部蒸留であり、user/system observable な挙動変化を持たない(rules/operations/release-version-rule.md:observable でないものは構造規模によらず patch)。semi_auto の patch は人間ゲート無しで AI 直接 merge。

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

🤖 Generated with Claude Code

@smileygames
smileygames merged commit 8134c4e into main Sep 10, 2026
2 checks passed
@smileygames
smileygames deleted the 1923-distill-parallel-agent-eval branch September 10, 2026 09:30
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(brake): parallel-agent-eval is the largest single Li+ source file and its Procedure holds a third of it

1 participant