record surface exclusion holds only for reread catchable lines - Liplus-Project/liplus-language GitHub Wiki

記録面の除外は、読み直しで捕まる行にだけ成り立つ

問い

brake 1 の発火条件(self-evolution PR 定義の条件 2)で docs/** などの記録面を一律に除外してよいか。

現在の解決

除外の根拠「誤った行の代償は、取り出すときの読み直し 1 回」は、その読み直しで誤りが捕まる行にだけ成り立つ。リポジトリの中が何も変わらないまま古くなりうる行(リポジトリ外の事実に依存する行)は、読み直しても同じ誤りを再生産し、根拠として引かれれば振る舞いを縛る。そうした行を持つファイルは、どの行を変える PR であっても除外から外れ、基準(条件 2)が置き直す。粒度はファイル単位のまま。

判定の当てはめ例: docs/Decision-Structure.md の索引は wiki のページを指すが、ページ名の変化で古くなった場合は wiki sync の相互参照チェックが検出する。読むこと以外に検出手段があるため、この条件には当たらない。

発火したときの外部事実の確認は、skills/evolution-parallel-agent-eval Non-scope と Procedure step 3 が分担を持つ(#2025 / PR #2068)。brake 1 での発生とは、diff が時間とともに変わる外部事実(API 仕様、ライブラリ挙動、ホストの動作など)を述べる行を追加・変更したことである。評価者はその行が根拠(出典・観測)を示していなければ所見として挙げ、事実そのものは検証しない。step 7 でその所見を裁定する著者が現在の外部ソースに当たって確かめ、根拠を行か PR スレッドに残す。確かめられなければ行を外すか未検証と明記する。

残余: 発火はファイル単位だが、brake 1 の外部事実の確認は diff が触れた行にだけ掛かる。同じファイルの中で diff が触れていない既存行の drift は、brake 1 の範囲外のままである。

Edges

  • supersedes(部分): brake1-firing-closed-by-criterion — 非該当側の「記録面は一律に除外」を、上記の条件付きへ置き換える。基準で閉じるという判断そのものは据え置き
  • depends on: brake1-firing-closed-by-criterion(基準「誤りを捕まえるものが読み手しか無いか」をそのまま使う)
  • depends on: skills/evolution-parallel-agent-eval Non-scope と Procedure step 3(#2025 / PR #2068)— 発火したときの外部事実の確認を、評価者(根拠の無い行を所見に挙げる)と裁定する著者(外部ソースで確かめる)に分けて持つ。この分担が崩れれば、発火しても外部事実を確かめる者がいなくなるため、本 entry は再評価の対象になる

背景

#2000。記録面の除外理由が、引用経路(記録面の行が根拠として引かれる経路)を見落としていた。PR #2002 は 2026-09-18 に開かれたまま、持ち主のセッションが居なくなって止まっていた。2026-09-21 の evolution-full-run で引き取り、著者役を再構成して brake 1 を 3 往復通した。

制約

  • 除外の粒度はファイル単位から変えない(ラウンド 1 A-1 で、行単位に読める書き方を解消)
  • 同じ主張を持つ他の面(skills/evolution-rule-effect-measurement、docs/2.-Evolution.md、同じファイル内の Scope との対比文)を同じ PR で揃える

結論

採用 = 除外理由を「読み直しで捕まる行」に限定し、外れたファイルは基準へ戻す。 却下 = 記録面を丸ごと発火側へ移す案(読み直しで捕まる大半の記録面にまで eval を課す)/行単位の carve-out(条件 2 はファイルに対して働く基準であり、単位が食い違う)。

Related

  • #2000 / PR #2002 / #2025 / PR #2068