Uh oh!
There was an error while loading. Please reload this page.
Update: cross-refactoring のコミット粒度を項目単位にし、改修計画を差分へ残す(v8.6.0) - #138
Conversation
手順を 1 手ずつ進めることと、その途中経過を履歴に残すことは別である。手ごとに テストを回して安全に進めるのは変えず、履歴に残すのは項目単位の 1 コミットだけに する。実測では採用 12 件に対して適用が 34 コミット、取り消しと積み直しで 25 コミットあり、改善項目と履歴が 1 対 1 で辿れなかった。 現状固定テストが要る項目だけは 2 コミットを許す。1 つに混ぜると、テストが先行した ことを履歴から確かめられない。適用と修正の両方で検証するのは、適用側だけ揃えても 指摘への対応という名目で刻んだ履歴が戻ってくるためである。 改修計画(なぜ直すのか・どう直すのか)は提案の時点でしか残らず、状態ファイルは 差分から除外されるため Pull Request からは読めなかった。--plan-file(既定 issues/refactoring-plan-rf<PR>.md)へ書き出し、公開は生成物の同期と同じコミットに 乗せる。分けると進行側のコミットが公開のたびに 2 つずつ積まれる。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpZXeYvfEGymigQeCLp1Eh
進行側は申告されたコミットごとにテストを実行するため、実装担当にも手ごとの実行を 義務づけると、同じテストが手数の 2 倍だけ走る。6 回目の実測では 44 手に対して 88 回で、1 回 26 秒として約 38 分をテストに費やしていた。 求めるのはコミットの前に通っていることだけにする。そこは進行側が実際に実行して 確かめるので、途中で確かめるかどうかは実装担当の判断に任せる。1 改善項目 = 1 コミットになったことで、進行側の実行も項目ごとの 1 回に収まる。 レビューの回数(ラウンドごとに 2 者 + 収束後の cross-review)は変えていない。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpZXeYvfEGymigQeCLp1Eh
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
--plan-file のパス検証を追加してください。
Uh oh!
There was an error while loading. Please reload this page.
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
1改善項目=1コミットへの方針変更と改修計画のファイル出力について、実装とテストが網羅されており安全に動作することを確認しました。
差分外のファイルですが、plugins/ndf-shared/skills/cross-refactoring/tests/test_merge_apply.py の 80行目付近にある # ---------- 1 手 1 コミット ---------- という見出しコメントが古い用語のままになっています。本 PR の変更に合わせて # ---------- 1 改善項目 = 1 コミット ---------- へ更新することをご検討ください。
Uh oh!
There was an error while loading. Please reload this page.
--plan-file は利用者が渡す値で、進行側はそれを利用者のリポジトリへ書き出す。 絶対パスや親へ抜ける経路をそのまま受け取ると、作業ディレクトリの外へ計画書を 書けてしまう。受け取った時点で拒み(終了コード 4)、状態ファイルから読むときも 同じ基準を通す。 あわせて `./issues/plan.md` のような表記を正規化する。git が返すパスと形が違うと `plan_rel in produced` が一致せず、公開のコミットメッセージが取り違えられる。 現状固定テストの見出しも新しい規約の語へ揃えた。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpZXeYvfEGymigQeCLp1Eh
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | APPROVE
修正必須の指摘はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | gemini | APPROVE
ディレクトリトラバーサル対策とパス正規化の実装、および「1 改善項目 = 1 コミット」の規約統一について、コードとテストの両面から仕様への適合を確認しました。指摘事項はありません。
Uh oh!
There was an error while loading. Please reload this page.
何のために
6 回目の実機試行(#136)で 3 つの過剰が出た。
レビューの回数(ラウンドごとに 2 者 + 収束後の
/ndf:cross-review)は変えていない。何を変えたか
1 改善項目 = 1 コミット
手順を 1 手ずつ進めることと、その途中経過を履歴に残すことは別である。 残すのは
項目単位の 1 コミットだけにした。
test_gap)だけは「テスト → 実装」の 2 コミットを許す。1 つに混ぜると、テストが先行したことを履歴から確かめられない
履歴が戻ってくる
git reset --softでまとめる)テストの回数を項目の単位に合わせる
進行側は申告されたコミットごとにテストを実行する。実装担当にも手ごとの実行を
義務づけると、同じテストが手数の 2 倍だけ走る。
求めるのはコミットの前に通っていることだけにした。途中で確かめるかどうかは
実装担当の判断に任せる。
改修計画を差分へ残す
--plan-file(既定issues/refactoring-plan-rf<PR>.md)へ書き出す。空文字を渡すと記録しない。
書き出しても余計なコミットは積まれない
たびに 2 つずつ積まれる
変えていないこと
判定の材料(git と実際のテスト実行)、取り消しの単位、差分予算の倍率、収束の条件、
レビューの回数は変わらない。既定で計画を残すようにしたため、
--plan-fileを指定しない実行でも進行側のコミットが 1 つ増える。
Test plan
uv run --with pytest python -m pytest plugins/ndf-shared/skills/cross-refactoring/tests plugins/ndf-shared/skills/cross-review/tests -qが 532 passed(従来 500 + 追加 32)claude plugin validate .が通ることpython3 scripts/check-skill-frontmatter.pyが通ること🤖 Generated with Claude Code
https://claude.ai/code/session_01XpZXeYvfEGymigQeCLp1Eh