同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(issue-upkeep の判定「ルートコーズ」)。再現手順と観測は各子 issue にある。
修正レイヤー
cross-refactoring の結果の取り込みと、群の状態遷移。
plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/gitfacts.py の read_result は、結果ファイルが無い・読めないと die(code=2) で進行の終了コードを決める(1089 / 1093 / 1096 行目)
- それを呼ぶ取り込みが 3 つある(
commands/apply.py の merge-apply、commands/converge.py の merge-fix、commands/gate.py の merge-final-fix)。下位の読み取りがプロセスを終わらせるため、群の状態を書く機会と、未検証のコミットを取り消す機会が無い
- 群を開き直す
apply.py の next-apply-round は、中断からの再開と失敗した試行のやり直しを同じ pending / applied で区別しない。rounds.apply_groups は項目 0 件の群も作る
設計 issues/issue-647-592-553-design.md の決定 6 は、適用ラウンドの取り消しの本体を切り出して共有すると決め、最終ゲートを #674 に残している。
採る手
- 向きの修正(
fix_dependency_direction): 下位の read_result は結果なしを値として返し、進行の扱いは取り込みが決める
- 統合(
consolidate_duplication): 3 つの取り込みの「範囲の確定 → 未検証コミットの取り消し → 群の状態の記録」を 1 つの手順にする
子 issue
| 子 issue |
現象レイヤー |
観測 |
| #592 |
骨組みの適用ラウンド |
テスト整備ラウンドの採用 0 件で項目の無い群が開き、同じ群を上限なしに繰り返す |
| #647 |
骨組みの適用ラウンド |
実装担当が停止し続ける項目で、適用ラウンドが無限に再試行される |
| #674 |
最終ゲートの修正の取り込み |
担当が結果を残さないと、作ったコミットが検証を受けずに残る |
完了条件
read_result は結果なしを値で返し、3 つの取り込みが同じ手順で取り消しと群の状態の記録を行う
- 群が開いた回数と前回の結末を持ち、開き直しの判定が 1 か所にある。空の群は作らない
- 各子 issue の再現手順を実行し、現象が出ないことを確かめる(子 issue はその時点の棚卸が「閉じてよい」で閉じる)
進行
モード: 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) )は単体のテストと手動確認の前半(進捗の記録に作業段階が残る)が合格。手動確認の後半(結末の記録の理由が監視の結果と一致する)は、結果なしの群が起きず未検証のため #814 へ移して閉じる。
振り返り: #810 (comment)
同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(
issue-upkeepの判定「ルートコーズ」)。再現手順と観測は各子 issue にある。修正レイヤー
cross-refactoring の結果の取り込みと、群の状態遷移。
plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/gitfacts.pyのread_resultは、結果ファイルが無い・読めないとdie(code=2)で進行の終了コードを決める(1089 / 1093 / 1096 行目)commands/apply.pyのmerge-apply、commands/converge.pyのmerge-fix、commands/gate.pyのmerge-final-fix)。下位の読み取りがプロセスを終わらせるため、群の状態を書く機会と、未検証のコミットを取り消す機会が無いapply.pyのnext-apply-roundは、中断からの再開と失敗した試行のやり直しを同じpending/appliedで区別しない。rounds.apply_groupsは項目 0 件の群も作る設計
issues/issue-647-592-553-design.mdの決定 6 は、適用ラウンドの取り消しの本体を切り出して共有すると決め、最終ゲートを #674 に残している。採る手
fix_dependency_direction): 下位のread_resultは結果なしを値として返し、進行の扱いは取り込みが決めるconsolidate_duplication): 3 つの取り込みの「範囲の確定 → 未検証コミットの取り消し → 群の状態の記録」を 1 つの手順にする子 issue
完了条件
read_resultは結果なしを値で返し、3 つの取り込みが同じ手順で取り消しと群の状態の記録を行う進行
モード: 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) )は単体のテストと手動確認の前半(進捗の記録に作業段階が残る)が合格。手動確認の後半(結末の記録の理由が監視の結果と一致する)は、結果なしの群が起きず未検証のため #814 へ移して閉じる。振り返り: #810 (comment)