Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#776 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
55/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python
領域
tooling

調査の方向性

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 の本文から書いたものです。

説明

area:engine enhancement needs-design P3

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>-1 built 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, then action: defer.
  • The kept unit branch merged to main by hand the next morning after every [verify] command passed in the worktree.

Proposal

A [dev] on_timeout policy mirroring the review-side modes:

  • retry (default, current behaviour).
  • salvage-if-done: on timeout / stalled / over_budget, if the spec frontmatter shows the product finalized (done, or in-review reset forward, as review.on_timeout already tests) and the [verify] commands pass against the worktree, proceed to review instead of rolling back; otherwise retry.
  • 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

bmad-code-org/bmad-loop のほかの issue

bmad-code-org/bmad-loop の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。