dev.on_timeout salvage-if-done: a timed-out dev session with a finished, gate-green product is retried and then deferred like an empty one
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
escalation.py の decide_dev と、policy.py に記載された post-kill reconcile から始め、次に #271 で参照されている既存の review.on_timeout の処理と比較してください。worktree に既にある [verify] コマンドを使って、timeout、stalled、over-budget のケースを確認します。done とは、salvage-if-done が finalized かつ gate-green の作業に対してのみ review に進み、retry と defer は記載された動作を維持することを意味します。
索引モデルが issue の本文から書いたものです。
説明
Summary
A dev session that hits session_timeout_min with a finished, gate-green product in the worktree is routed like one that produced nothing: decide_dev (escalation.py) returns RETRY while max_dev_attempts lasts, then defers. The review side distinguishes these cases through review.on_timeout = "salvage-if-done"; the dev side has no equivalent.
Observed (0.11.1)
Setup: an unattended nightly sweep run with [limits] session_timeout_min = 180, max_dev_attempts = 2 and [scm] isolation = "worktree"; the dev adapter is Claude Code.
One story, two dev attempts, both session-end status timeout after 10800 s.
- Attempt 1 was killed re-running the deterministic gates after a successful review-fix round. Its worktree held a 486-line diff; the snapshot at
refs/attempt-preserve-dirty/<run>-<baseline>-1built and its changed test files passed. - Attempt 2 was killed in the same phase with the deterministic gates green.
- Journal:
dev-decision action: retry, reason: dev session timeout, thenaction: defer. - The kept unit branch merged to main by hand the next morning after every
[verify] commandpassed in the worktree.
Proposal
A [dev] on_timeout policy mirroring the review-side modes:
retry(default, current behaviour).salvage-if-done: ontimeout/stalled/over_budget, if the spec frontmatter shows the product finalized (done, orin-reviewreset forward, asreview.on_timeoutalready tests) and the[verify] commandspass against the worktree, proceed to review instead of rolling back; otherwiseretry.defer: give up on the first timeout-like verdict.
The post-kill reconcile already rescues a finished session whose artifact is on disk (policy.py comment on dev_stall_nudges); this extends it to a session killed during verification before the artifact was written. With salvage-if-done a timeout costs one verify pass instead of the attempt plus a from-scratch retry (#777). Related: #271 (the review-side salvage this mirrors), #764.
- 主要言語
- Python
- スター
- 165
- フォーク
- 69
- 平均マージ
- 1日 1時間
- マージ済み PR(30日)
- 79
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bmad-code-org/bmad-loop のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
bmad-code-org/bmad-loop#973 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
bmad-code-org/bmad-loop#965 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
bmad-code-org/bmad-loop#1004 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 49/100
bmad-code-org/bmad-loop#1002 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 36/100
bmad-code-org/bmad-loop#972 ·
メンテナーはふだん 1 日以内に返信
bmad-code-org/bmad-loop の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistencies対応中かも @github-actions が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
admission-deferred priority: medium status: ready work-class: scoped
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
melodic-software/claude-code-plugins#10887 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
backend bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
PoCInnovation/Distribox#255 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
google/langextract#598 ·
メンテナーはふだん 1 日以内に返信