issue constraint declarative vs prohibitive - Liplus-Project/liplus-language GitHub Wiki
issue constraints の「対象ではない」は scope の宣言であって禁止節ではない
Question
issue の constraints が或る行について「本 issue の対象ではない」と述べているとき、その行に触れた diff は issue 本文からの逸脱か。より一般に、rules/operations/main-agent-procedures.md Sub-issue rules の Scope-exceed dialogue confirm が持つ 2 軸のうち negative-constraint clause 側は、constraints のどの項に対して発火するのか。
Current resolution
「対象ではない」は仕事の主題がどこにあるかを述べる宣言であり、その行への一切の接触を禁じる禁止節ではない。 したがって、その行に触れただけでは issue 本文からの逸脱にならない。
判定軸は禁止形の有無である。同一 constraints ブロックが他の項で禁止形(触らないこと / 書かないこと)を使っている場合、その対比そのものが読みの根拠になる。同じ本文の中で、著者は禁止を意図した箇所には禁止形を書き、ここには書いていない——これは印象ではなく、一つの literal の中で読める差である。
Scope-exceed dialogue confirm の negative-constraint clause 腕は、禁止形を持つ項に対して発火し、宣言のみの項には発火しない。もう一方の腕(enumerated target-file set)は独立に判定する。宣言のみの項に触れる変更でも、そのファイルが target files の列挙に含まれていれば後者の腕でも発火しない。
「対象ではない」を禁止と読む安全側の解釈は採らない。採ると、issue が主題の所在を述べるだけで凍結面が増え、著者が禁止形で書き分けた区別が消える。
Edges
- supersedes (なし)
- depends on (なし。Scope-exceed dialogue confirm を扱う既存 entry を wiki 全体と
docs/Decision-Structure.mdの index で確認したが、存在しない。本 entry がその面の最初の判断記録である) - conflicts with (現時点で対立 entry なし)
背景
2026-09-05、PR #1872(issue #1830)の brake 1 round 1 で、3 名中 1 名の evaluator が Axis A に所見を 1 件出した。
所見の内容は、issue #1830 の constraints が
expirespast without resolution -> escalate to human judgment の行は human gate であり、本 issue の対象ではない。
と述べた行を、diff が bullet の 1 項目から独立した平文段落へ整形し末尾にピリオドを付けている、というものである。所見の literal は正しく、-> の先の帰結が diff の前後で同一であることも所見自身が述べていた。
著者が却下し、親が exit 時に thread を読んで却下を維持した。決め手は同一 constraints ブロック内の対比である:
| constraints の項 | 文末 | 種別 |
|---|---|---|
surfacing 側(cold-start-synthesis.md Self-Evolution Observation Surface と hook 実装) |
触らないこと |
禁止 |
memory/ の既存エントリ移行手順 |
書かないこと |
禁止 |
expires past without resolution の human gate 行 |
本 issue の対象ではない |
宣言 |
制約
- 当該行は target files が名指す範囲(
rules/evolution/memory-entry-format.mdの<self-evolution-observation-format>の Lifecycle)の内側にある。よって Scope-exceed の 2 軸のうち enumerated target-file set 側にも当たらない。 - 当該 diff の整形は選択ではなく、第 1〜3 項を outcome list へ書き換えた結果として強制されたものだった。第 4 項の
-マーカーは、既に存在しない list への所属を主張する記号になる。所見を採る側に構造上の利得は無く、失う側にだけある(rules/model/subtractive-structural-beauty.mdCore principle (A) の load-bearing 判断)。 - 本判断は judgment record の側であり、規則本文の改定ではない。
rules/operations/main-agent-procedures.mdSub-issue rules は本判断によって変更されていない。規則側に literal を置く必要が生じた場合は別 issue へ回す。
却下した選択肢
「対象ではない」を禁止として扱い、所見を採用して整形を差し戻す案。 安全側に見えるが、2 つを失う。第一に、兄弟項目を失った 1 項目だけの bullet list が戻る。第二に、著者が禁止形と宣言形を書き分けた区別が読み取られなくなり、以後どの issue でも constraints に現れた全ての言及が凍結面になる。
検出サイン(この判断が後で疑問視される場合)
- 「issue が対象外と書いた行に触れている」という所見が上がった時 → まず同一 constraints ブロック内に禁止形の項があるかを見る。あるなら、その対比が読みの根拠になる。
- Scope-exceed dialogue confirm を発火させるか迷った時 → 2 軸は独立に判定する。negative-constraint clause 側は禁止形の有無で決まり、「対象ではない」だけでは発火しない。
- 「念のため確認する」形で confirm を撃とうとしている時 → literal trigger のヒットを伴わない発火は push surplus であり、
rules/operations/main-agent-procedures.mdSub-issue rules の Anti-pattern が禁じている。