検索時に読んだ文脈が、置換ボタンを押す直前も同じとは限りません。別の担当者が見出しを直したり、新しい一致行が追加されたりするからです。テキストエディタ 検索機能で確認付き置換を安全に進めるには、「一度承認した」ではなく、「実行時点でも承認した文脈が新鮮である」ことを確かめます。
STUDIO-324の新しい固定試験は、検索二件から始まります。一件を承認した後でそのファイルの見出しを変え、さらに三件目の一致を新着させました。古い承認はSHA不一致で失効し、再確認した一件だけを置換します。ここでの判断単位は一括置換の件数ではなく、承認後に鮮度を失う一枚の実行券です。
検索結果に審査時刻を持たせる
最初の検索語はDraft324です。検証ワークスペースには、現行原稿draft/chapter.mdのREVISE Draft324 in active prose.と、引用資料reference/quote.mdのQUOTE Draft324 must remain.があり、基準検索は二ファイル二件を返しました。
この二件を「ずっと有効な一覧」とは考えません。検索時点をepoch Aと呼び、検索語、パス、返却件数、各ファイルのSHAを一緒に保存します。後で同じ語が見つかっても、epochが違えば別の審査対象です。
承認札を文章のSHAに結ぶ
epoch Aでは、現行原稿をC-01、引用資料をC-02としました。C-01には相対パス、見出しOpening、前後文、検索語、承認時SHAを記録し、Draft324をFinal324へ変える実行を承認します。C-02は引用の意味を守るため、置換対象にしません。
ここで重要なのは、承認が語句だけに付くのではないことです。同じDraft324でも、見出しや周辺文が変われば、判断時の文脈ではありません。実行券にSHAを結び付けると、古い了解で新しい文章を書き換える事故を止められます。
文脈が変わったら承認を失効させる
承認後、C-01の見出しをOpeningからRevised Contextへ変えました。置換候補の一文自体は同じですが、ファイルSHAは承認時と異なります。鮮度ゲートはexpected_sha != current_shaを検出し、C-01をSTALEにしました。この時点で置換を実行してはいけません。
失効は無駄な手戻りではなく、再読が必要だと知らせる成功です。新しい見出しと前後文を読み、変更後SHAへ承認を結び直すまで、dry-runも後ろへ送ります。検索件数が変わっていなくても、SHAが違えば不合格です。
新着の三件目は古い承認に混ぜない
C-01が失効した後、inbox/new.mdにPENDING Draft324 needs separate review.を追加しました。epoch Bの再検索は三ファイル三件を返します。新着行はC-03とし、まだ置換できないPENDINGにしました。
「同じ検索語だからC-01の許可が使える」と考えるのは危険です。C-03には別のパス、別の見出し、別の文脈があります。予定より件数が増えたときは、一括処理の対象を広げるのではなく、新着キューを開きます。
再承認した一件だけを書き換える
変更後のC-01を読み直し、新しいSHAで再承認しました。その後でdraft/chapter.mdだけに対し、REVISE Draft324をREVISE Final324へ変えるdry-runを実行しました。予告は一件、適用も一件です。
保存後の全体検索ではFinal324が一件、Draft324が二件でした。後者はC-02の引用とC-03の新着候補です。二件が残ったことは未完了ではありません。この実行券が許可したのはC-01だけなので、他の二枚を書き換えないことが正しい終了状態です。
件数が合っても鮮度違反は失敗にする
危険な失敗は、古いC-01をそのまま使い、文脈が変わった原稿へ置換を適用することです。結果の一件が見た目どおり変わっても、誰も新しい見出しで承認していないため不合格です。古い件数を合わせることは復旧になりません。
回復では追加置換を止め、承認時SHAと現在SHAを比較します。変わったファイルは最新文脈を再読し、古いカードを復活させず新しい実行券を発行します。新着ファイルは必ず別カードにし、開いたまま次の審査に渡します。
GUIの確認表示は別の操作記録にする
Rune Studioの公開資料では検索と確認付き置換が案内されています。今回の固定証拠で計測したのは、CLIの検索結果、保存ファイルのSHA、一件のdry-runと適用、再検索です。画面上の行強調、確認ダイアログの文言、同時編集中の更新通知は実測していません。
GUIを試すときは、アプリ版、epoch、表示中のパス、確認直前のSHA、ダイアログが示す変更対象を別票へ記録します。画面の「成功」が出ても、古い承認と新しい原稿が混ざっていれば受け入れません。
開いたカードを残して引き渡す
完了票にはepoch Aの二件、C-01の失効理由、epoch Bの三件、C-01の再承認SHA、一件のdry-run・適用、最終のFinal324=1/Draft324=2を記録します。C-01はAPPLIED、C-02はPROTECTED、C-03はPENDINGです。
すべてのカードを閉じることが完了ではありません。今回の許可で閉じてよいC-01だけを閉じ、引用と新着候補をそれぞれの理由で開いておくことが結論です。次の担当者はC-03だけを新しい判断として読み始められます。承認を時点とSHAに結ぶと、検索後から実行までに変わった原稿を、古い了解で書き換えずに済みます。