Files

2189 lines
73 KiB
Markdown

# Stage 1 / Stage 2 프롬프트 개선 병합 리포트
## 0. 작성 목적
이 문서는 `improvement_report_1.md`, `improvement_report_2.md`, `improvement_report_3.md`, `improvement_report_4.md`의 개선안을 중복 없이 병합한 실행 설계서이다.
병합 대상 사건은 다음 네 유형이다.
1. 물품대금 및 상호속용 영업양수인 책임: C-001, C-013
2. 성수동 대지 등기말소, 철거ㆍ인도, 부당이득반환: C-008, C-009, C-010, C-011, C-012
3. 신림동 상가 사해행위취소 및 가액배상: C-004
4. 평택시 빌라 건물인도 및 부당이득반환: C-007, C-003
이 문서의 목표는 다음 여섯 가지이다.
1. 기존 Stage 1 및 Stage 2 sub-task별 개선 작업을 sub-task 순서대로 정리한다.
2. 신설할 sub-task를 중복 없이 sub-task 순서대로 정리한다.
3. 신설할 module을 중복 없이 sub-task 순서대로 정리한다.
4. 새롭게 정의될 JSON Schema를 중복 없이 sub-task 순서대로 정리한다.
5. 평택시 빌라 사건에서 강용원이 원고로 식별되지 않아야 하는 이유를 `본건_상속우선순위.txt`의 법리에 맞게 반영한다.
6. 프롬프트 개선 작업 사이의 중복과 conflict를 제거한다.
## 1. 병합 원칙
### 1.1 중복 제거 원칙
네 리포트는 사건 유형은 다르지만 같은 구조적 문제를 반복해서 지적한다. 따라서 다음 통합 원칙을 적용한다.
1. `source_fact_ids` 중심 설계를 `claim_fact_roles` 중심 설계로 전환한다.
- `source_fact_ids`는 downstream 호환을 위한 flatten 결과로만 둔다.
- 청구권 식별과 문안 생성의 authoritative input은 `claim_fact_roles`, `legal_effect_structures`, `claim_group_context`이다.
2. 사건별 특수 구조는 모두 `legal_effect_structures`라는 상위 개념으로 통합한다.
- 금전채권: `money_claim_timeline`, `commercial_successor_liability`
- 담보부 부동산: `secured_debt_chain`, `payment_allocation_result`, `registry_row_graph`
- 사해행위취소: `actio_balance_sheet`, `preserved_claim_bundle`, `value_compensation_cap`
- 유치권ㆍ상속ㆍ인도: `succession_resolution_bundle`, `notice_lifecycle`, `lien_state_timeline`
3. atomic claim은 유지하되, 최종 drafting은 claim group을 우선한다.
- Stage 2.1 Task_B의 `identified_claims`는 1원고 x 1피고 단위를 유지한다.
- 동일 채무, 동일 목적물, 동일 손해, 동일 법률효과 전환점을 공유하는 청구는 `claim_group_id`로 묶는다.
- Stage 2.3의 `generate_description`은 group context가 있으면 group-level 문안을 우선한다.
4. `proof_strength`와 `legal_centrality`를 분리한다.
- 상담문서 기반 fact라도 청구취지 범위, 기산일, 원고적격, 항변 반박에 필수이면 `legal_centrality=critical`로 표시한다.
- Stage 2는 `legal_centrality=critical`인 fact를 증거 강도가 낮다는 이유만으로 탈락시킬 수 없다.
5. 의뢰인의 요구와 법률상 지속 가능한 청구를 분리한다.
- 예: 평택시 빌라 통지서에는 2022년 10월부터 사용수익을 요구하는 표현이 있으나, 유치권 소멸청구의 도달일이 2024. 9. 1.이면 법률상 기산일은 2024. 9. 1.로 검토되어야 한다.
- `client_requested_relief`와 `legally_sustainable_relief`를 별도 필드로 둔다.
### 1.2 Conflict 제거 원칙
다음 conflict rule을 전 pipeline에 적용한다.
1. `claim_fact_roles`와 `source_fact_ids`가 충돌하면 `claim_fact_roles`를 우선한다.
2. `case_kind`와 `case_subtype`이 충돌하면 `case_subtype`이 module selection을 지배한다.
3. `claim_group_context`와 개별 claim description이 충돌하면 `claim_group_context`를 우선한다.
4. `module_result.relief_constraint`와 LLM 생성 문안이 충돌하면 module result를 우선한다.
5. `pre_description_validation`의 blocking error가 있으면 Stage 2.3 저장을 금지한다.
6. `client_requested_start_date`와 `legally_sustainable_start_date`가 충돌하면 후자를 청구취지 기산일로 사용하고, 전자는 청구원인상 의뢰인 주장 또는 배경으로만 표시한다.
### 1.3 평택시 빌라 사건의 상속우선순위 반영
`본건_상속우선순위.txt`에 따르면, 피상속인의 배우자와 자녀가 있는 상태에서 자녀 전부가 상속을 포기한 경우, 배우자가 단독 상속인이 된다. 이 결론은 민법 제1000조, 제1003조 및 대법원 2023. 3. 23.자 2020그42 전원합의체 결정의 법리에 따른다.
따라서 평택시 빌라 사건에서 강용원이 원고로 식별되지 않아야 하는 이유는 다음과 같이 구조화해야 한다.
1. 강용원은 망 강호연의 직계존속 후보 또는 공동 통지 발신인일 수 있다.
2. 그러나 강호연에게 배우자 양정숙이 있고, 자녀 강형수ㆍ강지수가 전부 상속포기하였으며, 그 상속포기가 수리되었다.
3. 위 법리에 따르면 자녀 전부가 상속포기한 경우 손자녀 또는 직계존속이 있더라도 배우자가 단독 상속인이 된다.
4. 그러므로 평택시 빌라의 현재 권리자는 양정숙 1인으로 resolve되어야 한다.
5. 강용원은 상담 참여자, 공동 통지 발신인, 친족관계자 또는 사실관계 설명자일 수는 있으나, 해당 부동산의 `resolved_current_right_holder` 또는 원고로 확정되어서는 안 된다.
6. Stage 2.3 청구원인에서는 `양정숙과 강용원이 공동상속인` 또는 `공유물 보존행위` 논리를 쓰면 안 된다.
이 규칙은 `상속포기_배우자단독상속_모듈.md`, `succession_resolution_bundle`, `standing_context`, `selected_operatives.plaintiff.reject_alternatives`에 모두 반영한다.
## 2. 기존 Stage 1 Sub-task별 개선 작업
### 2.1 Stage 1 Task_A: `client_goal.json`
Task_A는 `client_meeting.md`를 읽어 의뢰인의 목적, 당사자, 사건군, current control map, issue cluster를 생성한다. 개선 후 Task_A는 단순 사건 요약이 아니라 사건군별 법률효과 구조의 seed를 만들어야 한다.
#### 2.1.1 공통 개선
1. `issue_clusters[*]`에 domain profile을 추가한다.
- 금전채권 profile
- 담보부 부동산 profile
- 사해행위취소 profile
- 점유ㆍ유치권ㆍ상속 profile
2. `current_control_map`을 4축으로 분해한다.
- `current_right_holder_candidate`
- `current_possessor`
- `current_user`
- `current_benefit_holder`
3. 원고 후보와 원고적격 확정자를 분리한다.
- `candidate_plaintiffs`: 의뢰인, 가족, 공동 통지 발신인 등 넓은 후보
- `legal_entitlement_candidates`: 실체법상 권리자 후보
- `resolved_current_right_holder`: Stage 1 후속 구조에서 확정될 권리자
4. `client_requested_relief`와 `legal_sustainability_watchpoints`를 분리한다.
- 당사자가 원하는 청구 기간이나 금액을 그대로 법률상 청구취지에 쓰지 않는다.
- 법률상 기산일, 원고적격, 청구범위 검토 필요성을 watchpoint로 남긴다.
#### 2.1.2 금전채권 및 상호속용 사건 개선
`issue_clusters[*]`에 다음 정보를 추가한다.
1. `monetary_claim_profile`
- 원채권 종류
- 원금
- 원채무자 후보
- 이행기, 최고, 채무승인, 시효 쟁점 예상 여부
- `requires_money_claim_timeline`
2. `liability_group_hint`
- 동일 채무에 대해 복수 피고가 책임질 가능성
- 원채무자와 승계ㆍ보증ㆍ영업양수인 책임자의 역할 구분
- 공동 또는 부진정연대 문안 필요성
3. `commercial_successor_liability_hint`
- 영업양도
- 상호 계속 사용
- 영업명
- 양도인ㆍ양수인
- 상법 제42조 검토 필요성
#### 2.1.3 담보부 부동산 및 성수동 사건 개선
`issue_clusters[*]`에 다음 정보를 추가한다.
1. `secured_property_dispute_profile`
- 복수 피담보채무 존재 여부
- 변제충당 필요성
- 지분별 유효ㆍ무효 분석 필요성
- 경매 또는 등기무효 예상 여부
2. `fractional_title_issue_hint`
- 원고 주장 지분
- 피고 측 유효 가능 지분
- 전체 부동산 말소 금지 flag
3. `land_use_gain_hint`
- 미등기 건물 존재
- 원시취득자 후보
- 사실상 처분권자 후보
- 부당이득 책임 중첩 가능성
4. `lease_payment_semantics_hint`
- 임대차보증금을 토지소유자의 부당이득 원금으로 자동 산정하지 말 것
- 피고들 사이의 월 차임과 객관적 토지 사용이익을 구분할 것
#### 2.1.4 사해행위취소 사건 개선
`issue_clusters[*]`에 다음 정보를 추가한다.
1. `actio_property_transfer_profile`
- 채무자
- 채권자
- 수익자
- 사해행위 목적물
- 사해행위 일자
- 부담 있는 부동산인지 여부
- 가액배상 검토 필요성
2. `preserved_claim_bundle_hint`
- 동일 채권자ㆍ채무자 사이 복수 채권
- 각 대여금의 원금, 변제기, 담보 목적물, 청구 내 역할
3. `value_compensation_hint`
- 사후 말소된 담보권 존재 여부
- 말소를 유발한 변제액
- 가액배상 한도 산정 필요성
4. `defense_hints`
- 명의신탁
- 충분 담보
- 상계
- 선의
- Stage 2 청구원인에 반영할 항변인지 여부
#### 2.1.5 평택시 빌라 유치권ㆍ상속 사건 개선
`issue_clusters[*]`에 다음 정보를 추가한다.
1. `legal_entitlement_candidates`
- 양정숙: 배우자 및 단독상속 후보
- 강용원: 직계존속ㆍ공동 통지 발신인이지만 원고적격 약한 후보
2. `succession_resolution_needed=true`
3. `notice_lifecycle_hints`
- 유치권 소멸청구
- 발송일 2024. 8. 29.
- 도달일 2024. 9. 1.
- 수령자 박광윤
4. `possession_basis_asserted="유치권"`
5. `legal_sustainability_watchpoints`
- 부당이득 기산일은 소유권 취득일이 아니라 유치권 소멸청구 도달일일 수 있음
- 유치권자의 제3자 임대가 민법 제324조 제2항 위반인지 검토 필요
- 후소유자 또는 상속인의 유치권 소멸청구권 부정 항변 검토 필요
#### 2.1.6 Task_A validation
Task_A 완료 전 다음 validation을 수행한다.
1. 금전채권 cluster에 최고ㆍ채무승인ㆍ시효 단서가 있는데 `requires_money_claim_timeline`이 없으면 warning
2. 영업양도ㆍ상호속용 단서가 있는데 `commercial_successor_liability_hint`가 없으면 warning
3. 대여금ㆍ근저당권ㆍ경매ㆍ지분이 같은 cluster에 있는데 `requires_payment_allocation`이 없으면 warning
4. 사해행위취소ㆍ부담부 부동산ㆍ사후 담보권 말소 단서가 있는데 `requires_value_compensation_review`가 false이면 error
5. 상속이 개입되는데 `succession_resolution_needed`가 없으면 warning
6. 평택시 빌라 cluster에서 강용원이 `preferred_plaintiffs_for_complaint`로 확정되면 error
### 2.2 Stage 1 Task_B1: `evidence_indexed.json`
Task_B1은 `evidence_all.json`과 `client_meeting.md`를 사용하여 증거문서를 authority catalog로 구조화한다. 개선 후 Task_B1은 문서별 `key_facts` 요약을 넘어 법률효과 계산에 필요한 component를 추출해야 한다.
#### 2.2.1 공통 개선
1. 문서가 여러 법률효과를 담고 있으면 component 단위로 분해한다.
2. 등기부, 감정평가서, 차용증, 이행각서, 통지서, 답변서, 별지목록은 단순 요약 금지 문서군으로 지정한다.
3. 날짜는 작성일, 발송일, 도달일, 법률효과 발생일, 변제기, 기산일 후보로 의미별 분리한다.
4. 금액은 원금, 이자, 보증금, 차임, 사용이익, 채권최고액, 실제 변제액, 가액배상 공제액으로 성격별 분리한다.
#### 2.2.2 금전채권 문서 component
추가할 component:
1. `claim_document_components`
- 이행각서
- 채무승인서
- 최고서
- 내용증명
- 지급요구서
- 변제약정서
2. `business_transfer_components`
- 영업양도일
- 양도인ㆍ양수인
- 영업명
- 상호 계속 사용 여부
- 영업자산 이전
- 고객ㆍ직원 승계
- 채무불승계 조항
- 책임배제 등기 여부
#### 2.2.3 담보부 부동산 component
추가할 component:
1. `registry_row_components`
- 등기부 row별 갑구ㆍ을구
- 접수일
- 접수번호
- 원인
- 권리자
- 채무자
- 채권최고액
- 목적물 범위
2. `secured_debt_components`
- 대여일
- 원금
- 이율
- 변제기
- 담보 지분
- 연결 등기 row
3. `valuation_rows`
- 감정평가 row별 조건
- 건물 있음ㆍ없음
- 보증금 있음ㆍ없음
- 월 차임
- 법률상 사용 가능성
4. `mixed_contract_payment_semantics`
- 임대차보증금
- 월 차임
- 건물 매매대금
- 각 금원의 부당이득 산입 가능성
#### 2.2.4 사해행위취소 component
추가할 component:
1. `loan_components`
- 복수 차용증 분리
- 원금, 이율, 변제기, 담보 목적물
- 피보전채권 내 역할
- 사후 말소 담보권 여부
- 담보부족 항변 반박 역할
2. `valuation_matrix`
- 사해행위 당시 가치
- 변론종결시 또는 현재가치 proxy
- 포천시 임야 등 collateral insufficiency 산정용 가치
3. `registry_row_role_map`
- 사해행위 목적 소유권이전 row
- 선순위 부담 row
- 원고 근저당권 row
- 사후 말소 row
4. `defense_assertions`
- 명의신탁
- 충분 담보
- 상계
- 선의
#### 2.2.5 유치권ㆍ상속ㆍ통지 component
추가할 component:
1. `admission_components`
- 통지 수령 인정
- 제3자 임대 자인
- 월 차임 자인
2. `defense_components`
- 유치권자 사용 허용 주장
- 후소유자 소멸청구권 부정 주장
- 피담보채권 충당 주장
3. `notice_components`
- 통지 유형
- 발송일
- 도달 필요 여부
- 수령자
- 목적물
- 법률효과 후보
4. `party_assertion_components`
- 당사자가 요구한 기간 또는 금액
- 법률상 기산일로 자동 사용 금지 사유
5. `schedule_items`
- 별지목록 항목 번호
- 청구취지에서 사용 가능한 문구
- asset alias
- 전유부분, 대지권, 도로명주소
6. `registry_object_display`
- 등기부상 목적물 특정
- 별지목록과 조인 가능한 asset id
7. `succession_document_components`
- 피상속인
- 사망일
- 배우자 후보
- 직계비속 후보
- 직계존속 후보
- 상속포기자
- 상속포기 신고일ㆍ수리일
- 연결 asset
#### 2.2.6 Task_B1 validation
1. claim document인데 `claim_document_components`가 없으면 warning
2. 이행각서에 새 변제기가 있는데 `new_due_date`가 없으면 warning
3. 최고서에 도달 단서가 있는데 `arrival_date`가 없으면 warning
4. 등기부에 접수번호가 있는데 `registry_row_components`가 없으면 error
5. 감정표에 복수 row가 있는데 `legal_use_case`가 없으면 warning
6. 답변서에 수령 인정ㆍ항변이 있는데 `admission_components` 또는 `defense_components`가 없으면 warning
7. 별지목록에 목적물 항목이 있는데 `schedule_items`가 없으면 error
8. E-005/E-006 상속자료가 있는데 `succession_document_components`가 없으면 warning
### 2.3 Stage 1 Task_B2: `evidence_event_candidates.json`
Task_B2는 evidence component를 사건행위 후보로 분해한다. 개선 후 Task_B2는 raw event와 legal-effect event를 구분해야 한다.
#### 2.3.1 공통 개선
1. 하나의 문서가 복수 법률효과를 가지면 event candidate를 분리한다.
2. raw event와 derived legal-effect event를 둘 다 생성한다.
3. 발송일과 도달일은 별도 event로 만든다.
4. payment, notice, auction, lien, succession, valuation, defense assertion은 전용 event subtype을 가진다.
#### 2.3.2 필수 event subtype
금전채권:
1. `underlying_claim_arising`
2. `first_demand`
3. `demand_notice_dispatch`
4. `demand_notice_arrival`
5. `debt_acknowledgement`
6. `new_due_date`
7. `business_transfer`
8. `trade_name_continuation_candidate`
9. `commercial_successor_liability_candidate`
담보부 부동산:
1. `secured_debt_creation`
2. `mortgage_setting_by_fraction`
3. `undesignated_payment`
4. `payment_allocation_effect`
5. `mortgage_extinguishment_by_fraction`
6. `auction_application_after_extinguishment`
7. `auction_sale_and_registry_transfer`
8. `derivative_mortgage_setting_by_invalid_title_holder`
9. `unregistered_building_original_acquisition`
10. `de_facto_disposition_holder_acquisition`
11. `land_use_gain_start`
12. `liability_overlap_start`
사해행위취소:
1. `preserved_claim_arising`
2. `collateral_setting_for_preserved_claim`
3. `fraudulent_transfer`
4. `asset_value_at_fraudulent_act`
5. `asset_value_at_close_proxy`
6. `collateral_insufficiency_at_act`
7. `encumbrance_release_after_act`
8. `value_compensation_exception_trigger`
9. `value_compensation_cap_calculation_candidate`
10. `defense_assertion_title_trust`
11. `defense_assertion_sufficient_collateral`
12. `defense_assertion_setoff`
유치권ㆍ상속ㆍ통지:
1. `lien_assertion`
2. `third_party_lease_by_lien_holder`
3. `lien_violation_candidate`
4. `lien_extinction_notice_dispatch`
5. `lien_extinction_notice_receipt`
6. `lien_extinction_effect_candidate`
7. `ongoing_physical_possession`
8. `succession_renunciation_filing`
9. `succession_renunciation_acceptance`
10. `spouse_sole_succession_effect_candidate`
11. `defense_assertion_subsequent_owner_no_extinction_right`
12. `defense_assertion_benefit_applied_to_secured_claim`
#### 2.3.3 Task_B2 validation
1. claim doc에 채무승인ㆍ최고가 있는데 legal-effect event가 없으면 warning
2. business transfer 문서에 상호속용 후보 event가 없으면 warning
3. 복수 피담보채무와 변제가 있는데 `payment_allocation_effect`가 없으면 warning
4. 사후 담보권 말소 row가 있는데 `value_compensation_exception_trigger`가 없으면 error
5. 유치권 소멸 통지서와 수령 인정 답변서가 있는데 도달 event가 없으면 error
6. 상속포기 수리 event가 있는데 spouse sole succession effect 후보가 없으면 warning
### 2.4 Stage 1 Task_C: `BO.json`, `actio_case_signals.json`
Task_C는 event candidates를 법률상 의미 있는 BO로 합성한다. 개선 후 Task_C는 사해행위취소뿐 아니라 모든 사건군의 legal-effect BO와 signal을 생성해야 한다.
#### 2.4.1 공통 개선
1. BO에 `legal_effect_bo_type`을 추가한다.
2. BO는 단순 사건 묶음이 아니라 downstream claim role template을 포함한다.
3. 기존 `actio_case_signals.json`은 유지하되, 비사해행위 사건용 `legal_effect_signals.json` 또는 `non_actio_legal_effect_signals`를 추가한다.
4. 같은 사건군의 BO는 `canonical_theory_graph_seed`로 연결한다.
#### 2.4.2 생성해야 할 BO 유형
금전채권:
1. `money_claim_chain_BO`
2. `commercial_successor_liability_chain_BO`
3. `liability_group_hint_BO`
담보부 부동산:
1. `secured_debt_chain_BO`
2. `payment_allocation_and_mortgage_extinguishment_BO`
3. `auction_invalidity_BO`
4. `derivative_bank_mortgage_invalidity_BO`
5. `land_use_gain_timeline_BO`
6. `liability_overlap_BO`
사해행위취소:
1. `preserved_claim_bundle_BO`
2. `fraudulent_transfer_BO`
3. `encumbrance_timeline_BO`
4. `valuation_matrix_BO`
5. `remedy_mode_decision_BO`
6. `value_compensation_cap_BO`
7. `defense_rebuttal_matrix_BO`
8. `actio_balance_sheet_BO`
유치권ㆍ상속ㆍ통지:
1. `succession_resolution_BO`
2. `notice_lifecycle_BO`
3. `lien_state_timeline_BO`
4. `asset_alias_BO`
5. `defense_rebuttal_BO`
6. `delivery_use_gain_claim_group_BO`
#### 2.4.3 `actio_case_signals.json` 개선
사해행위취소 사건에서는 다음 field를 추가한다.
1. `requires_balance_sheet`
2. `requires_value_compensation_cap`
3. `requires_defense_rebuttal_in_stage2`
4. `detected_case_subtype`
5. `blocking_risks`
비사해행위 사건에서는 다음 파일 또는 field를 생성한다.
1. `case_liability_signals.json`
2. `secured_property_case_signals`
3. `land_use_gain_case_signals`
4. `legal_effect_signals.json`
#### 2.4.4 Task_C validation
1. money claim notice, debt acknowledgement, business transfer가 같은 cluster에 있는데 `case_liability_signals`가 없으면 warning
2. `requires_payment_allocation=true`인데 payment allocation BO가 없으면 error
3. 사해행위취소 signal high인데 `actio_balance_sheet_BO`가 없으면 error
4. 유치권 소멸청구 사건인데 `notice_lifecycle_BO` 또는 `lien_state_timeline_BO`가 없으면 error
5. 평택시 빌라 상속 사건에서 `succession_resolution_BO.resolved_current_right_holders`가 양정숙 1인이 아니면 error
### 2.5 Stage 1 Task_B3: `evidence_actio_support.json`
Task_B3는 기존 사해행위 support를 유지하되, 범용 legal-effect support로 확장해야 한다.
#### 2.5.1 기존 task 개선
1. `evidence_actio_support.json`은 사해행위취소 사건에서 계속 사용한다.
2. 각 evidence item에는 `supports_claim_roles`를 반드시 추가한다.
3. 큰 tag인 `원고채권`, `사해행위목적물`만 쓰지 말고 가액배상 계산 role까지 분해한다.
#### 2.5.2 병렬 support 산출물
신설 Task_B4가 도입되기 전까지 Task_B3에서 additive하게 생성할 수 있는 support:
1. `evidence_money_claim_support.json`
2. `evidence_commercial_successor_support.json`
3. `evidence_secured_property_support.json`
4. `evidence_registry_invalidity_support.json`
5. `evidence_land_use_gain_support.json`
6. `evidence_valuation_support.json`
7. `evidence_legal_effect_support.json`
#### 2.5.3 Task_B3 validation
1. 가액배상 사건에서 valuation, released encumbrance, senior encumbrance 중 하나가 빠지면 error
2. 등기말소 사건에서 registry row support가 없으면 warning
3. 부당이득 사건에서 valuation support가 없으면 warning
4. 유치권 소멸 사건에서 notice receipt support가 없으면 error
### 2.6 Stage 1 Task_D1: `Fact_Ledger_base.json`
Task_D1은 BO와 evidence component를 fact ledger로 투영한다. 개선 후 Fact Ledger는 legal effect role과 linked structure를 보존해야 한다.
#### 2.6.1 공통 개선
각 fact에 다음 field를 허용한다.
1. `legal_centrality`
2. `proof_strength`
3. `legal_effect_roles`
4. `claim_chain_ref`
5. `linked_structures`
6. `must_not_drop_in_claim_types`
7. `must_consider`
8. `derived_fact`
9. `state_context`
#### 2.6.2 금전채권 fact 개선
추가 field:
1. `money_claim_effect`
2. `commercial_successor_effect`
3. `claim_chain_ref.money_claim_chain_id`
4. `claim_chain_ref.commercial_successor_chain_id`
5. `claim_chain_ref.liability_group_id`
#### 2.6.3 담보부 부동산 fact 개선
추가 field:
1. `legal_effect_roles`
- `payment_allocation_trigger`
- `secured_debt_extinguishment_basis`
- `registry_invalidity_basis`
- `land_use_gain_start`
- `liability_overlap_basis`
2. `linked_structures`
- `secured_debt_chain_ids`
- `payment_allocation_result_ids`
- `registry_row_ids`
- `land_use_gain_timeline_id`
- `valuation_selection_matrix_id`
#### 2.6.4 사해행위취소 fact 개선
추가 field:
1. `actio_roles`
2. `linked_actio_structures`
3. `must_not_drop_in_claim_types=["사해행위취소 청구"]`
특히 F-039 같은 사후 말소 담보권 fact는 `legal_centrality=critical`이어야 한다.
#### 2.6.5 평택시 빌라 fact 개선
반드시 생성 또는 보강해야 할 fact:
1. `F-031A`: 유치권 소멸청구 통지 발송
2. `F-031B`: 유치권 소멸청구 통지 도달
3. `F-006A`: 유치권 목적물 제3자 임대 및 민법 제324조 제2항 위반 후보
4. `F-SRB-001`: 양정숙 단독상속 derived fact
5. `F-OBJ-004`: 별지 목록 제4항 기재 부동산 목적물 특정 fact
6. `F-010` 보강: 물리적 점유는 계속되나 2024. 9. 1. 이후 법률상 원인 소멸 가능
`F-SRB-001`은 다음 법리를 derivation basis로 가져야 한다.
```json
{
"derivation_basis": {
"rule": "spouse_sole_succession_after_all_children_renounce",
"source": "민법 제1000조, 제1003조 및 대법원 2023. 3. 23.자 2020그42 전원합의체 결정",
"conclusion": "자녀 전부 상속포기 시 손자녀 또는 직계존속이 있더라도 배우자가 단독 상속인",
"excluded_candidates": [
{
"name": "강용원",
"reason": "직계존속 또는 공동 통지 발신인이지만, 자녀 전부 상속포기 후 배우자 단독상속 법리에 따라 현재 권리자가 아님"
}
]
}
}
```
#### 2.6.6 Task_D1 validation
1. BO에 `claim_chain_ref`가 있는데 Fact에 누락되면 warning
2. payment allocation trigger fact가 있는데 linked result가 없으면 error
3. F-039가 있는데 `released_encumbrance_after_act` role이 없으면 error
4. F-031B가 생성되지 않으면 `NOTICE_RECEIPT_DATE_MISSING`
5. F-SRB-001의 resolved holder가 양정숙 1인이 아니면 `SUCCESSION_RESOLUTION_ERROR`
6. F-OBJ-004가 없으면 `SCHEDULE_REFERENCE_NOT_JOINED`
### 2.7 Stage 1 Task_D2: `fact_actio_support.json`
Task_D2는 fact-level support를 생성한다. 개선 후에는 actio 전용 support와 범용 legal-effect support를 분리한다.
#### 2.7.1 기존 task 개선
1. `fact_actio_support.json`에는 `source_bo_id`뿐 아니라 `fact_id`를 명시한다.
2. 각 fact의 `claim_role_candidates`와 `mandatory_for_claim_ids`를 포함한다.
3. 사해행위취소 C-004에서는 F-007, F-008, F-032, F-039가 mandatory로 표시되어야 한다.
#### 2.7.2 범용 support 확장
추가할 support:
1. `fact_money_claim_support.json`
2. `fact_commercial_successor_support.json`
3. `fact_secured_property_support.json`
4. `fact_registry_invalidity_support.json`
5. `fact_land_use_gain_support.json`
6. `fact_valuation_support.json`
7. `fact_legal_support.json`
#### 2.7.3 평택시 빌라 support
`fact_legal_support`에는 다음 role map이 있어야 한다.
```json
{
"support_type": "lien_extinction_delivery_use_gain",
"required_fact_roles": {
"current_right_holder": "F-SRB-001",
"current_possession": "F-010",
"lien_violation": "F-006A",
"notice_sent": "F-031A",
"notice_received": "F-031B",
"use_value": "F-012",
"relief_object": "F-OBJ-004"
},
"recommended_claim_group_id": "G-PYEONGTAEK-DELIVERY-UE"
}
```
#### 2.7.4 Task_D2 validation
1. `lien_extinction_delivery_use_gain` support에서 notice_received가 빠지면 `NOTICE_RECEIPT_DATE_MISSING`
2. lien_violation이 빠지면 `LIEN_VIOLATION_FACT_MISSING`
3. current_right_holder가 양정숙 1인으로 resolve되지 않으면 `SUCCESSION_RESOLUTION_ERROR`
4. 소유권이전등기말소 claim 후보가 있는데 registry invalidity support가 없으면 warning
5. 부당이득 claim 후보가 있는데 land use gain support 또는 valuation support가 없으면 warning
### 2.8 Stage 1 Task_Display: `stage1.html`
Task_Display는 Stage 1 결과를 사람이 검토할 수 있게 표시한다. 개선 후 단순 timeline이 아니라 legal-effect board를 보여야 한다.
#### 2.8.1 추가 보드
1. 금전채권 타임라인 보드
2. 복수 책임자 및 상호속용 후보 보드
3. 담보채무 체인 보드
4. 법정변제충당 계산 보드
5. 등기 row graph 보드
6. 지분별 권리상태 타임라인
7. 토지 사용이익 타임라인
8. 감정표 row 선택 보드
9. Actio Balance Sheet 보드
10. Preserved Claim Bundle 보드
11. Value Compensation Calculation 보드
12. Defense Rebuttal 보드
13. 상속 해결 표
14. 유치권 상태 timeline
15. 통지 lifecycle
16. 목적물 alias 보드
#### 2.8.2 warning card
1. `MONEY_TIMELINE_REQUIRED`
2. `COMMERCIAL_SUCCESSOR_REVIEW`
3. `PAYMENT_ALLOCATION_REQUIRED`
4. `FRACTIONAL_CANCELLATION_SCOPE`
5. `LEASE_DEPOSIT_NOT_DIRECT_GAIN`
6. `ACTIO_VALUE_COMP_CAP_REQUIRED`
7. `PRESERVED_CLAIM_BUNDLE_COLLAPSED`
8. `DEFENSE_CRITICAL_FACTS_PRESENT`
9. `SUCCESSION_RESOLUTION_ERROR`
10. `NOTICE_RECEIPT_DATE_MISSING`
11. `LIEN_VIOLATION_FACT_MISSING`
12. `SCHEDULE_REFERENCE_NOT_JOINED`
13. `CLAIM_GROUP_SPLIT_ERROR`
## 3. 기존 Stage 2 Sub-task별 개선 작업
### 3.1 Stage 2.1 Task_A: `claim_identification_view.json`
Stage 2.1 Task_A는 Stage 1 결과물을 청구권 식별 가능한 view로 투영한다. 개선 후 view는 개별 fact projection 외에 case-level legal-effect context를 포함해야 한다.
#### 3.1.1 공통 개선
1. `case_context` root를 추가한다.
2. `canonical_theory_graph`를 포함한다.
3. `mandatory_claim_role_templates`를 포함한다.
4. 각 item에 `claim_role_candidates`, `must_consider`, `legal_effect_links`를 추가한다.
5. `proof_strength`가 낮아도 `legal_centrality=critical`이면 `must_consider=true`로 둔다.
#### 3.1.2 금전채권 view index
추가 root field:
1. `money_claim_chain_index`
2. `commercial_successor_chain_index`
3. `liability_group_hint_index`
4. `fact_role_projection`
#### 3.1.3 담보부 부동산 view context
추가 root field:
1. `secured_debt_chains`
2. `payment_allocation_results`
3. `registry_rows`
4. `property_fraction_state_timeline`
5. `land_use_gain_timeline`
6. `valuation_selection_matrix`
7. `lease_payment_semantics`
#### 3.1.4 사해행위취소 view context
추가 root field:
1. `actio_contexts`
2. `actio_balance_sheet_id`
3. `preserved_claim_bundle`
4. `value_compensation_cap_candidate`
5. `defense_fact_ids`
6. `mandatory_claim_role_template`
#### 3.1.5 유치권ㆍ상속 view context
추가 root field:
1. `claim_group_candidates`
2. `standing_context`
3. `legal_transition_context`
4. `lien_context`
5. `asset_alias_context`
평택시 빌라의 `claim_group_candidates`에는 반드시 다음이 포함되어야 한다.
```json
{
"claim_group_id": "G-PYEONGTAEK-DELIVERY-UE",
"group_title": "건물인도 및 부당이득반환 청구",
"plaintiff_candidates": ["양정숙"],
"defendant_candidates": ["박광윤"],
"primary_relief_family": "delivery_relief",
"accessory_relief_families": ["present_use_gain_slice"],
"shared_transition_fact_id": "F-031B",
"required_fact_roles": {
"plaintiff_standing": "F-SRB-001",
"current_possession": "F-010",
"lien_violation": "F-006A",
"notice_received": "F-031B",
"monthly_use_value": "F-012",
"relief_object": "F-OBJ-004"
},
"combined_description_required": true
}
```
#### 3.1.6 Task_A validation
1. F-004/F-023/F-029가 같은 money chain인데 index에서 빠지면 warning
2. payment allocation result가 있는데 관련 fact item에 연결되지 않으면 error
3. actio claim 후보가 있는데 `actio_contexts`가 없으면 error
4. F-031B가 view에 없으면 `NOTICE_RECEIPT_DATE_MISSING`
5. F-SRB-001이 강용원을 excluded candidate로 표시하지 않으면 warning
### 3.2 Stage 2.1 Task_B: `claims_identified.json`
Task_B는 본안 청구권 목록을 만든다. 개선 후 Task_B는 claim을 식별할 때 `claim_fact_roles`를 먼저 채우고, `source_fact_ids`는 그 union으로 만든다.
#### 3.2.1 공통 개선
1. 모든 `identified_claims[*]`에 `claim_fact_roles`를 추가한다.
2. `source_fact_ids`는 `claim_fact_roles`의 flatten 결과로 둔다.
3. `claim_group_id`, `claim_group_role`, `claim_grouping`을 추가한다.
4. `supporting_fact_ids`, `defense_fact_ids`, `raw_evidence_must_read`를 허용한다.
5. 청구권별 anti-pattern validation을 실행한다.
#### 3.2.2 금전채권 및 상호속용 claim
추가 field:
1. `liability_group_id`
2. `liability_role`
3. `joint_liability_type_candidate`
4. `money_claim_chain_id`
5. `money_claim_timeline_required`
6. `commercial_successor_chain_id`
7. `commercial_successor_liability_required`
group field:
```json
{
"claim_group_id": "CG-IC-01-money-claim",
"group_type": "same_underlying_debt_multiple_liability_parties",
"claim_ids": ["C-001", "C-013"],
"recommended_relief_party_structure": "joint_or_imperfect_joint_and_several",
"requires_group_level_claim_description": true
}
```
#### 3.2.3 담보부 부동산 claim
C-008, C-009, C-010, C-011, C-012에는 다음 role을 적용한다.
1. `plaintiff_fraction_title`
2. `secured_debt_chain_high_interest`
3. `payment_allocation_trigger`
4. `auction_invalidity_basis`
5. `target_transfer_registry_row`
6. `derivative_invalidity_basis`
7. `land_use_gain_start`
8. `de_facto_disposition_holder_start`
9. `valuation_selection`
10. `liability_overlap`
부당이득 C-011/C-012는 `CG-SEONGSU-UE-01`로 묶는다.
#### 3.2.4 사해행위취소 claim
C-004에는 다음 role을 적용한다.
1. `preserved_claim_bundle`
2. `fraudulent_act`
3. `asset_value_at_act`
4. `asset_value_at_close`
5. `encumbrances_existing_at_act`
6. `released_encumbrance_after_act`
7. `value_compensation_cap`
8. `title_trust_defense_rebuttal`
9. `collateral_insufficiency_rebuttal`
10. `setoff_defense_rebuttal`
`relief_constraints`에는 가액배상액 70,000,000원, 초과 금지, value compensation mode를 넣는다.
#### 3.2.5 평택시 빌라 claim
C-007:
1. `claim_group_id="G-PYEONGTAEK-DELIVERY-UE"`
2. `claim_group_role="primary_relief"`
3. plaintiffs는 `["양정숙"]`
4. `plaintiff_standing=["F-SRB-001"]`
5. `lien_extinction_ground=["F-006A"]`
6. `lien_extinction_effective_date=["F-031B"]`
7. `relief_object=["F-OBJ-004"]`
C-003:
1. `claim_group_id="G-PYEONGTAEK-DELIVERY-UE"`
2. `claim_group_role="accessory_relief"`
3. plaintiffs는 `["양정숙"]`
4. `legal_no_cause_start_date=["F-031B"]`
5. `monthly_use_value=["F-012"]`
6. `relief_object=["F-OBJ-004"]`
7. `legal_no_cause_gate.ue_start_date="2024-09-01"`
8. `legal_no_cause_gate.prohibit_earlier_start_date=true`
#### 3.2.6 Task_B anti-pattern validation
1. `MONEY_TIMELINE_REVIEW`
2. `COMMERCIAL_SUCCESSOR_ELEMENTS_TO_CONFIRM`
3. `WHOLE_PROPERTY_CANCELLATION_OVERCLAIM`
4. `PAYMENT_ALLOCATION_FACT_MISSING`
5. `LEASE_DEPOSIT_AS_UE_PRINCIPAL_REVIEW`
6. `JOINT_LIABILITY_GROUP_MISSING`
7. `PRESERVED_CLAIM_BUNDLE_COLLAPSED`
8. `VALUATION_FACT_MISSING_FOR_VALUE_COMP`
9. `RELEASED_ENCUMBRANCE_FACT_MISSING`
10. `DEFENSE_CRITICAL_FACTS_MISSING`
11. `LEGAL_CAUSE_TIME_SLICE_ERROR`
12. `LIEN_VIOLATION_FACT_MISSING`
13. `SUCCESSION_NARRATIVE_CONTRADICTION`
### 3.3 Stage 2.1 Task_C: `claims_identified_case_type.json`
Task_C는 청구권에 사건 종류를 부여한다. 개선 후 `case_kind` 외에 `case_subtype`, `liability_basis_kind`, `substantive_modules_required`, `drafting_mode`를 추가한다.
#### 3.3.1 공통 개선
1. `case_kind`: 소장상 사건 종류
2. `case_subtype`: 실체법적 하위 유형
3. `liability_basis_kind`: 피고 책임 근거
4. `substantive_modules_required`: Stage 2.3 module selection
5. `scope_control`: 목적물, 지분, 접수번호
6. `group_case_kind`: claim group용 사건 종류
7. `drafting_mode`: individual 또는 combined_relief
#### 3.3.2 case subtype 예시
1. `commercial_code_article_42_trade_name_successor`
2. `auction_transfer_invalidity_after_secured_debt_extinguishment`
3. `derivative_invalidity_from_void_auction_transfer`
4. `unauthorized_unregistered_building_land_use_gain`
5. `encumbered_real_estate_transfer_value_compensation_after_released_mortgage`
6. `lien_extinction_delivery_and_future_use_gain`
#### 3.3.3 평택시 빌라 group case type
```json
{
"claim_group_id": "G-PYEONGTAEK-DELIVERY-UE",
"group_case_kind": "건물인도 및 부당이득반환 청구",
"primary_case_kind": "건물의 명도(인도)의 소",
"accessory_case_kinds": ["부당이득금・이득상환금 청구"],
"module_recommendations": [
"유치권소멸_건물인도_부당이득반환_모듈",
"상속포기_배우자단독상속_모듈",
"통지_도달_법률효과_모듈",
"별지목록_등기부_asset_alias_모듈",
"피고답변서_항변추출_모듈"
],
"drafting_mode": "combined_relief"
}
```
### 3.4 Stage 2.2 Task_D: `preD_assembly`
Task_D는 claim별 `C-XXX_claim_information.json`을 생성한다. 개선 후 source fact만 조립하지 않고 role, structure, group, validation을 함께 조립해야 한다.
#### 3.4.1 공통 개선
1. `claim_fact_roles` 전체 union으로 fact를 조립한다.
2. `mandatory_role_fact_ids`를 생성한다.
3. `legal_effect_structures`를 포함한다.
4. `cluster_sibling_fact_context`를 포함한다.
5. `claim_group_context`를 포함한다.
6. `raw_evidence_must_read`를 포함한다.
7. `pre_description_validations`를 포함한다.
#### 3.4.2 group information 생성
동일 `claim_group_id`가 있는 경우 다음 group 파일을 생성한다.
1. `CG-IC-01-money-claim_claim_group_information.json`
2. `CG-SEONGSU-UE-01_claim_group_information.json`
3. `G-PYEONGTAEK-DELIVERY-UE_claim_group_information.json`
#### 3.4.3 평택시 빌라 group information
`G-PYEONGTAEK-DELIVERY-UE_claim_group_information.json`에는 다음이 있어야 한다.
1. plaintiffs: `["양정숙"]`
2. defendants: `["박광윤"]`
3. target object: `별지 목록 제4항 기재 부동산`
4. relief plan:
- 인도
- 2024. 9. 1.부터 인도완료일까지 월 2,000,000원
5. cause plan:
- 양정숙 단독상속
- 박광윤 점유
- 2022. 2. 1.~2022. 7. 31. 제3자 임대
- 2024. 8. 29. 발송
- 2024. 9. 1. 도달
- 도달 이후 점유권원 소멸
6. defense rebuttal matrix refs
#### 3.4.4 preD validation
1. `claim_fact_roles`의 fact가 `fact_id_content`에 모두 포함되었는지 검사
2. group id가 있는데 group information이 없는지 검사
3. money claim timeline required인데 timeline이 없는지 검사
4. value compensation claim인데 cap structure가 없는지 검사
5. 평택시 빌라 group에서 다음을 검사:
- plaintiff standing exists and resolved holder == 양정숙
- current possession exists
- lien violation exists
- notice received exists
- relief object exists
- monthly use value exists
- unjust enrichment start date >= lien extinction effective date
### 3.5 Stage 2.2 Reduce
Reduce 단계는 claim information 생성 완료만 처리하지 말고 aggregate index를 생성해야 한다.
#### 3.5.1 공통 aggregate 파일
1. `claim_group_index.json`
2. `claim_groups_identified.json`
3. `claim_group_information_index.json`
4. `canonical_theory_graph.json`
5. `pre_description_validation_summary.json`
#### 3.5.2 domain aggregate 파일
금전채권:
1. `liability_group_index.json`
2. `money_claim_timeline_index.json`
3. `commercial_successor_liability_index.json`
담보부 부동산:
1. `registry_target_index.json`
2. `valuation_decision_index.json`
3. `payment_allocation_index.json`
사해행위취소:
1. `actio_balance_sheet_index.json`
2. `value_compensation_cap_index.json`
3. `actio_finalization_gate_summary.json`
4. `defense_rebuttal_matrix_index.json`
유치권ㆍ인도:
1. `notice_lifecycle_index.json`
2. `lien_state_timeline_index.json`
3. `succession_resolution_index.json`
4. `asset_alias_index.json`
### 3.6 Stage 2.3 Task_E: `load_claim_info`
`load_claim_info`는 개별 claim information만 읽지 말고 group과 aggregate index를 함께 로드해야 한다.
#### 3.6.1 공통 개선
1. claim에 `claim_group_id`가 있으면 group information을 먼저 로드한다.
2. group context를 normalized input에 병합한다.
3. accessory claim은 standalone drafting 허용 여부를 결정한다.
4. aggregate validation summary를 로드한다.
5. required module list를 후속 task에 전달한다.
#### 3.6.2 평택시 빌라 load 규칙
1. C-007 처리 시 C-003의 부당이득 정보가 함께 로드되어야 한다.
2. C-003 처리 시 `standalone_description_allowed=false` 또는 accessory mode가 설정되어야 한다.
3. group validation error가 있으면 Stage 2.3 전체가 review mode로 전환되어야 한다.
### 3.7 Stage 2.3 Task_E: `generate_module_block`
`generate_module_block`은 case subtype과 required module을 기준으로 실체법 module output을 생성한다.
#### 3.7.1 공통 개선
1. `case_kind`만으로 module을 선택하지 않는다.
2. `case_subtype`, `liability_basis_kind`, `claim_fact_roles`, `claim_group_context`를 함께 사용한다.
3. module output의 `relief_constraint`, `forbidden_outputs`, `required_cause_paragraphs`는 drafting layer를 구속한다.
#### 3.7.2 module selection rule
1. 금전채권이면 `금전채권_이행기_시효_지연손해금_작성규칙.md`
2. 상호속용이면 `상호속용_영업양수인_책임_작성규칙.md`
3. 담보부 부동산 지분말소이면 `법정변제충당_담보채무_지분말소_모듈.md`
4. 담보권실행 경매 무효이면 `담보권실행경매_공신력_항변_모듈.md`
5. 미등기 건물 토지 사용이익이면 `미등기건물_토지사용_부당이득_부진정연대_모듈.md`
6. 감정표 row 선택이면 `차임감정표_법률상_기준선택_모듈.md`
7. 임대차보증금 배제이면 `임대차보증금_부당이득_배제검토_모듈.md`
8. 사해행위 가액배상이면 `부담부_부동산소유권이전_사해행위_가액배상_모듈.md`
9. 사해행위 피보전채권 bundle이면 `사해행위취소_피보전채권번들_검증_모듈.md`
10. 사해행위 항변이면 `사해행위취소_항변통합_모듈.md`
11. 사해행위 finalization이면 `사해행위취소_가액배상_최종화게이트_모듈.md`
12. 유치권 인도ㆍ부당이득이면 `유치권소멸_건물인도_부당이득반환_모듈.md`
13. 상속포기 배우자 단독상속이면 `상속포기_배우자단독상속_모듈.md`
14. 통지 도달이면 `통지_도달_법률효과_모듈.md`
15. 목적물 특정이면 `별지목록_등기부_asset_alias_모듈.md`
16. 답변서 항변이면 `피고답변서_항변추출_모듈.md`
### 3.8 Stage 2.3 Task_E: `interpret_claim_metadata`
`interpret_claim_metadata`는 module output을 청구취지ㆍ청구원인에 사용할 operative conclusion으로 바꾼다.
#### 3.8.1 공통 개선
1. `selected_operatives`를 생성한다.
2. 날짜 후보 중 선택값과 탈락값을 모두 표시한다.
3. `substantive_override_candidates`를 생성한다.
4. `cause_summary_focus`를 만든다.
5. `drafting_guidance`를 만든다.
6. `forbidden_outputs`를 명시한다.
#### 3.8.2 평택시 빌라 selected operatives
필수 conclusion:
1. plaintiff: 양정숙
2. reject plaintiff alternative: 강용원
3. reject reason:
- 직계존속 또는 공동 통지 발신인에 불과
- 자녀 전부 상속포기 후 배우자 단독상속 법리에 따라 현재 권리자가 아님
4. relief object: 별지 목록 제4항 기재 부동산
5. delivery relief: 위 부동산 인도
6. unjust enrichment start date: 2024. 9. 1.
7. monthly amount: 2,000,000원
8. use combined relief: true
#### 3.8.3 interpret validation
1. 유치권 사건에서 부당이득 기산일이 소유권 취득일이면 `UE_START_BEFORE_LIEN_EXTINCTION`
2. 양정숙 단독상속인데 청구원인 focus에 강용원 공동상속이 있으면 `SUCCESSION_NARRATIVE_CONTRADICTION`
3. 별지목록이 있는데 목적물 표시 누락이라고 쓰면 `SCHEDULE_REFERENCE_NOT_JOINED`
4. 가액배상 cap과 relief amount가 다르면 `RELIEF_AMOUNT_MISMATCH`
5. excluded gain item이 청구금액 후보에 남으면 `EXCLUDED_GAIN_INCLUDED`
### 3.9 Stage 2.3 Task_E: `generate_description`
`generate_description`은 최종 `relief_summary`, `cause_summary`를 작성한다. 개선 후 module output과 selected operatives의 constraint를 반드시 따른다.
#### 3.9.1 공통 개선
1. group context가 있으면 group-level 문안을 우선한다.
2. 청구취지의 객체, 지분, 접수번호, 금액, 기산일은 operative conclusion에서 가져온다.
3. forbidden output은 생성하지 않는다.
4. 예상 항변이 청구원인 성립 또는 범위를 공격하면 Stage 2 cause_summary에 최소 반박을 포함한다.
#### 3.9.2 금전채권 기대 문안
복수 피고가 같은 물품대금 채무에 대해 책임지는 경우:
```text
피고 김선웅과 피고 오민한은 공동하여 원고에게 200,000,000원 및 이에 대하여
2021. 11. 6.부터 이 사건 소장부본 송달일까지는 연 6%의,
그 다음 날부터 다 갚는 날까지는 연 12%의 각 비율로 계산한 돈을 지급하라.
```
#### 3.9.3 성수동 기대 문안
1. C-008은 성수동 대지 중 3/5 지분과 제25797호를 포함한다.
2. C-009는 성수동 대지 중 3/5 지분과 제25799호를 포함한다.
3. C-011/C-012는 `CG-SEONGSU-UE-01` group 문안으로 작성한다.
4. 임대차보증금 3억 원 중 3/5 상당액은 부당이득 원금으로 쓰지 않는다.
#### 3.9.4 사해행위취소 기대 문안
1. 취소 한도와 지급액은 70,000,000원
2. 지연손해금은 판결 확정일 다음날부터 연 5%
3. 2022. 4. 18. 대여금과 2022. 5. 18. 대여금을 모두 서술
4. 250,000,000 - 130,000,000 - 50,000,000 = 70,000,000 산정식 포함
5. 명의신탁, 충분 담보, 상계 항변 최소 반박 포함
#### 3.9.5 평택시 빌라 기대 문안
청구취지:
```text
피고 박광윤은 원고 양정숙에게,
가. 별지 목록 제4항 기재 부동산을 인도하고,
나. 2024. 9. 1.부터 위 부동산 인도완료일까지 월 2,000,000원의 비율로 계산한 돈을 지급하라.
```
청구원인 순서:
1. 강호연의 2022. 10. 1. 평택시 빌라 소유권 취득
2. 강호연의 2024. 8. 10. 사망
3. 강형수ㆍ강지수 상속포기 신고 및 2024. 9. 20. 수리
4. 자녀 전부 상속포기 후 배우자 단독상속 법리에 따른 양정숙 단독상속
5. 강용원은 직계존속 또는 공동 통지 발신인이지만 현재 권리자가 아니므로 원고에서 제외
6. 박광윤의 공사잔금 3억 원 미지급에 따른 유치권 주장
7. 박광윤의 2022. 2. 1.~2022. 7. 31. 제3자 임대
8. 위 임대가 민법 제324조 제2항 위반이라는 점
9. 2024. 8. 29. 유치권 소멸청구 통지 발송 및 2024. 9. 1. 도달
10. 2024. 9. 1. 이후 점유권원 소멸
11. 월 2,000,000원 사용이익 산정 근거
12. 유치권 의무위반 부정 항변, 후소유자 소멸청구권 부정 항변, 수익 충당 항변 반박
금지:
1. `양정숙과 강용원이 공동상속인`이라고 쓰지 않는다.
2. `2022. 10. 1.`을 부당이득 기산일로 쓰지 않는다.
3. 목적물 표시가 누락되었다고 쓰지 않는다.
4. C-003을 독립 청구취지로 저장하지 않는다.
### 3.10 Stage 2.3 Task_E: `save_description`
`save_description`은 생성 문안을 저장하기 전에 blocking validation을 수행해야 한다.
#### 3.10.1 공통 저장 검증
1. module result와 relief amount 일치
2. operative date와 relief date 일치
3. group mode에서 accessory standalone 저장 금지
4. excluded item이 청구금액에 들어갔는지 검사
5. finalization gate가 false이면 확정 금액 저장 금지
#### 3.10.2 평택시 빌라 저장 방식
권장:
1. `C-007_claim_description.json`
- `description_mode="combined_group_primary"`
- `included_claim_ids=["C-007", "C-003"]`
- 결합 청구취지와 결합 청구원인 저장
2. `C-003_claim_description.json`
- `description_mode="accessory_to_group_primary"`
- `primary_description_file="C-007_claim_description.json"`
- standalone relief/cause는 null
- accessory relief summary만 표시
3. 선택적으로 `G-PYEONGTAEK-DELIVERY-UE_claim_description.json` 생성
#### 3.10.3 blocking codes
1. `UE_START_BEFORE_LIEN_EXTINCTION`
2. `SUCCESSION_NARRATIVE_CONTRADICTION`
3. `SCHEDULE_REFERENCE_NOT_JOINED`
4. `CLAIM_GROUP_SPLIT_ERROR`
5. `RELIEF_AMOUNT_MATCHES_VALUE_COMP_CAP`
6. `NUMERIC_FINALIZATION_ALLOWED`
7. `PRESERVED_CLAIM_BUNDLE_NOT_COLLAPSED`
8. `DEFENSE_CRITICAL_FACTS_INCLUDED`
9. `LEASE_DEPOSIT_AS_UE_PRINCIPAL_REVIEW`
10. `WHOLE_PROPERTY_CANCELLATION_OVERCLAIM`
### 3.11 Stage 2.3 Task_E: `assemble_claim_description_md`
`assemble_claim_description_md`는 개별 claim description을 단순 나열하지 않고 group과 chain 단위로 렌더링해야 한다.
#### 3.11.1 출력 단위
1. 물품대금 liability group
2. 성수동 대지 등기말소 chain
3. 성수동 대지 철거ㆍ인도 chain
4. 성수동 대지 부당이득 claim group
5. C-004 사해행위취소 및 가액배상
6. 평택시 빌라 건물인도 및 부당이득반환 claim group
7. validation summary
#### 3.11.2 accessory rendering rule
1. group primary가 accessory claim을 포함하면 accessory claim을 standalone section으로 렌더링하지 않는다.
2. accessory claim은 `included in` note로 표시한다.
3. 서로 다른 기산일이나 목적물 문구가 중복 표시되면 rendering을 중단한다.
## 4. 신설할 Sub-task
### 4.1 Stage 1 Task_B4: `evidence_domain_support_extraction`
위치: Task_B3 이후, Task_D1 이전
목적:
1. 사해행위취소 외 사건군의 evidence support를 생성한다.
2. evidence가 청구취지 특정, 기산일, 원고적격, 항변 반박에 어떤 역할을 하는지 sparse support로 보존한다.
출력:
1. `evidence_money_claim_support.json`
2. `evidence_commercial_successor_support.json`
3. `evidence_secured_property_support.json`
4. `evidence_registry_invalidity_support.json`
5. `evidence_land_use_gain_support.json`
6. `evidence_valuation_support.json`
7. `evidence_legal_effect_support.json`
### 4.2 Stage 1 Task_C2: `legal_effect_structure_builder`
위치: Task_C 이후, Task_D1 이전
목적:
1. BO를 domain-independent legal effect structures로 정규화한다.
2. Stage 2가 case별 module을 선택할 수 있는 structure id를 만든다.
3. claim group 후보를 사전에 생성한다.
출력:
1. `legal_effect_structures.json`
2. `case_liability_signals.json`
3. `legal_effect_signals.json`
4. `canonical_theory_graph_seed.json`
5. `claim_group_candidates_seed.json`
### 4.3 Stage 1 Task_D3: `fact_domain_support_assembly`
위치: Task_D2 이후
목적:
1. Task_B4의 evidence support와 Fact Ledger를 조인한다.
2. fact별 claim role 후보와 mandatory 여부를 생성한다.
출력:
1. `fact_money_claim_support.json`
2. `fact_commercial_successor_support.json`
3. `fact_secured_property_support.json`
4. `fact_registry_invalidity_support.json`
5. `fact_land_use_gain_support.json`
6. `fact_valuation_support.json`
7. `fact_legal_support.json`
### 4.4 Stage 1 Task_D4: `stage1_validation_summary`
위치: Task_D3 이후, Task_Display 전
목적:
1. Stage 1에서 발생한 missing role과 conflict를 하나의 validation summary로 모은다.
2. Stage 2.1이 hard warning으로 소비할 수 있게 한다.
출력:
1. `stage1_validation_summary.json`
### 4.5 Stage 2.1 Task_B2: `claim_group_and_role_normalizer`
위치: Task_B 이후, Task_C 이전
목적:
1. `identified_claims`의 claim_fact_roles를 검증한다.
2. claim group을 확정한다.
3. source_fact_ids를 claim_fact_roles union으로 재계산한다.
4. atomic claim과 group drafting mode의 conflict를 제거한다.
출력:
1. `claims_identified_normalized.json`
2. `claim_group_candidates_resolved.json`
### 4.6 Stage 2.2 Task_D_reduce: `group_and_index_assembly`
위치: 기존 Stage 2.2 reduce 확장
목적:
1. claim group information 파일 생성
2. aggregate index 생성
3. pre-description validation summary 생성
출력:
1. `claim_group_index.json`
2. `claim_groups_identified.json`
3. `canonical_theory_graph.json`
4. domain별 index 파일
5. `pre_description_validation_summary.json`
### 4.7 Stage 2.3 Task_E0: `pre_description_context_gate`
위치: `load_claim_info` 직후
목적:
1. loaded context가 module 생성 가능 상태인지 검사한다.
2. group context, finalization gate, validation summary를 확인한다.
3. blocking error가 있으면 generation을 review mode로 전환한다.
출력:
1. `loaded_context_validation.json`
### 4.8 Stage 2.3 Task_E6: `group_description_postprocessor`
위치: `save_description` 이후, `assemble_claim_description_md` 전
목적:
1. primary group description과 accessory claim files의 consistency를 점검한다.
2. accessory standalone description을 suppression한다.
3. group-level canonical description 파일을 생성한다.
출력:
1. `group_description_consistency_report.json`
2. optional `*_claim_group_description.json`
## 5. 신설할 Module
### 5.1 Stage 2.3 `generate_module_block`에서 선택할 신규 module
#### 5.1.1 금전채권ㆍ상호속용
1. `금전채권_이행기_시효_지연손해금_작성규칙.md`
- 이행기 있는 채권과 없는 채권 구분
- 최초 이행청구일과 지연손해금 기산일
- 최고, 채무승인, 소멸시효 중단
- 상사이율 6%, 소촉법 12%
2. `상호속용_영업양수인_책임_작성규칙.md`
- 상법 제42조 제1항 요건
- 상호 계속 사용
- 영업상 채무
- 책임배제 등기
- 채무불승계 약정의 대외효
- 원채무자와 영업양수인의 공동 또는 부진정연대 문안
#### 5.1.2 담보부 부동산ㆍ등기말소
1. `법정변제충당_담보채무_지분말소_모듈.md`
- 복수 피담보채무
- 이율, 변제기, 담보 지분
- 지정 없는 변제
- 이자 우선
- 변제이익 기준
- 소멸 담보 지분과 잔존 담보 지분 계산
2. `담보권실행경매_공신력_항변_모듈.md`
- 피담보채무 소멸 후 경매
- 민사집행법 제267조 항변
- 부동산등기 공신력 부재
- 후행 등기 원인무효 chain
#### 5.1.3 미등기 건물ㆍ토지 사용이익
1. `미등기건물_토지사용_부당이득_부진정연대_모듈.md`
- 미등기 건물 원시취득자
- 사실상 처분권자
- 토지 점유ㆍ사용
- 시간대별 책임 시작일
- 부진정연대 또는 공동 지급
2. `차임감정표_법률상_기준선택_모듈.md`
- 감정표 row의 법률상 전제 선택
- 건물 없음ㆍ보증금 없음 기준
- plaintiff fraction 적용
3. `임대차보증금_부당이득_배제검토_모듈.md`
- 보증금, 월 차임, 매매대금의 법적 성격 분리
- 보증금의 부당이득 원금 오인 방지
#### 5.1.4 사해행위취소
1. `부담부_부동산소유권이전_사해행위_가액배상_모듈.md`
- 부담 있는 부동산 소유권이전 사해행위
- 사후 담보권 말소
- 원상회복 방법 결정
- 가액배상 한도 계산
2. `사해행위취소_피보전채권번들_검증_모듈.md`
- 복수 피보전채권 bundle 유지
- 사해행위 당시 원리금
- 담보 부족 항변 반박
3. `사해행위취소_항변통합_모듈.md`
- 명의신탁
- 충분 담보
- 상계
- 선의
- Stage 2 청구원인 반박 문단 생성
4. `사해행위취소_가액배상_최종화게이트_모듈.md`
- numeric finalization allowed
- relief rendering allowed
- manual review status
- blocking rule
#### 5.1.5 유치권ㆍ상속ㆍ통지ㆍ목적물
1. `유치권소멸_건물인도_부당이득반환_모듈.md`
- 유치권 주장
- 유치권자의 사용ㆍ대여 제한
- 민법 제324조 제2항 위반
- 소멸청구
- 도달일
- 인도 및 장래 사용이익 결합 청구취지
2. `상속포기_배우자단독상속_모듈.md`
- 배우자와 자녀 존재
- 자녀 전부 상속포기
- 대법원 2023. 3. 23.자 2020그42 법리
- 직계존속 강용원 원고 제외
- 양정숙 단독상속
3. `통지_도달_법률효과_모듈.md`
- 작성일, 발송일, 도달일 분리
- 답변서 수령 인정 추출
- 도달일이 법률효과 발생일인 통지 처리
4. `별지목록_등기부_asset_alias_모듈.md`
- 상담문서 명칭, 통지서 별칭, 등기부 표시, 별지목록 항목 조인
- 청구취지에서 `별지 목록 제○항 기재 부동산` 사용 가능 여부
5. `피고답변서_항변추출_모듈.md`
- admission 추출
- defense 추출
- 날짜, 금액, 임대 사실 자인
- 법률상 책임 부인, 충당, 상계, 권리자 적격 부정
### 5.2 기존 규칙 파일 보강
1. `청구취지작성규칙_매매대금청구.md`
- 상호속용 영업양수인 책임 문형 추가
2. `청구취지작성규칙_소유권이전등기말소.md`
- 지분별 말소, 접수번호, payment allocation result 반영
3. `청구취지작성규칙_근저당권설정등기말소.md`
- 선행 원인무효 등기 chain 확인
4. `청구취지작성규칙_토지인도_건물철거.md`
- 미등기 건물 사실상 처분권자 및 과반수 지분권자 청구 구조
5. `청구취지작성규칙_부당이득금_이득상환금청구.md`
- 점유권원 소멸일 기산
- 보증금 배제
- group-level 부진정연대 문안
6. `청구취지작성규칙_건물의명도인도청구.md`
- 유치권 소멸청구에 기한 인도 + 장래 사용이익 결합 문안
- 별지목록 목적물 사용
7. `청구취지작성규칙_사해행위취소청구.md`
- value_compensation_cap의 selected amount 사용
- finalization gate false이면 확정 금액 금지
8. `actio_pauliana_calc.txt`
- 부담부 부동산 소유권이전 사해행위와 근저당권설정 사해행위 분리
- 사후 말소 담보권 actual debt paid 우선
9. `actio_pauliana_mortgage.txt`
- 근저당권설정 자체가 사해행위인 사건으로 route 제한
## 6. 신규 JSON Schema Registry
이 절은 새롭게 정의될 JSON schema를 sub-task 순서대로 중복 없이 정리한다. 실제 구현 시 schema 파일로 분리할 수 있다.
### 6.1 Stage 1 Task_A schemas
#### 6.1.1 `IssueClusterDomainProfile`
```json
{
"issue_cluster_id": "string",
"domain_profiles": {
"monetary_claim_profile": "MonetaryClaimProfile|null",
"secured_property_dispute_profile": "SecuredPropertyDisputeProfile|null",
"actio_property_transfer_profile": "ActioPropertyTransferProfile|null",
"possession_lien_succession_profile": "PossessionLienSuccessionProfile|null"
},
"client_requested_relief": ["string"],
"legal_sustainability_watchpoints": ["string"]
}
```
#### 6.1.2 `LegalEntitlementCandidate`
```json
{
"person": "string",
"capacity_basis": "string",
"certainty": "provisional|weak|resolved|excluded",
"needs_succession_resolution": true,
"warning": "string|null"
}
```
#### 6.1.3 `CurrentControlMap4Axis`
```json
{
"object": "string",
"current_right_holder_candidate": "string|null",
"current_possessor": "string|null",
"current_user": "string|null",
"current_benefit_holder": "string|null",
"possession_basis_asserted": "string|null",
"possession_basis_transition_needed": "boolean"
}
```
### 6.2 Stage 1 Task_B1 schemas
#### 6.2.1 `DocumentComponentEnvelope`
```json
{
"evidence_index": "string",
"doc_semantic_flags": ["string"],
"claim_document_components": ["ClaimDocumentComponent"],
"business_transfer_components": ["BusinessTransferComponent"],
"registry_row_components": ["RegistryRowComponent"],
"secured_debt_components": ["SecuredDebtComponent"],
"valuation_rows": ["ValuationRow"],
"mixed_contract_payment_semantics": "MixedContractPaymentSemantics|null",
"loan_components": ["LoanComponent"],
"valuation_matrix": "AssetValueMatrix|null",
"registry_row_role_map": "RegistryRowRoleMap|null",
"admission_components": ["AdmissionComponent"],
"defense_components": ["DefenseComponent"],
"notice_components": ["NoticeComponent"],
"schedule_items": ["ScheduleItem"],
"registry_object_display": "RegistryObjectDisplay|null",
"succession_document_components": "SuccessionDocumentComponents|null"
}
```
#### 6.2.2 `ScheduleItem`
```json
{
"schedule_item_no": "string",
"canonical_relief_phrase": "string",
"asset_aliases": ["string"],
"building_display": "string|null",
"exclusive_part": "string|null",
"site_right": "string|null",
"usable_in_delivery_relief": "boolean"
}
```
#### 6.2.3 `SuccessionDocumentComponents`
```json
{
"decedent": "string",
"death_date": "YYYY-MM-DD",
"spouse_candidates": ["string"],
"descendant_candidates": ["string"],
"ascendant_candidates": ["string"],
"renunciant_candidates": ["string"],
"renunciation_filing_date": "YYYY-MM-DD|null",
"renunciation_accepted_date": "YYYY-MM-DD|null",
"asset_link_hints": ["string"]
}
```
### 6.3 Stage 1 Task_B2 schemas
#### 6.3.1 `LegalEffectEventCandidate`
```json
{
"candidate_id": "string",
"event_or_state": "event|state",
"event_kind": "string",
"event_subkind": "string",
"event_date": "YYYY-MM-DD|null",
"event_end_date": "YYYY-MM-DD|null",
"participants": "object",
"object_spec": "string|null",
"amount": "string|number|null",
"source_evidence_index": "string|null",
"source_fact_candidate": "string|null",
"legal_effect_candidate": "object|null",
"defense_candidate": "object|null",
"succession_candidate": "object|null",
"commercial_successor_candidates": "object|null",
"confidence": "low|medium|high"
}
```
### 6.4 Stage 1 Task_C / Task_C2 schemas
#### 6.4.1 `MoneyClaimTimeline`
```json
{
"timeline_id": "string",
"claim_arising_date": "YYYY-MM-DD|null",
"original_due_date": "YYYY-MM-DD|null",
"is_due_date_unspecified": "boolean",
"first_demand_date": "YYYY-MM-DD|null",
"first_default_start_date": "YYYY-MM-DD|null",
"notice_dispatch_date": "YYYY-MM-DD|null",
"notice_arrival_date": "YYYY-MM-DD|null",
"acknowledgement_date": "YYYY-MM-DD|null",
"new_due_date_if_any": "YYYY-MM-DD|null",
"limitation_period": "string|null",
"limitation_interruption_basis": "string|null",
"interest_start_date": "YYYY-MM-DD|null",
"pre_service_rate": "string|null",
"post_service_rate": "string|null",
"source_fact_ids": ["string"],
"source_evidence_indexes": ["string"],
"review_flags": ["string"]
}
```
#### 6.4.2 `CommercialSuccessorLiability`
```json
{
"chain_id": "string",
"transferor": "string",
"transferee": "string",
"business_name": "string|null",
"transfer_date": "YYYY-MM-DD|null",
"business_assets_transferred": "boolean|null",
"trade_name_continued": "boolean|null",
"debt_arose_before_transfer": "boolean|null",
"debt_is_business_debt": "boolean|null",
"liability_exclusion_registration": "found|not_found_or_unproven|unknown",
"internal_debt_exclusion_not_opposable_to_third_party": "boolean|null",
"legal_basis": "string",
"liability_relation_with_transferor": "string",
"source_fact_ids": ["string"],
"source_evidence_indexes": ["string"]
}
```
#### 6.4.3 `ClaimGroup`
```json
{
"claim_group_id": "string",
"group_title": "string",
"member_claim_ids": ["string"],
"group_type": "string",
"plaintiffs": ["string"],
"defendants": ["string"],
"shared_legal_transition": "object|null",
"relief_structure": "object",
"combined_description_required": "boolean",
"description_output_mode": "group_primary_file|group_file|duplicate_group_description"
}
```
#### 6.4.4 `SecuredDebtChain`
```json
{
"chain_id": "string",
"loan_fact_id": "string",
"creditor": "string",
"debtor": "string",
"principal": "number",
"interest_rate_percent_per_annum": "number|null",
"maturity_date": "YYYY-MM-DD|null",
"secured_object": "string",
"secured_fraction": "string|null",
"registry_row_ids": ["string"],
"maximum_claim_amount": "number|null",
"status_after_payment_candidate": "string|null"
}
```
#### 6.4.5 `PaymentAllocationResult`
```json
{
"allocation_id": "string",
"payment_fact_id": "string",
"payment_date": "YYYY-MM-DD",
"payment_amount": "number",
"designation_status": "designated|not_designated|unknown",
"candidate_debt_chain_ids": ["string"],
"legal_rules_applied": ["string"],
"calculation_summary": "object",
"fully_extinguished_chain_ids": ["string"],
"partially_remaining_chain_ids": ["string"],
"released_fraction": "string|null",
"remaining_encumbered_fraction": "string|null",
"review_flags": ["string"]
}
```
#### 6.4.6 `ActioBalanceSheet`
```json
{
"sheet_id": "string",
"cluster_id": "string",
"debtor": "string",
"creditor": "string",
"beneficiary": "string",
"fraudulent_act": "object",
"preserved_claim_bundle_id": "string",
"asset_value_matrix_id": "string",
"encumbrance_timeline_id": "string",
"remedy_mode_decision_id": "string",
"value_compensation_cap_id": "string",
"defense_rebuttal_matrix_id": "string|null"
}
```
#### 6.4.7 `ValueCompensationCap`
```json
{
"cap_id": "string",
"calculation_mode": "string",
"inputs": "object",
"calculation_steps": ["object"],
"selected_relief_amount": "number|null",
"rendering_allowed": "boolean",
"numeric_finalization_allowed": "boolean",
"review_flags": ["string"]
}
```
#### 6.4.8 `SuccessionResolutionBundle`
```json
{
"bundle_id": "string",
"asset_cluster_id": "string",
"decedent": "string",
"death_date": "YYYY-MM-DD",
"spouse_candidates": ["string"],
"descendant_candidates": ["string"],
"ascendant_candidates": ["string"],
"renunciation_events": ["object"],
"resolved_current_right_holders": ["string"],
"excluded_heir_candidates": ["object"],
"resolution_basis": ["string"],
"legal_rule_applied": {
"rule_id": "spouse_sole_succession_after_all_children_renounce",
"authority": "민법 제1000조, 제1003조 및 대법원 2023. 3. 23.자 2020그42 전원합의체 결정",
"rule_summary": "자녀 전부 상속포기 시 손자녀 또는 직계존속이 있더라도 배우자가 단독 상속인"
},
"certainty": "provisional|final",
"downstream_use": ["string"]
}
```
#### 6.4.9 `NoticeLifecycle`
```json
{
"notice_id": "string",
"notice_type": "string",
"senders_raw": ["string"],
"legal_senders_after_succession_resolution": ["string"],
"recipient": "string",
"target_object": "string",
"sent_date": "YYYY-MM-DD|null",
"received_date": "YYYY-MM-DD|null",
"sent_evidence_refs": ["string"],
"receipt_evidence_refs": ["string"],
"content_summary": "string",
"legal_effect_candidate": {
"effect_type": "string",
"effect_date": "YYYY-MM-DD|null",
"requires_receipt": "boolean",
"downstream_date_roles": ["string"]
}
}
```
#### 6.4.10 `LienStateTimeline`
```json
{
"lien_id": "string",
"lien_holder": "string",
"target_object": "string",
"secured_claim": "object",
"possession_events": ["object"],
"violation_candidates": ["object"],
"extinction_notice_id": "string|null",
"status_timeline": ["object"]
}
```
#### 6.4.11 `AssetAliasMap`
```json
{
"asset_id": "string",
"canonical_label": "string",
"aliases": ["string"],
"schedule_reference": {
"evidence_index": "string",
"schedule_item": "string",
"usable_in_relief": "boolean",
"relief_phrase": "string"
},
"registry_reference": "object|null",
"downstream_use": ["string"]
}
```
#### 6.4.12 `DefenseRebuttalMatrix`
```json
{
"matrix_id": "string",
"source_evidence_refs": ["string"],
"items": [
{
"defense_id": "string",
"defense_summary": "string",
"attacks": ["string"],
"required_rebuttal": "string",
"rebuttal_required_in_stage2": "boolean"
}
]
}
```
### 6.5 Stage 1 Task_D1 schemas
#### 6.5.1 `FactLegalMetadata`
```json
{
"fact_id": "string",
"legal_centrality": "low|medium|critical",
"proof_strength": "low|medium|high|documentary|meeting_only_core",
"legal_effect_roles": ["string"],
"claim_chain_ref": "object|null",
"linked_structures": "object",
"must_not_drop_in_claim_types": ["string"],
"must_consider": "boolean",
"derived_fact": "boolean",
"derivation_basis": "object|null",
"state_context": "object|null"
}
```
### 6.6 Stage 1 Task_D2 / D3 schemas
#### 6.6.1 `FactLegalSupport`
```json
{
"support_id": "string",
"support_type": "string",
"core_fact_ids": ["string"],
"required_fact_roles": "object",
"missing_roles": ["string"],
"recommended_claim_group_id": "string|null",
"validation_codes": ["string"]
}
```
### 6.7 Stage 2.1 schemas
#### 6.7.1 `ClaimIdentificationView`
```json
{
"schema_version": "claim_identification_view.vNext",
"case_context": {
"canonical_theory_graph": "object|null",
"mandatory_claim_role_templates": "object",
"money_claim_chain_index": ["object"],
"commercial_successor_chain_index": ["object"],
"liability_group_hint_index": ["object"],
"actio_contexts": ["object"],
"claim_group_candidates": ["object"]
},
"items": [
{
"fact_id": "string",
"claim_role_candidates": ["string"],
"legal_effect_links": "object",
"must_consider": "boolean",
"validation_if_omitted": "string|null"
}
]
}
```
#### 6.7.2 `IdentifiedClaim`
```json
{
"claim_id": "string",
"claim_group_id": "string|null",
"claim_group_role": "primary_relief|accessory_relief|member|null",
"claim_title": "string",
"plaintiffs": ["string"],
"defendants": ["string"],
"claim_statement": "string",
"claim_fact_roles": "object",
"source_fact_ids": ["string"],
"supporting_fact_ids": ["string"],
"defense_fact_ids": ["string"],
"raw_evidence_must_read": ["string"],
"relief_constraints": "object|null",
"legal_no_cause_gate": "object|null",
"review_flags": ["string"],
"completeness": "complete|review_required|null"
}
```
#### 6.7.3 `ClaimCaseType`
```json
{
"claim_id": "string|null",
"claim_group_id": "string|null",
"case_kind": "string|null",
"group_case_kind": "string|null",
"case_subtype": "string|null",
"liability_basis_kind": "string|null",
"substantive_modules_required": ["string"],
"scope_control": "object|null",
"drafting_mode": "individual|combined_relief|group_primary_file"
}
```
### 6.8 Stage 2.2 schemas
#### 6.8.1 `ClaimInformation`
```json
{
"claim_id": "string",
"claim_group_id": "string|null",
"claim_group_role": "string|null",
"group_information_ref": "string|null",
"claim_fact_roles": "object",
"mandatory_role_fact_ids": ["string"],
"source_fact_ids": ["string"],
"fact_id_content": ["object"],
"legal_effect_structures": "object",
"cluster_sibling_fact_context": "object|null",
"claim_group_context": "object|null",
"raw_evidence_must_read": ["string"],
"pre_description_validations": ["object"]
}
```
#### 6.8.2 `ClaimGroupInformation`
```json
{
"claim_group_id": "string",
"group_title": "string",
"primary_claim_id": "string|null",
"accessory_claim_ids": ["string"],
"member_claim_ids": ["string"],
"plaintiffs": ["string"],
"defendants": ["string"],
"target_object": "object|null",
"relief_plan": ["object"],
"cause_plan": "object",
"defense_rebuttal_matrix_refs": ["string"],
"drafting_mode": "combined_relief|group_level|individual",
"pre_description_validation": {
"errors": ["object"],
"warnings": ["object"]
}
}
```
### 6.9 Stage 2.3 schemas
#### 6.9.1 `LoadedClaimContext`
```json
{
"claim_id": "string",
"claim_group_id": "string|null",
"is_group_member": "boolean",
"group_description_required": "boolean",
"standalone_description_allowed": "boolean",
"group_context": "object|null",
"required_modules": ["string"],
"blocking_false_relief_patterns": ["string"],
"validation_errors": ["object"]
}
```
#### 6.9.2 `ModuleBlock`
```json
{
"claim_id": "string|null",
"claim_group_id": "string|null",
"modules": [
{
"module_name": "string",
"module_result": "object",
"relief_constraint": "object|null",
"required_cause_paragraphs": ["string"],
"forbidden_outputs": ["string"],
"errors": ["object"],
"warnings": ["object"]
}
]
}
```
#### 6.9.3 `SelectedOperatives`
```json
{
"claim_id": "string|null",
"claim_group_id": "string|null",
"selected_operatives": "object",
"substantive_override_candidates": ["object"],
"operative_date_candidates": ["object"],
"cause_summary_focus": ["string"],
"drafting_guidance": "object",
"forbidden_outputs": ["string"]
}
```
#### 6.9.4 `ClaimDescription`
```json
{
"claim_id": "string",
"claim_group_id": "string|null",
"claim_title": "string",
"included_claim_ids": ["string"],
"description_mode": "standalone|combined_group_primary|accessory_to_group_primary|group_view",
"primary_description_file": "string|null",
"relief_summary": "string|null",
"cause_summary": "string|null",
"accessory_relief_summary": "string|null",
"description_validations": ["object"],
"canonical_group_description_file": "string|null"
}
```
## 7. 구현 우선순위
### 7.1 P0: 데이터 손실 방지
1. `claim_fact_roles` 도입
2. `source_fact_ids` flatten 전환
3. `legal_centrality`와 `proof_strength` 분리
4. `pre_description_validation_summary` 및 blocking save 도입
5. 평택시 빌라 `succession_resolution_bundle`에 배우자 단독상속 법리 반영
### 7.2 P1: claim group과 legal-effect structure
1. `claim_group_id` 도입
2. group information 생성
3. `legal_effect_structures.json` 생성
4. Stage 2.3 group-level drafting 도입
### 7.3 P2: domain modules
1. 금전채권 timeline module
2. 상호속용 module
3. 담보부 부동산 변제충당 module
4. 사해행위 가액배상 module
5. 유치권소멸 인도ㆍ부당이득 module
6. 상속포기 배우자 단독상속 module
### 7.4 P3: 사람 검토 UI 및 회귀 테스트
1. `stage1.html` legal-effect board
2. validation summary rendering
3. 네 사건 regression test
4. anti-pattern prompt tests
## 8. 최종 결론
네 개 개선 리포트의 공통 원인은 하나다. 현재 pipeline은 증거와 fact를 추출한 뒤 claim별로 좁히는 과정에서, 청구취지와 청구원인을 지배하는 법률효과 chain을 잃는다. 따라서 개선의 중심은 더 많은 문장을 생성하는 것이 아니라, Stage 1에서 법률효과 구조를 만들고 Stage 2에서 그 구조를 claim group과 module로 유지하는 것이다.
특히 평택시 빌라 사건에서는 `본건_상속우선순위.txt`의 법리에 따라 강용원을 원고로 식별하지 않아야 한다. 자녀 전부가 상속포기한 경우 배우자가 단독상속인이 되므로, 강용원은 직계존속 또는 공동 통지 발신인이라는 이유만으로 현재 권리자가 될 수 없다. 이 결론은 `succession_resolution_bundle`, `standing_context`, `selected_operatives`, `generate_description`의 금지 규칙까지 일관되게 반영되어야 한다.
이 병합안이 구현되면 Stage 1은 사건 요약 단계가 아니라 법률효과 그래프 생성 단계가 되고, Stage 2는 개별 claim 나열 단계가 아니라 소장 작성 가능한 claim group과 실체법 module 결론을 조립하는 단계가 된다.