Repository navigation
Description
何を見つけたか
開発の起点と正式版のチャネルが同じ 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 がチェックを付ける機会が無い)。
どこで見つけたか
- 実装 PR: https://github.com/volareinc/carmo-screening/pull/344 の本文 15 行目
Closes #342 - 課題: https://github.com/volareinc/carmo-screening/issues/342(`closedAt` 2026-10-19T10:07:23Z、
stateReasonCOMPLETED。マージ時刻と同じ) - 規則の側:
skills/pr/SKILL.md74 行目はコミットメッセージの closing keywords だけを止める。PR 本文は検査しない。skills/progress-tracking/SKILL.mdの「工程の単位と記録する課題」は、PR 本文の closing keywords を記録先の集め方として使う
なぜこの変更の範囲外なのか
#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が受け入れ条件のチェックを付けられるようにする
関連
- 本番の配布で課題を閉じるとき、受け入れ条件とリリース後テストが未チェックのままでも閉じる #1683(本番の配布で受け入れ条件が未チェックのまま閉じる。閉じている)・チャネルを分けたリポジトリで、まとまりの issue を閉じる時点が merged の手順・運用・自動クローズで食い違う #623(チャネルを分けたリポジトリで閉じる時点が食い違う。閉じている)
- 修正レイヤーは親 課題を閉じる時点を 1 つにし、最終の工程を通ってから閉じる #2228(課題を閉じる時点の正本)。
pr/SKILL.mdの宛先の表はsprint/とbase_branchだけを扱い、base_branchが既定ブランチと同じ構成を書いていない
由来
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)
Activity