spec(evolution,docs): reach the body-language carve-out from the entry rule and the parameter's own page [skills, docs] - #1793
Conversation
…y rule and the parameter's own page [skills, docs] body 言語規則の binding 先取り違えについて、#1731 / PR #1773 が commit / PR / issue body で直した同型の露出が、Decision Structure entry の言語規則とパラメータの一次説明箇所に残っていた。本 commit はその2系統を直す。 判定1(ポインタ化、写しを増やさない): - `skills/evolution-decision-structure-write/SKILL.md` Maintenance の `Entry language` 行に、値が解決するのは host workspace に対してであること、書き込み先の wiki が `LI_PLUS_REPO` のリポジトリ自身のものである場合は届かないことを述べ、正本 `rules/operations/operations.md` Operations Rules を指すだけにした。carve-out 本文は再掲していない。 - `docs/2.-Evolution.md` の日本語ミラー側の同一行に同じポインタを置いた。 判定2(追加ではなく再配置): - `docs/B.-Configuration.md` の非対称は記述の欠落ではなく、同一事実の写しが BASE 節にだけ当てられている状態だった。不在が「PROJECT には及ぶ」という偽の信号を運ぶため、BASE 節内の1行を削除し、2つの `###` 節の直前に両パラメータを覆う1行を置いた。B 内の写しの数は 1 のまま、非対称のみが消える。 - `docs/D.-Installation.md` は既に両パラメータを正しく覆っており、変更していない。 実地の裏付けは issue 本文のとおり。`LI_PLUS_PROJECT_LANGUAGE=en` の workspace から同じ経路を通れば entry は英語で書かれ、当該リポジトリの日本語運用に反する。 release type = patch(L2 spec と docs の到達性修理であり、user/system observable な挙動変化を持たない)。 #1775
brake 1 統合コメント — N=3 / M=全軸 / P=1 @
|
… to the precedent granularity and let a heading own the shared caveat [skills, docs] brake 1(N=3 / M=全軸 / P=1 @ 2a07d09)の統合コメントに対する著者裁定。各所見の採否と理由を以下に記録する。 --- 軸1(3/3)ポインタか写しか — ACCEPT、修正した --- 所見は成立していた。追加した2文は正本 `rules/operations/operations.md:67` の命題を自分の言葉で述べており、(a) 対象が `LI_PLUS_REPO` 自身のとき届かない、(b) 代わりに届くのは同リポジトリ自身の governance、(c) この値は host workspace に対して解決する、の3命題を運んでいた。そのうえで末尾が「写していない」と述べており、直前の自分自身について偽になっていた。 先行判断 #1731 / PR #1773 が置いた形を literal で確認した。`rules/operations/main-agent-procedures.md:62` と `docs/3.-Task.md:150` はいずれも (a) だけを識別ラベルとして名指し、(b) と (c) は運ばずにポインタで閉じている。本 commit は追加2文をその粒度へ切り詰めた。(a) は残す——落とすと「どの carve-out か」が解決せずポインタとして成立しないため、precedent の粒度が下限である。 正味: carve-out の実体は正本1箇所のまま。issue #1775 の制約「写しを増やさない」「carve-out の本文を再掲しない」に適合。 --- 軸2(3/3)挿入文がどの見出しの中に読めるか — ACCEPT、修正した --- 所見は成立していた。挿入位置 `:80` の前に見出しが無く、見出し単位で読む読者は実行モード節の中に居るまま当該文に到達していた。削除した旧 `:92` が `### LI_PLUS_BASE_LANGUAGE` の `注意:` リスト内に在ったのに対し、置換先に同等の帰属が与えられていなかった。「不在が偽の信号を運ぶ」状態を「誤配置された存在」として再生産していた、という指摘を受け入れる。 修理: 当該1行に `### 言語設定の適用範囲` を与え、見出しが所有する形にした。 issue #1775 判定2 の字面(「2つの `###` 節の直前に1行を置く」)からは外れる。理由を明示する。素の段落は markdown 構造上つねに直前の節に帰属するため、判定2 の指定する形は当該ファイルの見出し配置のもとでは達成不能であり、見出しの介在なしに閉じられない。判定2 が述べた3つの目的——B 内の写しの数は 1 のまま / 非対称は消える / caveat は読み手が居るページに残る——はいずれも保存されており、加えて字面どおりの実装が生む帰属欠陥が閉じる。同ファイルには非パラメータ名の `###`(`### settings.json と settings.local.json の所有境界`)が既に在り、形として in-form である。制約側には抵触しない(写しは増えず、`docs/B.-Configuration.md` は列挙された対象ファイル、否定制約に触れない)。親の検査対象として記す。 --- 軸3(3/3)同型の露出の残存 — REJECT(scope)、follow-up を merge 前に起票した --- 所見の literal は独立に確認し、成立している。`docs/3.-Task.md` `## 言語レイヤー分離`(`:275`、当該行 `:279-281`)は body 言語を `LI_PLUS_PROJECT_LANGUAGE` に束ねながら carve-out を述べず正本も名指していない。同一ファイルの `:150` と `:291-293` はどちらもポインタを持つため、当該節だけが非対称である。 本 PR では受理しない。`docs/3.-Task.md` は issue #1775 が列挙した対象ファイル3件に含まれず、受理は target-file set の逸脱にあたる。これは #1775 自身が #1731 から受けた処遇と同じ形である(「#1731 の対象4ファイルの外にあるため同 PR では受理せず、本 issue が引き取り先」)。 引き取り先を merge 前に確保した: #1794。`rules/operations/main-agent-procedures.md` PR review の Follow-through on deferred items(repo 側の deferral は merge 前に起票する)に従う。 --- 軸4(3/3 clean)ソースとミラーの命題対応 — 所見なし --- 軸1 の切り詰め後に命題対応を再検証した。`skills/evolution-decision-structure-write/SKILL.md:93` と `docs/2.-Evolution.md:158` は5命題(同軸で及ぶ / 条件 = 書き込み先 wiki が `LI_PLUS_REPO` 自身 / 帰結 = entry 言語へ届かない / 正本の位置 / ここには写さない)で一致。片方にあって他方に無い命題は無い。 --- 固定軸(印象文言)1/3 flag — 精練しない、閾値未満として記録 --- flag された literal: `skills/evolution-decision-structure-write/SKILL.md:93` 末尾の `; read it there, it is not restated here`(flag 時点の revision 2a07d09。切り詰め後は `; it is not restated here`)。理由は、当該句を落としても behavior semantic が変わらず、ポインタの指示内容は同じである、というもの。 `skills/evolution-impression-literal-detection/SKILL.md` Aggregation の絶対閾値に従う。1 of N=3 は auto-refine しない。flag された literal を commit body に記録し、閾値未満であることを精練しなかった理由として名指す——これが親の検査面である。残る2体は当該末尾句を Negative リスト(明示的 referent path を伴う引用 / 既知の誤読を先回りする説明的 rationale)の保護対象に置き clean としている。先行判断 #1773 の precedent も同形の末尾(`Read both there; they are not restated here.`)を持つ。 検証: 73 tests OK。3ファイルとも well-formed UTF-8、BOM 無し、mojibake 無し。 #1775
…e 1-of-3 split brake 1 固定軸(印象文言検出)の 1 of N=3 split に対する divergence pair の記録。`skills/evolution-impression-literal-detection/SKILL.md` Aggregation が「A split on this axis (1-of-3, or 2-of-3) is a divergence, so it also runs the same-question check → why-diverged pair」と定めており、`6b70613` の裁定は閾値動作だけを記録して pair の結果を述べていなかった。本 commit がそれを補う。ファイル差分は無い——pair の結果が source 変更を含意しないため(下記 Q2)。記録面は著者裁定と同じ commit body であり、新たな記録面は設けない(`skills/evolution-parallel-agent-eval/SKILL.md` Divergence handling「No new record surface」)。 対象の split: 固定軸で1体が flag、2体が clean。flag された literal は `skills/evolution-decision-structure-write/SKILL.md:93` 末尾の `; read it there, it is not restated here`(flag 時点 revision `2a07d09`。軸1 の切り詰め後は `; it is not restated here`)。 --- Q1 same-question check: 同じ問いに答えたか → YES --- 固定軸は evaluator prompt へ verbatim で入る(同 skill Prompt literal「Copy it verbatim; do not re-compose it per spawn, and add nothing to it」)。したがって3体が受け取った軸の文言は同一である。その literal は除去テストを述べたうえで、Positive / Negative リストを参照で名指し「retrieve that file at the revision this prompt names and apply it as written」と指示している。 Negative リストの Explanatory rationale 項は、判定基準を2つの連言として述べている: > Protected when removing it would invite future revision-by-impression; impression literal only when removal leaves both the behavior semantic and the revision stability unchanged. 問いは単一かつ複合であり、両方の連言は3体が「as written で適用せよ」と指示された同一の材料の中に在った。flag した1体は連言1(behavior semantic が不変)について報告した。clean の2体は連言2へ到達し、これが成立しないと判定した——当該末尾句を落とすと、ポインタから「これは写しではなくポインタである」と述べる節が消え、将来の編集がポインタを写しへ再展開する余地が開く。それはまさにこの文が抑えている drift であり、軸1 が 3/3 で測ったのは、その drift がこの同じ行の上で現に起きていたという事実である。 異なる問いに答えた体は無い。よって Q1 は YES であり、所見は軸の文言(Axis statement form)には乗らない。 --- Q2 why-diverged: 基準の曖昧さか、明確な基準の適用のばらつきか → 適用のばらつき --- 基準は明示的であり、source literal が `both` の語で2つの連言を名指している。曖昧さとして解消すべきものは無く、flag した1体が報告しなかったのは、その基準がすでに名指している連言2そのものである。したがって split は基準の曖昧さではなく、明確な基準の適用のばらつきに帰する。 基準の gap は無い。存在しない gap を書き起こすことは本ステップの failure mode として明記されており(`rules/model/subtractive-structural-beauty.md` push surplus)、行わない。`rules/evolution/promotion-judgment.md` への spec-gap 観測の routing も発生しない。 --- 結論 --- 「They answered the same question, and the criteria sufficed」が両問に答え、divergence は閉じる。 閾値動作との関係: 固定軸の絶対閾値(1 of N=3 は auto-refine しない、flag された literal を閾値未満として commit body に記録する)は pair の結果と独立に発火する旨が同 Aggregation に明記されており、`6b70613` で既に発火済み。本 pair の結果はそれを変更しない。いずれの結果も単独では merge を gate しない。 #1775
smileygames
left a comment
There was a problem hiding this comment.
自己レビュー記録(execution mode = semi_auto / patch)
受け入れ条件の確認
issue #1775 の判定1 / 判定2 と対象ファイル3件を実物で照合した(head f7f95cb、累積 diff 3 files / +6 −3)。
| 項目 | 結果 |
|---|---|
判定1 — skills/evolution-decision-structure-write/SKILL.md をポインタ化 |
適合 |
判定1 — docs/2.-Evolution.md(日本語ミラー) |
適合 |
判定2 — docs/B.-Configuration.md の再配置 |
適合(形は下記の逸脱あり、issue 本文を更新済み) |
| 制約 — 写しを増やさない | 適合(下記の実物照合による) |
制約 — docs/D.-Installation.md を変更しない |
適合(diff に無い) |
| 制約 — 実装と docs 更新は同一 PR | 適合 |
| 制約 — #1779 マージ後に着手 | 適合(#1779 は 2026-08-20 に PR #1791 で close 済み、本ブランチは 61db0fc を base とする) |
「写しを増やさない」は著者の主張を鵜呑みにせず precedent を読んだ。rules/operations/main-agent-procedures.md:62 と docs/3.-Task.md:150 はいずれも「対象が LI_PLUS_REPO 自身のとき届かない」という識別ラベル1つだけを名指し、governance 側の命題と host workspace 解決の命題は運ばずにポインタで閉じている。末尾の形(Read both there; they are not restated here. / いずれもそちらを読む。ここには写さない。)も同一である。本 PR の切り詰め後の2文はこの粒度に一致する。carve-out の実体は正本1箇所のまま。
brake 1
N=3 / M=全軸 / P=1 @ 2a07d09。統合コメント: #issuecomment-5363021085。
計測値(採否の理由ではなく、triage の記録として): 軸1 3/3 / 軸2 3/3 / 軸3 3/3 / 軸4 clean / 固定軸 1 of 3。
Procedure step 2 の operational copy は適用していない。本 PR の Li+ ソース対象は skills/* 1ファイルであり skill body は評価者の観測面へ注入されない(description のみ)。judge 型の評価であって probe 型ではないため、直接 Read への指示で置き換わる条件に当たる。docs/* も注入対象外。したがって step 5 の restore も対象なし。host の permission gate による fallback ではない。
裁定は著者側(resume した実装サブエージェント)が行い、6b70613 と f7f95cb の commit body に記録されている。親は裁定を検査し、2件の訂正を差し戻した(issue 本文の更新 / 固定軸の分岐処理の記録)。いずれも f7f95cb で解消。
却下されたまま残っている所見(親の判断)
- 軸3(3/3)— 妥当と判断する。 literal は成立しているが
docs/3.-Task.mdは #1775 の対象ファイル3件の外にあり、受理は target-file set の逸脱にあたる。#1775 自身が #1731 から受けた処遇と同型である。引き取り先 #1794 は merge 前に起票済み(Follow-through on deferred items)。 - 固定軸 1 of 3 — 妥当と判断する。 絶対閾値の字面(1 of N=3 は auto-refine せず commit body に記録)と一致する処理であることを確認した。分岐処理の対は
f7f95cbで「同じ問いに答えており、基準で足りていた」に着地している。閾値の処理は対の結果と独立に6b70613で発火済み。
射程の逸脱
判定2 の指定する形からの逸脱が1件ある。 issue は「2つの ### 節の直前に素の1行を置く」と指定していたが、markdown では素の段落はつねに直前の見出しに帰属するため、当該ファイルの見出し配置のもとでこの形は達成不能である(評価者3体が独立に同じ構造読みへ到達)。出荷した形は当該行に ### 言語設定の適用範囲 を与えたもので、判定2 が述べた3つの目的(B 内の写しは 1 のまま / 非対称は消える / caveat は読み手の居るページに残る)はいずれも保存されている。親としてこの逸脱を承認した。issue #1775 の判定2 は出荷した形へ更新済みであり、記録と成果物は一致している。
対象ファイルの追加は無く、否定制約にも触れないため scope-exceed の対話確認は発火していない。
手順上の逸脱(親側、記録として)
brake 1 の裁定検査中、親が precedent を読むために当該 clone で git checkout origin/main -- . を実行した。これは委譲先が作業中の作業ツリーを書き戻す操作であり、対象3ファイルが origin/main の内容へ戻された。 HEAD を動かさないため reflog には現れない。著者は差分が出ないはずの記録 commit が diff を報告したことで検知し、6b70613 から復元して未 push の commit を amend した(force push は不要、push は fast-forward)。累積 diff・ツリー・テスト(73 OK)を照合し、成果物への影響が無いことを確認済み。
原因は親の操作であり、Li+ の update / sync 経路ではない。委譲中の共有 clone に対する親側の作業ツリー操作という一般形の問題として、workspace 側に持ち帰る。
次のステップ
execution mode = semi_auto、release type = patch(L2 spec と docs の到達性修理であり user/system observable な挙動変化を持たない)。patch は人間ゲート無しで AI 直接マージ。L1 Model Layer ソース(rules/model/)は触れていないため brake 2 は発火しない。
CI green(governance 2 runs / SUCCESS)、mergeStateStatus CLEAN を確認のうえマージする。
Closes #1775
body 言語規則の binding 先取り違えのうち、#1731 / PR #1773 の対象4ファイルの外に残っていた2系統を直す。
判定1 — ポインタ化(写しを増やさない)
skills/evolution-decision-structure-write/SKILL.mdMaintenance のEntry language行docs/2.-Evolution.mdの日本語ミラー側の同一行いずれも、値が解決するのは host workspace に対してであること、書き込み先の wiki が
LI_PLUS_REPOのリポジトリ自身のものである場合は届かないことを述べ、正本rules/operations/operations.mdOperations Rules を指すだけにした。carve-out 本文は再掲していない。判定2 — 追加ではなく再配置
docs/B.-Configuration.mdの非対称は記述の欠落ではなく、同一事実の写しが BASE 節にだけ当てられている状態だった。不在が「PROJECT には及ぶ」という偽の信号を運ぶため、BASE 節内の1行を削除し、2つの###節の直前に両パラメータを覆う1行を置いた。B 内の写しの数は 1 のまま、非対称のみが消える。docs/D.-Installation.mdは既に両パラメータを正しく覆っており、変更していない(issue の制約どおり)。影響範囲: L2 spec(skill 1件)と docs(2件)の到達性のみ。挙動変化なし。
release type: patch。user/system observable な挙動変化を持たない。
依存: #1779 はマージ済みのため
docs/2.-Evolution.mdの衝突は解消済み。本ブランチは #1779 マージ後の main を基点にしている。