Skip to content

fix(model): align L1 skill descriptions with body firing moments - #1644

Merged
liplus-lin-lay merged 3 commits into
mainfrom
1641-l1-skill-descriptions-cannot-route-to-firing-moments-their-bodies-declare
Aug 3, 2026
Merged

fix(model): align L1 skill descriptions with body firing moments#1644
liplus-lin-lay merged 3 commits into
mainfrom
1641-l1-skill-descriptions-cannot-route-to-firing-moments-their-bodies-declare

Conversation

@liplus-lin-lay

@liplus-lin-lay liplus-lin-lay commented Aug 3, 2026

Copy link
Copy Markdown
Member

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 を選んだ理由:

  • 方針 1(削除)が不可: External-capability spec-write order は docs/E.-Li+language.mddocs/F.-Behavior-First.md が名指しで参照する load-bearing 節。System-injected output litmus は on-session-start.sh が毎起動でマーカーを注入する以上、セッション中の最高頻度ケースにあたる。
  • 方針 2(移送)が不可: 前者の発火モーメント(spec へ capability claim を書く瞬間)を所有する面が無い。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)

  • 方針 3: description に 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 は記録時点=判断後に発火するため瞬間が合わない。
  • 方針 1: 時変キーワード(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 句から名指しする形にした
  • Provides 句を新設し、routing 面から不可視だった二段 retrieval protocol(Tier 1 preview / Tier 2 deep-dive)と 9 soft / 12 hard のクエリ予算を明示した

docs/K.-Source-File-Format.md の「唯一の例外」記述も解消済みに更新した(docs は同一 PR 内で更新)。

検証

44 本すべての skills/*/SKILL.md を機械検証し、以下を確認した。

  • Invoke when で開始: 44/44
  • 条件列の終端 . 以降に Provides 相当句あり: 44/44
  • 1024 字以内: 44/44(本 PR の 3 本は 1019 / 790 / 1015 字)
  • 非適合 0 件(変更前は model-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.md Procedure step 6 の単巡キャップは「評価者のクラッシュ / 不正なプロンプト / タイムアウトは新しいラウンドを与えない」と限定列挙しており、literal どおりなら再実行の権利が無い。基盤停止を評価者クラッシュと読み分ける判断は AI 側で自己認可せず Master へ提起し、再実行の go-sign を得た(2026-08-03)。仕様が基盤停止と評価者クラッシュを区別していない点は別途 issue 化する。

再実行は 28fde4f#1643 マージ後に base を取り込んだ SHA)で実施。軸別 verdict:

結果
1 impression-literal(固定軸) 3/3 consistent
2 新しい L1 規範の不在 3/3 consistent(うち 2 体は base commit との byte 比較で body 無変更を確認)
3 routing 被覆 2 consistent / 1 partial
4 Provides 整合と house 形 3/3 partial
5 削除の安全性 3/3 consistent
6 参照整合 3/3 consistent

取り込んだ所見(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 節とは別。
  • 同ファイルの 3 節(<fixed-reference-temporal-separation> / <external-framework-projection-inhibitor> / <project-metadata-temporal-claim-guard>)が明示的な「before X」発火条件を持ちながら、description 側では総括条件 1 にぶら下がっているだけ(1/3 検出、軸 3 partial の根拠)。

記録のみ

  • 旧 description が持っていた comparison-informative domain の肯定例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 に再ピンして再評価し PASSrules/evolution/initiator-autonomy.md Two-stage brake: brake 2 の inline L1 diff は merge ゲートが acts する SHA と同一でなければならない)。他 3 ファイルは初回評価時と byte 同一。

#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
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 liplus-lin-lay 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.

自己レビュー結果: 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 に記録する。

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.

L1 skill descriptions cannot route to firing moments their bodies declare

1 participant