何を見つけたか
テスト整備ラウンドの採用が 0 件のとき、項目の無い適用ラウンドが開き、上限なしに同じ群を繰り返す。 手順書の骨組み(SKILL.md の「実行」)をそのまま回すと、提案ラウンドへ進まない。
PR #587 の構造改善で、約 3 時間 25 分のあいだに --- 適用ラウンド 1 / 1 (実装 codex / 項目 )--- が 187 回出て、そのたびに codex の適用を起動した(手で止めた)。
提案 0 件 → 統合 0 件 → 採用 0 件 / 見送り 0 件
テスト整備の採用 0 件のため、構造改善の提案ラウンドへ進みます
--- 適用ラウンド 1 / 1 (実装 codex / 項目 )---
❌ 適用ラウンド 1: コミットが 1 件もありません(適用ラウンド = 1 コミットの前提を満たしていません)
この適用ラウンドは取り消しました。検証は行いません
↻ 適用ラウンド 1 は取り込み済みです(検証から再開)
--- 適用ラウンド 1 / 1 (実装 codex / 項目 )---
↻ 適用ラウンド 1 の適用は取り込み済みです(採用 0 件 / 失敗 0 件)
↻ 適用ラウンド 1 は取り込み済みです(検証から再開)
(以下同じ)
経路は次のとおりである(コードを読んで追った)。
段
何が起きるか
merge-proposals
テスト整備の採用 0 件は終了コード 0 を返す(apply.py の cmd_merge_proposals)
next-apply-round
apply_rounds が空なので、rounds.py の apply_groups が項目 0 件の群を 1 つ作り 、開く
merge-apply 1 回目
コミットが無いため取り消し、終了コード 2。群の status は applied のまま残る
next-apply-round 2 回目以降
status が pending / applied の群を開き直すため、同じ群を返す(終了コード 0)
merge-apply 2 回目以降
「取り込み済み・採用 0 件」で終了コード 2 → 骨組みの `
状態ファイルの群: {"apply_round": 1, "impl": "codex", "items": [], "status": "applied", ...}
項目 0 件の群が作られることは v10.13.0(b37d738)でも変わらない。 apply_groups を直接呼ぶと
apply_round に 1 が入った群を 1 つ返す。
$ python3 -c "
import sys; sys.path.insert(0, 'plugins/ndf/skills/cross-refactoring/scripts')
from refactor_lib import rounds
print(rounds.apply_groups({'impl': 'codex', 'items': []}))"
[{'apply_round': 1, 'impl': 'codex', 'impl_model': {'requested': None, 'observed': None}, 'items': [], 'status': 'pending', 'base_sha': None, 'head_sha': None, 'fix_rounds': 0}]
開き直す側も変わっていない。cmd_next_apply_round(apply.py:278)は status が pending /
applied の群を無条件に返す(:296-299)。適用ラウンドに別の上限を置かない方針も現行のまま
である(SKILL.md:56-57)。
どこで見つけたか
plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/rounds.py の apply_groups(空の群を作る)
plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/commands/apply.py の cmd_next_apply_round(applied の群を開き直す)と cmd_merge_apply(取り込み済み・採用 0 件で 2 を返す)
実測: PR Update: #526 design で表から導ける値を数え直し、値を足す設計で既存の規則を集める #587 の構造改善(--scope plugins/ndf/skills/design、テスト整備ラウンド 1 で 3 者とも提案 0 件)
#536 (取り消した群の status が pending のまま残る。2026-09-15 に DUPLICATE として closed )と症状は似るが、入口が違う。こちらは項目の無い群が作られること、適用ラウンドの繰り返しに上限が掛からず提案ラウンドの上限でも抜けない ことが異なる。
#647 (取り込みの前に抜けた群を開き直し続ける)とは入口が違うが、同じ next-apply-round の開き直しで止まらないため、#647 と同じ変更で直す 。
なぜこの変更の範囲外なのか
#526 の受け入れ条件は design Skill の本文(対の表と手順 2)に閉じており、cross-refactoring のスクリプトは対象に含まない。
直さないと何が起きるか
文書だけの変更など、足すべきテストが出ない Pull Request で構造改善を回すと、進行が永久に止まり、適用担当の CLI を起動し続ける。 利用料と CLI のレート制限を消費し、並行して回す他の Pull Request の cross-review / cross-refactoring も巻き込む。
所要時間への影響(2026-09-01〜09-15 の実測)
集計の方法と全体の値は #662 にある。
由来
PR #587
進行
モード: standard / 作業ツリー: .worktrees/feat/issue-728-apply-intake / 計画: issues/issue-728-647-592-553-plan.md
閉じた理由
PR #796 で直り、ndf 10.16.0(2026-09-22、main / タグ ndf--v10.16.0、PR #810 )で配布した。リリース後テスト(#810 (comment) )でこの課題の受け入れ条件はすべて合格した。
振り返り: #810 (comment)
何を見つけたか
テスト整備ラウンドの採用が 0 件のとき、項目の無い適用ラウンドが開き、上限なしに同じ群を繰り返す。 手順書の骨組み(
SKILL.mdの「実行」)をそのまま回すと、提案ラウンドへ進まない。PR #587 の構造改善で、約 3 時間 25 分のあいだに
--- 適用ラウンド 1 / 1 (実装 codex / 項目 )---が 187 回出て、そのたびに codex の適用を起動した(手で止めた)。経路は次のとおりである(コードを読んで追った)。
merge-proposalsapply.pyのcmd_merge_proposals)next-apply-roundapply_roundsが空なので、rounds.pyのapply_groupsが項目 0 件の群を 1 つ作り、開くmerge-apply1 回目statusはappliedのまま残るnext-apply-round2 回目以降statusがpending/appliedの群を開き直すため、同じ群を返す(終了コード 0)merge-apply2 回目以降状態ファイルの群:
{"apply_round": 1, "impl": "codex", "items": [], "status": "applied", ...}項目 0 件の群が作られることは v10.13.0(
b37d738)でも変わらない。apply_groupsを直接呼ぶとapply_roundに 1 が入った群を 1 つ返す。開き直す側も変わっていない。
cmd_next_apply_round(apply.py:278)はstatusがpending/appliedの群を無条件に返す(:296-299)。適用ラウンドに別の上限を置かない方針も現行のままである(
SKILL.md:56-57)。どこで見つけたか
plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/rounds.pyのapply_groups(空の群を作る)plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/commands/apply.pyのcmd_next_apply_round(appliedの群を開き直す)とcmd_merge_apply(取り込み済み・採用 0 件で 2 を返す)--scope plugins/ndf/skills/design、テスト整備ラウンド 1 で 3 者とも提案 0 件)#536(取り消した群の
statusがpendingのまま残る。2026-09-15 に DUPLICATE として closed)と症状は似るが、入口が違う。こちらは項目の無い群が作られること、適用ラウンドの繰り返しに上限が掛からず提案ラウンドの上限でも抜けないことが異なる。#647(取り込みの前に抜けた群を開き直し続ける)とは入口が違うが、同じ
next-apply-roundの開き直しで止まらないため、#647 と同じ変更で直す。なぜこの変更の範囲外なのか
#526 の受け入れ条件は
designSkill の本文(対の表と手順 2)に閉じており、cross-refactoringのスクリプトは対象に含まない。直さないと何が起きるか
文書だけの変更など、足すべきテストが出ない Pull Request で構造改善を回すと、進行が永久に止まり、適用担当の CLI を起動し続ける。 利用料と CLI のレート制限を消費し、並行して回す他の Pull Request の cross-review / cross-refactoring も巻き込む。
所要時間への影響(2026-09-01〜09-15 の実測)
集計の方法と全体の値は #662 にある。
~/.codex/sessionsの起動時の作業ディレクトリで数えた)由来
PR #587
進行
モード: standard / 作業ツリー:
.worktrees/feat/issue-728-apply-intake/ 計画:issues/issue-728-647-592-553-plan.md閉じた理由
PR #796 で直り、ndf 10.16.0(2026-09-22、
main/ タグndf--v10.16.0、PR #810)で配布した。リリース後テスト(#810 (comment) )でこの課題の受け入れ条件はすべて合格した。振り返り: #810 (comment)