Skip to content

spec(task): issue completion field is banned outright, but post-merge-observable completion has no other surface #1625

Description

@liplus-lin-lay

目的

skills/operations-on-issue-format/SKILL.md は issue body の完了条件フィールドを一律で不要としている。この規定は大半の issue に対して妥当だが、完了が PR / CI / release フローの外側でしか観測できない issue に対しては、完了の所在が失われる。

確認済みの事実

規則の literal

skills/operations-on-issue-format/SKILL.md:

  • 18-22行: canonical convergence = purpose / premise / constraints / target files
  • 26行: 「Issue completion is managed through issue state plus PR/CI/release flow, not a dedicated issue-body field.」

rules/task/task.md の close 条件も汎用形で規定されている——「Close issue when: implementation done, CI pass, released | user confirms working」。

つまり完了判定は大域に一度だけ書かれており、issue ごとの再記述は重複になる。rules/model/subtractive-structural-beauty.md の観点から、この規定自体は妥当。

運用実態は規則から乖離している

Liplus-Project/github-rag-mcp #178 は完了条件セクションを持つ。同 repo の #181、および本 repo の #1623 / #1624 も同様(後者3件は本 session で AI が作成)。規則の literal に対する乖離は書き手を問わず発生している。

規則が届かない形が実測で出た

#178 の完了条件の一項:

2026-07-07 以降の既存欠損を backfill し、本番 MCP の diff 走査で直近コミットが取得できる

この条件は PR / CI / release フローでは満たせない。backfill は deploy 後にしか走らず、検証は本番の索引を叩いて確認するしかない。

実際に起きたこと:

  1. 委譲した subagent は code / test / docs を出し、CI 緑で停止して報告した。汎用 close 条件(implementation done, CI pass)から見れば完了である
  2. PR merge により branch linkage で issue は自動クローズされた
  3. 完了条件の当該項が未達だったため reopen し、deploy 後に backfill を実行、本番走査で確認した

**汎用条件は「完了」と言い、issue 固有条件だけが「未完」と言った。**後者が body に書かれていなければ、この issue はクローズされたまま残っていた。

問題

汎用 close 条件(CI pass / merged)は proxy であり、現実の挙動そのものではない。rules/model/foundational-invariant.md の「Correctness is defined as real-world behavior that works as required」に照らすと、proxy が届く範囲でのみ完了を判定できる。

proxy が届かない完了——deploy 後の本番状態、実機の挙動、cron 数周後の観測、人間の確認——について、現行規則は代替の記録面を持たない。26行は「dedicated issue-body field は不要」と述べるだけで、届かない場合の逃げ場を指していない。

結果、完了条件は次のいずれかになる:

  • 書かない → 汎用条件で早期クローズされ、未達部分が失われる
  • 書く → 規則の literal に反する(現状の運用実態)

制約

  • 汎用条件で足りる issue に完了条件を書かせる方向には倒さない。大半の issue では重複であり、テンプレートにあるから書く状態を再生産する(この状態が元の指示の理由)
  • 完了判定の大域規定(rules/task/task.md の close 条件)は変更しない
  • 新しいフィールドを常設しない。rules/model/subtractive-structural-beauty.md の spec write 規定「binary only — required or unnecessary」に従う

完了条件

  • 完了が PR / CI / release フローの外側でしか観測できない場合の記録面が規定されている
  • その判定が二値で、書き手の裁量に依存しない

判定線の候補(本 issue の観測から導いたもの、確定ではない): その完了条件は PR 単体で満たせるか。 満たせるなら書かない(汎用規定が既に覆っている)。満たせないなら書く(他に観測する面が無い)。

想定変更箇所

  • skills/operations-on-issue-format/SKILL.md — 26行の例外条件
  • rules/task/task.md — close 条件との境界
  • 必要に応じて skills/operations-on-pr-review/SKILL.md — delegated-subagent stop condition が「満たせる分を仕事の定義にする」形を許している点

備考

#178 では reopen によって完了条件が読み返され、結果として機能した。書かれた面が読み返される面を持つかどうかが効いている点で、#1623(Decision Structure に点検の面が無い)と同軸の観測である。

Metadata

Metadata

Assignees

No one assigned

    Labels

    memoメモとして開始した状態。見出しは必要なものだけでよいspecLi+の挙動に影響する仕様・ポリシー・定義

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions