Skip to content

cross-refactoring: 対象を覆う既存のテストが --scope の外にあると、提案を no_target で見送る #2552

Open

Description

@takemi-ohama

何を見つけたか

cross-refactoring が、対象を覆う既存のテストがあるのに「範囲テストを組み立てられない(no_target)」で提案を見送る。

  • 入力: スプリント lfactory3-6 の develop 宛の Pull Request スプリント lfactory3-6 #2534 に対する cross-refactoring。--scope はその Pull Request の変更ファイル(43 件)
  • 観測: 見送った提案 20 件のうち 12 件が no_target、8 件が時間(budget)。no_target の対象は factory/web/src/pages/(DelegationsPage・LoopsPage・SprintsPage・LoopDetailPage・ModelCredentialPage・NewSprintPage・SprintDetailPage・TeamPage)と factory/api/src/github-oidc/app.ts・handlers/ingest.ts・runs/deps.ts
  • 対象を覆う既存のテストは実在する: factory/web/src/pages/delegations.test.tsx・loops.test.tsx・sprints.test.tsx、factory/api/src/github-oidc/app.test.ts(2026-11-05 の develop で ls して確認)
  • これらのテストは Pull Request で変わっていないため --scope に入らない。項目のテストの対象(test_targets)が --scope のテストの置き場所の外にあると、refactor_lib/targets.py の valid_targets が退け、limited_runs が none を返して no_target になる(足すテストだけは suite の paths が覆えば置き場所の外でもよい。既存のテストにはこの例外が無い)

どこで見つけたか

  • 改修計画のコメント: スプリント lfactory3-6 #2534 (comment) の「見送った提案」
  • plugins/ndf/skills/cross-refactoring/scripts/refactor_lib/targets.py の valid_targets(68〜89 行)と limited_runs(224〜255 行)

なぜこの変更の範囲外なのか

#2199 の受け入れ条件は factory/ の見送った提案 20 件の片付けで、cross-refactoring の選定の規則は含まない。スプリント lfactory3-6 の振り返りで見つけた。根拠: Value 3(利用者へ届いた不具合に当たる。cross-refactoring は配布している Skill で、利用者の実行で提案の 6 割が検証の手前で落ちた)・Value 7(根本原因の場所で直す)(MVV 版 5)

#2457 は cross-refactoring の制約を洗い出し、no_target(制約の表の 8)を「案出し・選定の制約として残す」に分けている。ここで扱うのは、テストが実在するのに --scope に無いという理由だけで退ける場合であり、#2457 の分類とは別に判断が要る。

直さないと何が起きるか

起票者の推定

由来

PR #2534

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions