# task-2970 · [T2] InsuRo 신규설계 비교 게이트 봉인 (오비교 원천 차단, load-bearing)

## 배경 (6인 미팅 5사이클 결정 · 배선 前 필수 선행)
- 신규설계 비교의 오비교를 막는 **유일한 정정(correctness) 단계**. 이게 봉인되기 전엔 clause_id/axes 배선(T6)을 하면 안 됨(무검증 CONFIRMED 오비교로 뒤집힘).
- 현재 결함(코드 근거):
  - `server/policy_extract/grouping_bridge.py:86-98` **경로①** = clause_id 있고 `get_mapping(clause_id).status=="confirmed"`이면 **axes를 한 번도 안 보고** 즉시 confirmed 반환. axes 교차검증(경로②)은 경로①이 먼저 return해 실행조차 안 됨.
  - `server/policy_grouping/comparison_gate.py` modality 합산차단(`is_coarse_sum_blocked`)이 **group_id 기반**이라, 세분형 담보가 비-modality 그룹으로 오매핑되면 못 잡음.
  - `status`(재사용 축)와 `map_state`(공식비교 축)가 다른 축인데 재사용 경로가 status만 봄(`server/policy_grouping/knowledge.py:78·211`).
- repo `/home/jay/projects/InsuRo`, origin/main `e0a7f64`. 담당 dev2.

## ★ 게이트 봉인 = 한 세트 (셋 다)
1. **map_state==CONFIRMED 강제**: 공식비교(`comparison_gate.gate_for_official_comparison`)는 `status=="confirmed"`가 아니라 **`map_state=="CONFIRMED"`** 기준으로. status≠map_state 정합.
2. **경로① axes 교차검증 의무**(`grouping_bridge.py:86-98`): clause_id로 confirmed 재사용 전 **저장된 axes 서명 ↔ 요청 axes 교차검증 통과 필수**. 불일치/부재 시 CONFIRMED 승격 금지 → 경로②/미분류 강등. "clause_id 동일 = 동치" 가정 폐기.
3. **modality 조인금지 group_id→axes 기반 강화**: 세분형(표적/면역/중입자/양성자)이 비-modality 그룹으로 confirmed되는 오매핑을 axes(modality 축) 검사로 봉인. group_id 신뢰 이전에 적용.

## 완료 게이트 (미팅 확정)
- 공식 비교에 **CONFIRMED 외 유입 0** · **axes 미교차검증 통과 0** · **modality 기반 합산/조인 0**.
- 테스트: 세분형 담보가 주요치료비 그룹으로 잘못 confirmed된 fixture → 게이트에서 **차단**(오비교 미발생) 실증.

## 원칙
- 금소법 오비교 방어가 목적. Surgical. 정상 CONFIRMED(axes 일치) 경로는 무변경, 오연결 경로만 차단.
- confirmed-only 대원칙(comparison_gate 설계철학) 유지·강화.

## 완료 조건
- **PR** + 회귀 + 오비교 차단 테스트 + `memory/reports/task-2970.md` + `.done` + ANU 콜백. 머지 HOLD.