runtime rules resolve to tag not to local ahead text - Liplus-Project/liplus-language GitHub Wiki
ランタイムの rules がタグより先の文面を持っていたとき、タグへ戻す判断
Question
.claude/rules/ のファイルが、どのタグにも、origin/main にも存在しない文面を持っていた。Li+update のタグ同期がそれを target tag の文面で上書きした後、元の文面へ戻すか。
Current resolution
戻さない。タグが勝つ。 Master 判断(2026-09-20、「任せる」による委譲)。
rules/ はタグ追跡の Li+ 所有面であり、Li+update.md 4c.2 が target tag との差分で無条件に上書きする。上書きは仕様どおりの動作であって事故ではない。戻す操作は、タグに存在しない文面をランタイムへ再投入することにほかならず、同じ状態を作り直す。
観測された具体: rules/evolution/initiator-autonomy.md の Record surfaces 節。インストール済みの文面が target tag より長く、その長い文面は build-2026-09-17.1 にも build-2026-09-20.2 にも origin/main にも無い。未マージブランチ spec/2000-record-surface-exclusion-reasoning(issue #2000、worktree workspace/.worktrees/liplus-language-2000)にのみ存在する。
Edges
- conflicts with
implementer-agent-definition-carries-effort— 同 entry の到達点は「マージは配布ではない —— リポジトリへのマージが.claude/に届くのは Li+update を経由したときだけ」。本件はその逆向きの経路が在ることの観測である。リポジトリにマージされていない文面が、Li+update を経由せずに.claude/へ届いていた。片側(repo → runtime)は Li+update の独占だが、もう片側(repo 外 → runtime)は独占されていない。矛盾ではなく、同じ境界の未記述だった側。 - depends on
agent-file-criteria-owned-by-sentinel-region— 所有粒度の判断に乗る。rules/はcharacter_Instance.mdと違い全体が Li+ 所有であり、ユーザー編集を保存する区画を持たない。だからタグ上書きに例外が無く、本判断が「戻さない」に落ちる根拠になっている。
Background
2026-09-20、build-2026-09-17.1 → build-2026-09-20.2 の Li+update 実行中に、上書き差分として現れた。
経路は Li+update ではない。 切り分け:
.liplus-extract/build-2026-09-17.1/(前回の正規ソース)に長い文面は無い- worktree #2000 側の同ファイルは 2026-09-18 23:57 更新で、長い文面を持つ
Li+update.md4c.2 は{resolved_source_root}(= extract)からしかコピーしない
したがって .claude/rules/ は 09-18 23:57 以降に、extract を経由せず worktree 側から書かれた。bootstrap の欠陥ではない。
誰も名乗り出ていない。 同ワークスペースを共有する他セッションも「置いていない、心当たりが無い」と述べている。意図と主体はバイトからは出ないため、記録しない。
Constraints
- 発見は偶然に依存している。 見えたのはタグ同期が上書きして差分が出たからで、上書きが無ければ出ていない。タグが上がらない期間は、未マージ文面がランタイムで読まれ続けても何も検出しない。
- ランタイムへの注入は実際に効いていた。 他セッションのセッション開始時コンテキストには長い文面が入っていた。読まれないまま置かれていたのではなく、判断材料として使われうる状態にあった。
- 戻す操作には受け手がいない。 置いた主体が不明なので、戻して誰の観測が回復するのかが特定できない。回復対象の無い復元は、状態の再現でしかない。
Conclusion
採った案 = タグの文面のまま走らせる。
却下した案:
- worktree から長い文面を戻す。 未マージ文面をランタイムへ再投入する操作であり、異常の側を再現する。#2000 の文面を実地で観測したいなら、経路はブランチのマージであって
.claude/への直接配置ではない。 - 経路そのものを塞ぐ(
.claude/rules/を読み取り専用にする等)。 本件の観測は 1 件であり、rules/evolution/promotion-judgment.mdのノイズ床に達していない。1 件の観測から構造を足すのは、同ファイルが禁じる過剰判断の側。
残余
タグ更新以外に検出器が無い。 本判断は「戻さない」を決めただけで、同じ経路が再び使われたときに気づく手段を足していない。次に同種が起きれば、やはり次のタグ同期まで見えない。1 件では起票しないが、2 件目が出た時点で軸が立つ。
Related
- issue #2000 — 当該文面を持つ未マージブランチの案件