# PR #117 (PR-D0) MERGED — V 레코드 GET 조회 + 확장 CORS (2026-07-22)

## 결과
- **PR #117 MERGED** (squash) — mergeCommit `bf44379`, 2026-07-22 14:31 KST. origin/main tip = `bf44379`.
- 내용: Integration Phase2 **PR-D0(서버 선행)** = V 레코드 GET 조회 엔드포인트(ok-only·per-FA·화이트리스트) + 확장 origin CORS(env fail-closed 강화).
- 3 커밋 squash: `2404cb4`(task-2828 GET+CORS) + `63bdc54`+`641de4a`(task-2829 CORS env 형식검증 fail-closed).

## 머지 근거 (회장 상시 지시 "codex cc 의견 합일되면 머지 진행")
- **Codex 재정합**: 이전 CORS HOLD → task-2829 fix 후 재검토 = **"HOLD RESOLVED — agree to merge"**, 런타임 잔여 리스크 0(미세 테스트 완전성 갭만, 비차단).
- **CC(아누) 독립검증**: `chrome-extension://[a-p]{32}` + `fullmatch` fail-closed 확인, 스코프 최소(server/main.py +11/-1 + 테스트 +29), forbidden path 무변경, 회귀0.
- **CI 11/11 PASS** (ci·e2e-test·qc-check·merge-safety-check·gemini-review-gate 등), CLEAN·MERGEABLE.
- Gemini Code Assist sunset(2026-07-22) → gemini-review-gate는 static fallback PASS. 머지판정은 ANU 독립검증 + Codex 재정합으로 대체.

## 후속 (언블록됨)
- **PR-D(확장)**: FA확인·동의 UI + 후보검색 + bytes 조립(matrix·model A·storage.session·taint-guard) + V ingest
- **PR-E(웹앱)**: GET로 V 읽어 조회·재분석 + 옛 MatchDialog 안전 정리
- 이후 전 파이프라인 E2E → flag ON(회장 파일럿) → G-3. 전부 dev6 제외.

## 주의
- 로컬 `/home/jay/projects/InsuRo` main 체크아웃은 사전 존재 staged/modified 뭉치로 dirty(HEAD cc7476b, origin보다 뒤). task-2829 무관. 봇은 worktree에서 작업하므로 무영향. ff-only sync는 dirty 정리(회장 승인) 후 가능. canonical = origin/main.
- 단일소스 설계: workspace/memory/plans/insuro-composite-design/integration-design-260721.md
