[aside] ファイル移動 refactor で `from "…"` 以外の module 参照(`vi.mock` の specifier / `import.meta.url` 相対の fixture パス / `createRequire`)が import 書き換えに拾われず、test 実行時まで silent に壊れる ── 機械ガードが無い
PR #400 の SPA 再編で、`from "./x"` import 204 本は basename→新パスの機械置換で安全に倒せた(元が単一フラットで全ファイル名ユニーク)。だが `from` でない module 結合は同じ置換に乗らず、移動後に黙って壊れた:
- `vi.mock("./auth")`(mcp.test.ts)── mock 対象が `@/features/identity/auth` に移ったのに specifier は `./auth` のまま
- `new URL("../../tests/fixtures/...", import.meta.url)`(identity 配下 6 test)── ファイルが 2 階層深くなり相対が repo-root を外す
- `createRequire(import.meta.url)`(materialize test)── 今回は bare specifier で無事だったが同類の落とし穴
いずれも typecheck では通り、`pnpm test` を回して初めて ENOENT / mock 不発で露見した(さらに fixture パスが伸びて biome line-width で 2 度目の整形も要った)。
今回触らない判断: #400 は移動が scope。検出ツールは別。
想定インパクト / トリガー: SPA のフォルダ再編は今後も続く(feed の小分け等を予定)ので、移動のたびに「import は直ったが mock / fixture パスが死ぬ」を手で踏む。直すなら (a) ts-morph 等の TS-aware codemod で `from` 以外(`vi.mock` / `import()` / `new URL(...import.meta.url)`)も追従させる、(b) せめて『ファイル移動時に確認する非 import 参照』チェックリストを dev doc に残す。根拠は friction 経験(基本 sed 置換 → test で 7 file 落ち → 個別補修の手戻り)。