テクノロジー · 実用ガイド
npm ERESOLVE?force の前に peer dependency contract を証明
lockfile と error graph を保存し、要求元の peer edge と version range を特定して、bypass なしの clean install で証明します。

ERESOLVE は dependency graph の判定であり cache 破損の証明ではありません。selected version、requester、満たせない peer range を読み取ります。
manifests、lockfile、report を保存し、demanding edge を再構築して最小 contract を修正し、npm ci、tree、build、tests を終了条件にします。
tree 変更前に evidence を固定
package.json、lockfile、workspace manifests、.npmrc、Node/npm versions、ERESOLVE report、command を保存します。先に lockfile を消しません。
While resolving、Found、Could not resolve から project、selected version、requester、peer range を ledger に写します。
requester edge と range を証明
npm explain、npm ls、npm view peerDependencies --json で installed edge と registry contract を分けて記録します。
root range、peer range、selected version、overrides を比較します。intersection が空なら compatible release、空でなければ lockfile、workspace、links、npm version を調べます。
contract を直し error を隠さない
compatible release、coordinated upgrade、documented override の最小 diff を選び、manifest と lockfile を一緒に commit します。
legacy-peer-deps は peers を無視する isolated diagnostic に限ります。結果が変わっても compatibility proof ではなく、force はさらに広い bypass です。
real conflict と resolver を分離
同じ Node、npm、.npmrc、registry の temporary clone で再現します。npm ci は lockfile を書き換えないので failure も evidence です。
ranges が一致して一つの npm release だけ失敗するなら graph を縮小し adjacent versions と比較します。最初から bug と決めません。
再現可能な exit proof を要求
fresh checkout の npm ci が bypass なしで通り、tree、diff、build、tests が全て説明できて初めて完了です。
legacy policy を残すなら .npmrc に明示し ignored contract と integration tests を保存します。これは controlled exception です。
