Skip to content

fix(autopilot): stuck 検知が decompose 完了済み EPIC (EPIC Decomposed) を誤 Block する #856

Description

@smalruby3-editor-bot

概要

stuck 検知(#816 isStuckCandidate / daemon detectStuck)が、decompose 完了済みの EPIC
誤って stuck 扱いし Blocked にする。

実例

(対照: #680/#681AI Status=Decomposing のまま run 中断で 0 サブ = 本当に stuck
これらの検知は正しい。区別すべきは「完了済み resting 状態」か「実行中のまま止まった状態」か。)

原因

tools/autopilot/src/phases.jsisStuckCandidate:

status === 'In Progress' && aiStatus && aiStatus !== 'Self-Reviewing'

EPIC Decomposed は decompose が正常終了した EPIC のresting 状態(子の完了待ち)で、実行中の
run を持たなくて当然。これを stuck 扱いするのが誤り。

修正方針

isStuckCandidate の除外に EPIC Decomposed を追加する(Self-Reviewing と同様、
「run が無くて当然の状態」)。Decomposing / Implementing 等の実行中を表す AI Status
引き続き stuck 検知の対象に残す(run 中断を正しく捕捉するため)。

  • phases.js: isStuckCandidateaiStatus === 'EPIC Decomposed' を false にする。
  • 既存の isStuckCandidate の node:test に「EPIC Decomposed は false」ケースを追加。

(補足: decompose 完了後の EPIC の理想 Status は別途検討の余地があるが、本 issue は
「completed resting 状態を stuck 検知から除外する」最小修正に絞る。)

受け入れ条件

  • isStuckCandidate({status:'In Progress', aiStatus:'EPIC Decomposed'}) が false
  • Decomposing / Implementing 等は引き続き true(回帰なし)
  • node:test 追加、cd tools/autopilot && node --test

Metadata

Metadata

Assignees

No one assigned

    Labels

    🤖 autopilotautopilot(AI)が管理する PR/Issue(AI処理対象)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions