Skip to content

主ディレクトリへの書き込みの検知を実行後の差分の観測へ移し、抽出の取りこぼしと取り違えを根本原因の場所で直す #734

Description

@takemi-ohama

同じ根本原因を持つ課題(子 issue)を、現れている場所ではなく根本原因の場所で直すための親 issue である(issue-upkeep の判定「ルートコーズ」)。再現手順と観測は各子 issue にある。

修正レイヤー

主ディレクトリへの書き込みの検知。 場所は plugins/ndf/scripts/worktree-guard.sh のシェル系 tool の枝(198 行目で wt_extract_write_target を呼ぶ)である。

採る手

移動(move_responsibility)。tool の実行後に wt_dirty_pathsworktree-common.sh:2193)で主ディレクトリの差分を見て案内する。パスが引数で明示されるパッチ系・編集系の tool の枝は変えない。

移すときに扱いを決めること:

決めること 何が起きるか
.gitignore の対象と未追跡のファイル git status --untracked-files=no に出ない
同じ主ディレクトリへの別のセッションの同時の書き込み どの tool の書き込みか区別できない
実行の費用 tool の実行ごとに git status が走る(hook の上限 5 秒)
実行後の hook の発火 Claude Code の PostToolUse、codex と agy の対応する事象が実際に発火するかは確かめていない
案内の文言が指す後始末 主ディレクトリに残った変更を作業ツリーへ移す手段は、#867worktree-setup.sh move-stray <branch> になる。検知(この課題)と後始末(#867)が同じ wt_dirty_paths を読み、案内はその後始末を指す

着手は #867 の後にする。 案内が指す move-stray が先に要る。

PostToolUse の hook を新設するときは、マイルストーン 26 の #829 / #830(PR #844)が増やす PreToolUse の hook と
合わせて、hook の構成と実行の費用を見る。

関連

子 issue

子 issue 現象レイヤー 観測
#625 >| のリダイレクト 書き込み先を出さない
#627 コマンド置換 閉じ括弧を書き込み先の語に含める(out=$(bash x 2>&1)1)
#633 補助関数 _redir_target 呼び出し後もシェルに残る
#644 オプション終端 -- cp src -- -dest で複製元を宛先として案内する
#645 被演算子 1 件の cp / mv 何も書かれないのに、複製元を書き込み先として案内する

完了条件

  • シェル系 tool の書き込みの検知が実行後の差分で行われ、wt_extract_write_target を使わない
  • 上の表の 4 つの扱いが決まり、それぞれに検査がある
  • 各子 issue の再現手順を実行し、誤った案内が出ないことを確かめる(子 issue はその時点の棚卸が「閉じてよい」で閉じる)

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

    area: ndf-skillNDF の Skill 本体priority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions