# [test-only] PR-E2 e2e 정합 — 폐기된 레거시 캡처/매칭 spec 정리 + CRM V 뷰 커버리지 추가

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "tests/e2e/**"
  forbidden_paths:
    - "src/**"
    - "server/**"
    - "extension/**"
    - ".github/**"
  commands:
    - "npx playwright"
    - "npx tsc"
    - "git"
  merge_policy: "none"
  ttl_hours: 8
```
> ★ **e2e 테스트 파일만 — 앱/소스 변경 절대 0.** 브랜치 **`task/task-2843-dev2`**(PR #122)에 이어서 커밋(새 PR 금지).

## 배경 (Codex 조율 확정 — REGRESSION 아님)
PR-E2가 `CompositeDesign`/`CrmCustomers` 를 **경로 V(상담이력 조회)로 의도적 재배선**(아키텍처 X: 매칭=확장, 웹앱=V 조회. 회장 확정: "옛 웹앱 자유 교체"). 레거시 인-웹앱 캡처/매칭 UI(`CustomerMatchDialog`·trigger/tab_compare 카드·`ohmy-capture/{id}/link`·reassign)는 **의도적으로 미도달**. 
CI e2e-test 실패 = 기존 spec 2개가 **폐기된 레거시 흐름을 테스트**하기 때문(앱은 정상, 테스트가 낡음). Codex 시나리오별 판정: **전부 OBSOLETE**.

## 작업 (test-only)
1. **`tests/e2e/composite-design-phase3.spec.ts`**: 시나리오 1~4 전부 폐기된 레거시(캡처 자동매칭 dialog·link·reassign) → **해당 시나리오 제거**. 파일의 모든 test 가 obsolete 면 **파일 삭제**(git rm). (레거시 캡처/매칭은 확장이 담당 — 웹앱 미탑재.)
2. **`tests/e2e/composite-design-phase5-tab.spec.ts`**: 시나리오 5~7(tab_compare amber 카드·trigger/tab_compare 분리) 전부 레거시 카드 렌더링 → **제거**, 파일 전부 obsolete 면 **파일 삭제**.
3. **신규 `tests/e2e/crm-customers-vpath.spec.ts`**(커버리지 갭 보전): `CrmCustomers` 의 **V 상담이력 조회** E2E. `composite-design-vpath.spec.ts` 의 mock 패턴(Supabase localStorage 세션 주입 + context.route + page.route 절대 URL mock) 재사용해:
   - **flag ON(200)**: `GET /api/insuro/consultation-history/v1?reference_id=<customer.id>` mock → 그 고객 상담이력이 "상담이력" 다이얼로그(ConsultationHistoryView)로 렌더. legacy reassign/link POST 0회.
   - **flag OFF(403)**: 같은 라우트 403 → "상담이력 기능이 준비 중입니다." 안내 렌더.
4. **`tests/e2e/composite-design-vpath.spec.ts` 는 그대로 유지**(수정 금지).
5. dual-source 복귀·소스 revert **절대 금지**(앱 변경 0).

## 검증
- `npx tsc` 클린(e2e 포함).
- **전체 e2e 통과**: `npx playwright test tests/e2e/` → 실패 0(폐기 spec 제거·신규 CRM spec 통과·vpath 통과·keyword spec 회귀 0). 특히 composite-design-vpath + crm-customers-vpath PASS.
- 삭제한 파일이 다른 곳에서 import/참조 안 되는지 확인(0).

## 완료 (★ 순서 B 종결 규약 — 좀비 방지)
- 변경 = `tests/e2e/**` 만 (`git diff --stat` — src/·server/·extension/ 등장 시 실패).
- **dev6 금지** — dev2(브랜치 소유).
- ★★ **종결 순서 B**: 코드 커밋 → **push** → `finish-task.sh` 를 **foreground 1회** 실행 → `.done` 생성되면 **즉시 세션 종료**. ⚠️ **finish-task 를 background 로 돌리고 terminal-marker/ANU-callback 완료를 기다리지 마라**(3시간 좀비 원인). push + .done 이면 끝 — ANU 가 원격서 독립검증·머지한다.
- ANU callback 은 fire-and-exit(있으면 좋고, 없어도 ANU 가 .done 폴링). **봇이 callback 완료를 wait 하지 마라.**

## goal_assertions (auto-generated)
- `npx tsc`
- `npx playwright test tests/e2e/`
