Skip to content

中継の Stop の hook が、別のセッションの承認待ちを報告しただけの応答を「本文で承認を待って終わった」と差し戻す #2324

Open

Description

@takemi-ohama

何が起きたか

2026-11-01(JST)、開発ループ l20261031 を見張るだけのセッション(周回 5 は別のセッション 2e7a9fee が担当)で、Stop の hook の差し戻し「この応答は AskUserQuestion を呼ばずに、本文で承認・判断を待って終わった」が 6 回出た。

差し戻された応答は、どれもこのセッションの問いではなく、次のどちらかだった。

  • 別のセッションが出した承認ゲート 2 の問いの状況を報告し、「そのセッションの画面で答えてください」と案内した
  • 状況の報告の中で「承認」「判断」の語を使った(例: 「承認の問いは出しません」「判断は記録済みです」)

差し戻しの指示(AskUserQuestion で出し直す・区分が無ければ ask.py decide で記録して続ける)に従うと、出し直しは 2 つのセッションが同じ承認を記録する事故になり(#2316 )、記録は同じ判断の重複になる。このセッションは差し戻しのたびに同じ説明を繰り返すだけで、作業は進まなかった。

原因

plugins/ndf/scripts/relay_lib/mark.py の prose_wait_reason は、最後の応答の本文を wait_notice.classify_reply_wait で分類し、ANSWER か APPROVAL なら差し戻す。分類は本文の語だけを見るため、次を区別できない。

  • このセッションが利用者の答えを待っているのか、別の場所(別のセッション・PR の画面)での答えを案内しているのか
  • 待ちを宣言しているのか、承認という語を含む報告をしているのか

同じ区間で 2 回目は差し戻さない(wait-held.json)が、利用者のメッセージで区間が変わるたびに 1 回ずつ出る。

何をするか

  • 差し戻しの判定を、本文の語より確かな材料に寄せる。例: 背景の処理を待っている(background_running)・このセッションが記録した判断(ask.py decide)の後の応答・別のセッションの問いを指す応答は差し戻さない
  • 判定で差し戻した応答の本文と結果を記録に残し、誤った差し戻しの件数を数えられるようにする

受け入れ条件

  1. 別のセッションや PR の画面での答えを案内するだけの応答(このセッションは答えを待たない)は差し戻されない
  2. 背景の処理の完了を待っているだけの応答は差し戻されない
  3. このセッションが本文で利用者の承認を待って終わる応答は、今どおり差し戻される
  4. 誤った差し戻しを見分けるための記録(差し戻した応答の要約と判定の材料)が残る

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions