From 2a07d09d5411cad26e4c860beb3ec8c73af8ca4c Mon Sep 17 00:00:00 2001 From: Claude Lin & Lay Date: Fri, 21 Aug 2026 07:40:16 +0900 Subject: [PATCH 1/3] spec(evolution,docs): reach the body-language carve-out from the entry rule and the parameter's own page [skills, docs] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docs/2.-Evolution.md | 2 +- docs/B.-Configuration.md | 3 ++- skills/evolution-decision-structure-write/SKILL.md | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/2.-Evolution.md b/docs/2.-Evolution.md index 5845c204..138ceedc 100644 --- a/docs/2.-Evolution.md +++ b/docs/2.-Evolution.md @@ -155,7 +155,7 @@ L1 は種である。種は最も動かしにくくなければならない。 - 書き手側 surface であり、判断学習(読み手側)と対をなす - 書く前に `mcp__github-rag-mcp__search` を `type: "wiki_doc"` で叩いて重複を確認する - 既存エントリ無効化時は削除せず supersede edge で前方参照する(graph 構造の維持) -- エントリ言語は LI_PLUS_PROJECT_LANGUAGE に従う。混在は不可 +- エントリ言語は LI_PLUS_PROJECT_LANGUAGE に従う。混在は不可。この値が解決するのは host workspace に対してであり、到達範囲がどこで止まるかを定める carve-out は body 行が持つものと同一である——書き込み先の wiki が `LI_PLUS_REPO` のリポジトリ自身のものである場合、`LI_PLUS_PROJECT_LANGUAGE` は entry 言語へ届かず、届くものは同リポジトリ自身の governance が定める。正本は `rules/operations/operations.md` の `## Operations Rules`。ここには写さず、そちらを読む - 知識 wiki は射程外(本機構は判断構造 surface のみ)。対話トランスクリプトをそのまま本文にしない - 書き出し先は docs ティアの Wiki surface であり、L1 Model Layer ソース変更ではない(L1 Update Gating には抵触しない) diff --git a/docs/B.-Configuration.md b/docs/B.-Configuration.md index 65f169eb..aa0989c5 100644 --- a/docs/B.-Configuration.md +++ b/docs/B.-Configuration.md @@ -77,6 +77,8 @@ Li+リポジトリからLi+ファイルを取得する方法を指定します リリースはどのモードでも人間の確認が必要です。 +`LI_PLUS_BASE_LANGUAGE` と `LI_PLUS_PROJECT_LANGUAGE` は、いずれも配布先workspace専用です。対話言語・成果物言語のどちらについても、liplus-language リポジトリ内部の運用ルールは変更しません。 + ### LI_PLUS_BASE_LANGUAGE 配布先workspaceで、人間との対話に使う**基本言語**です。未設定の場合、セッション開始時にAIが対話で設定します(手入力不要)。 @@ -89,7 +91,6 @@ Li+リポジトリからLi+ファイルを取得する方法を指定します 注意: - ここで決めるのは配布先workspaceの対話言語です -- liplus-language リポジトリ内部の日本語運用ルールは変更しません ### LI_PLUS_PROJECT_LANGUAGE diff --git a/skills/evolution-decision-structure-write/SKILL.md b/skills/evolution-decision-structure-write/SKILL.md index 2f803ca2..25ff8a4f 100644 --- a/skills/evolution-decision-structure-write/SKILL.md +++ b/skills/evolution-decision-structure-write/SKILL.md @@ -90,7 +90,7 @@ Three primary edges; declare the applicable ones on a state-form entry. - **Delete only under the conditions in `docs/Decision-Structure.md`** (premise invalidated, target feature removed, consolidated into a requirements spec). Deleting because the entry looks stale is the preserve-or-destroy reflex, not a judgment. - **Verify the specification literally before writing**, per `rules/evolution/autonomy-block-shape.md` Literal verification. An impression-based entry becomes fuel for a later impression-critique loop. -- **Entry language = `LI_PLUS_PROJECT_LANGUAGE`** (resolved from the workspace's Li+config.md). Mixing languages within an entry is not allowed. +- **Entry language = `LI_PLUS_PROJECT_LANGUAGE`** (resolved from the workspace's Li+config.md). Mixing languages within an entry is not allowed. That value resolves against the host workspace, and the carve-out fixing where its reach stops is the same one the body lines carry: when the wiki being written is that of the repository at `LI_PLUS_REPO` itself, `LI_PLUS_PROJECT_LANGUAGE` does not reach the entry language, and what does is fixed by that repository's own governance. Canonical is `rules/operations/operations.md` Operations Rules; read it there, it is not restated here. - **A rename or deletion may break cross-references; do not close that by attention.** The Cross-reference integrity assertion in `skills/operations-on-wiki-sync/SKILL.md` detects it at the next wiki sync. Closure is structural. From 6b70613b857a6f25e7dcf97231532a4a63266dd2 Mon Sep 17 00:00:00 2001 From: Claude Lin & Lay Date: Fri, 21 Aug 2026 07:57:28 +0900 Subject: [PATCH 2/3] spec(evolution,docs): adjudicate brake 1 findings - trim the pointers to the precedent granularity and let a heading own the shared caveat [skills, docs] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docs/2.-Evolution.md | 2 +- docs/B.-Configuration.md | 2 ++ skills/evolution-decision-structure-write/SKILL.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/2.-Evolution.md b/docs/2.-Evolution.md index 138ceedc..1859e110 100644 --- a/docs/2.-Evolution.md +++ b/docs/2.-Evolution.md @@ -155,7 +155,7 @@ L1 は種である。種は最も動かしにくくなければならない。 - 書き手側 surface であり、判断学習(読み手側)と対をなす - 書く前に `mcp__github-rag-mcp__search` を `type: "wiki_doc"` で叩いて重複を確認する - 既存エントリ無効化時は削除せず supersede edge で前方参照する(graph 構造の維持) -- エントリ言語は LI_PLUS_PROJECT_LANGUAGE に従う。混在は不可。この値が解決するのは host workspace に対してであり、到達範囲がどこで止まるかを定める carve-out は body 行が持つものと同一である——書き込み先の wiki が `LI_PLUS_REPO` のリポジトリ自身のものである場合、`LI_PLUS_PROJECT_LANGUAGE` は entry 言語へ届かず、届くものは同リポジトリ自身の governance が定める。正本は `rules/operations/operations.md` の `## Operations Rules`。ここには写さず、そちらを読む +- エントリ言語は LI_PLUS_PROJECT_LANGUAGE に従う。混在は不可。body 行の傍らに置かれた carve-out が同じ軸でここへ及ぶ——書き込み先の wiki が `LI_PLUS_REPO` のリポジトリ自身のものである場合に `LI_PLUS_PROJECT_LANGUAGE` が entry 言語へ届かない、というものである。正本は `rules/operations/operations.md` の `## Operations Rules`。そちらを読む。ここには写さない - 知識 wiki は射程外(本機構は判断構造 surface のみ)。対話トランスクリプトをそのまま本文にしない - 書き出し先は docs ティアの Wiki surface であり、L1 Model Layer ソース変更ではない(L1 Update Gating には抵触しない) diff --git a/docs/B.-Configuration.md b/docs/B.-Configuration.md index aa0989c5..7e2f71e8 100644 --- a/docs/B.-Configuration.md +++ b/docs/B.-Configuration.md @@ -77,6 +77,8 @@ Li+リポジトリからLi+ファイルを取得する方法を指定します リリースはどのモードでも人間の確認が必要です。 +### 言語設定の適用範囲 + `LI_PLUS_BASE_LANGUAGE` と `LI_PLUS_PROJECT_LANGUAGE` は、いずれも配布先workspace専用です。対話言語・成果物言語のどちらについても、liplus-language リポジトリ内部の運用ルールは変更しません。 ### LI_PLUS_BASE_LANGUAGE diff --git a/skills/evolution-decision-structure-write/SKILL.md b/skills/evolution-decision-structure-write/SKILL.md index 25ff8a4f..ed621928 100644 --- a/skills/evolution-decision-structure-write/SKILL.md +++ b/skills/evolution-decision-structure-write/SKILL.md @@ -90,7 +90,7 @@ Three primary edges; declare the applicable ones on a state-form entry. - **Delete only under the conditions in `docs/Decision-Structure.md`** (premise invalidated, target feature removed, consolidated into a requirements spec). Deleting because the entry looks stale is the preserve-or-destroy reflex, not a judgment. - **Verify the specification literally before writing**, per `rules/evolution/autonomy-block-shape.md` Literal verification. An impression-based entry becomes fuel for a later impression-critique loop. -- **Entry language = `LI_PLUS_PROJECT_LANGUAGE`** (resolved from the workspace's Li+config.md). Mixing languages within an entry is not allowed. That value resolves against the host workspace, and the carve-out fixing where its reach stops is the same one the body lines carry: when the wiki being written is that of the repository at `LI_PLUS_REPO` itself, `LI_PLUS_PROJECT_LANGUAGE` does not reach the entry language, and what does is fixed by that repository's own governance. Canonical is `rules/operations/operations.md` Operations Rules; read it there, it is not restated here. +- **Entry language = `LI_PLUS_PROJECT_LANGUAGE`** (resolved from the workspace's Li+config.md). Mixing languages within an entry is not allowed. The carve-out stated alongside the body lines reaches the entry language on the same axis — where the wiki being written is that of the repository at `LI_PLUS_REPO` itself and `LI_PLUS_PROJECT_LANGUAGE` does not reach it. Read it at `rules/operations/operations.md` Operations Rules; it is not restated here. - **A rename or deletion may break cross-references; do not close that by attention.** The Cross-reference integrity assertion in `skills/operations-on-wiki-sync/SKILL.md` detects it at the next wiki sync. Closure is structural. From f7f95cb04a61fad311c886f0ecfe561e055ab807 Mon Sep 17 00:00:00 2001 From: Claude Lin & Lay Date: Fri, 21 Aug 2026 08:04:29 +0900 Subject: [PATCH 3/3] spec(evolution): record the fixed-axis divergence pair outcome for the 1-of-3 split MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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