Skip to content

Refactor: cross-refactoring 修正後の再検証(v8.2.0) - #120

Closed
takemi-ohama wants to merge 57 commits into
mainfrom
refactor/cross-refactoring-retrial
Closed

Refactor: cross-refactoring 修正後の再検証(v8.2.0)#120
takemi-ohama wants to merge 57 commits into
mainfrom
refactor/cross-refactoring-retrial

Conversation

@takemi-ohama

@takemi-ohamatakemi-ohama commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

結果

修正した 9 件はすべて実機で成立した。 前回(#118)は適用結果の検証で失敗した項目を取り消す経路が破綻して停止したが、今回はレビュー・判定・実装担当の輪番・集計まで到達した。一方で新しい不具合を 2 件見つけ、うち 1 件は生成物を持つリポジトリで収束ループを実質的に不能にする。

詳細は issues/issue-113-cross-refactoring-retrial.md

修正 9 件の実機確認

#直したこと実機での観測
1取り消しの巻き戻しと積み直し取り消し 11 コミット / 積み直し 8 コミット(項目単位)。失敗した 1 項目だけを落とし、同じ refactor.py を触る 3 項目 6 コミットを積み直した
2中断と全件失敗の区別push 失敗で終了コード 4。次の提案ラウンドへ進まず停止
3判定の逐次記録rounds[].apply_progress に全項目の判定
4再送信の印中断を跨いで pending_push が残り、次の実行が処理済み判定より先に push 再送
5範囲の検査範囲外コミットを検出して項目を失敗に
6提案結果のラウンド別保存-r1-result.json-r2-result.json両方残った
7gemini の手順書読み取り設定が配置され、差分にも出ない
8語彙の列挙3 ランタイムとも英字の識別子で提案
9認証の確認初期化時に 4 CLI の認証状態を出力

不具合 1 は、前回破綻したのと同じ条件で成立した。

前回まったく実行できていなかった範囲

対象結果
レビュー担当 2 者の並列実行と承認判定✅ 両者 APPROVE
実装担当の輪番✅ R1 codex → R2 kiro(レビュー担当も入れ替わり)
提案ラウンドの収束判定
集計値の出力auto モデルの分離注記まで
指摘の修正と再レビューの繰り返し❌ 未到達(R1 は指摘 0 件、R2 は適用が全件失敗)
上限到達時の項目単位の見送り❌ 未到達(同上)

新しく見つかった不具合

10. pre-push の同期検査と範囲ルールが両立しない

.githooks/pre-push が生成物の同期を検査する一方、この Skill は「実装担当は編集元だけを触る / 同期は進行側が収束後に行う」と決めた。実装担当の push も、取り消しを反映する進行側の push も落ちる。

さらに、この検査は実装担当を範囲ルール違反へ誘導する

ラウンド実装担当配布物を同期したか適用成功
1codexしなかった(push は失敗のまま放置)4 / 5
2kiroした(4 コミットすべてで)0 / 5

修正の方向: 実装担当に push させず、検証を通った後で進行側だけが push する(同期はその直前)。不具合 4 の経路自体が無くなる。

11. 適用で失敗した項目が「対象外」に入らない

merge-apply の失敗経路だけが deferred_items へ記録しない。R1 で失敗した monitor.py#monitor_agent3 ランタイム全員から再提案され、合意 3 で最優先に採用された(R2-001)。同じ理由で必ず失敗し、ラウンドを 1 つ消費する。

この PR に残ったもの

ラウンド 1 で採用・検証・レビュー承認まで通った 4 項目(refactor.pycmd_merge_apply / cmd_merge_fixmetrics.pyaggregate)。ラウンド 2 の 12 コミットは全件取り消し済み。

  • テスト 430 件成功、生成物も同期済み
  • マージ判断は保留。不具合 10・11 の修正を先に入れるか、この 4 項目だけ先に取り込むかは要相談

次にすること

不具合 10 と 11 を直してから、指摘の修正と再レビューの繰り返しを通す再々検証を行う。

🤖 Generated with Claude Code

https://claude.ai/code/session_01GSwBvT9CH8mKfgyFn2JWfS

takemi-ohamaand others added 30 commits August 16, 2026 04:17
不具合 9 件の修正(v8.2.0)を実機で確かめる。この PR が対象。
確かめることと、前回まったく実行できていない範囲を先に書き出す。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GSwBvT9CH8mKfgyFn2JWfS
コミット所有権の検証を独立した関数へ抽出する。
Item-Id: R1-001
Round: 1
Impl-Runtime: codex
Impl-Model: default
項目別の検証と進捗記録を独立した関数へ抽出する。
Item-Id: R1-001
Round: 1
Impl-Runtime: codex
Impl-Model: default
実装担当の指標更新を独立した関数へ抽出する。
Item-Id: R1-002
Round: 1
Impl-Runtime: codex
Impl-Model: default
レビュー担当ごとの指標更新を独立した関数へ抽出する。
Item-Id: R1-002
Round: 1
Impl-Runtime: codex
Impl-Model: default
修正コミットの範囲と手順の検証を独立した関数へ抽出する。
Item-Id: R1-003
Round: 1
Impl-Runtime: codex
Impl-Model: default
検証失敗時の修正範囲取り消しと起点更新を独立した関数へ抽出する。
Item-Id: R1-003
Round: 1
Impl-Runtime: codex
Impl-Model: default
タイムアウト、致命エラー、結果なし終了、stall の観測結果を固定する。
Item-Id: R1-004
Round: 1
Impl-Runtime: codex
Impl-Model: default
sentinel と result age による早期完了判定を抽出する。
Item-Id: R1-004
Round: 1
Impl-Runtime: codex
Impl-Model: default
タイムアウト、異常、終了、停滞の判定を独立した関数へ抽出する。
Item-Id: R1-004
Round: 1
Impl-Runtime: codex
Impl-Model: default
申告SHAを完全SHAへ解決する処理を適用・修正経路で共通化する。
Item-Id: R1-005
Round: 1
Impl-Runtime: codex
Impl-Model: default
範囲取り消し時の push 印、revert、起点更新、保存を共通化する。
Item-Id: R1-005
Round: 1
Impl-Runtime: codex
Impl-Model: default
コミット所有権の検証を独立した関数へ抽出する。
Item-Id: R1-001
Round: 1
Impl-Runtime: codex
Impl-Model: default
項目別の検証と進捗記録を独立した関数へ抽出する。
Item-Id: R1-001
Round: 1
Impl-Runtime: codex
Impl-Model: default
実装担当の指標更新を独立した関数へ抽出する。
Item-Id: R1-002
Round: 1
Impl-Runtime: codex
Impl-Model: default
レビュー担当ごとの指標更新を独立した関数へ抽出する。
Item-Id: R1-002
Round: 1
Impl-Runtime: codex
Impl-Model: default
修正コミットの範囲と手順の検証を独立した関数へ抽出する。
Item-Id: R1-003
Round: 1
Impl-Runtime: codex
Impl-Model: default
検証失敗時の修正範囲取り消しと起点更新を独立した関数へ抽出する。
Item-Id: R1-003
Round: 1
Impl-Runtime: codex
Impl-Model: default
申告SHAを完全SHAへ解決する処理を適用・修正経路で共通化する。
Item-Id: R1-005
Round: 1
Impl-Runtime: codex
Impl-Model: default
takemi-ohamaand others added 21 commits August 16, 2026 05:06
修正結果の読込と merge_key による再実行判定を入口段
_merge_fix_load_and_check_idempotent へ抽出する。
Item-Id: R2-002
Round: 2
Impl-Runtime: kiro
Impl-Model: default
resolved_thread_ids の正規化と GitHub 実状態との照合を
_merge_fix_resolve_threads へ抽出する。
Item-Id: R2-002
Round: 2
Impl-Runtime: kiro
Impl-Model: default
修正コミット範囲の確定・検証・不正時の取り消しを
_merge_fix_verify_and_reconcile へ抽出する。
Item-Id: R2-002
Round: 2
Impl-Runtime: kiro
Impl-Model: default
レビュー解決状態の反映・ラウンド計数・保存・push を
_merge_fix_finalize へ抽出する。
Item-Id: R2-002
Round: 2
Impl-Runtime: kiro
Impl-Model: default
コミット所有権の検証と不正時のラウンド取り消しを
_merge_apply_validate_ownership へ抽出する。
Item-Id: R2-003
Round: 2
Impl-Runtime: kiro
Impl-Model: default
apply 状態の構築・dry-run/部分失敗/全成功の分岐・終了処理を
_merge_apply_build_state_and_finalize へ抽出する。
Item-Id: R2-003
Round: 2
Impl-Runtime: kiro
Impl-Model: default
verify_fix_commit と verify_apply_item の per-commit 検証(exists, trailers,
scope, test_status)を _verify_single_commit へ共通化する。
Item-Id: R2-004
Round: 2
Impl-Runtime: kiro
Impl-Model: default
…_items
work, scope, test_command, head_branch, timeout の 5 パラメータを
VerifyContext dataclass にまとめ、_verify_and_record_items,
collect_commit_facts, _validate_fix_commits の引数を統合する。
Item-Id: R2-005
Round: 2
Impl-Runtime: kiro
Impl-Model: default
修正した 9 件はすべて実機で成立し、レビュー・判定・輪番・集計まで到達した。
新しい不具合を 2 件見つけた(pre-push の同期検査との衝突、適用失敗項目が
対象外リストに入らない)。前者は生成物を持つリポジトリで収束ループを不能にする。
takemi-ohama added a commit that referenced this pull request Aug 16, 2026
修正後の再検証(#120)で見つかった不具合 10・11 を直す。
不具合 10: pre-push で生成物の同期を検査するリポジトリでは、「実装担当は編集元
だけを触る」ルールと衝突してあらゆる push が落ちる。さらにこの検査は実装担当を
範囲ルール違反へ誘導し、実測ではラウンドの採用 5 件が全件範囲外で失敗した。
- 実装担当は push しない。公開するのは進行側だけで、検証を通した後に行う
- --sync-command を新設し、push の直前に進行側が実行する。差分があれば
どの改善項目にも属さないコミットとして積む
- merge-apply / merge-fix は成功・失敗のどちらでも検証後に push する
これで「未検証の変更が公開される」経路自体が無くなり、不具合 4 は緩和ではなく
根絶になる。同期は作業ツリーが綺麗なときだけ行い、失敗したら index ごと戻す。
不具合 11: 適用の検証で失敗した項目が deferred_items に入らず、次ラウンドで
同じ提案が再び採用されていた。項目別の失敗とラウンド全体の取り消しの両方から
記録する。
cross-review を 6 ラウンド回し、codex / gemini の両者が APPROVE で収束した。
指摘 9 件はすべて実在の欠陥だった。テストは 444 件成功(直前 430 件)。
@takemi-ohama

Copy link
Copy Markdown
ContributorAuthor

閉じる理由

この Pull Request は /ndf:cross-refactoring再検証の対象として作ったものです。目的(不具合 9 件の修正が実機で成立するかの確認)は達しました。

構造改善の成果を取り込まない理由

ラウンド 1 で 4 項目が採用・検証・レビュー承認まで通りましたが、取り込みません。

#121 が同じ refactor.py を大きく変えており、取り込むには手でコンフリクトを解消する必要があります。そうすると**「2 者のレビューを通った内容」という性質が失われます**(解消した結果は誰も見ていないため)。同じ提案は再々検証でまた出る見込みです。

記録の残り先

再検証レポートは #122 で main へ取り込みます(issues/issue-113-cross-refactoring-retrial.md)。実測値・不具合 10 と 11 の発見経緯・到達点の図はそちらに残ります。

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@takemi-ohama@claude