Skip to content

置き換わらない差し込み({queue_pr:…}・{queue_state:…})が残ったプランのステップがそのまま動き、承認資料の検査の結果が黙って「無し」になる #2079

Closed

Description

@takemi-ohama

何を見つけたか

後続のステージのプランに置き換わらない差し込み({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 の承認資料に、実際には行ったレビュー・リファクタリング・全体テストの結果が載らなかった。

どこで見つけたか

なぜこの変更の範囲外なのか

#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

  1. takemi-ohama commented on Oct 31, 2026

    @takemi-ohama
    ContributorAuthor

    スプリント(26 自律実行の信頼性のスプリントを閉じる)を通りました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions