fix(model): align L1 skill descriptions with body firing moments - #1644
Conversation
#1634 の監査結果のうち L1 Model Layer 3 件(model-source-check / model-trigger-check-gate-actions / model-agentic-search)について、body 節が 名指しする発火モーメントを routing 面(description)へ反映させた。 - model-source-check: External-capability spec-write order と System-injected output litmus の 2 節に発火条件が無かったため description に 条件を追加(方針 3)。あわせて Provides と rules/model/trigger-check-gate.md の on-demand action surface 列挙を body の実在 9 節に一致させた - model-trigger-check-gate-actions: 「Character / tone / closing 選択直前」を description に追加(方針 3。self-eval の primary axis 発火点)。時変キーワード の bullet は model-agentic-search の description が同一の発火条件を既に 所有しているため body から削除し、境界宣言に置き換えた(方針 1) - model-agentic-search: description を house 形(Invoke when ... / ... . Provides ...)へ整合。末尾の行動規則断片を落とし、二段 retrieval protocol と 9/12 クエリ予算を Provides に明示した。docs/K.-Source-File-Format.md の 「唯一の例外」記述も解消済みに更新 44 本すべてが house 形・1024 字以内・Provides 句ありであることを機械検証済み。 新しい規範は L1 に追加していない。 Refs #1641
…iring-moments-their-bodies-declare
brake 1 (N=3) returned 3/3 agreement on one finding: the rewritten Provides clause named "the Web-side and parent-AI consumption discipline", which matches only <parent-ai-consumption-discipline-post-retrieval>. The sibling section <parent-ai-governance-pre-retrieval> carries distinct load-bearing content (verification-first, context preservation, proactive parallel research) and the old description glossed it as "(delegation governance, verification posture)". The rewrite dropped that gloss without a replacement, so this PR introduced the gap rather than inheriting it. Provides 句が body の実在節と一致していること自体が #1641 の完了条件であり、 本 PR の rewrite がその条件を自ら破っていた形。1024 字上限の余白を作るため "(Tier 1 preview, Tier 2 deep-dive)" の注記を落とした(節名 "two-tier retrieval protocol" は残るので、ルーティング面からの可視性は保たれる)。 1015 -> 1019 字。 Refs #1641
liplus-lin-lay
left a comment
There was a problem hiding this comment.
自己レビュー結果: pass
判断基盤 = issue #1641 本文 + PR diff (35eb567) + CI 結果(governance 2 本 pass、mergeStateStatus CLEAN)
完了条件の照合
- 3 件の body 各節が名指しする発火モーメントに description 条件が存在する(または節が消えている / 別の面へ移っている) — 満たされている。項目 1(
model-source-check)は条件 2 本追加、項目 2(model-trigger-check-gate-actions)は条件 1 本追加+重複 bullet の削除、項目 3(model-agentic-search)は house 形への書き換え。評価者 3 体が独立に、追加条件それぞれに対応する既存 body 節を引用して裏取りしている。 model-agentic-searchの description が house 形に一致する —Invoke when始まり / 条件区切りの/用法 /Provides節 / 1024 字上限(1019)を機械確認済み。44 本中唯一の例外だった状態が解消し、docs/K.-Source-File-Format.md:98の記述もそれに追随している。- 方針 3 を選んだ項目の理由が PR 本文に記録されている — 項目 1 / 2 とも記載済み。評価者が理由の実在を検証している(
docs/E.-Li+language.md:195/docs/F.-Behavior-First.md:201が当該節を名指し参照している事実を確認)。
ゲート
- brake 1 = N=3 / 単一ラウンド / 6 軸。3/3 一致の所見 1 件を取り込み(
35eb567)、2 件を #1646 へ分離、2 件を記録のみ。詳細は PR 本文。 - brake 2 = PASS。L1 差分を変更したため merge SHA に再ピンして再評価済み。
- 初回 brake 1 の予算上限中断と再実行は Master の go-sign による。単巡キャップが基盤停止を評価者クラッシュと区別していない仕様ギャップは別 issue で追う。
起点の記録
本 issue は 人間起点(2026-08-03、Master の明示指示)。skills/evolution-l1-update-gating Initiation-axis scope of the observation threshold により、long-horizon observation 閾値は本 issue の独立した前提条件ではなく、起点の人間判断 + brake 2 の対がその役割を満たす。AI 単独起動における閾値は hard requirement のまま変わらない。
バージョン種別: patch
rules/operations/release-version-rule.md の判断軸に照らし、変更は L1 skill 3 本の description 整合と索引 1 行であり、large refactor / large structural change に当たらない。ルーティング面の挙動は変わるが incremental scope。L1 に触れるため semi_auto の patch 直接マージは brake 2 の PASS を前提とする(rules/operations/execution-mode.md L1 brake 2 override)。PASS 済みにつき直接マージへ進む。
マージ後の予定
rules/operations/operations.md Post-L1-Merge Runtime Observation に従い、マージ後 ~5 分以内に trigger sample を 1 本流して fire / partial / miss の verdict を memory/self-evaluation_log.md に記録する。
Closes #1641
概要
#1634 の監査結果のうち L1 Model Layer に該当する 3 件を、issue で確定した解決方針の優先順(1. body 節を削る → 2. 発火モーメントを所有する別の面へ移す → 3. description に条件を追加する)に沿って処理した。新しい規範は L1 に追加していない。既存 body の発火モーメントを routing 面へ正確に反映させる範囲に留めている。
変更内容
1.
skills/model-source-check/SKILL.md(方針 3)到達不能だった 2 節に対応する発火条件を description に追加した。
a present-tense external-system capability claim is about to be written into spec→ External-capability spec-write order 節a system-injected hook output or status marker is about to be asserted as settled→ System-injected output litmus 節あわせて Provides 句へ両節を追加し、
rules/model/trigger-check-gate.mdの on-demand action surface 列挙(Provides と同一集合を持つ index 行)も body の実在 9 節へ一致させた。方針 3 を選んだ理由:
docs/E.-Li+language.mdとdocs/F.-Behavior-First.mdが名指しで参照する load-bearing 節。System-injected output litmus はon-session-start.shが毎起動でマーカーを注入する以上、セッション中の最高頻度ケースにあたる。operations-on-docs-ownershipは commit 時点=post-edit で瞬間がずれ、かつ L4 に L1 の規範を寄生させることになる。model-ambiguity-handlingは「曖昧さが残る」軸で、検証順序の軸ではない。後者はrules/evolution/cold-start-synthesis.mdが hook 材料を所有するが、litmus の適用範囲は cold-start に限らない(harness が注入する tag / version / state 一般)ため、移すとスコープが縮む。always-on ルール本体へ移す案は、on-demand だった内容を常時コスト化するため Observation: skill listing exceeds context budget; 9 discipline skills never dispatched in 52 startups #1542 の観測と逆を向く。2.
skills/model-trigger-check-gate-actions/SKILL.md(方針 3 + 方針 1)Character or tone or closing is about to be chosenを追加。skills/evolution-self-eval/SKILL.mdが「Primary axis = Character drift」と置く当の瞬間であり、routing 面から不可視だった。削除(方針 1)を採らなかったのは、この瞬間が Trigger moments 列挙の中で最も drift 頻度が高く、かつ「非自明な発話」という一般条件からは agent 自身が該当を認識しにくい面だから。移送(方針 2)先の候補であるevolution-self-evalは記録時点=判断後に発火するため瞬間が合わない。latest/recent/current/now)の bullet を body から削除した。同一の発火条件をskills/model-agentic-search/SKILL.mdの description が既に所有しており(category gate)、bullet 内の説明(domain suppressor との関係、calibration gate の独立発火)はすべて移送先 body に存在する。Retrieval tools 表の行が pointer を保持しているため routing の損失はゼロ。跡地には境界宣言 1 行を置いた。3.
skills/model-agentic-search/SKILL.md(形式整合)docs/K.-Source-File-Format.mdの house 形(Invoke when <条件1> / <条件2>. <何を提供するか>.)に一致させた。Invoke whenリテラルに変更(旧:ALWAYS invoke before answering when (a) ...)/と.を除去(計数規則が条件を数えられる形にした)Internal knowledge is the comparison baseline only ...)を description から落とし、body のinternal-knowledge-role節に一本化した上で Provides 句から名指しする形にしたdocs/K.-Source-File-Format.mdの「唯一の例外」記述も解消済みに更新した(docs は同一 PR 内で更新)。検証
44 本すべての
skills/*/SKILL.mdを機械検証し、以下を確認した。Invoke whenで開始: 44/44.以降に Provides 相当句あり: 44/44model-agentic-searchの 1 件のみが非適合)リリース種別の提案
patch。変更は description の条件文言・Provides 句・body の重複 bullet 1 件・docs の 1 行であり、Li+ 利用者の面から観測可能な挙動変化を伴わない構造整合。scope も incremental で「large」修飾子には当たらない。
ゲート
L1 Model Layer 変更のため、brake 1(
skills/evolution-parallel-agent-eval)に加えて brake 2(adapter/claude/agents/l1-gate-eval.mdの root-criteria evaluator)が必須。DEVIATION は merge ブロック。brake 1 / brake 2 結果(親による裁定)
brake 1(N=3 / model=sonnet / 単一ラウンド、6 軸)
評価者には PR URL・SHA・green CI run URL のみを渡し、
rules/model/trigger-check-gate.mdについては operational copy を.claude/に適用してから spawn した(評価後 sha256 照合で restore 済)。初回実行は 3 体とも月間予算上限で途中終了し verdict ゼロ。
skills/evolution-parallel-agent-eval/SKILL.mdProcedure step 6 の単巡キャップは「評価者のクラッシュ / 不正なプロンプト / タイムアウトは新しいラウンドを与えない」と限定列挙しており、literal どおりなら再実行の権利が無い。基盤停止を評価者クラッシュと読み分ける判断は AI 側で自己認可せず Master へ提起し、再実行の go-sign を得た(2026-08-03)。仕様が基盤停止と評価者クラッシュを区別していない点は別途 issue 化する。再実行は
28fde4f(#1643 マージ後に base を取り込んだ SHA)で実施。軸別 verdict:取り込んだ所見(3/3 一致)
skills/model-agentic-search/SKILL.mdの Provides 句がthe Web-side and parent-AI consumption disciplineとなっており、これは body の<parent-ai-consumption-discipline-post-retrieval>のみに一致する。兄弟節<parent-ai-governance-pre-retrieval>は verification-first / context preservation / proactive parallel research という別内容を持ち、改訂前の description はこれを(delegation governance, verification posture)として指していた。house 形への書き換えでその注記が代替なしに落ちており、本 PR が持ち込んだ欠落(既存の継承ではない)。#1641 の完了条件「Provides 句が body の実在節と一致している」に直接反するため取り込み、35eb567で修正。1024 字上限の余白確保のため
(Tier 1 preview, Tier 2 deep-dive)の注記を落とした。節名two-tier retrieval protocolは残るため、#1641 が問題視した「二段 retrieval プロトコルがルーティング面から不可視」は解消したまま。1015 → 1019 字。分離した所見(→ #1646)
skills/model-source-check/SKILL.mdの Provides が<relationship-framing>(:47-53)を名乗っていない(3/3 検出)。L1 skill descriptions cannot route to firing moments their bodies declare #1641 以前から存在し、同 issue が名指しした 2 節とは別。<fixed-reference-temporal-separation>/<external-framework-projection-inhibitor>/<project-metadata-temporal-claim-guard>)が明示的な「before X」発火条件を持ちながら、description 側では総括条件 1 にぶら下がっているだけ(1/3 検出、軸 3 partial の根拠)。記録のみ
time-variant fact / API spec / external state)が rewrite で落ちた(2/3 が指摘)。否定側(spin-wheel suppressor)は残存し、肯定例の内容は body の Domain tag 表にある。1024 字の余白が 5 字しかないため復元は取らない。model-agentic-searchの Provides が body 14 節中 9 節を名乗る点(1/3)。未記載のSource priority/Block 1/Three roles of the judging AI/Observation and evolutionは、同評価者自身が「invoke 後の機構であって独立した発火モーメントではない」と判定しており、他 2 体も Provides 欠落として挙げていない。現状維持。brake 2(L1 root-criteria evaluator)
PASS。初回は
a35a3dcで PASS、その後35eb567で L1 差分が変わったため、merge ゲートが動く SHA に再ピンして再評価し PASS(rules/evolution/initiator-autonomy.mdTwo-stage brake: brake 2 の inline L1 diff は merge ゲートが acts する SHA と同一でなければならない)。他 3 ファイルは初回評価時と byte 同一。