Skip to content

fix(autopilot): approve+HITL解除した PR が Draft に戻る / approved を検知できない #811

Description

@smalruby3-editor-bot

問題(PR #808 で顕在化)

  1. Draft 再設定バグ: phases.jsdesiredDraft(item) = item.hitl !== 'Yes'。HITL=Yes のときだけ Ready、それ以外は Draft とするため、人間が approve + 🙋 HITL 除去(HITL=No) すると次の sync で Ready→Draft に戻されてしまう(マージ待ちの承認済み PR が Draft 化 → GitHub UI でマージ不可に)。
  2. approved 検知漏れ: project.jsgetPrReviewStatereviewDecision==='APPROVED' のみで判定。ブランチ保護でレビュー必須でない場合 reviewDecision が空になり、APPROVED レビューがあっても approved=false → daemon が verify に進めない。

対策

  1. desiredDraft を Status ベースに: AI 作業中/未着手(New Item/Backlog/Icebox/Sprint Backlog/In Progress)は Draft、人間に渡った後(Review/DoD/Close)は Ready とする。HITL の有無で Draft を決めない。
    • 例: desiredDraft = !['Review','DoD','Close'].includes(item.status)
  2. getPrReviewState を reviews ベースに補強: reviewDecision が空でも、reviews の各人間の最新状態に APPROVED があり CHANGES_REQUESTED が無ければ approved=true とする。

検証

  • approve + HITL 除去した Review PR が Draft に戻らない(Ready のまま)こと(unit: desiredDraft)。
  • reviewDecision が空でも APPROVED レビューを approved と判定すること(unit: getPrReviewState 相当の純粋部分 or 切り出し)。

背景

完全自律運転の要。これが直ると approve→(daemon が verify)→人間 merge の流れが Draft で詰まらない。

Metadata

Metadata

Assignees

No one assigned

    Labels

    🤖 autopilotautopilot が処理対象にした Issue/PR(daemon が付与)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Close

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions