Repository navigation
Description
何を見つけたか
後続のステージのプランに置き換わらない差し込み({queue_pr:check}・{queue_state:check})が残ったまま、ステップがその文字列を引数にして動く。止まるかどうかはコマンド次第で、黙って空の結果を返すものがある。
スプリント s2065(#2065)で、conductor が検査のプラン 6-check.json を supervise.py run で流し直した。run は後続のプランの差し込みを置き換えないため、7-release.json に次が残った(状態ディレクトリの 7-release.json.bak と、手で直した 7-release.json の差分)。
| ステップ | 残った差し込み | 起きたこと |
|---|---|---|
release-steps.py changelog --prs {queue_pr:check} |
{queue_pr:check} |
失敗して止まった(手で 2070 に直した) |
release-steps.py notes ... --check-state '{queue_state:check}' |
{queue_state:check} |
止まらずに通り、承認資料の ## 検査の結果 が「無し(レビュー・リファクタリング・全体テストの結果が検査の状態に無い)」になった |
{queue_state:check} は手で直したときにも見落とされて残った。承認ゲート 2 の承認資料に、実際には行ったレビュー・リファクタリング・全体テストの結果が載らなかった。
どこで見つけたか
/home/ubuntu/.local/state/ndf/sv/s2065/7-release.json.bakと7-release.jsonの差分(5 か所の{queue_pr:check}。{queue_state:check}は両方に残る)issues/approval-ndf-v10.19.0.mdの## 検査の結果- スライドを作る実務の手順(生成スクリプト・ページの枠組み・トーン&マナー・構成メモ・gws での変換と確認)を Skill に取り込む #2065 の振り返り
なぜこの変更の範囲外なのか
#2065 はスライドの手順を Skill に取り込む変更で、supervise.py のプランの差し込みは受け入れ条件に無い。根拠: MVV なし(範囲は #2065 の受け入れ条件による)
直さないと何が起きるか
runで流し直した後のキューで、差し込みの残ったステップが文字列のまま動く。失敗すれば止まるが、--check-stateのように読めないパスを「結果が無い」と読むステップは、承認資料から材料を黙って落とす- 承認する人は「検査の結果: 無し」を、検査をしていないと読む
途中のステップから続ける手段そのものは #1918 が扱う。この Issue は、置き換わらない差し込みが残ったプランをステップが流さない(流す前に止まる)ことを扱う。
起票者の推定
- 差し込みの形(
{queue_pr:<名前>}・{queue_state:<名前>})が残ったコマンドを、ステップを動かす前に止める(推した出所: 上の表。どこで止めるか〔queue が流す前か、ステップの実行の直前か〕は設計で決める) notes --check-stateは、渡されたパスが無いときに「無し」ではなく失敗を返す(推した出所: 上の表の 2 行目)
由来
issue #2065
再発(スプリント s2086、2026-10-25)
検査を run 6-check.json --from <ステップ> で 3 回流し直した後、queue 7-release.json を単独で流した。前の検査の結果がキューに無いため、差し込みが置き換わって次の 2 つが起きた。
| 起きたこと | 結果 |
|---|---|
--prs {queue_pr:check} が --prs 0 になった(5 か所) |
changelog が失敗して止まった。手で 2092 に直した(~/.local/state/ndf/sv/s2086/7-release.json.bak との差分) |
承認資料の ## 検査の結果 が最後の run --from merge-gate の状態だけを読んだ |
リファクタリングが「採用 0 件 / 取り消し 0 件」と出た。実際は採用 11・取り消し 1・見送り 2(3 回目の実行の記録)。conductor が issues/approval-ndf-v10.20.0.md を手で直した |
あわせて、開発版の作業場所(release/v10.20.0-dev.1)は、前の試行(#2092 のマージ前)に作った develop のまま残った。手で origin/develop へ合わせ直した。
受け入れ条件
- コマンドに
{queue_pr:<名前>}か{queue_state:<名前>}が置き換わらずに残ったステップを、supervise.py runかsupervise.py queueで流すと → そのステップのコマンドは動かず、ステップは失敗で止まる。理由に残った差し込みが出る supervise.py queueで後続のプランを流し、名前の一致する前のプランの結果(Pull Request・状態ディレクトリ)が見つからないとき →{queue_pr:…}は0で、{queue_state:…}は空文字で埋まらない。そのプランはok以外で返るrelease-steps.py notes --check-stateに空文字か存在しないパスを渡すと →## 検査の結果を「無し」と書いて成功せず、置き場が無いことをok以外(0 以外の終了コード)で返す- 状態ディレクトリはあるが、
review・refactor・whole_testの結果 JSON が無いとき → 置き場が無いときと区別できる状態か文言で、材料が無いことを返す - 名前の一致する前のプランが完了し、Pull Request と状態ディレクトリがあるとき → 今と同じく番号と絶対パスへ置き換わってステップが流れ、承認資料の
## 検査の結果にレビュー・リファクタリング・全体テストの値が載る(退行しない)
修正レイヤー
親 #2227(全工程の結果を統一した JSON レポートにし、失敗・未収束・未記録を ok で返さない)。黙って既定値で埋める形も同じである。supervise_lib/queue.py の fill_queue_pr は結果が見つからないと {queue_pr} を "0"、{queue_state} を "" で埋める。release_lib/materials.read_check('{queue_state:check}', ...) は (None, None, None) を返してエラーにしない。直す場所は fill_queue_pr の既定値、ステップの実行の直前の置き換え残りの検査(supervise_lib の Engine)、read_check の「置き場が無い」と「材料が無い」の区別。
進行
モード: — / 進め方: auto
- 要求と受け入れ条件
- 作業場所の用意 — 2026-10-31 03:59
- 設計
- 素材の収集と出典の確定
- ドキュメント再構成
- ドキュメントレビュー
- 計画 — 2026-10-31 03:58
- 実装 — 2026-10-31 03:59
- 構造改善 — 2026-10-31 07:37
- 実装レビュー — 2026-10-31 09:11
- 完了判定 — 2026-10-31 04:15
- Pull Request — 2026-10-31 04:32
- 確定仕様化 — 2026-10-31 10:59
- 後片付け — 2026-10-31 10:57
- 配布 — 2026-10-31 10:33
- 体裁レビュー
- リリース後テスト — 2026-10-31 10:56
- 振り返り — 2026-10-31 11:00
- 棚卸し — 2026-10-31 11:21
振り返り: #2282 (comment)
Activity
Merge pull request #2252 from devbasex/feat/issue-2079-m26-1
Merge: develop を取り込み、スプリント m26-1 との衝突と食い違いを解く
takemi-ohama commentedon Oct 31, 2026
スプリント(26 自律実行の信頼性のスプリントを閉じる)を通りました