## 何を見つけたか `/goal` で始めた会話では、目標の判定が止めを拒んで応答が続いた後の Stop hook の入力で `stop_hook_active` が真になる。Claude Code 2.1.295 の `claude -p --model haiku` で、3 回の応答を要する目標を設定し、Stop hook の入力を記録して確かめた(1 回目 `false`、2 回目と 3 回目 `true`)。 `plugins/ndf/scripts/relay_lib/mark.py` の `hold_once` は `active`(`stop_hook_active`)が真なら止めない。そのため `/goal` の会話では、背景の作業が残っている `ndf-next` の応答で Stop を 1 度止めて作業の id と止め方を知らせる仕組み(`hold_reason`)が、目標の続きの応答で働かない。合図は書かれず(`mark_skipped` の `held: false`)、conductor は切り替わらない理由を知らされない。 ## どこで見つけたか #1492 の設計(承認待ちの文で終えた応答の Stop を 1 度止める判定を `relay.py mark` に足す検討)で、`stop_hook_active` を「同じ応答の続き」の判定に使えるかを実測したとき。該当箇所は `plugins/ndf/scripts/relay_lib/mark.py` の `hold_once` と `_skip_mark`。 ## なぜこの変更の範囲外なのか #1492 の受け入れ条件は、条件の Skill の読み込みと、`ndf-next` の無い応答の承認待ちの文の止めだけを扱う。`ndf-next` を出す応答の扱いは #1286 の範囲として外してあり、背景の作業の止めはその応答の側にある。根拠: Value 6(MVV 版 2。同じ原因の判定は共通の層へ寄せるため、#1492 の設計は `stop_hook_active` に頼らない形にする。既存の `hold_once` を直すかはこの課題で決める) ## 直さないと何が起きるか ラッパーの下の `/goal` の会話で、背景の作業を残したまま `ndf-next` を出すと、切り替わらない理由が conductor へ届かず、止める手順(`TaskStop`)も示されない。conductor は同じブロックを出し直し続けるか、そのまま作業を続ける。影響はラッパーの直接の子で `/goal` を使う会話に限る。 ## 由来 issue #1492
Activity