Skip to content

既定ブランチ宛の実装 PR の本文の閉じる語で、マージの時点に課題が閉じ、仕上げの工程と受け入れ条件のチェックが閉じた課題に残る #2082

Open

Description

@takemi-ohama

何を見つけたか

開発の起点と正式版のチャネルが同じ main のリポジトリ(volareinc/carmo-screening)で、単発の課題の実装 PR の本文に Closes #342 を書いたため、PR のマージ(2026-10-19 10:07 UTC)の時点で GitHub が課題 #342 を閉じた。

その後に続く工程(確定仕様化・配布の確認・リリース後テスト・振り返り・棚卸し)は、閉じた課題の上で行うことになった。progress-tracking の「スプリントを閉じる」は最終工程の後に閉じる前提で書かれているが、その前に GitHub が閉じている。課題の本文の受け入れ条件 11 件は、すべて未チェックのまま閉じている(sprint-close.py --with-verification がチェックを付ける機会が無い)。

どこで見つけたか

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

#342 の受け入れ条件はモデルと推論の入力の約束で、NDF の PR 本文の書き方を扱わない。直す先は NDF の Skill(pr・progress-tracking・sprint-close.py)である。

直さないと何が起きるか

main 宛の PR を出すリポジトリでは、仕上げの工程を残したまま課題が閉じ、受け入れ条件のチェックが付かないまま残る。#1683 の論点 (2)(3) と同じ現れ方で、経路はコミットの件名ではなく PR 本文である(#1683 の「現状」では 2026-10-03 以降に再発なし、と記録されていた)。

起票者の推定

  • 直し方の候補: 既定ブランチ宛の単発の課題の PR では、本文に閉じる語ではなく参照(Refs #N)を書き、閉じるのは「スプリントを閉じる」に任せる。記録先の集め方は --issues で補う(推した出所: progress-tracking の手順の --issues)
  • または、既定ブランチ宛では GitHub の自動クローズを前提にし、閉じた後でも sprint-close.py --with-verification が受け入れ条件のチェックを付けられるようにする

関連

由来

issue volareinc/carmo-screening#342 / PR volareinc/carmo-screening#344 の振り返り

受け入れ条件

各条件の末尾の括弧は、確かめる時期と手段を表す。

  • 1. 開発の起点(.ndf/worktree.json の base_branch、無ければ既定ブランチ)が既定ブランチと同じリポジトリで、課題の Pull Request を NDF の手順(pr-steps.py create / update)で作る → でき上がった Pull Request の本文に、マージで GitHub が課題を閉じる closing keywords(Closes / Fixes / Resolves)が残らない。本文に書いた場合に止めるか参照へ置き換えるかは問わない(マージ前: 一時のリポジトリの構成で pr-steps.py を流すテスト)
  • 2. 上と同じ構成で、スプリントの Pull Request(既定ブランチ宛)を NDF の手順で作る → 同じく closing keywords が本文に残らない(マージ前: テスト)
  • 3. closing keywords を持たない既定ブランチ宛の Pull Request だけから成るスプリントで、sprint-close.py --record-pr <記録のPR> --prs <番号> --dry-run を打つ → 対象の課題が「参照だけの課題」(kept_open)や「集めた課題が 0 件」(終了コード 2)にならず、閉じる対象として判定される(マージ前: gh を差し替えたテスト)
  • 4. 開発の起点が既定ブランチと違う構成(このリポジトリの develop 宛)では、今と同じく本文の closing keywords が残り、sprint-close.py がそこから課題を集める(退行しない。lib/closing-issues.sh が本文の closing keywords を集める今の振る舞いを前提にする)(マージ前: 既存のテストと追加のテスト)
  • 5. 開発の起点が既定ブランチと同じリポジトリ(例: volareinc/carmo-screening)で、この版の後に 1 スプリントを流す → 課題 Pull Request とスプリント Pull Request のマージの時点では課題が OPEN のまま残り、リリース後テストの後に sprint-close.py --with-verification が受け入れ条件へ印を付けて閉じる(リリース後: 実際のスプリントで課題の closedAt とマージ時刻を比べる)

進行

モード: — / 進め方: auto

  • 要求と受け入れ条件
  • 作業場所の用意 — 2026-10-31 13:00
  • 設計
  • 素材の収集と出典の確定
  • ドキュメント再構成
  • ドキュメントレビュー
  • 計画 — 2026-10-31 13:00
  • 実装 — 2026-10-31 13:01
  • 構造改善 — 2026-10-31 18:37
  • 実装レビュー — 2026-10-31 22:28
  • 完了判定 — 2026-10-31 16:12
  • Pull Request — 2026-10-31 16:25
  • 確定仕様化 — 2026-11-01 00:29
  • 後片付け — 2026-11-01 00:28
  • 配布 — 2026-11-01 00:00
  • 体裁レビュー
  • リリース後テスト — 2026-11-01 00:28
  • 振り返り — 2026-11-01 01:03
  • 棚卸し — 2026-11-01 01:16

振り返り: #2320 (comment)

状況(2026-11-01)

受け入れ条件 1〜4 は v10.27.5 のリリース後テスト(#2328 )で合格。条件 5 は、開発の起点が既定ブランチと同じリポジトリ(volareinc/carmo-screening ほか)で v10.27.5 以降のスプリントが流れるのを待つ。carmo-screening では v10.27.5 の後に PR #363〜#368 がマージされた(2026-11-02〜11-04)。そのうち実装 PR https://github.com/volareinc/carmo-screening/pull/364 (宛先 main)の本文に Closes #362 があり、課題 https://github.com/volareinc/carmo-screening/issues/362 はマージ(2026-11-03T03:21:57Z)の 2 秒後に閉じた。この PR が NDF の手順(pr-steps.py create / update)で作られたか、そのときの NDF の版は、まだ確かめていない。その後の PR https://github.com/volareinc/carmo-screening/pull/368 〜 https://github.com/volareinc/carmo-screening/pull/371 (2026-11-04〜11-05)の本文には closing keywords が無く、課題 https://github.com/volareinc/carmo-screening/issues/354 は 2026-11-07 時点で OPEN である。この課題が閉じた時点で条件 5 を比べる。保留の行を拾い直して閉じる工程は #2330 が持つ。

リリース後テストの取り直し(2026-11-01 17:39 JST)

記録: #2328 (comment)

  • 条件 1〜4: 合格(初回の記録)。条件 5: 保留。起点が既定ブランチと同じ手元のリポジトリ(volareinc/carmo-screening など 7 つ)で、10.27.5 の後にマージされた PR が 0 件。次にそれらでスプリントを閉じた後に closedAt とマージ時刻を比べる
  • 開いたままの理由: 合格でない条件が残る(sprint-close.py --record-pr 2328 --with-verification の結果は kept_open)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions