exists()` 가드 동반 * - **V-1 안전**: 로컬 SQL/Eloquent 만 사용, `app(*Service|*Manager|*Repository::class)` 금지 * - **버전 격리**: 다른 버전 namespace 의 클래스 참조 금지 * * 인스턴스화: `new {Kind}Applier($absoluteJsonPath)`. * 생성자는 delta JSON 파일의 절대 경로를 받아 `apply()` 시 read 한다. * * 상세: docs/extension/upgrade-step-guide.md §12 */ interface SnapshotApplier { /** * delta JSON 을 read 하여 DB 에 적용. * * @param UpgradeContext $context 업그레이드 컨텍스트 (로거, 현재 스텝 버전 등) * @return void * * @throws \Throwable 적용 실패 시 — runUpgradeSteps 가 상위에서 백업 복원 처리 */ public function apply(UpgradeContext $context): void; }