li plus always on footprint load bearing - Liplus-Project/liplus-language GitHub Wiki
Li+ always-on footprint は load-bearing — 安全な文脈圧縮余地は枯渇
Question
Li+ の always-on context footprint(rules/**/*.md + adapter CLAUDE.md + output-style)を、AI 挙動を損なわずさらに圧縮できるか?
計測は 2 時点ある。本 entry が結論を出したときの実測は rules 71 KB / 合計 86 KB ≈ 21,500 tok。2026-09-09(build-2026-09-09.2)の再測は rules 139,627 B / 合計 156,672 B(entry 基準比で rules +97%、合計 +82%。同 entry の ~4 B/tok 換算で ≈ 39,000 tok)。結論は下記のとおり射程を限定したうえで維持する。
Current resolution
構造的な移設によっては、できない。 文脈コスト軸の圧縮候補は3つ検討され、いずれも構造的理由で却下される:
- operations 層 → on-demand skill 化: skill auto-invoke は drift 直前の introspection-gap 中に発火判定する性質で、毎瞬間に効くべき規律(must-fire)を落とす(recall gap)。#1315 が
expansion-limitを skill→rule に戻した実証(1セッションで27回以上の発火漏れ)あり。却下。 - operations 層 → hook イベント注入: この機構は #988(Milestone Rules を on_issue hook 注入)で一度実装されたが、#1102(adapter flatten)が「rules 常時ロード + skills auto-invoke」へ単純化する際に撤去済。差し戻しは撤去した複雑性の回帰。加えて PostToolUse はツール実行後に発火するため、commit/PR 作法を操作前に載せられないタイミング問題を持つ。割に合わず却下。
- adapter
CLAUDE.mdautonomy 節 ↔rules/evolution/*.mdの dedup: 一見二重持ちだが、(a) 各 autonomy ブロックは既に「宣言 + 要約 +see rules/...ポインタ」構造で DRY、(b) brake1/brake2 と human-gate 列挙(release create / Latest flip / force push / tag delete / 不可逆外部副作用)は不可逆な外部副作用の確認点そのものであり、誤って落ちたときの復旧経路が git 内に無い。この列挙では明示的冗長性の側が load-bearing であり、token のために削るのは禁止対象。却下。
結論として、always-on コストは構造的単純さのために受容された tradeoff(#1102)であり、未最適化の無駄ではない。移設によるこれ以上の文脈圧縮は cargo-cult(圧縮のための圧縮)になる。
射程の限定(#1800、2026-09-09)
当初の一般命題「always-on に乗っている内容は load-bearing / 安全な余地は残っていない」は広すぎた。却下した3件はいずれも「常時ロード面ごと別の面へ移す」形の移設案であり、そこで論じられたのは面の所在であって、面の内側に書かれた文の一行一行ではない。前者は動かない。後者は測ればまだ載っている。
反証は #1800 の実測である。rules/operations/main-agent-procedures.md の 15 節が節頭に持っていた配置理由は、同一ファイル上方の ## The bar and its pair に一度書かれた判定基準を各節で当てはめ直した文であり、8,220 B のうち 4,734 B が load-bearing でなかった。落としても文脈内跳躍すら増えない(基準が同じファイルにある)ため、always-on-duplication-removal-direction の合格条件は自明に満たされた。
したがって本 entry の射程は次のとおり:
- 持つ(動かない): 常時ロード面を skill / hook / 別ファイルへ移す案の却下3件。理由は recall gap / 撤去済み複雑性の回帰 / 不可逆性の保護であり、いずれも footprint の増減で動かない構造的理由である。
- 持たない: 常時ロード面の内側に非 load-bearing な記述が残っていないか。これは本 entry が測った軸ではない。判定は
rules/model/liplus-coding-rule.mdの Body States Behavior(判別線=その文を読んだ者の行いが変わるか)とalways-on-duplication-removal-direction(合格条件=ツール呼び出し跳躍の非増加)が持つ。
これは rules-hold-criteria-not-provenance が conflicts with edge に残していた未解決点(「一般命題側への scope 限定の要否」)への回答でもある。要る、というのが回答である。同 entry が来歴の語りについて示した衝突は、一般命題が広すぎたことに由来しており、却下3件とは衝突していない。
Edges
- depends on(外部前提): 本判断は2つの外部前提に依存する。(1) Claude Code の rules
pathsがイベントトリガー非対応で glob のみ(#995)、(2) skill auto-invoke の recall 信頼性が構造的に弱い(#1315)。いずれかが解消されれば本判断は再評価対象。 - footprint の増加は再評価条件に加えない(#1800 の判定): 起票時の問いは「基礎となった計測が +74% 動いている以上、増加そのものを再評価トリガーへ入れるべきか」であった。入れない。 却下3件の理由はどれも計測量を参照していないため、閾値を跨いでも3件のうち1件も動かない —— 発火しても指し示す先が無いトリガーになる。実際に本 entry を動かしたのは増加量ではなく、#1800 が節頭を読んで非 load-bearing だと判定したことであり、その判定を担う面は上の射程の限定に書いた2つがすでに持っている。増加は徴候であって条件ではない、というのがこの判定である。
- supersede / conflict edge なし。
li-plus-lightening-l1-gate-overrideは Li+ lightening 系列の別軸判断(L1 gate override であって always-on footprint ではない)であり、本 entry と並立する。
Background
Master「Li+自体を圧縮できる?」→ 文脈コスト軸を選択。always-on footprint を実測(rules 71KB / 合計 86KB ≈ 21,500 tok)。レイヤー別では operations 層 14.5KB が「event-driven と自己宣言しているのに always-on でロードされている」ズレを持ち、最大の圧縮余地に見えた。しかし起票前の judgment-learning(RAG)+ source-check(実ファイル Read)で3候補とも溶解した。
再測の記録(2026-09-09、build-2026-09-09.2): rules 139,627 B / adapter CLAUDE.md 17,045 B / output-style 389 B、合計 156,672 B。結論を出した時点の 86 KB から +82%。増分の分布は均一ではなく、2026-08-16 → 08-24 の 8 日間では rules/ 全体 +22,242 B のうち 96% が rules/operations/main-agent-procedures.md 1 ファイルに集中していた(#1787 による canonical 移設 11 節)。移設先が常時ロード面である以上これは移設の意図どおりの結果だが、移設に伴って各節へ配置理由が書き足されており、そちらは #1800 で落とした。
却下理由 3(b) の保護根拠は、当初 rules/model/subtractive-structural-beauty.md の Subtraction safeguards 節(irreversibility checkpoints ドメイン)に預けていた。同節は #1758 で L1 を芯 4 節へ縮約した際に撤去され、移設先を持たない。保護根拠は不可逆性そのものへ置き直してあり(上記 Current resolution 3(b))、却下という結論は動かない。これは根拠の所在が動いた記録であって entry 間の関係ではないため、Edges には置かない。
Constraints
- Claude Code の rules
pathsは glob のみ、イベントトリガー(on_commit 等)非対応(#995)。よって「event 時ロード」の道は hook 注入か skill auto-invoke の二択に限られ、後者は must-fire に不適。 - #1269 が
operations.md/execution-mode.mdを「常時必要 = 不変則」に分類済で、always-on 維持は既に決着している。 - #1102 は always-on を adapter 変換コスト最小化 + 源泉/生成物の構造一致のため選択した(token 最適性の証明ではなく単純さ優先)。
Conclusion
採用 = always-on 維持、追加の文脈圧縮は見送り。 却下 = operations skill 化(#1315 recall gap)/ operations hook 注入(#1102 撤去の回帰)/ CLAUDE.md autonomy dedup(safeguard 削り)。
調査プロセスの learning: 圧縮余地の見積もりは literal 検証前に数値化すると縮む(本件は3段階で縮小→消滅)。構造変更の提案は対象ファイルの実 Read + 過去判断の RAG を先行させること(self-eval 2026-06-06 entry に detection sign 記録)。
Related
- #1269 split rules into always-on invariants and trigger-on-demand actions(operations を不変則に分類)
- #1315 / #1316 move
expansion-limitskill→rule(recall gap 実証) - #1102 / #1108 flatten layers into rules/ + skills/(hook 注入撤去)
- #988 Milestone Rules → on_issue hook trigger(撤去前の機構)
- #995 operations always-load experiment(
pathsglob-only 制約) - #1234 github-history-driven judgment criteria for boot-token reduction
- #1800 placement derivation is restated in 15 sections of the always-on resident surface(射程の限定と再測、footprint 増加を再評価条件に入れない判定)
- 判断構造: li-plus-lightening-l1-gate-override(lightening 系列の別軸)
- 関連 rule:
rules/model/subtractive-structural-beauty.md(Core principles)/rules/evolution/memory-entry-format.md(Artifact deletion calibration)