Skip to content

開発ワークフローに「見直し」と「大整理」を足す: 棚卸しを毎スプリントの差分の棚卸し・数回に 1 回の見直し・十数回に 1 回の大整理(根本原因の発見と組み直し、後回しの再評価)に分ける #2315

Open

Description

@takemi-ohama

依頼(原文)

ただ、このフェーズはsprintの終わりに毎回実行、では重すぎる気もします。

ただ、棚卸については、バージョンアップに伴う既存issueの追従は毎sprint、優先順位の再評価、順位付け、マイルストーン再編、枝刈りは数回に一回など、グラデーションが必要かもしれません。

(書き手: 利用者、日付: 2026-11-01 JST。依頼の全文と、ほかの 3 つの原文は確定仕様 https://github.com/devbasex/ai-plugins/blob/develop/docs/specifications/ndf-backlog-refinement-depths.md の元になった要求の写し(コミット 8d72be3 の issues/issue-2315-requirements.md)にある)

この課題の残りは、上の「重すぎる」に対して、毎スプリントの棚卸しが実際に軽くなったかを確かめる 1 点である。棚卸しの 3 つの深さ(差分の棚卸し・見直し・大整理)は ndf v10.27.14 で配布し、受け入れ条件 17 を除く起票時の条件は、その配布と確定仕様の「テスト観点」が持つ。確かめたこと(2026-11-04、origin/develop 7476a08): pytest で test_upkeep_depth*・test_upkeep_owner*・test_upkeep_overhaul* が 30 件合格。

起票者の推定

# 条件 推した出所 この要求での扱い
S15 毎スプリントの棚卸しの所要が、今(206〜224 秒・1.41〜1.61 ドル)より短くなることを実測で示す 原文の「重すぎる」。Value 4(外の利用で測って決める) 受け入れ条件 17。2026-11-02 の承認ゲート 1 で承認済み
S16 比べる値は、変更の後の差分の棚卸し 3 回の中央値とし、今の範囲の下端(206 秒・1.41 ドル)を下回ることを「短い」とする 1 回ごとのばらつき(変更の後の 4 回で 270〜346 秒)が範囲の幅より大きいため 受け入れ条件 17a・前提 1
S17 深さの記録の差分の棚卸しの行へ、棚卸しのステップの秒・ドルを機械で写す 確定仕様の「テスト観点」が測る記録をこの行と決めているが、行の値が空のため 受け入れ条件 17b

目的

  • 毎スプリントの棚卸し(差分の棚卸し)の所要を、3 つの深さに分ける前より短くし、短くなったことを深さの記録で示す

今の状態(実測)

変更の後も、差分の棚卸しは分ける前より長い。 このリポジトリのメインディレクトリのプランの進行の記録(.ndf/loop/*/lap-*/close*/*-state/progress.jsonl)の、refine のステップの行を数えた。

開発ループの周回 時刻(UTC) 秒 ドル 終了コード 時期
l20261031 周回 2 2026-10-31 08:24 224.4 1.6101 0 分ける前(基準)
l20261031 周回 3 2026-10-31 13:16 206.3 1.4075 0 分ける前(基準)
lfactory2 周回 3 2026-11-02 13:03 270.8 2.1563 0 変更の後
lflow 周回 1 2026-11-04 06:22 316.4 1.7723 0 変更の後
lroot2 周回 5 2026-11-04 06:23 314.4 1.8441 0 変更の後
lfactory3 周回 1 2026-11-04 15:08 346.2 2.1881 0 変更の後

(終了コードが 0 でない行と、同じ周回のやり直しの行は除いた。集計のコマンドは grep '"step": "refine",' <progress.jsonl> | grep '"kind": "step"' の seconds・cost)

深さの記録には、比べる値がまだ残っていない。 まとめのプランの深さの記録のステップ(refine-record)は、ndf v10.27.24(コミット ea73a7d)からプランの進行の記録(--progress)を受け取り、棚卸しのステップの秒・ドルと開発ループ・周回を写す(plugins/ndf/scripts/supervise_lib/sprint_close_steps.py の 185 行目)。2026-11-06 07:15 JST 時点の .ndf/backlog/depths.jsonl の差分の棚卸しの行は 8 件で、cost・seconds・loop・lap はどれも null である。v10.27.24 のタグのコミットの時刻(2026-11-05 19:11 UTC)より後の行は 4 件(スプリント lfactory3-8・lflow2-9・lroot3-14・lroot3-17)で、v10.27.24 を導入する前に作ったプランが書いた行か、写す処理が働いていないかは未確認。2026-11-05 22:17 UTC のスプリント lfactory3-10 の差分の棚卸しの行は、seconds 208.3・cost 1.733・loop lfactory3・lap 10 を持ち、値が写った最初の 1 件である(基準の下端 206 秒・1.41 ドルをどちらも下回らない)。

見積の段階を付ける課題は、そのスプリントで起票した課題に絞られた。 ndf v10.27.24(コミット 4d31771 ほか)から、差分の棚卸しの候補の収集は unscored の経路を --since-ref のコミットの時刻より後に作られた課題に限り、rank も同じ --since-ref を受けて、それより前に作られた見積の無い課題を見直しへ回す(metrics.left_for_review)。スプリント lfactory3-10 の差分の棚卸し(2026-11-06)では unscored の経路は 0 件だった(upkeep.py candidates --since-ref ndf--v10.27.25 --depth diff の metrics.by_route.unscored)。

前提

  • 前提 1: 「今より短い」は、今の範囲(206〜224 秒・1.41〜1.61 ドル)の下端を下回ることとする。1 回ごとのばらつきが大きいため、変更の後の差分の棚卸し 3 回の中央値で比べる
  • 前提 2: 比べるのはこのリポジトリ(ai-plugins)のメインディレクトリの周回だけである。並行して動く別の開発ループの周回も数に入れる
  • 前提 3: 差分の棚卸しを担う言語モデルは、基準の 2 回と同じ claude-opus-5-5 とする。モデルが変わった周回は比べる 3 回に入れない
  • 前提 4: 1 回の候補の上限(既定 10 件)は変えない。上限を下げて所要を縮めることは、この課題の達成として数えない

対象範囲

含む:

  • 差分の棚卸しの所要を縮めること(何を削るか・どう縮めるかは設計で決める)
  • 差分の棚卸しの行に、そのステップの秒・ドルと、開発ループ・周回を残すこと
  • 差分の棚卸しの見積の段階の付与を、SKILL.md の定めどおりそのスプリントで起票した課題に揃えること

含まない:

ドメインイベント

# イベント 引き金 失敗したとき 順序の前提
E1 差分の棚卸しの候補を集めた まとめのプランの refine のステップ 候補が読めなければ棚卸しのステップが失敗で終わる スプリントのマージが終わった
E2 差分の棚卸しのステップが終わり、秒・ドルがプランの進行の記録に書かれた refine のステップの終了 失敗で終わっても秒・ドルは書かれる(今の振る舞い) E1
E3 差分の棚卸しの行が深さの記録に書かれた refine-record のステップ 秒・ドルが読めなければ null のまま書く(行は欠かさない) E2
E4 変更の後の 3 回の行がそろい、中央値を基準と比べた リリース後テスト 3 回そろわなければ判定を保留し、そろった回数を報告に書く E3 が 3 回

E3 の失敗の経路(秒・ドルが読めないときに行を欠かすか null で書くか)は受け入れ条件 17b-3 に移した。

用語

用語 意味
差分の棚卸し 毎スプリントの棚卸し。誤りの訂正と、そのスプリントで起票した課題への見積の段階の付与だけを行う(--depth diff)
深さの記録 .ndf/backlog/depths.jsonl。深さごとの起動の判定と実行を 1 行ずつ残す
プランの進行の記録 まとめのプランのステップごとの終了コード・秒・ドルを 1 行ずつ残す記録(.ndf/loop/<ループ>/lap-<番号>/close*/*-state/progress.jsonl)

受け入れ条件

  • 17. このリポジトリで、毎スプリントの棚卸しの所要(秒・ドル)が今(開発ループ l20261031 の周回 2・3 の refine のステップで 206〜224 秒・1.41〜1.61 ドル)より短くなったことを、変更の後の周回の記録で示す
    • 17a. 変更を配布した後の差分の棚卸しの行 3 件(深さの記録の depth が diff・event が ran)で、seconds の中央値が 206 未満、cost の中央値が 1.41 未満である
    • 17b-1. まとめのプランで差分の棚卸しを通すと、深さの記録の差分の棚卸しの行の seconds・cost が、同じプランの進行の記録の refine の行の seconds・cost と一致する
    • 17b-2. 同じ行の loop・lap が、そのプランを起動した開発ループの名前と周回の番号になる(開発ループの外で人が起動したプランでは null)
    • 17b-3. プランの進行の記録に refine の行が無いとき(ステップが打ち切られたなど)も、差分の棚卸しの行は書かれ、seconds・cost は null になる
    • 17c. 差分の棚卸しの候補(candidates --depth diff)に unscored の経路で入る課題は、前の正式版のタグの時刻より後に作られた課題だけである。見直し(--depth review)の候補の集め方は変わらない
    • 17d. 差分の棚卸しの行の中央値の比べ方(3 件そろったか・中央値・基準との差)を、コマンド 1 本で深さの記録から出せる。3 件に満たなければ、そろった件数を返して判定を保留する

非機能の条件

大項目 条件
性能・拡張性 差分の棚卸しの所要は、変更の後 3 回の中央値で 206 秒未満・1.41 ドル未満(受け入れ条件 17a)
運用・保守性 所要を比べる値が深さの記録に残り、プランの進行の記録を手で探さずに比べられる(受け入れ条件 17b・17d)

影響

対象 影響
公開インタフェース 変わらない。upkeep.py depth record の引数は既にある --cost・--seconds・--loop・--lap を使う。比べ方のコマンド(17d)は足す
データ 深さの記録の差分の棚卸しの行に値が入る。行の形は変わらない。既存の行は書き直さない
既存の振る舞い 差分の棚卸しの候補から、前の正式版より前に作られた見積の無い課題が外れる。それらは見直しで拾う

検証手段

項目 手段
テスト uv run --frozen --project . --all-extras pytest plugins/ndf/skills/backlog-refinement/tests plugins/ndf/scripts/tests/test_supervise_pace.py -q -n 4
静的解析・型検査 プロジェクトの CI のジョブ(ruff・構造の検査)をそのまま使う
手動確認 変更を配布した後の開発ループで差分の棚卸しが 3 回通ったら、17d のコマンドで中央値を出し、基準と比べる(受け入れ条件 17a。リリース後テストで確かめる)

前提とする取り決め

項目 参照先 / 決めたこと
プロジェクト構造 AGENTS.md。深さの記録は .ndf/backlog/ の手元の記録でコミットしない(確定仕様の「運用」)
コーディング規約 AGENTS.md の「最小限のコード実装」。文言を照合するテストは書かない
テスト戦略 17b・17c・17d は単体テストで、17a はリリース後テストの実測で確かめる

境界

区分 内容
常に行う 既存テストの実行、変更の後の所要の実測
確認してから行う 差分の棚卸しの手順(SKILL.md)から作業を外すこと。承認ゲート 1・2 で人が見る
行わない 候補の上限を下げること、見直しと大整理の上限(#2423)、過去の記録の書き直し

未決

項目 誰が決めるか 期限
17c の後も中央値が基準を下回らないとき、差分の棚卸しから何を外すか(手順の中のどの作業が時間を使っているかの内訳) 設計(内訳の実測から決め、承認ゲート 1 で人が確かめる) 設計 PR
3 回の実測が配布から何日でそろうか(並行する開発ループの数による) リリース後テストの担当 配布の後

関連: #2423(棚卸しの見直しのステップに費用と秒の上限が効かない)

進行

モード: — / 進め方: auto

  • 要求と受け入れ条件 — 2026-11-05 01:34
  • 作業場所の用意 — 2026-11-05 08:32
  • 設計 — 2026-11-05 01:38
  • 素材の収集と出典の確定
  • ドキュメント再構成
  • ドキュメントレビュー
  • 計画 — 2026-11-05 08:32
  • 実装 — 2026-11-05 09:26
  • 構造改善 — 2026-11-05 10:36
  • 実装レビュー — 2026-11-05 11:18
  • 完了判定 — 2026-11-05 09:53
  • Pull Request — 2026-11-05 10:08
  • 確定仕様化
  • 後片付け — 2026-11-04 06:16
  • 配布 — 2026-11-05 12:11
  • 体裁レビュー
  • リリース後テスト — 2026-11-04 06:11
  • 振り返り — 2026-11-04 06:11
  • 棚卸し — 2026-11-04 06:16

振り返り: #2426 (comment)

人の判断待ち(開発ループ lflow2)

  • 判定: unknown(承認ゲート 1)
  • 理由: 設計の中身は MVV に沿っている。見積の段階を付ける課題を、そのスプリントで作られた課題に絞って所要を縮める(Value 3)。秒・ドルを実測で記録し、比べ方を 1 本のコマンドにする(Value 4・Value 5)。基準の値と件数は引数で受け、既定に埋め込まない(Value 6)。起点の時刻を候補の収集と同じものにそろえる(Value 7)。配布の後の 3 回の中央値は配布前に測れないため、判定の対象にしていない/要求のコピーの照合(requirements-check)が終了コード 2 で止まり、issues/issue-2315-requirements.md を読めていない。原因は未確認とされている。このため、要求と受け入れ条件のコピーが 開発ワークフローに「見直し」と「大整理」を足す: 棚卸しを毎スプリントの差分の棚卸し・数回に 1 回の見直し・十数回に 1 回の大整理(根本原因の発見と組み直し、後回しの再評価)に分ける #2315 の本文と一致するかを材料から確かめられない。確かめていないものを済んだと扱わない原則(Value 1)と、AI が決められないときは人へ戻す決まり(Value 2)に照らすと、自動で関門を通せない/承認資料の数字が食い違っている。PR 本文の変更統計(glossary.md +2 -2・glossary.json +14 -0・設計文書 +317)と、変更したファイルの一覧(+3 -1・+13 -1・+320)が合わない。本文が古いまま残っている可能性があり、承認資料の正しさ(Value 3・Value 8)を確かめられない/共通原則 C1〜C8 と固有の P1 に当たる操作は見当たらない。用語集と issues/ の文書は .ndf/ でも CLAUDE.md の運用の節でもない。深さの記録(.ndf/backlog/depths.jsonl)はスクリプトが行を足す記録で、この PR では利用者の設定を書き換えない
  • 根拠の項目: Mission, Vision, Value 1, Value 2, Value 3, Value 4, Value 5, Value 6, Value 7, Value 8, C7, P1
  • 設計 Pull Request: 差分の棚卸し: 見積の段階をそのスプリントの課題だけに付け、縮んだ所要をコマンド 1 本で確かめる(#2315) #2526
  • 答え: approved
  • 答え方: python3 /work/ai-plugins/plugins/ndf/scripts/sprint-state.py loop answer lflow2 2315 --approved|--rejected|--revise --note <指摘ファイル>

Activity

  1. changed the title [-]開発ワークフローに「見直し」のフェーズを足す: 棚卸しを毎周回の追従と数周回に 1 回の見直しに分け、見直しでニーズとシーズを調べて起票する[/-] [+]開発ワークフローに「見直し」のフェーズを足す: 棚卸しを毎スプリントの追従・数回に 1 回の見直し・十数回に 1 回の後回しの再評価に分け、見直しでプロジェクトが宣言した材料からニーズとシーズを調べて起票する[/+] on Oct 31, 2026
  2. changed the title [-]開発ワークフローに「見直し」のフェーズを足す: 棚卸しを毎スプリントの追従・数回に 1 回の見直し・十数回に 1 回の後回しの再評価に分け、見直しでプロジェクトが宣言した材料からニーズとシーズを調べて起票する[/-] [+]開発ワークフローに「見直し」と「大整理」を足す: 棚卸しを毎スプリントの追従・数回に 1 回の見直し・十数回に 1 回の大整理(根本原因の発見と組み直し、後回しの再評価)に分ける[/+] on Nov 1, 2026
  3. changed the title [-]開発ワークフローに「見直し」と「大整理」を足す: 棚卸しを毎スプリントの追従・数回に 1 回の見直し・十数回に 1 回の大整理(根本原因の発見と組み直し、後回しの再評価)に分ける[/-] [+]開発ワークフローに「見直し」と「大整理」を足す: 棚卸しを毎スプリントの差分の棚卸し・数回に 1 回の見直し・十数回に 1 回の大整理(根本原因の発見と組み直し、後回しの再評価)に分ける[/+] on Nov 2, 2026
  4. added 15 commits that reference this issue on Nov 2, 2026
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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions