detector placed where it cannot run is dead code - Liplus-Project/liplus-language GitHub Wiki
検出器は到達可能な位置にあって初めて検出器である
Question
「両方向を検査する」と書かれた制約は、一本の assertion が両方向を自分でアサートすることを求めているか。既存の別機構がもう一方を持っていれば満たされたと読んでよいか。
Current resolution
求めていない。判定基準は「その方向が到達可能な位置で検出されるか」であり、どの機構がそれを持つかではない。
適用の順序:
- 制約が名指す各方向について、既にその方向を落とす機構があるかを探す。位置と、その機構が停止する行を literal で確認する。
- 在るなら足さない。無いなら足す。
- 足す前に、その位置に置いた検出器が実際に走るかを確認する。上流の機構が同じ集合に対して先に停止するなら、下流の検出器は一度も走らない。走らない検出器は dead code であり、書けば「検査している」という外観だけが増える。
- 実測した被覆(どの方向をどの機構が持つか)を記録面に書く。制約そのものは消さない。
「対称性のために両方向を一箇所へ」は理由にならない。 対称な見た目は読みやすさの話であり、検出力を一つも足さない。
Edges
- depends on —
subtractive-structural-beauty-framing。判定を内側の感覚でなく観察可能な性質で切る同型。ここでの観察可能な性質は「その行に制御が到達するか」であり、足すか否かの判断より前に立つ - relates to —
wiki-sync-sidebar-integrity-check。本判断が隣に置いた assertion の既存側 - conflicts with — なし
- supersedes — なし
Background
2026-09-19、#1705 / PR #2001 の brake 1 で確定した。Master の委任(2026-09-20「任せる」)を受けて記録する。
issue #1705 の制約は「検査は両方向を見る(索引に無い実体 / sidebar に無い実体)」と書いていた。実装は索引 → 実体の 1 方向だけを assert し、brake 1 round 1 で評価者 2 体が「名指された 2 方向のどちらもアサートしていない」と指摘した。指摘の literal は正しい — 制約の 2 方向はどちらも 実体 を起点にしており、新規 assertion の起点は索引である。
著者役は所見を受理し、二枚目の検出器を足す修復だけを却下した。根拠は到達不能性である:
skills/operations-on-wiki-sync/SKILL.md:31— Pre-sync Verification の assertion 群は手順 5 の後に走る。- 同
:147— 手順 4 の参照実装はunclassifiedが非空ならexit 1する。 - 手順 4 は Wiki 専属リストを同じ索引から組むため、索引に無い実体は定義上
unclassifiedに入る。assertion に制御が渡る時点でこの集合は必ず空であり、同じ集合に対する assertion は一度も走らない。
実測した被覆は、3 面(索引 / wiki 実体 / sidebar)4 方向のうち:
| 方向 | 持っている機構 |
|---|---|
| 実体 → 索引 | 手順 4 の unclassified(exit 1) |
| 実体 → sidebar | Sidebar integrity assertion |
| sidebar → 実体 | Cross-reference integrity assertion |
| 索引 → 実体 | 未到達だった ← #2001 が足した |
届いていなかったのは 1 方向だけだった。手順 4 に欠けていたのも検出ではなく修復の向きで、エスカレーション文が「wiki-source らしい、削除は source を壊す」と読ませて削除の是非へ送り、索引行の欠落を名指していなかった。#2001 はそこに修復の向きを書き足している。
初回発火は clean だった(2026-09-19 のリリース sync、索引が名指す 96 slug に対し wiki 側の欠落 0)。
却下した案:
- 双方向 assertion を一本書く — 到達不能。好みではなく、制御が渡らない。
- 制約を削除する — 読みの曖昧さは残り、次に同じ問いが立つ。制約は残し、被覆の実測を issue 前提節に添えた。
残余(未着手): 到達可能な形で双方向を 1 箇所に集めたいなら、手順 4 の wiki_only 構築と assertion 位置の関係そのものを動かす設計変更になる。これは #1705 の「既存の sync 手順の挙動は変えない」制約の外であり、別 issue に置いた。