Skip to content

edit=true ムーブメントで実ファイル変更がない実行を失敗にする #233

@nrslib

Description

@nrslib

背景

OpenCode 実行時に implementedit: true)で、実ファイル変更を伴わないテキスト応答のみ(例: 調査します)でも次ムーブメントへ進んでしまう。

問題

  • edit: true が実行契約として強制されていない
  • モデルが実装せず応答だけ返しても通過する
  • ループ2回目以降(fix 再実行)でも同じ問題が起こり得る

期待する挙動

edit: true のムーブメントは、Phase1 実行で 実ファイル変更が1件以上 ない場合に fail-fast で失敗させる。

提案

  1. Movement 実行の前後でワークツリー状態を取得
    • 例: git status --porcelain(必要なら未追跡も含める)
  2. step.edit === true のとき、前後差分が 0 件なら error として扱う
  3. エラーメッセージは明示する
    • Movement "{name}" requires file modifications (edit=true), but no changes were produced.
  4. 実装位置は特定 movement ではなく共通実行経路(MovementExecutor)

受け入れ条件

  • implement で変更なし応答は必ず失敗する
  • fix の2回目以降でも同様に変更なしなら失敗する
  • edit: false ムーブメントには影響しない
  • 回帰テストを追加(最低: changeあり成功 / changeなし失敗 / edit=falseは失敗しない)

補足

これはモデル依存の問題回避ではなく、edit フラグを実行時契約として扱うための仕様強化。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions