# task-2976 · [T3-G1] 게이트 강화 ①: axis_signature에 갱신형(renewal) 축 편입 + signature 마이그레이션

## 배경 (T3 3사이클 미팅 확정 — 회장 승인 2026-08-18)
- 미팅 단일소스: `memory/meetings/2026-08-18-insuro-t3-batch-decision.md`. T3 재구성 순서 A→**G**→C→B→D. G는 C(화면 비교)의 **안전 선행조건**.
- ★레드팀(로키)·QC(마아트) 확증한 **라이브 구멍**: `axis_signature()`가 `renewal`(갱신형 여부)을 서명에서 **제외** → **갱신형 암진단비 vs 비갱신형 암진단비가 같은 시그니처** → 교차검증(`grouping_bridge._axes_cross_verify`) 통과 → 보험료 구조가 다른 담보가 동일 담보로 오비교(금소법 P0). 지금 `LEARNED_RULE` 자동전이가 이미 열려 있음.
- repo `/home/jay/projects/InsuRo`, origin/main `d46bba8`. 담당 dev2(comparison_gate·게이트봉인 t2970/2973/2974 맥락 보유). 서버=user systemd `insuro-api`. Supabase INSURO_NEW(prod).

## 현 상태 (실측 근거)
- `server/policy_grouping/axes.py:115-125` `axis_signature()` = 6축+hospital_condition+modality만 직렬화. `renewal: bool`(axes.py 부근)은 필드로 존재하나 **서명에서 탈락**.
- `axis_signature`는 (1) `grouping_rule.axis_signature` **UNIQUE 키**(knowledge.py:282 부근) (2) `grouping_bridge` 교차검증 키(grouping_bridge.py:122 부근). ★즉 서명 변경 = 학습룰 테이블 키 스키마 변경.
- 로키 H1: `renewal`이 provenance 없는 맨-bool → 서명에 넣어도 자기신고. **10년갱신/20년갱신/재가입형이 renewal=True로 동일** → 붕괴 잔존.

## 작업 (G-1 한정 — content-hash는 별도 후속 G-2)
1. **renewal을 boolean → 갱신구조 축으로 승격**: 갱신주기/재가입형 등을 구분하는 축 값(enum)으로. 다른 6축과 동일하게 **provenance 결속**(자기신고 방지, 근거 조항 인용).
2. **axis_signature에 renewal 축 편입**: 갱신형↔비갱신형이 서로 다른 시그니처가 되도록.
3. ★**signature 마이그레이션(필수)**: 서명 변경은 `grouping_rule.axis_signature` UNIQUE 키를 전부 바꿈 → 기존 학습룰 orphan·기존 CONFIRMED 재사용 mismatch 위험. **backfill 스크립트 또는 signature_version 필드** 도입으로 기존 행 안전 전이. 시드(confirmed 10건) 재사용이 깨지지 않음을 실측.

## 원칙
- Surgical. 정상 경로 무변경, 갱신형 판별만 추가. 금소법 오비교 방어.
- ★기존 게이트 봉인(t2970 3구멍·t2974 6갭) 회귀 금지 — 기존 테스트 GREEN 유지.

## 완료 조건 (미팅 판정 — 자기보고 환각 배제)
- **PR** + ★**구멍 재현 회귀테스트가 원격/CI에 실재**(로컬 GREEN 불인정 — t2970 교훈): 갱신형 entry vs 비갱신형 confirmed → **다른 시그니처로 교차검증 실패 → 오비교 차단** assert(red→green). 대조군(같은 갱신형)은 정상 매칭 유지.
- signature 마이그레이션 실측: 기존 confirmed 10건·학습룰이 backfill 후 **재사용 정상**(orphan 0) DB 조회.
- 기존 회귀(t2970/t2973/t2974) + 전체 pytest GREEN. L1 실서버(별도포트) 정상.
- `memory/reports/task-2976.md` + `.done` + ANU 콜백. **머지 HOLD**(ANU 독립검증 후). CI_WATCH_HANDOFF 생성.
- ⚠️ 이 PR 머지·배포가 C(화면 비교)의 선행. G-1 GREEN 확인 후에만 G-2(content-hash)·C 진행.