Skip to content

supervise が worker の途中の報告の「止まった」の語に反応し、作業の中身(止まったものとみなす実装)でも conductor へ attention を出す #1984

Open

Description

@takemi-ohama

何を見つけたか

supervise が worker の途中の報告の 1 行を語で分けるとき、「止まった」の語が仕事の中身として出ただけでも、conductor 向けの attention「止まった」を出す。

  • 判定: plugins/ndf/scripts/supervise_lib/state.py:29 の PROGRESS_STOP = re.compile(r"止まった|止まる|進めない|進められない|判断が要る|できなかった|stuck", re.I) を、classify_worker(同 :166-177)が途中の報告の全文へ当てる
  • 実例: スプリント m1953 の 停滞の打ち切りで worker を止めるとき psutil の pidfd_open が EINVAL で落ち、retry せずにプランが例外で終わる #1817 の実装(~/.local/state/ndf/sv/sprint-m1953/5-impl-1817-state/progress.jsonl の 6 行目、2026-10-13 01:31:21Z)。worker の報告「stop_tree の待ちの EINVAL/ESRCH を止まったものとみなす実装とテスト 6 件を足した」に対して attention「止まった」が出た。worker は 19 秒後にコミットし、ステップは exit 0 で終わった(01-impl.out は「結果: 完了」)

#1817 はプロセスが「止まった」ことを扱う課題で、この語は作業の中身に普通に出る。課題の題材によって誤った attention が conductor を起こす。

どこで見つけたか

スプリント m1953 のリリース後テストの worker が報告し、振り返りで記録を見て誤検知を確かめた。

直す候補

  • worker に、止まったときは決まった印(例: 行頭の 止まった: か 判断が要る:)で書かせ、語の部分一致をやめる
  • 少なくとも「〜とみなす」「〜ものとして扱う」のように中身を説明する文を外す

受け入れ条件

  • 1. 「EINVAL を止まったものとみなす実装を足した」のような作業の中身の報告で attention が出ない
  • 2. 本当に止まった worker の報告(判断が要る・進めない)では今までどおり attention が出る
  • 3. 1・2 のテストがある

直す場所

  • 現象レイヤー: plugins/ndf/scripts/supervise_lib/state.py:166-177 の classify_worker が出す attention
  • 修正レイヤー: plugins/ndf/scripts/supervise_lib/prompts.py:84-89 の PROGRESS_PROMPT(worker が書く途中の報告の 1 行の形)。今の形は {"kind": "worker", "at": ..., "text": "<1 行の要約>"} だけで、止まった・関門は text に書くよう指示しており、状態を区別する欄が無い
  • 修正方針: 向きの修正。語の正規表現を狭めるのでなく、途中の報告の 1 行に状態の欄(例: "state": "止まった" / "関門" / "判断が要る")を足し、classify_worker はその欄で分ける。語の一致は欄の無い行の補助に限る(「直す候補」の 1 つ目を採る形)

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体bugSomething isn't workingpriority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions