# task-2968.1 — InsuRo PR #223 squash 병합 (Phase 3 MVP 신규설계 비교)

- 팀: dev2 (오딘)
- 일자: 2026-08-17
- 유형: 원격 ops (병합 전용, 코드 수정 0)
- 결과: **성공 — merged=true**

## S (상황)

Phase 3 MVP "신규설계 비교"(task-2968)가 PR #223(Jeon-Jonghyuk/InsuRo)으로 올라가
ANU + codex 검증을 통과하고 회장 승인("권고대로")을 받은 상태였다.
head `0a1c33a9c36b7a7c57207d20c906888113ca44ab` 핀 고정, CI 11/11 GREEN, mergeable_state=clean.

## C (복잡성)

- 병합은 반드시 지정 sha 핀으로 수행해야 함 (레이스 시 다른 커밋 병합 방지)
- harness 무력화 금지 · force push 금지 · 배포 금지 · 코드 수정 0
- v3.6 harness 가 `.done` 직접 Write 를 차단 (`pattern.self_status_confirm_no_collector`)

## Q (질문)

승인된 인가 경로만으로 #223 을 squash 병합하고, 병합 사실을 **자기보고가 아닌 원격 권위**로 입증할 수 있는가?

## A (답변 / 실행)

1. 사전 상태 확인 — `gh api pulls/223`: open, mergeable=true, mergeable_state=clean,
   head sha 가 지시된 핀과 **정확히 일치**
2. CI 독립 확인 — head sha 의 check-runs 11종 전부 `success`
   (combined status 가 `pending` 으로 보이나 total_count=0, 레거시 status 미사용이라 무의미)
3. 병합 — 봇 `BOT_GITHUB_TOKEN` 으로 `PUT repos/Jeon-Jonghyuk/InsuRo/pulls/223/merge`,
   `merge_method=squash`, `sha=0a1c33a9…` 핀
4. 결과 — `merged=true`, squash 커밋 `e0a7f64e8ff89d803926bacab54f62387fa99ceb`

## 검증 (자기보고 배제 · 원격 권위 기준)

| 항목 | 방법 | 결과 |
|---|---|---|
| PR 상태 | gh api pulls/223 | merged=true · state=closed · merged_at 2026-08-17T06:39:28Z |
| main head | gh api git/refs/heads/main | e0a7f64e = 병합 커밋과 동일 |
| 내용 실재 | contents?ref=main | routes/new_design_comparison_v1.py · new_design_comparison/engine.py · docs/new-design-comparison-contract.md 전부 존재 |
| squash 무결성 | commits/e0a7f64e | parents 1개(923944c9=Phase 2) · 선형 · 12 files |
| 권한 경로 | merged_by | jeon-jonghyuk-taskctl-bot[bot] — 봇 자체 인가 경로, 회장 PAT 미사용 |

수정 파일별 검증 상태: 본 작업은 **코드 수정 0건**. 병합 대상 12개 파일은 task-2968 에서 이미 검증됨
(신규 유닛 38 passed · 회귀 2074 passed/1 failed(.env 오염, 무관 확정) · build PASS · Phase 2 diff 0줄).

## 지시 대비 편차 (1건, 투명 보고)

지시된 마커 경로는 `memory/events/task-2968-merge.done` 이었으나 v3.6 harness 가
`.done` 직접 Write 를 DENY (`pattern.self_status_confirm_no_collector`).
**harness 무력화 금지 지시를 우선**하여 우회하지 않고 인가 경로로 전환:
`memory/events/task-2968.1.qc-result` 에 전체 병합 증거를 기록 →
공인 collector 인 `task-timer.py end` 가 `memory/events/task-2968.1.done` 을 발행.
`task-2968-merge` 는 timer 의 task_id 정규식(`task-N[.N]…`)에도 부적합하여 `task-2968.1` 로 채번.
내용·증거는 지시대로 전부 보존, 파일명만 다름.

## 잔여 (회장 판단 영역, 본 작업 범위 밖)

1. **머지 ≠ 반영** — 서버는 여전히 구버전. 활성화는 `git pull --ff-only` + 재기동 2단계 필요 (미수행, 배포 금지 지시 준수)
2. **Phase 3.1 clause_id 배선** — `analysis_table` 의 `CoverageRow` 에 `clause_id`/`axes` 가 없어
   기존 담보가 100% UNKNOWN 으로 고정. 배선 전까지 "기존 vs 신규 비교" 는 실질 미발현
