# Agent 미팅: InsuRo PR-E 완결 후 파일럿 롤아웃 다음작업 확정

**날짜**: 2026-07-23
**소집 이유**: InsuRo 복합설계+CRM 연동 코드 전체 main 머지 완료(PR #120~#122). 파일럿 롤아웃 다음작업 확정 필요. 회장 지시=Codex CC 포함.
**참여**: Codex CC(외부 반증), 야누스(DevOps), 헤임달(보안QA), 로키(레드팀 — 세션종료로 미완, Codex 반증이 커버)
**미팅 모드**: hybrid (1라운드 independent)
**토론 깊이**: thorough (Lv.4)
**총 사이클**: 1 (강한 수렴으로 조기 합의)

---

## Cycle 1

### 아누 분석 (근거: origin/main 실측)
- V 엔드포인트 3개(ingest/list/detail) 전부 `_require_feature_enabled`+`_require_pilot_allowlisted` 강제(consultation_history_v1.py:288-289,502-503,549-550) → 라우트 계층 flag+allowlist 안전.

### 페르소나 의견
**Codex CC**: (a) 확장 `ingest.js:25` `INSURO_CONSULTATION_HISTORY_V1_ENABLED=false` 하드코딩 → 파일럿 세션 서버레코드 0 (실증 확인). (b) `013_...sql:102-112` RLS SELECT/INSERT 가 `auth.uid()=fa_account_id`로만 → flag/allowlist 우회 가능(실증 확인). (c) 전 파이프라인 진짜-E2E 불가→레이어 분할. (d) G-3 → flag-on 순서.
**야누스(DevOps)**: flag ON=`.env`(V1_ENABLED=true+ALLOWLIST=회장 fa_account_id)+`systemctl --user restart insuro-api.service`(≈5초, 무중단X). fa_account_id=profiles.id 실조회 필요. 확장=언팩드 로드, JWT 자동주입. kill-switch=flag=false+restart. **최대 리스크: 라우팅 정합성** — 웹앱 base :10000→:3000(dead), flag서버 uvicorn:8001, 확장 insuro.biz. 셋이 같은 uvicorn 에 닿는지 미검증.
**헤임달(보안QA)**: E2E=3계층 격리 suite(확장 vitest/서버 pytest/웹앱 Playwright). G-3 6항목 중 5개 기존 완비(consent·멱등·IDOR·taint·allowlist·계정전환, mutation 대조군까지). **최대 갭=접합부 계약 테스트 부재**(확장 조립 bytes↔서버 파서). 신규 3종: ①크로스레이어 계약테스트(골든fixture, 최우선·"없으면 파일럿 금지") ②서버 PII 로그 sink-spy ③수동 파일럿 스모크 1왕복.

### Devil's Advocate (Codex 반증이 대행 — 로키 세션종료)
- 실패 시나리오: 첫 파일럿에서 확장 하드코딩 flag OFF → "저장됨" UX만 뜨고 서버 0건(silent). RLS 우회로 allowlist 무의미화 가능.
- **판정**: Codex 반증 수용. 계획 "flag만 켜면 됨"은 부적합. blocker 선행 필요.

### 합의/결론
파일럿 = flag 토글이 아님. **blocker 5개 + G-3 게이트 선행 → 그 다음 flag ON.**

---

## 최종 합의 사항
1. **파일럿 blocker 5개** (flag-on 前 필수):
   - B1 확장 ingest flag 하드코딩 OFF → 설정가능화(기본 OFF, 파일럿 빌드만 ON). [실증확인]
   - B2 크로스레이어 계약 테스트(확장 bytes↔서버 파서 골든fixture) — "없으면 파일럿 금지". [착수: task-2845]
   - B3 Supabase RLS 직접 우회경로 차단(라우트-only 강제). [실증확인]
   - B4 라우팅 정합성: 웹앱/확장→flag서버(uvicorn:8001) 동일 인스턴스 도달 검증(base URL·CF터널·funnel).
   - B5 회장 fa_account_id(profiles.id) 실조회.
2. **G-3 게이트**: 기존 6항목 중 5 완비 + 신규 3종(B2 계약테스트·서버 PII 로그 sink-spy·수동 스모크 1왕복).
3. **순서**: blocker 해결+G-3 GREEN → flag ON(회장 파일럿, ALLOWLIST=회장 단독) → 수동 스모크 → 확대는 별도 승인.
4. **kill-switch**: `.env` flag=false + restart(≈5초, fail-closed).

## 미해결 항목
- B4 라우팅 실측(ANU 직접 조사), B5 fa_account_id 실값(ANU DB 조회), 로키 레드팀 관점 보강(선택).
- flag-on 최종 go = 회장 결정.

## 다음 단계
- task-2845(B2 계약테스트) 착수 완료. 이후 B4/B5 ANU 직접 조사 → B1/B3 순차 발주 → G-3 GREEN → 회장 flag-on 결정.
