# task-2788+3 — A-0 빌드에서 레거시 실서버 전송 경로 차단 (라이브 실행 전 마지막)

## 레벨
Lv.2. **same-branch `task/task-2788-dev5` 계속 커밋. PR·merge·배포 금지.**

## 단일 소스
`memory/specs/ohmy_product_premium_data_contract_v1_260718.md` + `memory/tasks/task-2788+2.md`

## 배경 (Codex 발견 → ANU 정밀 검증)
+2 완료·ANU 독립검증 완료(35파일 **515 PASS**, T1/T2/T3 실재). 회장께 A-0 확장을 전달하려고 패키징을 검토하다 **레거시 경로 동거**를 발견:
- **⚠️ 실위험**: 레거시 "📊 InsuRo로 분석" 버튼 → `OHMY_MATRIX_CAPTURED`(content.js:231/291) → background.js:56-63 `fetch(\`${base}/api/insuro/ohmy-capture\`, {method:"POST"})` → **실서버로 실고객 데이터 POST**.
  회장이 A-0 버튼 대신 이 버튼을 **잘못 누르면 불변식("서버 전송 0")이 깨진다.** 인적 통제("누르지 마세요")에 의존 불가.
- **✓ 안전(확인됨)**: `processQueue()` 자동 알람은 이미 폐기 처리 — 잔존 큐를 **전송하지 않고 폐기 로그만 남기고 비움**(background.js). **네트워크 전송 0**.

## 목적 (단 하나)
**A-0 라이브 실행용 확장에서 실서버 전송 경로를 구조적으로 제거**한다. A-0 경로(`DIRECT_FETCH_SPIKE_RUN`)는 **그대로 유지**.

## ★ 불변식
- A-0 경로(content.js 버튼 → background `DIRECT_FETCH_SPIKE_RUN` → ohmymanager 직접조회) **동작 유지**.
- +1/+2 보안가드(S1~S5, T1~T3) **무력화 금지**.
- 토큰 저장/캐시/로깅 0 · MAIN world 인터셉터 추가 금지 · inject.js 미수정 · PR/merge/배포 금지.

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "extension/content.js"
    - "extension/background.js"
    - "extension/__tests__/direct_fetch_spike.test.ts"
    - "memory/reports/task-2788+3.md"
  forbidden_paths: ["src/**","server/**","supabase/**","**/migrations/**",".github/**",".env*","extension/inject.js","extension/manifest.json"]
  new_file_limit: 0
  commands: ["git","npm","node","npx"]
  merge_policy: "none"
  ttl_hours: 5
```

## 수정 요구 (정확히 2건)

### U1. 레거시 캡처 버튼 제거 (content.js)
ohmymanager 페이지에 **"📊 InsuRo로 분석" 레거시 버튼을 표시하지 않는다**(생성/부착 자체를 하지 않음). `OHMY_MATRIX_CAPTURED` 송신 경로도 도달 불가로.
- **A-0 버튼은 그대로 유지**(회장이 눌러야 하는 유일한 버튼).
- 관련 스크레이핑 함수 자체는 삭제하지 않아도 되나(회귀 위험), **도달 경로 0**이어야 함.

### U2. 실서버 POST 핸들러 no-op (background.js)
`OHMY_MATRIX_CAPTURED` 핸들러(background.js:122 부근)를 **no-op** 으로 바꾼다 — `fetch(\`${base}/api/insuro/ohmy-capture\`)` 가 **호출 불가**해야 함.
- 반환은 `{ ok:false, error:"A0_SPIKE_BUILD_SERVER_SEND_DISABLED" }` 형태로 명시.
- **분기(if)로 우회 가능하게 두지 말고, 전송 코드 자체에 도달 못 하게** 할 것.

## ★ 이번 범위 아님
production 이식 · query key allowlist · 화면값/session owner 대조 차단 · DOM 기반 URL 구성 · 세션전환 상태기계. **손대지 말 것.**

## 검증
- 테스트 추가: `OHMY_MATRIX_CAPTURED` 수신 시 **`fetch` 미호출** assert · `ohmy-capture` 대상 요청 0 · **A-0 경로(`DIRECT_FETCH_SPIKE_RUN`)는 정상 동작 유지** assert.
- **정적 확인**: 빌드 산출물에서 `ohmy-capture` 로의 실제 호출 경로 0 (grep 은 보조, 도달경로 기준으로 판단).
- 기존 테스트 **전부 유지**(515 기준 감소 금지). **ANU 가 `npx vitest run` 전체 독립 재실행.**

## goal_assertions
- `npx vitest run`

## STOP_REPORT 조건
레거시 버튼 제거가 A-0 버튼 동작을 깨뜨림 · manifest 수정 필요 · 기존 보안가드 완화 필요.

## 금지
A-0 경로 훼손 · 보안가드 완화 · 토큰 저장/로깅 · inject.js/manifest 수정 · PR·merge·배포 · 위 "범위 아님" 착수.

## 산출물 & 보고
1. same-branch 커밋. PR 금지.
2. 보고: diff / U1·U2 도달경로 0 근거 / A-0 경로 유지 증거 / vitest 카운트 / MATCH·GAP.
3. 봇 종료 전 ANU callback(envelope만·UTF-8 ≤3900B, collector=ANU key c119085addb0f8b7).