# Agent 미팅: InsuRo 복합설계에 정규 RP(상담대본) 지원 기능 추가

**날짜**: 2026-07-26
**소집 이유**: 회장님이 한국파이낸셜에듀 정규 RP(1~6차) 대본대로 첫 대면 고객 상담을 시작하려 함. 이 RP 흐름(단일담보 극적비교→전담보→2사→3사→보장분석유도→클로징)을 InsuRo 복합설계 계산기가 지원하려면 무엇을 추가해야 하는지 논의.
**참여 페르소나**: 미미르(UX/IA), 불칸(백엔드), 이리스(프론트), 로키(레드팀/컴플라이언스·필수), 헤르메스(실행), 아테나(유저플로우), 오딘(아키텍처)
**미팅 모드**: hybrid (C1 independent → C2+ 심화)
**토론 깊이**: thorough (Lv.3-4)
**총 사이클 수**: 5

---

## Cycle 1 (independent) — 현황 대비 필요분

- **헤르메스(코드실측)**: `composite_calculator._compute_combinations`가 **이미 45(C10,2)/120(C10,3)조합 전수순회**하나 `if total<best`로 **최소 1개만 남기고 폐기**. → RANK 1~5는 계산 추가가 아니라 **폐기값 노출**만. 단일담보 MIN/MAX는 analysis_matrix에서 직접(엔진 불필요). saving_pct는 1사(최저) 대비만·MAX 없음. Python↔TS parity 계약 존재.
- **불칸**: 캡처(OHMY_PPD_V2)/DB 스키마 변경 0, matrix 서버 파생. 성능 논점 아님(sub-ms). `rank_subsets(k)` 원시함수로 일반화(기존 best를 [0]으로 재정의). MAX는 `is_complete`(전담보 커버 완전단일사) 필터 신규 필드. **바스켓 완전커버 조합만 랭킹**. 원단위 계산·표시라운딩.
- **미미르**: 계산기 아닌 "라이브 데이터 발표 레이어". 6막 선형 슬라이드. **MIN→MAX 앵커 전환**이 본질. 누적 러닝스코어. 45조합 압도-급정지 연출. 비관습=발표자/고객 뷰 분리.
- **이리스**: 별도 풀스크린 `/present` 라우트, URL기반 FSM, 색+아이콘+텍스트 3중(AA·색맹), 45CASE 가상스크롤 불필요, 신규 4-5 컴포넌트·기존 매트릭스 불변.
- **🚨로키(반대)**: RP 설득문구("절대/못한다/1%미만/2천만원 손해") 소프트웨어 하드코딩 = **금소법 부당권유·표시광고법 부당비교·보험업법 3중 저촉**. 발화주체가 FA개인→InsuRo 플랫폼으로 승격·출력물 박제가 핵심 위험. "MAX 대비 절감/20년 총차액" 자동단정=오인유발 HIGH. 권장 A안(중립 사실표시만, 설득은 SW 밖)+가드레일5+법무 사전감수.

## Cycle 2 (심화) — 컴플라이언스 vs 세일즈 화해 / DA=로키

- **미미르(화해)**: "발행 게이트(Publishing Gate)" — 모든 값 **FACT/JUDGMENT/PROJECTION 3-tag**. FACT=고객통과, JUDGMENT=FA전용·차단, PROJECTION=가정패널+기준일+참고뱃지만 통과. **고객화면 템플릿에 임의 문자열 슬롯 자체를 제거** → 단정문 물리적 봉쇄. 놀라움=대비·페이싱의 창발(카피 0). "절감"→"차이" 중립. "누적절감"→"누적 차이".
- **불칸(정직수치)**: `MeteredValue` provenance 봉투(value·display·origin·source·derivation·assumptions·confidence·**renderable 기본 false**). 소스 없으면 숫자 대신 placeholder. 동일 basket=담보코드집합+가입금액 일치만 검증가능(지급률·면책·만기는 스키마 추가필요). **미제공담보 fail-closed**(0원 취급 금지). 갱신flag 미확증이면 20년총액 렌더차단·1급값=월차액. **MAX(최악앵커) 폐기 권고 → 절대금액 병렬(B)+최저단일사(E). 회장결정 {B/B+E/B+C}**. 담보코드 교차정규화가 최대 은닉가정.
- **로키(DA)**: 발표자/고객뷰 분리는 **단말 1개면 강제불가=알리바이**(오히려 고의성 정황). 중립 사실도 배치·강조=암묵 프레이밍. 최안전=SW 설득로직 제거·팩트계산기 한정. **하드라인 3: ①동일basket 강제·근사비교 차단 ②단정금지+저가조합 리스크 대칭병기 없으면 렌더차단 ③격리 대신 fact_db 소스/기준일 불변 감사로그**.

## Cycle 3 (심화) — 로키 반박 해소 + 컴플라이언스 준수 MVP

- **아테나**: **"격리하지 말고 제거하라"** — 설득 슬롯이 0이면 숨길 층이 없어 "화면 돌리기"가 리스크→**투명성 자산(오픈키친)**. 강제 축을 "고객이 못 보게(불가)"→"해로운 게 없음 보장+불변 감사로그(가능)"로 이동 = 로키 반박 무력화. RP 1-6 감정곡선 = **고정 공개순서(단일담보→전담보→2사→3사→클로징)**가 만드는 대비 연출 + FA 구두층. 세일즈 임팩트=숙련FA·신뢰/내구성/컴플라이언스축 유지·강화, 저스킬FA 목발·공포레버 약화. RP 대본=FA **훈련모드**(라이브 밖)로 격리해 저스킬 지원 보존.
- **헤르메스**: 로키 하드라인을 각 Phase에 박음. **MVP=동일basket 실비교 팩트카드(P1-MIN)** — 담보별 사별 실보험료 절대금액 팩트 테이블+최저 단일사 1개, 조합·랭킹·추천 0. **P2(랭킹)=법무 HARD게이트라 MVP 제외**. 유일 직렬 blocker=**활성계약 식별**(법무·MAX는 renderable=false/MIN-first로 병렬). 엔진 serial 머지 1→2→3→4·P3만 병렬.

## Cycle 4 — 비관습대안 + 부채 + Temporal + 로키 최종판정

- **오딘**: 비관습대안="컴플라이언스 방패로서의 제품"(감사원장=코어 자산, 자율채택<10%지만 설계압력 순가치+, 조직 의무화 경로면 락인). **부채판정: provenance/basket/게이트는 지연이 아니라 retrofit 불가·회복불능**(provenance backfill 불가, 비-동일basket 저장은 규제증거 복리누적). → **불변식 seam 3개(MeteredValue 타입래퍼·basket_id 1급키·publish() 단일병목)는 P1 MVP 필수, 기능은 P2**. Temporal 최우선 OPEN=활성계약식별+P1 법무기준선 첫1시간 확정.
- **로키(최종판정)**: **조건부 합의 성립(CONSENT)**. 하드라인 3 구조적 충족되나 잔여구멍 3: ①basket **거짓등가**(면책·지급률 미검증) ②현저성 비대칭(리스크가 각주 boilerplate면 대칭은 이름뿐) ③설득이 **감사불가 영역(FA 구두)으로 재배치**. P2는 "랭킹"→"**사용자 주도 다축 정렬**"(default 추천 금지)로 리프레임 후 착수. **동결 문구: 「큐레이션=콘텐츠 — 비교대상의 집합·순서·default 선택도 렌더 단정문과 동일 게이트(법무+FACT) 지배」**.

## Cycle 5 (최종 합의) — 잔여 가드 해소 + 합의 확정

로키 잔여구멍 3 해소:
1. **basket 거짓등가** → 모든 비교에 **"동일 basket = 담보구성·가입금액만 일치, 면책·지급률·갱신율·지급심사 미검증" caveat를 FACT-tag로 상시 렌더**. basket_hash 동일이 총체적 등가로 안 읽히게.
2. **현저성 비대칭** → **salience parity 스펙 명문화**: 저가조합 리스크 고지가 가격/차액 숫자와 **시각적 weight 동등**(색·크기·순서). 디자인 재량 금지.
3. **설득 감사공백** → RP 대본/설득은 **라이브 화면 밖 FA 훈련·연습 모드**로만. 고객 대면 시 소프트웨어는 스크립트를 제공하지 않음(FA 구두 설득은 유자격 전문가의 기존 합법행위 = 신규 리스크 아님, 상태 그대로). 훈련모드 로깅은 선택.

→ **로키 CONSENT 3조건 충족. 합의 성립.**

---

## 최종 합의 사항

1. **소프트웨어 = 팩트 계산기, 설득 = FA 구두**. 라이브 고객화면에 설득/단정 문자열 슬롯을 **아예 두지 않는다**(물리적 봉쇄). RP 대본은 FA 훈련모드로 격리.
2. **RP 감정곡선은 "고정 공개순서(단일담보→전담보→2사→3사→클로징)"의 대비 연출로 창발**시킨다. 카피 0으로 놀라움 성립.
3. **불변식 seam 3개는 P1 MVP부터 필수**(retrofit 불가): ①`MeteredValue` 타입래퍼(value·tag·provenance·basket_ref·renderable 기본 false) ②`basket_id` 1급키 ③`publish()` 단일 병목(초기 stub 허용).
4. **MVP = 동일 basket 실비교 팩트카드**(P1-MIN): 담보별 사별 실보험료 절대금액 + 최저 단일사. 조합·랭킹·추천·"MAX 대비 절감" 0. 회장 파일럿 즉시 투입 후보.
5. **동일 basket 강제**(담보코드집합+가입금액+갱신조건 일치), cross-basket·근사비교 차단, 미제공담보 fail-closed(0원 금지).
6. **MAX 최악앵커 폐기**. 절대금액 병렬 기본, 앵커 필요시 **최저 단일사**(정직). 20년총액=갱신형이면 렌더차단·비갱신형만 "가정·기준일 명시 참고".
7. **로키 하드라인 3 + 잔여가드 3 전부 스펙 명문화**: 동일basket·리스크 대칭병기(salience parity)·불변 감사로그 + basket caveat FACT렌더·설득 라이브밖.
8. **P2 랭킹 = "사용자 주도 다축 정렬"**(default 추천 금지)로 리프레임, **법무 사전감수 HARD게이트 통과 전 렌더 0**.
9. **동결 앵커: 「큐레이션=콘텐츠」** — 비교대상의 집합·순서·default도 단정문과 동일 게이트 지배.

## 미해결 항목 (회장/법무/실사 대기)

- **[회장 결정]** MAX/앵커 정의: {B 절대금액병렬 단독 / B+E 최저단일사 / B+C 현재계약대비} 중 택. (A 최악앵커는 컴플라이언스로 테이블서 내림)
- **[회장 결정]** MVP(P1-MIN 팩트카드) 착수 여부 + 프레젠테이션 모드(P3) 범위.
- **[법무 HARD게이트]** P1 팩트카드 법무기준선(첫1시간 확정) + P2 랭킹/다축정렬 프레이밍 감수.
- **[스키마 실사 3종·병렬]** ①담보코드 1·2·3사 교차정규화(최대 은닉가정) ②갱신형 flag ③**활성계약 식별(유일 직렬 blocker)**.
- **[QC 실측]** 보험료 파생식 반올림 잔차 ≤6원 UNKNOWN, 감사로그 불변성.

## 다음 단계

1. 회장님께 미팅 결론 보고 + 상단 [회장 결정] 2건 요청(MAX 정의·MVP 착수).
2. 착수 승인 시 → 3문서(계획서/맥락노트/체크리스트) 작성(`memory/plans/insuro-rp-support/`), 동결앵커·salience parity·불변식 seam 3개 명문화.
3. 활성계약 식별(직렬 blocker) 스키마 실사 선행 → P1-MIN 위임(dev, merge_policy none, 서버 serial). 법무는 renderable=false로 병렬 감수.
