Repository navigation
Description
何を見つけたか
検査のトリガーの閾値(.ndf/pace.json の triggers: score 10・common_weight 2・lines 3000・escapes 1・hours 24)を見直すかを、検査の記録の集計で決められない。2026-10-31 に打った python3 plugins/ndf/scripts/check-trigger.py stats --root /work/ai-plugins の結果:
| 数 | 値 |
|---|---|
トリガーの評価(eval) |
0 回(立った 0) |
| 検査 | 26 回(すべて PR を指す検査 scope: pr。前回からの差分の検査 scope: since は 0) |
| 落ちた検査 | 18 回(構造改善の工程 refactor 13 回・工程が「不明」5 回) |
| 検査の後に逃げた不具合 | 0 件(記録そのものが 0 行) |
- 閾値を見直す材料が溜まらない。 閾値が効くのは
pace: fastのトリガーの評価だけで、このリポジトリのスプリントはpace: autoの PR ごとの検査(--target-pr)で回っている。pace.mdの「検査を 5 回回した後に閾値を見直す」は、PR を指す検査を数えても満たせない - 落ちた工程が「不明」の行がある。 PR スプリント m26-1 #2268 の 3 回・PR スプリント m2171 #2209 の 1 回・PR スプリント m2087 #2152 の 1 回は
failed_at: "不明"で、record --target-pr --failedが計画の状態から工程を読めなかった(plugins/ndf/scripts/check-trigger.pyのrecord_target) - 流出不具合の記録が 0 行である。 記録を書くのは
new fix --escape-of/new impl --escape-ofで組んだプランだけで、ほかの経路(例: スプリント l20261031-1 の PR Docs: #2206 の要求の写しを本文の見出しの形に合わせる #2245)で直した不具合は残らない
どこで見つけたか
スプリント l20261031-3 の振り返り(/ndf:retrospective)。起点 #2216 、スプリントの PR #2283 、本番の PR #2298 。記録は ~/.local/state/ndf/checks/devbasex__ai-plugins.jsonl
なぜこの変更の範囲外なのか
このスプリントは factory/ の進捗の受け口の照合と起票の代行(#2216)を作った。検査の記録の書き方と集計(check-trigger.py・pace.md)は変えていない
直さないと何が起きるか
閾値を測らずに据え置くか、測らずに変えるしかなくなる(Value 3 に反する)。落ちた理由の 3 割弱(5/18)を数えられず、流出不具合 0 件が「逃げていない」のか「数えていない」のかを区別できない
受け入れ条件
statsが、閾値を見直す材料が足りるかと、足りないときは何が足りないかを出す- 落ちた検査の行が、落ちた工程を「不明」にしない(読めないときはその理由を残す)
- マージ済みの変更の不具合を
--escape-ofを使わずに直したとき、流出不具合として数えるか、数えていないことがstatsに出る
起票者の推定
- 受け入れ条件 3 つは起票者(振り返りの AI)の推定で、利用者の指示ではない。振り返りの依頼(2026-10-31)は「閾値の見直しが要るかを書く」だけである
- 根拠: Value 3(測って決める)・Value 4(決まった手順はスクリプトに)
由来
PR #2298(スプリント l20261031-3 の本番の配布)の振り返り
追記: スプリント m26-2 の振り返り(2026-11-01)の材料
2026-11-01 に打った check-trigger.py stats --root /work/ai-plugins は、評価 0 回(立った 0)・検査 33 回(すべて PR を指す)・落ちた検査 23 回(refactor 15・「不明」8)・逃げた不具合 0 件だった。前回(26 回・18 回・不明 5)から、3 つの点がそのまま続いている。
- 「不明」の 3 回が増えた。どれもスプリントの PR スプリント m26-2 #2318 の検査である(18:45Z・18:46Z・20:00Z)。実際に落ちた原因は、全体テストの CI 待ち(全体テストの CI 待ちが、PR で外したチェックをメインディレクトリの宣言から読んで待ち続ける #2317)、リファクタリングの init の打ち切り(cross-refactoring の init が着手前テストの打ち切りで止まると、持ち主の記録が残り次の実行を 24 時間断る #2321)、キューの再開の
--fromが効かないこと(queue --resume の --from が、強制終了した前の起動が残っていると無視され、前の途中のステップから続く #2325)だった - 件数が記録に載らない、4 つ目の穴がある。 スプリント m26-2 #2318 のマージの行(2026-11-01T00:00:08Z)の
findingsはapplied・revertedが null で、review の件数のキーを持たない。この PR の cross-review は 4 ラウンドを回し、見送りが 1 件出ている(スプリントの閉じる条件 3: 別のリポジトリの課題が振り返りの記録を満たせず開いたまま残る #2327)。キューを強制終了して再開したため、findings_ofが読む計画のstate.jsonに review のcountsが残らなかったとみられる(未確認) - 逃げた不具合が 0 件のままである。このスプリントで、配布済みの NDF の不具合を 4 件見つけて起票した(全体テストの CI 待ちが、PR で外したチェックをメインディレクトリの宣言から読んで待ち続ける #2317・cross-refactoring の init が着手前テストの打ち切りで止まると、持ち主の記録が残り次の実行を 24 時間断る #2321・cross-refactoring の最終ゲートが締め切りで巻き戻すとき、途中で取り込んだベースブランチの変更まで消す #2323・queue --resume の --from が、強制終了した前の起動が残っていると無視され、前の途中のステップから続く #2325)。どれも
--escape-ofの経路で直していないため、記録に載らない
追記: スプリント m26-3 の振り返り(2026-11-01)の材料
2026-11-01 に打った check-trigger.py stats --root /work/ai-plugins(10.27.5)は、評価 0 回(立った 0)・検査 34 回(すべて PR を指す)・落ちた検査 23 回・逃げた不具合 0 件だった。m26-2 の時点(33 回・23 回)から、スプリントの PR #2348 の検査が 1 回増えただけである。
- この 1 回は 1 度で通り(落ちた行 0)、
findingsに review の件数(rounds 2・findings 1・fixed 1)と構造改善の件数(applied 11・reverted 0)がそろって載った。m26-2 で見た「件数が載らない」穴は、キューを強制終了しなかった今回は出なかった - 評価が 0 回のまま 4 本目のスプリントを終えた。このリポジトリのスプリントは
pace: autoの PR を指す検査だけで回り、.ndf/pace.jsonのtriggersは一度も使われていない。閾値を見直す材料は依然として無い - リリース後テストは 24 件すべて合格で、逃げた不具合は 0 件。ただし
--escape-of以外の経路で直した不具合は数えない(3 つ目の点)ため、0 件は「逃げていない」の根拠にならない
追加の実測(2026-11-02、スプリント lroot-2 の振り返り)
check-trigger.py stats --root /work/ai-plugins(ndf 10.27.6): トリガーの評価 0 回(立った 0)・検査 37 回(すべて scope: pr)・落ちた 25 回・逃げた不具合 0 件(記録 0 行)。前回の 26 回から 11 回増えたが、閾値の材料(eval)は 0 回のままである。PR #2363 の 1 回目の落ちは、また failed_at: "不明" だった(cross-review が max_rounds で終わった回)
追記: スプリント lroot2-2 の振り返り(2026-11-02)の材料
2026-11-02 に打った check-trigger.py stats --root /work/ai-plugins(10.27.7)は、評価 0 回(立った 0)・検査 39 回(すべて PR を指す)・落ちた検査 25 回・逃げた不具合 0 件だった。m26-3 の時点(34 回・23 回)から、検査が 5 回増えた。このスプリントの検査(スプリントの PR #2392 )で、4 つ目の穴の原因を確かめた。
- 件数が載らない原因は、関門で止まった後の再開である(m26-2 で「未確認」とした推定を確かめた)。 検査のプランは
merge-gateで終了コード 10(手動確認の行が未確認)で止まり、再開してからmergeとrecordを通った。再開後の計画のstate.jsonのlogにはrecordの 1 行しか残らず、findings_ofが読むrefactorとreviewのcountsが無い。この検査の構造改善は案 A を通せずに全部取り消し、cross-review は 1 ラウンド・指摘 0 件だったが、記録のfindingsはapplied・revertedが null で review の件数のキーを持たない。記録は.ndf/loop/lroot2/lap-2/sprint/4-check-state/(ai-plugins の主ディレクトリ) - 同じ検査が 2 行記録された。
pr-2392の merged の行が 05:53:36Z と 05:53:55Z の 2 行ある(01-record.outと03-record.out。再開でrecordが 2 回流れた)。statsは検査を 2 回と数える - 逃げた不具合が 0 件のままである。 このスプリントのリリース後テストは、配布した 10.27.10 の退行(Agent の
ndf:workerの経路でdocument-styleが届かない。Agent の ndf:supervisor が worker の起動指示に「読む Skill」を置かず、設計の工程の ndf:worker に document-style が届かない #2399)を見つけた。--escape-ofの経路で直していないため、記録に載らない(3 つ目の点) - 評価は 0 回のまま 5 本目のスプリントを終えた。このスプリントも
pace: autoで、.ndf/pace.jsonのtriggersは使われていない
追記: スプリント lflow-1 の振り返り(2026-11-04)の材料
2026-11-04 に check-trigger.py stats --root /work/ai-plugins(10.27.7)を実行した結果は、評価 0 回(立った 0)・検査 53 回(すべて Pull Request が対象)・落ちた検査 35 回・逃げた不具合 0 件だった。lroot2-2 の時点の 39 回・25 回から、検査が 14 回増えた。スプリントの PR #2414 の検査は 5 回記録され、うち 4 回が落ちた。
- 逃げた不具合の 0 件が、実際の数と食い違った。 リリース後テスト( Release: ndf v10.27.14 #2426 )は、検査を通った後の不具合を 2 件見つけた。1 件は 再起動の方針の集計で、同じ課題の判定と引継ぎの印が別の作業に割れる(record --work の識別子が正規化されない) #2475(再起動の方針の集計で、同じ課題が別の作業に割れる。単体テストは通っていた)、もう 1 件は relay.py の統括役の環境変数 3 つと hub/ の受け渡しのファイルが契約の宣言に無く、契約の検査も検出しない #2434(契約の宣言の欠け)である。どちらも起票で残り、
--escape-ofで直していないため、記録に載らない(3 つ目の点) - 落ちた工程が「不明」の行が 1 回増えた。 11-02 20:11 JST の回で、cross-review が
max_roundsで終わり、未解決は 0 件だった(スプリントの検査で cross-review が未解決 0 件のまま上限や error で終わると検査ごと落ち、conductor が手で review を飛ばして再開する #2370 と同じ形) - 評価は 0 回のまま 6 本目のスプリントを終えた。閾値は変えずに据え置き、見直しはこの課題が直った後の集計で行う
振り返り: #2426 (comment)
実測の追加(2026-11-06。スプリント lflow2-11 の振り返り)
check-trigger.py stats: トリガーの評価 0 回・検査 72 回(すべて scope: pr)・完走しなかった記録 40 回(構造改善 22・工程が「不明」16・レビュー 1・マージ 1)・逃げた不具合 0 件。
- 工程が「不明」の行は 5 行から 16 行になった
- マージの行のうち 11 行は採用と指摘のどちらの値も持たない
- 手で続行した検査の実績がマージの行に載らない。PR スプリント lflow2-11 #2625 の採用 3 件は
applied: nullで、失敗の行にunconfirmed: 3が残る - 同じ期間に題に Fix を含む develop 宛の PR が 12 本マージされている。流出不具合に当たるものの件数は未確認
記録: #2604 (comment)
実測の追加(2026-11-06。スプリント lroot3-18 の振り返り)
check-trigger.py stats: トリガーの評価 0 回・検査 72 回(すべて scope: pr)・完走しなかった記録 40 回・逃げた不具合 0 件で、スプリント lflow2-11 の振り返りの時点と同じ値である。
- 検査を通って配布された後に見つかった不具合が 0 件の記録に入らない実例が出た。このリポジトリの runtime-plugin-validate.yml の 9 ジョブがテストの宣言に無く、cross-refactoring の項目が壊しても手元で拾えない #1694 の suite が 443 番へ接続する不具合(このリポジトリの suite runtime-plugin-validate が claude plugin validate の中で 443 番へ接続し、「ネットワークを使わない」非機能の条件を満たさない #2666)は、検査(Pull Request 2612)を通り v10.27.26 で配布された後、リリース後テストで見つかった。記録を書くのは
--escape-ofを付けて直すプランだけなので、見つけた時点では数えられない project-mvv.py signalsの流出不具合も同じ記録を読むため、MVV の改訂の兆候も 0 件のままになる
記録: #2631 (comment)
Activity
takemi-ohama commentedon Nov 5, 2026
同じ事象を PR #2561 の作業中に確認した。