docs(stage2): finalize v4 strategy and assets

Preserve v3 contracts while integrating accepted audit findings. Document version-free runtime assets and independent verification evidence.
This commit is contained in:
2026-08-28 17:08:03 +09:00
parent e35d979bb3
commit fef75bd30d
8 changed files with 2930 additions and 1 deletions
@@ -16,6 +16,29 @@
- 하위 에이전트(subagents)를 사용하여 핵심 테마와 교훈을 식별하고 MEMORY.md에 섹션으로 저장하라. - 하위 에이전트(subagents)를 사용하여 핵심 테마와 교훈을 식별하고 MEMORY.md에 섹션으로 저장하라.
- 향후 세션 시작 시 MEMORY.md의 이전 섹션을 참조하라. - 향후 세션 시작 시 MEMORY.md의 이전 섹션을 참조하라.
## 2026-08-28 — Stage 2 최적 개정 전략 v4 및 자산 명세
한 줄 요약: v3의 유효 계약을 보존하면서 `take_away_from_eval_v.3.md`의 채택사항을 5-task clean-slate DAG에 흡수하고, 2회 독립 병렬 전략 검증과 1회 독립 자산 검증을 거쳐 v4 전략서·상세 SVG·version-free 자산/source inventory를 완성했다.
- 최종 산출물: `stage_2_optimal_update_strategy_v.4.md` 1,507행/112,959 bytes/SHA-256 `6baac7bbc234057def8f448a5d3d990f1f3c825390ec0483cbeb61ebb6557901`; `stage_2_optimal_update_strategy_v.4_workflow.svg` 179행/12,859 bytes/`88f98feb1401bcfc403cc732b9b5664ebfdcf4e2a65842858117d0aa5315b28d`; `assets_for_stage_2_v.4.md` 471행/40,855 bytes/`48616d9d761861543adcf0783e54c3ac6b3f9d209e34bca4def7fd886567aee5`.
- 실행 backbone: `S2_00` ingress·bundle → `S2_10` 법률판단 map → `S2_20` deterministic reduce·stable group ID·case-type binding·계산·retrieval → `S2_30` group 공동 drafting → `S2_40` 검증·review wait/resume·seal·atomic commit. LLM task는 S2_10/S2_30 두 개뿐이고 나머지는 고정 Python/data contract다.
- 주요 계약: Stage 1 `fact_id/evidence_ref` 보존, 유류분 신구법·가액지급 전환, 사해행위 실체귀속/절차상대방 분리와 6-route·3-cap, 제1117조 기간 경과의 자동 제외 금지, closed generic predicate, digest-bound 변호사 receipt와 content-change 시 새 attempt, commit intent/result 분리를 명시했다.
- canonical inventory: version-free `Default_Agent/Stage_2_Clean/` 아래 YAML 92(LLM-DIRECT 2, LLM-CONTEXT 45, DUAL-CONTRACT 6, NON-LLM-DETERMINISTIC 39), 고정 Python 21(runtime 13/offline·release 8), schema 12, prompt 3 및 동적 rule/corpus/authority/fixture family다. 전략서와 자산 명세의 YAML name/class, Python, schema set 차이는 모두 0이다.
- source 경계: 현행 Stage 1 logical handoff와 배포 contract, ACTIO 지정 10종, legacy 16종, 기존 청구취지 규칙 후보 19개, raw 요건사실 6개, discrepancy/improvement 9개를 명시했으나 원문 runtime load나 과거 사건별 법리 branch는 금지한다. loader·canary·rollback·tamper 증적은 `manifest/stage2_release.json`의 signed `release_evidence[]`로 일원화했다.
- 검증: 전략은 독립 법률·architecture sub-agent 2개씩 정확히 2회 검증 후 증분 개정했고 receipt는 `evals/stage2_v4/round_1.md`, `round_2.md`에 저장했다. 자산 명세는 독립 감사 1회만 수행하여 Stage 1 input·legacy 16·회귀 source 누락을 보완했다. SVG XML/렌더, Markdown fence/table, UTF-8, trailing whitespace와 catalog 수량을 정적으로 통과했다.
- 경계: 설계·inventory 완료일 뿐 실제 YAML/Python/schema/rule/corpus 구현·배포, live LLM/Weaviate/Stage 1→2 E2E, FULL_137_PRODUCTION_READY, 대한민국 변호사 법률 검수·법원 제출 완료를 뜻하지 않는다.
## 2026-08-28 — v.3 평가 취사선택 및 개정안
한 줄 요약: 법률·AI architecture·적대적 감사 3개 독립 sub-agent 결과를 앙상블하여 eval v.3의 CRITICAL 2·MAJOR 22·MINOR 36·LOST 15를 전수 처분하고, 5-task DAG를 유지하면서 필요한 계약만 최소 복원하는 `take_away_from_eval_v.3.md`를 작성했다.
- 최종 문서: `take_away_from_eval_v.3.md`; 560행/38,585 bytes; SHA-256 `a911e0266eb762fa0b55617e0e8adb48a634590d6182a2398fb39536cf75d5c6`. CRITICAL 2·MAJOR 22·MINOR 36·LOST 15가 각 disposition 표에 정확히 1회씩 있고 Markdown fence 16개·UTF-8·trailing whitespace 0을 확인했다.
- 예정 자산 해석: 137종 `case_type_id` registry는 S2_10 실체법 판단 이후의 C25 drafting/retrieval/coverage selector일 뿐 substantive claim router가 아니다. 소가·인지 Markdown은 사람 검수용 source이며, 법률가 승인 structured CE-13·versioned law value·고정 Python calculator로 projection되어야 한다.
- 취사선택: v2-1 전문·137행 부록의 복원, legacy 16종 runtime 재사용, 전역 최고이율식, 모든 numeral 금지, multi-match의 청구권 증식, `max_tokens:0` cache warm-up은 기각했다. legacy 16종 전수 disposition은 비차단 audit이고, 지정 ACTIO 10종과 release scope의 독자 필수 명제만 Phase 0 receipt 대상이다.
- 사해행위 교정: 원물회복의 실체 귀속은 채무자 책임재산, 가액배상 지급은 원고로 구분한다. 실체 귀속주체·등기권리자·주문상 절차이행 상대방·양도수령인·통지상대방·지급수령인을 분리하고, 기존 relief-rule의 “원고에게 말소등기” 문형은 route·등기구조·공식 authority 재검수 전 quarantine한다.
- review contract: `STANDARD_ATTORNEY_REVIEW|MANDATORY_SPECIALIST_REVIEW`, closed review tags, trigger별 required receipt, package-hash-bound `ready_eligible` 도출식을 정의했다. 미충족 시 filing-decision READY만 제한하고 draft·worknote·review packet은 보존한다.
- 경계: 전략 개정 명세만 작성했다. `stage_2_optimal_update_strategy_v.3.md` 본문 개정, 신규 YAML/Python/registry/module 구현·배포, live Stage 1→2·LLM·Weaviate·cache E2E, 137종 법률가 sign-off와 실제 filing decision은 미수행이다.
## 2026-08-28 — v.3 엄격 검증 (eval 보고서 생성, 8차원 Workflow + 감사 2회) ## 2026-08-28 — v.3 엄격 검증 (eval 보고서 생성, 8차원 Workflow + 감사 2회)
한 줄 요약: `stage_2_optimal_update_strategy_v.3.md`를 8차원 finder·refuter 176 sub-agent Workflow와 3-lens 독립 감사 2회로 검증하여 CRITICAL 2·MAJOR 22·MINOR 36으로 판정하고 `eval_stage_2_optimal_update_strategy_v.3.md`에 기록했다 — v.3은 v2-1 내용을 대체 규정 없이 대량 삭제(LOST 15건)했으므로 현 상태로 Phase 0 착수 불가, C-1·C-2·MAJOR 22 반영 v.3.1이 착수 기준. 한 줄 요약: `stage_2_optimal_update_strategy_v.3.md`를 8차원 finder·refuter 176 sub-agent Workflow와 3-lens 독립 감사 2회로 검증하여 CRITICAL 2·MAJOR 22·MINOR 36으로 판정하고 `eval_stage_2_optimal_update_strategy_v.3.md`에 기록했다 — v.3은 v2-1 내용을 대체 규정 없이 대량 삭제(LOST 15건)했으므로 현 상태로 Phase 0 착수 불가, C-1·C-2·MAJOR 22 반영 v.3.1이 착수 기준.
@@ -24,7 +47,7 @@
- CRITICAL: ① 청구원인 cause atom을 Stage 1 `fact_id/evidence_ref`에 결속하는 invariant 부재(v2-1 V01/V02 회귀) ② 유류분 전환 계약(제1115조 가액지급·부칙 제3조·제1112조 4호·2024다208261·fixture 3종) 삭제 — catalog 8행 anchor가 R03이라 신법 사건에 등기 유류분 주문이 READY 통과 가능. - CRITICAL: ① 청구원인 cause atom을 Stage 1 `fact_id/evidence_ref`에 결속하는 invariant 부재(v2-1 V01/V02 회귀) ② 유류분 전환 계약(제1115조 가액지급·부칙 제3조·제1112조 4호·2024다208261·fixture 3종) 삭제 — catalog 8행 anchor가 R03이라 신법 사건에 등기 유류분 주문이 READY 통과 가능.
- MAJOR 22 = 회귀 8(137 catalog 정본·CK ID·부록 A / freshness 정책 / profile scope·X3·X4 / 사죄광고 금지 / 16 이관자산 중 12 / ingress ALL 확장·digest_guard·review_key·P1 hard gate / template byte 대조 / claim option 보존) + 소장층 신규 7(갑 호증 exhibit register / 지연손해금 일반 규칙·제397조①단서·base rate seal / 등기·별지 object registry / 동시이행 상환이행 문형 / 고유필수적 공동소송 / 원고 title chain·책임형태·client no-sue / 소장 송달로써 하는 의사표시) + 계약 7(review_policy enum / domain_config 입력 / rule doc 법정수치 / C25 predicate / corpus element_ids / 사해행위 cap operand·route·제척기간 disposition·원상회복 상대방 / 상태모델). - MAJOR 22 = 회귀 8(137 catalog 정본·CK ID·부록 A / freshness 정책 / profile scope·X3·X4 / 사죄광고 금지 / 16 이관자산 중 12 / ingress ALL 확장·digest_guard·review_key·P1 hard gate / template byte 대조 / claim option 보존) + 소장층 신규 7(갑 호증 exhibit register / 지연손해금 일반 규칙·제397조①단서·base rate seal / 등기·별지 object registry / 동시이행 상환이행 문형 / 고유필수적 공동소송 / 원고 title chain·책임형태·client no-sue / 소장 송달로써 하는 의사표시) + 계약 7(review_policy enum / domain_config 입력 / rule doc 법정수치 / C25 predicate / corpus element_ids / 사해행위 cap operand·route·제척기간 disposition·원상회복 상대방 / 상태모델).
- 법률 인용: v.3 인용 13건 중 12건 + 보고서 의존 8건(제397조①단서·제379조·제450조②·상법 54조·소촉법 3조·민소규칙 62조 2·3호·107조②·2023다254519) law.go.kr/scourt 직접 MATCH; 허위 0. `민법_지원림.pdf`(v.7 사본, 1,856쪽, PDF index 기준) 전문 추출로 법리 전제 쪽수 인용. - 법률 인용: v.3 인용 13건 중 12건 + 보고서 의존 8건(제397조①단서·제379조·제450조②·상법 54조·소촉법 3조·민소규칙 62조 2·3호·107조②·2023다254519) law.go.kr/scourt 직접 MATCH; 허위 0. `민법_지원림.pdf`(v.7 사본, 1,856쪽, PDF index 기준) 전문 추출로 법리 전제 쪽수 인용.
- 교훈: (1) "대폭 개정"은 삭제 회귀를 낳는다 — 후속 버전 평가는 반드시 전신 대비 LOST/SUPERSEDED 표를 만들어야 하고, 개정본은 "잔존 조항 승계표"를 스스로 달아야 한다. (2) 감사자 지적도 실측 없이 수용하면 오류가 전파된다(1차 감사의 "8행"을 2차가 9행으로 잡음; ledger에 남긴 수치가 재감사의 anchor가 됨). (3) law.go.kr 조문은 `lsSideInfoP.do?docCls=jo&joNo=NNNN&lsiSeq=…` 패턴이면 fetch 가능(민법 284415·상법 272919·소촉법 286417·민소규칙 283113) — "제목만 반환"으로 포기하지 말 것. (4) 사해행위 원상회복은 형태별 급부 상대방이 다르다(말소등기·가액배상=원고, 배당금채권 양도·진정명의회복=채무자). - 교훈: (1) "대폭 개정"은 삭제 회귀를 낳는다 — 후속 버전 평가는 반드시 전신 대비 LOST/SUPERSEDED 표를 만들어야 하고, 개정본은 "잔존 조항 승계표"를 스스로 달아야 한다. (2) 감사자 지적도 실측 없이 수용하면 오류가 전파된다(1차 감사의 "8행"을 2차가 9행으로 잡음; ledger에 남긴 수치가 재감사의 anchor가 됨). (3) law.go.kr 조문은 `lsSideInfoP.do?docCls=jo&joNo=NNNN&lsiSeq=…` 패턴이면 fetch 가능(민법 284415·상법 272919·소촉법 286417·민소규칙 283113) — "제목만 반환"으로 포기하지 말 것. (4) 사해행위취소의 원물회복은 채무자 책임재산으로 귀속되고 가액배상은 취소채권자에게 지급된다. 다만 주문상 절차이행 상대방은 실체 귀속과 별도 필드로 두고 route·등기구조·공식 authority에 결속해야 한다.
- 경계: 정적 검증. Stage 1 live 산출물 대조, 137종 법률가 sign-off, 인지규칙·상법 45조 직접 확인, 대부업법 제20702호 부칙 적용례는 미수행. - 경계: 정적 검증. Stage 1 live 산출물 대조, 137종 법률가 sign-off, 인지규칙·상법 45조 직접 확인, 대부업법 제20702호 부칙 적용례는 미수행.
## 2026-08-28 — Stage 2 최적 개정 전략 v3 ## 2026-08-28 — Stage 2 최적 개정 전략 v3
@@ -0,0 +1,471 @@
# Stage 2 v4 자산·source 명세
> 기준 문서: stage_2_optimal_update_strategy_v.4.md
>
> 기준일: 2026-08-28
>
> 상태: 설계상 생성·배포해야 할 inventory. 이 문서는 해당 파일의 구현·배포·법률가 검수·live 실행 완료를 의미하지 않는다.
## 0. 읽는 법과 총량
신규 runtime 배포 root는 다음 하나다.
**R = Case_02_Comparison_Research/Default_Agent/Stage_2_Clean/**
기존 source·설계자료의 repository root는 다음과 같이 축약한다.
**P = Case_02_Comparison_Research/**
§1의 모든 위치는 R 아래의 정확한 상대경로다. 따라서 예를 들어 workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml의 완전한 배포위치는 R/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml이다. 이 신규 배포 tree에는 v2, v3, v4 같은 version folder를 쓰지 않고 file 내부 version field, SHA-256 및 release manifest digest로 version을 관리한다.
| 물리 단위 | 계획 수량 | 성격 |
|---|---:|---|
| canonical YAML | 92 | LLM 직접 2, LLM context 45, dual contract 6, deterministic/non-LLM 39 |
| 고정 Python | 21 | runtime 13, offline build/release 8 |
| Stage 2 JSON Schema | 11 | workflow IO·deployment·migration/regression |
| Weaviate collection schema | 1 | corpus 전용 별도 JSON schema |
| static prompt Markdown | 3 | P00, P10, P30 |
| 절차 설명 source Markdown | 2 | 소가 산정, 민사소송 등 인지규칙 |
| 사건종류별 청구취지 규칙 Markdown | N_claim_capable | 137 전체가 아니라 승인된 claim-capable subset에만 1개씩 |
| corpus raw Markdown | N_source_doc | 승인된 source document 수에 따라 증가 |
| authority local capture | N_authority | VERIFIED_AND_SEALED authority별 1개 |
| 고정 manifest/receipt data file | 10 | release 5, corpus 3, migration/regression 2; loader·canary·rollback·tamper 증적은 stage2 release 내부 signed object |
| regression fixture JSON | N_fixture + N_mutation | finding별 정상 fixture와 mutation/property fixture; 승인 범위에 따라 증가 |
N_claim_capable과 N_source_doc는 Phase 0·3의 법률가 disposition 및 corpus coverage가 확정되기 전에는 숫자로 고정하지 않는다. “137종 catalog”는 “청구취지 규칙 137개”와 동의어가 아니다.
---
## 1. 신규 생성·배포 자산
### 1.1 canonical YAML 92개
#### A. orchestration YAML 5개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml | NON-LLM-DETERMINISTIC | Stage 1 allowlist·schema/hash·conservation 검증, context/cluster DAG와 bundle plan 생성 |
| workflows/S2_10_domain_relief_resolution_map.yml | LLM-DIRECT | dependency wave별 청구권·항변·구제수단 판단과 typed DomainVerdict 생성 |
| workflows/S2_20_canonical_relief_plan_reduce.yml | NON-LLM-DETERMINISTIC | option reduce, stable group ID, exact case type binding, 계산·retrieval·ReliefPlan freeze |
| workflows/S2_30_claim_group_draft_map.yml | LLM-DIRECT | frozen group별 청구취지·청구원인·절차선언·worknote atom 공동작성 |
| workflows/S2_40_final_review_render_and_commit.yml | NON-LLM-DETERMINISTIC | closed render, V01~V18, review wait/resume, seal·atomic commit·operational receipt |
#### B. substantive profile YAML 22개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| registry/substantive/EC-00_contract_general.yml | LLM-CONTEXT | 계약 공통 성립·효력·이행·해제·손해배상 |
| registry/substantive/E-01_juristic_act_validity.yml | LLM-CONTEXT | 법률행위 무효·취소·추인·원상회복 |
| registry/substantive/E-02_contract_money_claim.yml | LLM-CONTEXT | 대금·대여금 등 계약상 금전채권 |
| registry/substantive/E-03_parties_liability_succession.yml | LLM-CONTEXT | 보증·연대·승계·상호속용 등 책임주체 |
| registry/substantive/E-04_unjust_enrichment.yml | LLM-CONTEXT | 부당이득 유형·법률상 원인·반환범위 |
| registry/substantive/E-05_tort_general.yml | LLM-CONTEXT | 일반 불법행위·인과관계·손해·과실상계 |
| registry/substantive/E-06_professional_liability.yml | LLM-CONTEXT | 전문직 위임·주의의무·손해 |
| registry/substantive/E-07_construction_defect.yml | LLM-CONTEXT | 공사대금·추가공사·하자·감액 |
| registry/substantive/E-08_lease_deposit.yml | LLM-CONTEXT | 임대차보증금·명도·공제·동시이행 |
| registry/substantive/E-09_registry_transfer_claims.yml | LLM-CONTEXT | 소유권이전·말소·회복·경정 등기 |
| registry/substantive/E-10_secured_registry.yml | LLM-CONTEXT | 근저당·전세권·담보권 등기·말소 |
| registry/substantive/E-11_possession_vindication.yml | LLM-CONTEXT | 인도·명도·방해배제·점유 |
| registry/substantive/E-12_co_ownership_boundary.yml | LLM-CONTEXT | 공유물분할·경계·지분 관계 |
| registry/substantive/E-13_creditor_preservation.yml | LLM-CONTEXT | 채권자대위·사해행위취소·보전 |
| registry/substantive/E-14_execution_linked_claims.yml | LLM-CONTEXT | 배당·청구이의·집행 관련 본안 |
| registry/substantive/E-15_succession_family_property.yml | LLM-CONTEXT | 상속·유류분·상속재산 귀속 |
| registry/substantive/E-16_negotiable_instruments.yml | LLM-CONTEXT | 어음·수표 권리·항변 |
| registry/substantive/E-17_labor_wage_claims.yml | LLM-CONTEXT | 임금·수당·퇴직금 |
| registry/substantive/E-18_org_resolution_status.yml | LLM-CONTEXT | 회사·조합 결의·지위·청산 |
| registry/substantive/E-19_insurance_claims.yml | LLM-CONTEXT | 보험금·면책·대위·중복보험 |
| registry/substantive/E-20_ip_claims.yml | LLM-CONTEXT | 지식재산 침해·금지·손해배상 |
| registry/substantive/E-21_media_personality_rights.yml | LLM-CONTEXT | 명예·인격권·보도 관련 구제 |
#### C. crosscut profile YAML 5개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| profiles/crosscut/E-00_residual_unrouted.yml | LLM-CONTEXT | 기존 profile로 routing되지 않는 이슈를 보존하고 review로 전달 |
| profiles/crosscut/X1_notice_lifecycle.yml | LLM-CONTEXT | 최고·통지·해제·송달의 actor·도달·효과 lifecycle |
| profiles/crosscut/X2_asset_identity_lineage.yml | LLM-CONTEXT | 목적물 동일성·변동·등기/점유 lineage |
| profiles/crosscut/X3_procedure_standing_relief.yml | LLM-CONTEXT | 당사자적격·소의 이익·필수당사자·구제 적합성 |
| profiles/crosscut/X4_response_admission_defense.yml | LLM-CONTEXT | 항변·재항변·불리한 사실·자백위험·선진술 |
#### D. special-law profile YAML 13개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| profiles/special_law/SL-AUTO_motor_vehicle.yml | LLM-CONTEXT | 자동차손해 책임·보험·과실 |
| profiles/special_law/SL-INDUSTRIAL_ACCIDENT.yml | LLM-CONTEXT | 산업재해·보상·손해 조정 |
| profiles/special_law/SL-PRODUCT_LIABILITY.yml | LLM-CONTEXT | 제조물책임 요건·면책·손해 |
| profiles/special_law/SL-RESIDENTIAL_LEASE.yml | LLM-CONTEXT | 주택임대차 대항력·우선변제·승계 |
| profiles/special_law/SL-COMMERCIAL_LEASE.yml | LLM-CONTEXT | 상가임대차 대항력·갱신·권리금 |
| profiles/special_law/SL-LABOR.yml | LLM-CONTEXT | 노동관계 강행규정·지위·기간 |
| profiles/special_law/SL-STATE_LIABILITY.yml | LLM-CONTEXT | 국가배상 특별요건·공법경계·review trigger |
| profiles/special_law/SL-IP-PATENT.yml | LLM-CONTEXT | 특허·실용신안 권리범위·침해·구제 |
| profiles/special_law/SL-IP-COPYRIGHT.yml | LLM-CONTEXT | 저작권·저작인격권 침해·구제 |
| profiles/special_law/SL-IP-OTHER.yml | LLM-CONTEXT | 상표·디자인·부정경쟁·영업비밀 |
| profiles/special_law/SL-MEDIA.yml | LLM-CONTEXT | 정정·반론·추후보도와 명예구제 |
| profiles/special_law/SL-TRANSPORT_MARITIME.yml | LLM-CONTEXT | 운송·해상 책임기간·면책·책임제한 |
| profiles/special_law/SL-CONSUMER_CONTRACT.yml | LLM-CONTEXT | 소비자성·거래방식·철회·무효·환급 |
#### E. calculation YAML 17개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| registry/calculations/CE-01_interest_delay.yml | NON-LLM-DETERMINISTIC | obligation별 원금·이자·지연손해금 rate timeline |
| registry/calculations/CE-02_allocation_setoff_balance.yml | NON-LLM-DETERMINISTIC | 변제충당·상계·잔액 |
| registry/calculations/CE-03_limitation_deadline.yml | NON-LLM-DETERMINISTIC | 시효·제척기간·출소기간·urgency와 항변 axis |
| registry/calculations/CE-04_valuation.yml | NON-LLM-DETERMINISTIC | 사용이익·목적물 가치 |
| registry/calculations/CE-05_personal_injury.yml | NON-LLM-DETERMINISTIC | 일실수입·치료비·과실상계 |
| registry/calculations/CE-06_construction_defect.yml | NON-LLM-DETERMINISTIC | 기성·추가공사·하자보수·감액 |
| registry/calculations/CE-07_lease_use_gain.yml | NON-LLM-DETERMINISTIC | 임대차 공제·사용이익 |
| registry/calculations/CE-08_inheritance_reserved_share.yml | NON-LLM-DETERMINISTIC | 상속분·유류분 가액·신구법 branch |
| registry/calculations/CE-09_wage_severance.yml | NON-LLM-DETERMINISTIC | 임금·수당·퇴직금 |
| registry/calculations/CE-10_actio_insolvency_value.yml | NON-LLM-DETERMINISTIC | 무자력·공동담보·사해행위 3-cap |
| registry/calculations/CE-11_distribution_share_division.yml | NON-LLM-DETERMINISTIC | 배당·지분·분할금액 |
| registry/calculations/CE-12_insurance.yml | NON-LLM-DETERMINISTIC | 보험가액·중복보험·공제 |
| registry/calculations/CE-13_court_value_cost.yml | NON-LLM-DETERMINISTIC | 소가·인지·송달비용·병합 branch |
| registry/calculations/CE-R1_ip_damage.yml | NON-LLM-DETERMINISTIC | 지식재산 손해액 |
| registry/calculations/CE-R2_org_liquidation.yml | NON-LLM-DETERMINISTIC | 회사·조합 청산·분배 |
| registry/calculations/CE-R3_transport_maritime.yml | NON-LLM-DETERMINISTIC | 운송·해상 손해·책임제한 |
| registry/calculations/CE-R4_financial_instrument.yml | NON-LLM-DETERMINISTIC | 금융상품·계좌·정산 |
#### F. renderer YAML 6개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| renderers/R01_money_payment.yml | NON-LLM-DETERMINISTIC | 금전지급 AST/template와 typed slot |
| renderers/R02_delivery_possession.yml | NON-LLM-DETERMINISTIC | 인도·명도·퇴거 AST/template |
| renderers/R03_declaration_registry.yml | NON-LLM-DETERMINISTIC | 의사표시·이전/말소/회복/경정 등기 AST/template |
| renderers/R04_special_nonmoney_performance.yml | NON-LLM-DETERMINISTIC | 특별 비금전 이행 AST/template |
| renderers/R05_declaratory.yml | NON-LLM-DETERMINISTIC | 확인청구와 소의 이익 slot |
| renderers/R06_constitutive_judgment_challenge.yml | NON-LLM-DETERMINISTIC | 형성·불복·공유물분할 method preference |
#### G. control·drafting·ACTIO·deployment YAML 24개
| 이름·배포 위치(R 기준) | 작업 성격 | 역할 |
|---|---|---|
| manifest/case_type_registry.yml | NON-LLM-DETERMINISTIC | 137 catalog row, canonical ID/name, row kind, predicate, claim disposition |
| manifest/case_type_rule_registry.yml | NON-LLM-DETERMINISTIC | case type→renderer·rule·corpus·CE-13·review exact binding |
| registry/drafting/case_type_relief_rules.yml | DUAL-CONTRACT | claim-capable structured 청구취지 rule와 non-claim disposition |
| registry/review/review_policy_registry.yml | NON-LLM-DETERMINISTIC | base/tag/trigger→필수 receipt와 READY eligibility |
| registry/authority/authority_registry.yml | DUAL-CONTRACT | proposition·temporal scope·official locator·negative treatment |
| law_values/general_law_values.yml | NON-LLM-DETERMINISTIC | 이율·기간·상한 등 versioned 법정수치 |
| law_values/court_fee_values.yml | NON-LLM-DETERMINISTIC | 소가·인지·송달비용의 시점별 수치 |
| registry/temporal/inheritance_reserved_share.yml | DUAL-CONTRACT | 상속개시일 기준 유류분 권리·remedy·시효·이자 branch |
| registry/drafting/forbidden_relief_rules.yml | DUAL-CONTRACT | 강제 사죄광고 등 금지 relief와 허용 branch |
| registry/drafting/counter_performance_rules.yml | DUAL-CONTRACT | 동시이행·상환이행·제공·거절 문형과 계산 연결 |
| registry/drafting/procedural_declaration_rules.yml | DUAL-CONTRACT | 소장 송달 의사표시 actor·도달·효과 |
| registry/corpus/requirement_fact_scope.yml | NON-LLM-DETERMINISTIC | collection/query/tie-break/crosswalk/replay closed contract |
| routing/actio_pauliana_route_registry.yml | NON-LLM-DETERMINISTIC | ACTIO 6 route·operand·recipient·renderer |
| routing/actio_pauliana_mortgage_route.yml | NON-LLM-DETERMINISTIC | 담보설정·말소·경매·배당 route |
| profiles/overlays/ACTIO-MORTGAGE.yml | LLM-CONTEXT | 기존 담보부 목적물 양도·실채무·공동담보 |
| profiles/overlays/ACTIO-MORTGAGE-CREATION.yml | LLM-CONTEXT | 사해적 담보권 설정·배당 route |
| profiles/overlays/ACTIO-ENCUMBERED-TRANSFER.yml | LLM-CONTEXT | 부담부 소유권이전·가액배상 |
| profiles/overlays/ACTIO-PRESERVED-CLAIM-BUNDLE.yml | LLM-CONTEXT | 복수 피보전채권·이자·변제·담보부족 |
| profiles/overlays/ACTIO-DEFENSE-MAP.yml | LLM-CONTEXT | 충분담보·상계·수익자/전득자 선의·재항변 |
| validators/actio_value_compensation_invariants.yml | NON-LLM-DETERMINISTIC | ACTIO route·3-cap·기간·당사자·recipient invariant |
| registry/regression/finding_fixture_map.yml | NON-LLM-DETERMINISTIC | discrepancy finding→fixture→invariant regression mapping |
| registry/cache/prompt_cache_policy.yml | NON-LLM-DETERMINISTIC | cache prefix·key·breakpoint·TTL·PII·telemetry policy |
| migration/legacy_asset_disposition.yml | NON-LLM-DETERMINISTIC | legacy 16종 MIGRATE/REBUILD/DROP와 runtime load 0 |
| deployment/stage2_loader_binding.yml | NON-LLM-DETERMINISTIC | 5 workflow exact path/hash와 legacy fallback 0 |
### 1.2 고정 Python 21개
#### Runtime 13개
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| runtime/s2_00_ingress.py | input allowlist·schema/hash·conservation·context·cluster·bundle 실행 |
| runtime/s2_20_reduce.py | option portfolio·stable group·binding/calculation/retrieval/report orchestration |
| runtime/s2_40_commit.py | reduce·state·review wait/resume·seal·atomic commit·recovery |
| runtime/c25_case_type_bind.py | closed predicate exact case type binding |
| runtime/c27_query_plan.py | role·element별 deterministic query plan |
| runtime/c28_weaviate_retrieve.py | exact metadata filter·hybrid retrieval·replay receipt |
| runtime/c29_pack_verify.py | snapshot/hash/approval/crosswalk·injection 검증 |
| runtime/c45_document_assembler.py | typed atom에서 closed AST/template 조립 |
| runtime/calculators/registry_engine.py | CE YAML dispatch·operand·law-value·receipt |
| runtime/rendering/closed_renderer.py | R01~R06 canonical render·normalization |
| runtime/validation/invariant_runner.py | V01~V18·mutation/property oracle |
| runtime/authority/authority_preflight.py | temporal/freshness/dependency seal |
| runtime/llm/structured_runner.py | S2_10/S2_30 structured call·schema repair 1회·usage part |
#### Offline build·release 8개
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| offline_build/compile_case_type_registry.py | 137 source catalog→registry, ordinal/hash exact 검증 |
| offline_build/compile_relief_rule_projection.py | 승인 Markdown→structured relief row와 semantic diff |
| offline_build/build_authority_law_value_release.py | official capture·temporal authority·law-value seal |
| offline_build/build_corpus_snapshot.py | raw corpus chunk·metadata·crosswalk·snapshot manifest |
| offline_build/build_release_manifests.py | module/case-type/authority/corpus/stage2 release 조립 |
| release_ops/stage2_loader.py | loader binding과 stage2 release만 읽는 runtime loader |
| release_ops/release_validator.py | physical hash·schema·dependency·semantic receipt·92 YAML 검증 |
| release_ops/canary_rollback.py | subset canary·rollback digest·tamper test |
Python은 사건별 실행결과에 맞춰 동적으로 생성되는 코드가 아니다. 위 고정 코드는 YAML/JSON data contract와 run artifact를 입력으로 받아 data-driven branch만 실행한다.
### 1.3 schema 12개
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| schemas/ingress.schema.json | Stage 1 input manifest·handoff resolver·diagnostic |
| schemas/context.schema.json | 사실·증거·목적물·당사자·slot·cluster·bundle context |
| schemas/domain_verdict.schema.json | DomainVerdict·claim option·provenance·impact |
| schemas/relief_plan.schema.json | option disposition·atomic claim·group·ReliefPlan·plan ledger |
| schemas/binding_retrieval.schema.json | signature/predicate/binding·query/result/receipt/pack·crosswalk |
| schemas/calculation.schema.json | CE input·operand·period·law value·receipt |
| schemas/draft_atoms.schema.json | relief/cause/declaration/worknote atom |
| schemas/review_status.schema.json | issue·request/receipt·lawyer judgment·validation·state |
| schemas/package.schema.json | candidate manifest/digest·documents·review packet·package |
| schemas/deployment.schema.json | manifests·loader·commit intent/result |
| schemas/migration_regression.schema.json | migration disposition/receipt·finding map·fixture |
| corpus/weaviate_collection.schema.json | Weaviate object·metadata·tenant/index collection schema |
### 1.4 prompt·법률 설명 source·청구취지 rule
| 이름·배포 위치(R 기준) | 역할 | 수량·생성 조건 |
|---|---|---|
| prompts/P00_system_and_safety_contract.md | 공통 role·source hierarchy·금지·provenance·security prefix | 1 |
| prompts/P10_legal_resolution_contract.md | S2_10 판단 순서·output contract·self-check | 1 |
| prompts/P30_joint_drafting_contract.md | S2_30 group 공동작성·atom·금지·self-check | 1 |
| procedural_rules/소가_산정_규칙.md | CE-13 규칙을 사람이 검수하는 설명 source | 1; runtime parsing 금지 |
| procedural_rules/민사소송_등_인지규칙.md | 인지·송달비용 branch의 사람이 검수하는 설명 source | 1; runtime parsing 금지 |
| rules/relief/<case_type_id>.md | 해당 claim-capable 사건종류의 청구취지작성규칙과 authority/provenance | N_claim_capable; DOCTRINE_TOPIC/GROUP 및 미승인 GENERIC에는 생성 금지 |
Markdown 청구취지 규칙은 실행코드가 아니다. 승인 후 registry/drafting/case_type_relief_rules.yml로 projection되고, runtime은 structured row를 실행하며 Markdown hash를 semantic source로 대조한다.
### 1.5 authority·law-value 자산과 source
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| authority/source_captures/<authority_id>.json | official URL·원문/발췌 hash·retrieved_at·시행/선고일·temporal metadata |
| registry/authority/authority_registry.yml | capture에서 승인된 proposition·route·효력기간·후속취급의 정본 |
| law_values/general_law_values.yml | output-affecting 법정수치의 authority-bound token |
| law_values/court_fee_values.yml | 소가·인지·송달비용 수치의 authority-bound token |
| manifest/authority_release.json | 사용 가능한 capture·registry·law-value exact set/hash seal |
authority source는 §2.5의 공식 웹 원문에서 수집한다. CANDIDATE_UNSEALED는 local capture가 있어도 runtime 사용 불가이며, A00의 VERIFIED_AND_SEALED와 법률가 review가 있어야 release에 포함된다.
### 1.6 corpus·Weaviate 자산
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| corpus/raw/<case_type_id>/<source_doc_id>.md | 법률가 승인 요건사실 raw source의 canonical 사본 |
| corpus/source_manifest.json | source document ID·case type/subtype·hash·approval·authority |
| corpus/chunk_manifest.jsonl | heading-aware chunk별 section/offset·element/role·hash metadata |
| corpus/weaviate_collection.schema.json | collection/tenant/object metadata와 index schema |
| corpus/build_receipt.json | chunk·embedding/reranker/index config·snapshot build receipt |
| registry/corpus/requirement_fact_scope.yml | exact filter·query·score/tie-break·slot crosswalk·replay contract |
| manifest/corpus_release.json | collection/schema/snapshot/chunk/crosswalk exact set/hash seal |
현재 요건사실 raw 6개는 seed 후보일 뿐이다. 위 canonical corpus로 승인·이관되고 coverage manifest와 fixture가 닫히기 전에는 137종 coverage 증거가 아니다.
### 1.7 manifest·migration·regression data
| 이름·배포 위치(R 기준) | 역할 |
|---|---|
| manifest/module_manifest.json | module scope·IO·authority·dependency·physical hash·status |
| manifest/case_type_coverage.json | 137 row별 rule·renderer·corpus·profile·CE/SL·review·sign-off |
| manifest/authority_release.json | authority/law-value/temporal dependency seal |
| manifest/corpus_release.json | corpus snapshot·schema·chunk·crosswalk seal |
| manifest/stage2_release.json | 모든 manifest/config/fixture/loader receipt를 묶는 release oracle |
| migration/actio_assets_receipt.json | 지정 ACTIO 10종 source path/raw hash→canonical proposition·fixture 이관 이력 |
| tests/fixtures/regression_manifest.json | finding→fixture→invariant·expected result와 external gold hash |
| corpus/source_manifest.json | corpus source set·approval·hash |
| corpus/chunk_manifest.jsonl | ordered chunk metadata |
| corpus/build_receipt.json | corpus build·snapshot·index config receipt |
| tests/fixtures/cases/<fixture_id>.json | EXPLICIT/DERIVED 사실·source locator·operand·expected result/hash를 가진 정상 회귀 fixture |
| tests/fixtures/mutations/<mutation_id>.json | 단일 결함을 주입한 mutation/property fixture와 기대 invariant code |
동일 파일이 §1.5·§1.6과 이 표에 다시 나타난 것은 역할별 view일 뿐 물리 파일을 중복 생성한다는 뜻이 아니다.
loader·canary·rollback·tamper 결과는 별도 경로를 암묵적으로 만들지 않는다. 모두 `manifest/stage2_release.json`의 서명된 `release_evidence[]` object로 저장하며, 각 object는 `evidence_type`, 실행주체, 입력 release digest, 결과, 산출시각, tool/version, payload hash와 signer를 가진다.
---
## 2. 재사용·이관할 기존 source와 상류 input
§2의 경로는 별도 표기가 없으면 P 기준이다. 이 파일들은 신규 Stage 2 canonical 배포자산 그 자체가 아니다. Stage 1 산출물은 read-in-place input이고, catalog·예시·ACTIO·평가자료는 compile/migration/regression source다. source path에 존재하는 v.7, v.8, v1, v3 표기는 역사적 원본명이며 신규 배포경로 version-free 규칙의 예외가 아니라 “원본 위치 기록”이다.
### 2.1 현행 Stage 1 producer·runtime input
| 기존 이름·위치 | Stage 2에서의 역할 | 처리 |
|---|---|---|
| YAML_Prompts/1. Stage_1/v.8/stage_1_part_1_v.8.yml | evidence·event·BO·handoff 생산 명세 확인 | 실행 YAML 자체를 runtime context로 주입하지 않고 실제 run output만 소비 |
| YAML_Prompts/1. Stage_1/v.8/stage_1_part_2_v.8.yml | LES·domain activation·review 생산 명세 확인 | 동일 |
| YAML_Prompts/1. Stage_1/v.8/stage_1_part_3_v.8.yml | legal-event/review handoff 생산 명세 확인 | 동일 |
| YAML_Prompts/1. Stage_1/v.8/stage_1_part_4_v.8.yml | Fact Ledger·signal·final review 생산 명세 확인 | 동일 |
| <stage1_run_root>/BO.json | 당사자·법률행위·목적물과 source BO identity | handoff resolver가 봉인한 실제 path/hash를 S2_00이 읽음 |
| <stage1_run_root>/evidence_indexed.json | 내부 evidence ID·문서 provenance·호증 seed | 동일 |
| <stage1_run_root>/evidence_event_candidates.json | 이행기·최고·도달·해제·제공·거절 event 후보 | 동일 |
| <stage1_run_root>/legal_effect_structures.json | domain/type/route/calculation request와 BO 역색인 | 동일 |
| <stage1_run_root>/Fact_Ledger_base.json | fact_id와 BO·evidence·LES·계산 연결 | 동일; typed 사실주장의 유일 anchor |
| <stage1_run_root>/signals/signal_manifest.json | canonical signal ALL read set·schema/hash 목록 | manifest에 열거된 모든 signal을 독립 순회 |
| <stage1_run_root>/<signal_manifest.ALL[*].path> | 기한·계산·절차·구제 signal 실제 payload | signal manifest의 exact path/hash만 사용 |
| <stage1_run_root>/client_goal.json | 의뢰인 목표와 법률상 가능한 relief의 분리 | 누락 시 목표 최적화 scope를 review로 표시 |
| <stage1_run_root>/domain_activation_manifest.json | expected/active domain 집합·config refs | handoff digest와 활성 set 보존 검사 |
| <stage1_run_root>/stage1_contract_manifest.json | 기본 경로와 다른 배포본의 logical→physical mapping | 조건부 입력; 기본 exact path와 다를 때만 요구 |
| <stage1_run_root>/defendant_target_matrix.json | 피고별 지시·회수대상 | optional; 부재를 청구권 부존재로 해석 금지 |
| <stage1_run_root>/asset_status.json | 집행가능성·회수위험 관련 자산상태 | optional; 법률상 성립 여부와 분리 |
| <stage1_run_root>/quality_gates/B1_evidence_indexed_gate.json | evidence-index gate와 finding/source hash | S2_00 allowlist read |
| <stage1_run_root>/quality_gates/B2_event_candidates_gate.json | event-candidate gate와 finding/source hash | S2_00 allowlist read |
| <stage1_run_root>/quality_gates/stage1_part1_soft_gate_handoff.json | handoff status·review conservation·7-key digest guard | S2_00 allowlist read |
| <stage1_run_root>/quality_gates/stage1_part2_review_handoff.json | Part 2 review universe | S2_00 allowlist read |
| <stage1_run_root>/quality_gates/stage1_part3_review_handoff.json | Part 3 LES review | S2_00 allowlist read |
| <stage1_run_root>/quality_gates/stage1_part4_review_handoff.json | final signal/LES/ledger review | S2_00 allowlist read |
| <stage1_run_root>/stage1_tmp/fact_ledger/fact_ledger_writer_report.json | Fact Ledger row·hash·writer report | S2_00 allowlist read |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/runtime_manifest.json | 현행 Stage 1 runtime contract와 asset set | 배포본의 exact digest를 ingress contract source로 참조 |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/domains/_registry_index.json | domain ID·config registry | activation manifest와 registry set 비교 |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/domains/<domain_id>/domain_config.json | element/opposing/defense slot과 party/object rule | 배포된 활성 set/hash를 ingress manifest로 참조 |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/platform/schemas/*.json | BO/LES/Ledger/domain handoff schema | 실제 producer schema ID/hash 검증 source |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/signals/schemas/*.json | signal envelope·manifest·category schema | signal별 schema 검증 source |
| YAML_Prompts/1. Stage_1/v.7/extension_research/Default_Agent/signals/signal_registry.v2.json | signal 종류·schema·consumer registry | manifest ALL set과 registry coverage 비교 |
위 표의 `<stage1_run_root>/...` 표기는 logical canonical path다. 실제 물리경로는 Stage 1 handoff resolver가 봉인한 mapping과 raw hash를 사용하며 Stage 2가 추정하거나 이름 검색하지 않는다. `stage1_contract_manifest.json`은 기존 Stage 1의 새 production output을 요구하는 것이 아니라, 기본 경로와 다른 배포 환경에서만 사용하는 조건부 resolver 계약이다.
### 2.2 137종 catalog source
| 기존 이름·위치 | 역할 | canonical 결과 |
|---|---|---|
| P/case_kinds.md | 제외 범주를 뺀 137 source row의 label·ordinal 기준 | R/manifest/case_type_registry.yml |
다른 사본을 자동 선택하지 않는다. compile 시 이 source의 raw SHA-256·ordinal·label exact equality를 봉인한다.
### 2.3 ACTIO 지정 migration source 10종
기존 source root는 P/YAML_Prompts/2. Stage_2/사해행위취소소송관련기존자산/ 이다.
| 원본 파일명 | 이관 목적 | canonical target family |
|---|---|---|
| actio_pauliana_calc_v1.txt | 가액배상 operand·proxy 경고·계산 후보 추출 | CE-10·ACTIO invariant·fixture |
| actio_pauliana_calc_v3_mini_v1.json | 축약 계산 rule 후보 비교 | CE-10·migration receipt |
| actio_pauliana_case_type_determination.csv | route 분류 후보 추출 | ACTIO route registry |
| actio_pauliana_mortgage_actio_calc_both_v1.txt | 담보부 양도/설정 분기와 계산 후보 | 두 mortgage overlay·route |
| actio_pauliana_mortgage_v1.txt | 선순위 담보·실채무·최고액 operand | ACTIO-MORTGAGE·CE-10 |
| mortgage_fraudulent_act_module_v1_mini_v1.json | 사해적 담보설정 module 후보 | ACTIO-MORTGAGE-CREATION |
| 부담부_부동산소유권이전_사해행위_가액배상_모듈.md | 부담부 이전·가액배상 proposition 후보 | ACTIO-ENCUMBERED-TRANSFER |
| 사해행위취소_가액배상_최종화게이트_모듈.md | 가액배상 final gate 후보 | ACTIO invariant·fixture |
| 사해행위취소_피보전채권번들_검증_모듈.md | 피보전채권 bundle·cap 후보 | ACTIO-PRESERVED-CLAIM-BUNDLE |
| 사해행위취소_항변통합_모듈.md | 선의·충분담보·상계·재항변 후보 | ACTIO-DEFENSE-MAP |
신규 runtime은 이 10개 원본을 직접 읽지 않는다. migration receipt가 raw basename bytes/NFC display name/hash, 추출 proposition, official authority 대조, 교정/drop 이유와 canonical target hash를 기록한다.
### 2.4 legacy module migration source 16종
기존 source root는 P/Default_Agent_updated/Modules_and_New_Rules/ 이다. 이는 `migration/legacy_asset_disposition.yml`의 16/16 audit 모집단이며 신규 runtime이 직접 읽거나 fallback하는 자산이 아니다.
| 원본 파일명 | 주요 검토 대상 | 처리 계약 |
|---|---|---|
| 금전채권_이행기_시효_지연손해금_작성규칙.md | 이행기·시효·지연손해금 명제 | MIGRATE/REBUILD/DROP + target/reason/hash |
| 상호속용_영업양수인_책임_작성규칙.md | 상호속용 책임주체 명제 | 동일 |
| 법정변제충당_담보채무_지분말소_모듈.md | 변제충당·담보채무·지분말소 | 동일 |
| 담보권실행경매_공신력_항변_모듈.md | 경매 공신력·항변 | 동일 |
| 미등기건물_토지사용_부당이득_부진정연대_모듈.md | 토지사용이익·부진정연대 | 동일 |
| 차임감정표_법률상_기준선택_모듈.md | 차임 산정 기준 | 동일 |
| 임대차보증금_부당이득_배제검토_모듈.md | 계약/부당이득 경합 | 동일 |
| 부담부_부동산소유권이전_사해행위_가액배상_모듈.md | 부담부 이전·가액배상 | 동일 |
| 사해행위취소_피보전채권번들_검증_모듈.md | 피보전채권 bundle | 동일 |
| 사해행위취소_항변통합_모듈.md | ACTIO 항변·재항변 | 동일 |
| 사해행위취소_가액배상_최종화게이트_모듈.md | ACTIO 계산 final gate | 동일 |
| 유치권소멸_건물인도_부당이득반환_모듈.md | 유치권·인도·부당이득 | 동일 |
| 상속포기_배우자단독상속_모듈.md | 상속포기·배우자 지위 | 동일 |
| 통지_도달_법률효과_모듈.md | 통지 lifecycle | 동일 |
| 별지목록_등기부_asset_alias_모듈.md | 목적물·등기부 alias | 동일 |
| 피고답변서_항변추출_모듈.md | 답변서 항변 추출 | 동일 |
이 root의 ACTIO 관련 4개와 §2.3 root의 동명 파일은 서로 다른 물리 source다. basename이 같아도 자동 병합하지 않고 각 raw path/hash·명제·disposition을 별도로 기록한 뒤 semantic/hash deduplication을 수행한다.
### 2.5 discrepancy·improvement 회귀 source
| 기존 이름·위치 | 수량 | 역할 | canonical 결과 |
|---|---:|---|---|
| P/discrepancy_report_1.md ~ discrepancy_report_4.md | 4 | 과거 불일치 finding·사례·기대조건 추출 | R/tests/fixtures/regression_manifest.json 및 cases/mutations fixture |
| P/improvement_report_1.md ~ improvement_report_4.md | 4 | 권고사항을 candidate invariant·negative test로 변환 | 동일 |
| P/improvement_merged.md | 1 | 중복 권고 adjudication과 finding cross-reference | 동일 |
이 문서의 과거 사건 사실·금액·모범답안은 production 법리 branch가 아니다. fixture에는 `source_locator`, `assertion_basis ∈ {EXPLICIT, DERIVED}`, DERIVED인 경우 operand/calculator, 기대 output·invariant code·external gold hash를 저장하고 법률가가 회귀 oracle로 승인한다.
### 2.6 기존 규칙·요건사실 seed source
| 기존 위치 | 수량 | 역할 | 제한 |
|---|---:|---|---|
| P/Default_Agent/청구취지작성규칙_*.md | 19 | 기존 청구취지 규칙·mapping·중복 revision의 후보 pool | 파일명 최신성으로 자동 선택 금지; case identity·authority·semantic/hash dedup 후 승인 projection |
| YAML_Prompts/2. Stage_2/청구취지작성규칙문서예시/*.md | 5 | case-specific relief rule 작성·projection의 seed | 그대로 production rule 또는 137 coverage로 간주 금지 |
| YAML_Prompts/2. Stage_2/요건사실론문서raw/*.md | 6 | canonical corpus raw source 후보 | 법률가 승인·metadata·chunk/crosswalk·snapshot seal 전 runtime 사용 금지 |
| YAML_Prompts/1. Stage_1/v.7/대한민국민법자료/민법_지원림.pdf | 1 | 법리 연구·교차검토 자료 | 2024-12 교재이므로 2026 법개정 controlling source가 아니며 runtime authority 아님 |
seed를 이관할 때도 원본 path/hash를 source_manifest 또는 rule projection receipt에 보존한다.
### 2.7 설계·평가 provenance source
| 기존 이름·위치 | 역할 | runtime dependency 여부 |
|---|---|---|
| P/YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.3.md | 개정 전 retained/replaced/missing 비교 기준 | 아님 |
| P/YAML_Prompts/2. Stage_2/eval_stage_2_optimal_update_strategy_v.3.md | v3 손실·누락·결함 finding source | 아님 |
| P/YAML_Prompts/2. Stage_2/take_away_from_eval_v.3.md | 수용·부분수용·기각 결정 source | 아님 |
| P/YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.4.md | 이 inventory의 normative 설계 기준 | 구현·runtime 자산은 아님 |
| P/YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.4_workflow.svg | v4 상세 DAG의 시각화 | 아님; 표·schema와 충돌 시 재생성 |
이 표의 version marker는 설계 history를 정확히 식별하기 위한 것으로, R 아래 신규 runtime 배포경로의 version-free 원칙과 충돌하지 않는다.
### 2.8 공식 법률·기술 source
다음은 전략서가 명시한 authority·provider source다. 법률 source의 local 배포위치는 R/authority/source_captures/<authority_id>.json이고, 승인된 명제만 authority registry/release로 승격한다.
| source 명칭 | 공식 locator | 용도·상태 |
|---|---|---|
| 민법 제1115조 | https://law.go.kr/LSW/lsLinkCommonInfo.do?lsJoLnkSeq=1031985365 | 2026 유류분 가액지급·이자 |
| 민법 제1112조 | https://www.law.go.kr/lsLinkCommonInfo.do?lsJoLnkSeq=1031182201 | 유류분 권리자 범위·삭제조항 |
| 민법 제1117조 현행본 | https://www.law.go.kr/LSW/lsSideInfoP.do?docCls=jo&joBrNo=00&joNo=1117&lsiSeq=284415&urlMode=lsScJoRltInfoR | 기간 clock |
| 대법원 2016다258124 | https://www.law.go.kr/LSW/precInfoP.do?precSeq=184647 | 시효 항변·기산점·재항변 axis |
| 헌법재판소 2020헌가4등 | https://www.law.go.kr/LSW/detcInfoP.do?detcSeq=190071 | 유류분 위헌결정 효과 |
| 법률 제21454호 부칙 제3조 | https://law.go.kr/LSW/lsRvsDocListP.do?chrClsCd=010202&lsId=001706&lsRvsGubun=all | 유류분 신법 적용례 |
| 민법 제764조·89헌마160 | https://www.law.go.kr/lsLinkCommonInfo.do?lsJoLnkSeq=1001851088 | 강제 사죄광고 금지 |
| 민사소송 등 인지규칙 | https://law.go.kr/lsInfoP.do?lsId=005771 | CE-13 소가·인지 branch |
| 민사소송 등 인지법 제2조 | https://www.law.go.kr/LSW/lsLinkCommonInfo.do?chrClsCd=010202&lsJoLnkSeq=1020788181 | 소가에 따른 인지액 |
| 대법원 2016다279206 | https://www.law.go.kr/LSW/precInfoP.do?precSeq=184747 | ACTIO 원상회복 귀속 |
| 대법원 2013다34945 | https://www.law.go.kr/LSW/precInfoP.do?precSeq=230413 | 미지급 배당금채권 양도·통지 |
| 대법원 2007다61618 | https://www.law.go.kr/LSW/precInfoP.do?precSeq=133423 | ACTIO 가액배상 지체·이율 |
| 대법원 2018다203715 | https://www.law.go.kr/LSW/precInfoP.do?precSeq=208412 | ACTIO 확정시 발생·가액·전득자 한도 |
| 2020그42 | Phase 0 official locator 확정 필요 | 배우자 단독상속 route; CANDIDATE_UNSEALED |
| 2023다254519 | Phase 0 official locator 확정 필요 | 배당금채권 양도형 원상회복; CANDIDATE_UNSEALED |
| 2018다202774 | Phase 0 official locator 확정 필요 | 복수 가액배상·이중회복; CANDIDATE_UNSEALED |
| 2012다952 | Phase 0 official locator 확정 필요 | 가등기 권리변동 route; CANDIDATE_UNSEALED |
| OpenAI Responses API prompt caching reference | https://developers.openai.com/api/reference/cli/resources/responses/methods/create | cache capability preflight source; 결과는 prompt_cache_policy.yml에 봉인 |
법률 source의 기준 우선순위는 현행 공식 법령·대법원/헌법재판소 원문이다. 세계법제정보센터와 기타 설명 웹사이트는 탐색 보조자료일 뿐 대한민국 국내 민사사건의 controlling authority로 봉인하지 않는다.
---
## 3. 실행 시 생성되지만 배포자산이 아닌 run artifact
아래는 고정 자산이 아니라 각 사건 run에서 생성되는 결과물이다. root는 Case_02_Comparison_Research/stage2_runs/<run_id>/ 이며, canonical 배포 tree에 미리 작성하지 않는다.
| run artifact family | 대표 위치 | producer·용도 |
|---|---|---|
| ingress/context | ingress/, context/ | S2_00; 입력 manifest·보존검사·cluster/bundle |
| S2_10 immutable parts | map_s2_10/<cluster_id>/ | 각 S2_10 instance; verdict·option·issue·usage |
| canonical plan | plan/ | S2_20; binding·retrieval·calculation·reports·group slices |
| per-group prompt segment P31 | plan/prompt_segments/<group_id>/P31_rule_and_pack.json | S2_20; exact case-type relief rule·요건사실 pack의 ordered source/hash |
| per-group prompt segment P32 | plan/prompt_segments/<group_id>/P32_common_authority.json | S2_20; 공통·route authority와 temporal/hash context |
| S2_30 immutable parts | map_s2_30/<group_id>/ | 각 S2_30 instance; draft/worknote/issue/usage atoms |
| review records | review/ | base/final issue, request/receipt, lawyer judgment, usage |
| operational status | control/run_status.json | S2_40 single writer; wait/resume/commit status |
| operational commit receipt | commit/commit_intent.json, commit/stage2_commit_result.json | sealed content 밖 append-only commit evidence |
| candidate staging | .staging/<candidate_content_digest>/ | external review 중 immutable candidate |
| committed package | final/ | validation을 통과해 atomic rename된 sealed documents/package |
receipt가 CONTENT_CHANGE_REQUIRED이면 기존 candidate는 SUPERSEDED로 보존하고 새 attempt를 생성한다. run artifact를 template·registry·law-value 같은 재사용 자산으로 승격해서는 안 된다.
---
## 4. 명시적 제외와 완료 판정
다음은 v4 신규 runtime dependency가 아니다.
- YAML_Prompts/2. Stage_2/v.0~v.3의 YAML·prompt·loader·중간 filename
- stage_2_optimal_update_strategy_v.2-1.md 본문
- legacy 16종의 원문 runtime load 또는 fallback
- discrepancy 사례의 사실·금액·모범답안을 production 법리 branch로 직접 사용하는 것
- 현재 5개 청구취지 예시와 6개 요건사실 raw 문서만으로 137종 coverage를 선언하는 것
- 이 전략서·SVG·자산 명세 자체를 구현·deployment evidence로 간주하는 것
inventory 완료와 production 완료는 다르다. production은 적어도 physical file/hash/schema, fixed Python test, official authority seal, 법률가 semantic sign-off, 92 YAML loader binding, corpus snapshot, fixture/E2E, canary/rollback과 FULL_137_PRODUCTION_READY 조건을 별도로 통과해야 한다.
@@ -0,0 +1,34 @@
# Stage 2 v4 독립 검증 round 1
- 일자: 2026-08-28
- 검증자: `v4_round1_legal`, `v4_round1_arch`
- 방식: 동일 초안을 법률·추적성 lens와 아키텍처·IO lens로 독립 병렬 검증; validator는 파일을 수정하지 않음
- 초안 판정: 양쪽 모두 `NEEDS_REVISION/FAIL`
- 증분 개정 후 전략서: 1,465행, 106,925 bytes, SHA-256 `f892194861cad1ac407e1ccee91326145863a043f53ee4643f4c7cbb10c57d37`
- 증분 개정 후 SVG: SHA-256 `8b198b0691a00b9d06198ee72d1df04eca122038533c3e2e7c0af4fff2a5aeb2`, XML well-formed
## 수용·수정한 핵심 finding
1. 유류분 temporal rule에 권리자·헌재결정 효과·제1117조·구법 authority·expected error/result·이율 period를 추가했다.
2. catalog 137 전체 row와 claim-capable subset을 분리하고 non-claim row disposition을 닫았다.
3. S2_20 순서를 C20/21→C25/26→C22 및 retrieval→C30→C35로 교정했다.
4. base→plan→final issue ledger single-writer chain을 복원했다.
5. candidate digest, 외부 reviewer receipt, S2_40 resume, commit intent와 post-rename commit result를 분리했다.
6. 상태를 evaluation/scope/run/artifact/legal/workflow 축의 closed enum·aggregation으로 재정의했다.
7. X4 source contract·polarity·자백위험·선진술/worknote 규칙을 닫았다.
8. C25 signature/predicate/binding schema와 error code, closed renderer postcondition을 추가했다.
9. 기존 `requirement_fact_scope.yml` 안에 재현 가능한 retrieval·crosswalk·replay section을 명시했다. 최소 구조 원칙상 별도 YAML 두 개를 추가하라는 제안은 수용하지 않았다.
10. ACTIO 지체·이율, knowledge timing, cap authority, mortgage overlay 분할, exact migration source root를 보강했다.
11. module manifest mandatory row, artifact→schema mapping, offline build/release owner·고정 Python 단위를 추가했다.
12. 공유물분할, 대부 temporal branch, 일부청구 typed contract와 MINOR 36 개별 disposition을 명시했다.
## 이미 해소되어 재적용하지 않은 finding
- 두 검증자가 지적한 X4 조건부 삭제는 검증 스냅샷 이후 선행 증분에서 이미 제거되어 92번째 canonical YAML로 확정되어 있었다.
- semantic class 합계 `2 direct + 45 context + 6 dual + 39 non-LLM = 92`도 검증 중 선행 증분에서 이미 명시했다.
## 2차 검증 대상
- round 1 개정본에서 위 계약이 실제로 닫혔는지
- ASCII·SVG·IO·상태·seal·92 catalog가 다시 상호 일치하는지
- 새 결함·회귀가 생기지 않았는지
@@ -0,0 +1,37 @@
# Stage 2 v4 독립 검증 round 2
- 일자: 2026-08-28
- 검증자: `v4_round1_legal`, `v4_round1_arch`
- 방식: round 1 증분 개정본을 법률·추적성 lens와 아키텍처·IO lens로 다시 독립 병렬 검증; validator는 파일을 수정하지 않음
- 검증 snapshot 전략서 SHA-256: `f892194861cad1ac407e1ccee91326145863a043f53ee4643f4c7cbb10c57d37`
- snapshot 판정: 양쪽 모두 `NEEDS_REVISION`
- 사용자 지정 검증 횟수: 이 round로 정확히 2회 종료; 제3의 전략 sub-agent 검증은 수행하지 않음
## 증분 반영한 architecture finding
1. `required_receipt_types=[]`, 필수 receipt 미도착·무효, 전부 유효한 경우를 서로 다른 state branch로 닫았다.
2. S2_10에서는 `GROUP_LOCAL`을 금지하고, C20이 stable preliminary `claim_group_id`를 발급한 뒤 S2_20/S2_30만 group-local impact를 계산하도록 lifecycle을 교정했다.
3. receipt의 `APPROVE_AS_IS`와 `CONTENT_CHANGE_REQUIRED`를 분리했다. 내용 변경 요구는 기존 candidate를 수정하지 않고 `supersedes_candidate_digest`를 가진 새 attempt에서 S2_20 또는 S2_30부터 재실행한다.
4. `stage2_commit_result.json`과 `commit_intent.json`을 sealed package 밖 `commit/` 운영영역으로 옮기고 post-rename crash reconciliation을 정의했다.
5. retrieval 순서를 `normalized_score DESC`, exact score tie에서만 canonical metadata tuple 순으로 고정했다.
6. ASCII에 `technical diagnostic → S2_40 status-only entry` 경로를 명시했다.
## 증분 반영한 legal finding
1. 민법 제1117조 기간의 외관상 경과만으로 유류분 청구를 자동 제외하지 않는다. `LIMITATION_PRIMA_FACIE_EXPIRED`와 항변·중단/완성유예·포기·권리남용 재항변·digest-bound 변호사 판단을 분리했다.
2. `GENERIC` row는 변호사가 승인한 closed predicate와 `claim_capable_disposition=CLAIM_CAPABLE`이 있을 때만 claim-capable로 허용하고 catch-all fallback은 금지했다.
3. 외부 receipt 분기의 중의성을 제거하고 operational commit receipt의 sealed-content 경계를 명시했다.
4. V06을 실제 binding schema의 `BOUND | UNRESOLVED | CONFLICT`와 `binding_issue_codes[]` 조합에 맞췄다.
5. `2020그42`, `2023다254519`, `2018다202774`, `2012다952`를 route-local `CANDIDATE_UNSEALED`로 열거하고 A00 official seal 전 사용을 금지했다.
6. 제1117조 official locator를 2026-03-17 시행 현행본으로 교체했다.
7. SVG 최종 decision edge에 `all pass`/`otherwise`를 표시했다.
## 검증 후 결과
- 전략서: 1,507행, 112,959 bytes, SHA-256 `6baac7bbc234057def8f448a5d3d990f1f3c825390ec0483cbeb61ebb6557901`
- SVG: 179행, 12,859 bytes, SHA-256 `88f98feb1401bcfc403cc732b9b5664ebfdcf4e2a65842858117d0aa5315b28d`
- YAML catalog: 정확히 92개 — `LLM-DIRECT 2 + LLM-CONTEXT 45 + DUAL-CONTRACT 6 + NON-LLM-DETERMINISTIC 39`
- Markdown fence: 50개로 짝 일치; trailing whitespace 0
- SVG: XML well-formed, headless Chrome 1600×1900 렌더에서 잘림 없음
이 receipt는 설계 검증 이력이다. YAML/Python 구현, live model run, Weaviate build, E2E, 137종 법률가 semantic sign-off 또는 법원 제출 적합성을 증명하지 않는다.
@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1900" viewBox="0 0 1600 1900" role="img" aria-labelledby="title desc">
<title id="title">Stage 2 v4 상세 실행 UML DAG</title>
<desc id="desc">Stage 1 입력에서 시작하여 S2_00, S2_10, S2_20, S2_30, S2_40을 거쳐 변호사 제출판단 준비 또는 변호사 검토 필요 상태로 끝나는 다섯 작업 흐름도</desc>
<defs>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L12,6 L0,12 z" fill="#334155"/>
</marker>
<style>
.title { font: 700 30px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #0f172a; }
.subtitle { font: 500 16px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #475569; }
.taskTitle { font: 700 22px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #0f172a; }
.body { font: 500 16px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #1e293b; }
.small { font: 500 14px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #334155; }
.tiny { font: 500 12px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #475569; }
.lane { fill: #f8fafc; stroke: #cbd5e1; stroke-width: 2; rx: 18; }
.source { fill: #ecfeff; stroke: #0891b2; stroke-width: 2.5; rx: 16; }
.det { fill: #eff6ff; stroke: #2563eb; stroke-width: 3; rx: 18; }
.llm { fill: #faf5ff; stroke: #9333ea; stroke-width: 3; rx: 18; }
.internal { fill: #ffffff; stroke: #94a3b8; stroke-width: 1.5; rx: 10; }
.decision { fill: #fff7ed; stroke: #ea580c; stroke-width: 2.5; }
.ready { fill: #ecfdf5; stroke: #059669; stroke-width: 3; rx: 18; }
.review { fill: #fffbeb; stroke: #d97706; stroke-width: 3; rx: 18; }
.incomplete { fill: #fef2f2; stroke: #dc2626; stroke-width: 2.5; rx: 16; }
.note { fill: #f1f5f9; stroke: #64748b; stroke-width: 1.5; rx: 12; }
.edge { fill: none; stroke: #334155; stroke-width: 2.5; marker-end: url(#arrow); }
.dash { fill: none; stroke: #64748b; stroke-width: 2; stroke-dasharray: 8 7; marker-end: url(#arrow); }
.label { font: 700 14px 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; fill: #334155; }
</style>
</defs>
<rect x="20" y="20" width="1560" height="1860" class="lane"/>
<text x="800" y="70" text-anchor="middle" class="title">Stage 2 v4 — Five-task Clean-slate Execution DAG</text>
<text x="800" y="101" text-anchor="middle" class="subtitle">2 LLM reasoning tasks · 3 deterministic Python tasks · version-free canonical assets</text>
<rect x="80" y="135" width="680" height="150" class="source"/>
<text x="420" y="170" text-anchor="middle" class="taskTitle">Current Stage 1 outputs</text>
<text x="110" y="203" class="body">BO · evidence index/events · LES · Fact Ledger · signals</text>
<text x="110" y="231" class="body">review handoffs · client goal · active domain_config</text>
<text x="110" y="259" class="small">canonical IDs and raw path/schema/hash are preserved</text>
<rect x="840" y="135" width="680" height="150" class="source"/>
<text x="1180" y="170" text-anchor="middle" class="taskTitle">Canonical Stage 2 assets</text>
<text x="870" y="203" class="body">authority/law values · profiles · case_type/rule registry</text>
<text x="870" y="231" class="body">renderers · CE rules · approved corpus/release manifests</text>
<text x="870" y="259" class="small">old Stage 2 YAML and legacy runtime fallback = 0</text>
<path d="M420 285 L420 325 L760 325 L760 350" class="edge"/>
<path d="M1180 285 L1180 325 L840 325 L840 350" class="edge"/>
<rect x="260" y="350" width="1080" height="205" class="det"/>
<text x="800" y="388" text-anchor="middle" class="taskTitle">S2_00 — deterministic ingress, normalization and bundle compile</text>
<rect x="290" y="414" width="235" height="105" class="internal"/>
<text x="408" y="442" text-anchor="middle" class="label">C00 Input guard</text>
<text x="310" y="470" class="small">allowlist · schema/hash</text>
<text x="310" y="495" class="small">ALL read-set · review universe</text>
<rect x="545" y="414" width="235" height="105" class="internal"/>
<text x="663" y="442" text-anchor="middle" class="label">C05 Conservation</text>
<text x="565" y="470" class="small">BO↔LES↔Ledger↔signal</text>
<text x="565" y="495" class="small">evidence/event/gate joins</text>
<rect x="800" y="414" width="235" height="105" class="internal"/>
<text x="918" y="442" text-anchor="middle" class="label">C10 Context</text>
<text x="820" y="470" class="small">party/title/object/evidence</text>
<text x="820" y="495" class="small">slot crosswalk · issue base</text>
<rect x="1055" y="414" width="255" height="105" class="internal"/>
<text x="1183" y="442" text-anchor="middle" class="label">C15 Plan</text>
<text x="1075" y="470" class="small">co-cluster · dependency DAG</text>
<text x="1075" y="495" class="small">immutable slices · cache plan</text>
<path d="M800 555 L800 585" class="edge"/>
<polygon points="800,585 960,645 800,705 640,645" class="decision"/>
<text x="800" y="638" text-anchor="middle" class="label">consistent case package</text>
<text x="800" y="659" text-anchor="middle" class="label">can be built?</text>
<text x="420" y="628" class="label">no — status-only path</text>
<rect x="55" y="720" width="275" height="120" class="incomplete"/>
<text x="193" y="754" text-anchor="middle" class="taskTitle">Diagnostic</text>
<text x="80" y="785" class="small">TECHNICAL_INCOMPLETE only</text>
<text x="80" y="810" class="small">when consistent artifact is impossible</text>
<path d="M640 645 L195 645 L195 720" class="edge"/>
<path d="M195 840 L195 1535 L260 1535" class="dash"/>
<text x="205" y="1515" class="tiny">S2_40 status-only entry</text>
<path d="M800 705 L800 735" class="edge"/>
<text x="825" y="725" class="label">yes</text>
<rect x="260" y="735" width="1080" height="180" class="llm"/>
<text x="800" y="774" text-anchor="middle" class="taskTitle">S2_10 — LLM dependency-wave legal resolution</text>
<rect x="300" y="806" width="465" height="75" class="internal"/>
<text x="533" y="834" text-anchor="middle" class="label">Wave cluster A · immutable part</text>
<text x="325" y="859" class="small">claim/defense/remedy · typed provenance · signature</text>
<rect x="835" y="806" width="465" height="75" class="internal"/>
<text x="1068" y="834" text-anchor="middle" class="label">Wave cluster B..n · immutable parts</text>
<text x="860" y="859" class="small">prior verdict narrow slice · no shared write</text>
<path d="M800 915 L800 945" class="edge"/>
<rect x="180" y="945" width="1240" height="330" class="det"/>
<text x="800" y="984" text-anchor="middle" class="taskTitle">S2_20 — deterministic canonical ReliefPlan reducer</text>
<rect x="220" y="1015" width="350" height="95" class="internal"/>
<text x="395" y="1043" text-anchor="middle" class="label">C20–C21 Portfolio &amp; parties</text>
<text x="245" y="1070" class="small">option conservation · stable preliminary group ID</text>
<text x="245" y="1094" class="small">party/title · then exact binding before CE-13</text>
<rect x="625" y="1015" width="350" height="95" class="internal"/>
<text x="800" y="1043" text-anchor="middle" class="label">C25–C26 Exact drafting binding</text>
<text x="650" y="1070" class="small">claim signature → case_type_id → rule/renderer</text>
<text x="650" y="1094" class="small">zero/multi = UNRESOLVED_BINDING</text>
<rect x="1030" y="1015" width="350" height="95" class="internal"/>
<text x="1205" y="1043" text-anchor="middle" class="label">C22 Calculations after binding</text>
<text x="1055" y="1070" class="small">CE-01..CE-R4 · law-value · receipts</text>
<text x="1055" y="1094" class="small">CE-13 gets case type/rule/portfolio</text>
<rect x="420" y="1140" width="350" height="95" class="internal"/>
<text x="595" y="1168" text-anchor="middle" class="label">C27–C30 Retrieval &amp; reports</text>
<text x="445" y="1195" class="small">verified retrieval · slot crosswalk · replay</text>
<text x="445" y="1219" class="small">exhibit/party/cost/gap · plan issue ledger</text>
<rect x="830" y="1140" width="350" height="95" class="internal"/>
<text x="1005" y="1168" text-anchor="middle" class="label">C35 Freeze</text>
<text x="855" y="1195" class="small">canonical ReliefPlan · same claim group IDs</text>
<text x="855" y="1219" class="small">freeze selected narrow context · group slices</text>
<path d="M800 1275 L800 1305" class="edge"/>
<rect x="260" y="1305" width="1080" height="180" class="llm"/>
<text x="800" y="1344" text-anchor="middle" class="taskTitle">S2_30 — LLM claim-group joint drafting</text>
<rect x="300" y="1375" width="465" height="75" class="internal"/>
<text x="533" y="1403" text-anchor="middle" class="label">Group A · immutable draft part</text>
<text x="325" y="1428" class="small">relief/cause/declaration/worknote atoms · exhibit tokens</text>
<rect x="835" y="1375" width="465" height="75" class="internal"/>
<text x="1068" y="1403" text-anchor="middle" class="label">Group B..n · immutable parts</text>
<text x="860" y="1428" class="small">frozen plan · selected rule/corpus only · no calculation</text>
<path d="M800 1485 L800 1515" class="edge"/>
<rect x="260" y="1515" width="1080" height="205" class="det"/>
<text x="800" y="1554" text-anchor="middle" class="taskTitle">S2_40 — deterministic review, render, state, seal and commit</text>
<rect x="290" y="1580" width="235" height="100" class="internal"/>
<text x="408" y="1608" text-anchor="middle" class="label">C40 Reduce</text>
<text x="310" y="1635" class="small">parts · final issue ledger</text>
<text x="310" y="1659" class="small">single status writer</text>
<rect x="545" y="1580" width="235" height="100" class="internal"/>
<text x="663" y="1608" text-anchor="middle" class="label">C45 Render</text>
<text x="565" y="1635" class="small">closed AST/template</text>
<text x="565" y="1659" class="small">independent re-render</text>
<rect x="800" y="1580" width="235" height="100" class="internal"/>
<text x="918" y="1608" text-anchor="middle" class="label">C46 Validate</text>
<text x="820" y="1635" class="small">V01–V18 · receipts</text>
<text x="820" y="1659" class="small">rule/corpus/hash match</text>
<rect x="1055" y="1580" width="255" height="100" class="internal"/>
<text x="1183" y="1608" text-anchor="middle" class="label">C47–C48 Review &amp; commit</text>
<text x="1075" y="1635" class="small">candidate digest → receipt when required</text>
<text x="1075" y="1659" class="small">rename → outside-seal commit result</text>
<path d="M800 1720 L800 1745" class="edge"/>
<polygon points="800,1745 930,1790 800,1835 670,1790" class="decision"/>
<text x="800" y="1785" text-anchor="middle" class="label">READY predicates</text>
<text x="800" y="1806" text-anchor="middle" class="label">all pass?</text>
<path d="M670 1790 L475 1790" class="edge"/>
<text x="565" y="1774" text-anchor="middle" class="label">all pass</text>
<rect x="130" y="1740" width="345" height="100" class="ready"/>
<text x="303" y="1776" text-anchor="middle" class="taskTitle">READY</text>
<text x="303" y="1804" text-anchor="middle" class="small">FOR LAWYER FILING DECISION</text>
<text x="303" y="1829" text-anchor="middle" class="tiny">not automatic filing approval</text>
<path d="M930 1790 L1125 1790" class="edge"/>
<text x="1033" y="1774" text-anchor="middle" class="label">otherwise</text>
<rect x="1125" y="1740" width="345" height="100" class="review"/>
<text x="1298" y="1776" text-anchor="middle" class="taskTitle">LAWYER REVIEW</text>
<text x="1298" y="1804" text-anchor="middle" class="small">resumable draft + issue packet</text>
<text x="1298" y="1829" text-anchor="middle" class="tiny">specialist receipt when triggered</text>
<rect x="55" y="865" width="275" height="125" class="note"/>
<text x="193" y="897" text-anchor="middle" class="label">Execution boundaries</text>
<text x="80" y="925" class="small">case_type is downstream selector</text>
<text x="80" y="950" class="small">LLM never calculates or commits</text>
<text x="80" y="975" class="small">legal uncertainty keeps a draft</text>
<rect x="1270" y="865" width="275" height="125" class="note"/>
<text x="1408" y="897" text-anchor="middle" class="label">Token economy</text>
<text x="1295" y="925" class="small">PII-free static prefix</text>
<text x="1295" y="950" class="small">selected profile/rule/pack only</text>
<text x="1295" y="975" class="small">first real cache owner + telemetry</text>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,560 @@
# `eval_stage_2_optimal_update_strategy_v.3.md` 취사선택 및 v.3 개정안
> 작성 기준일: 2026-08-28
>
> 대상 전략서: `stage_2_optimal_update_strategy_v.3.md`
>
> 평가서: `eval_stage_2_optimal_update_strategy_v.3.md`
>
> 문서 성격: **v.3을 실제로 수정하기 위한 의사결정·개정 명세**. YAML, Python, registry, rule Markdown 또는 Weaviate corpus를 구현·배포했다는 보고서가 아니다.
---
## 0. 결론
평가서의 결함 탐지는 대체로 타당하다. 특히 **청구원인 typed provenance, 유류분 신·구법 전환, claim-option 보존, Stage 1 ingress 보강, 증거·목적물·당사자 특정, 동시이행, 이율 timeline, 사해행위 route, 상태·seal 계약**은 v.3 개정에 반드시 반영해야 한다.
그러나 평가서의 최종 처방인 “LOST 15건을 포함한 v2-1 조항을 대량 복원하고 CRITICAL·MAJOR를 모두 구현한 뒤에야 Phase 0에 착수한다”는 결론은 받아들이지 않는다. Phase 0은 바로 그 정본·schema·authority를 만드는 단계이므로, **v.3 문서를 먼저 최소·충분한 독립 계약으로 고친 뒤 Phase 0에 착수하고, 각 계약을 해당 phase exit에서 검증**하는 편이 맞다.
최종 선택은 다음과 같다.
- 기존 **5-task DAG와 2개 LLM task**는 유지한다.
- v2-1의 1,645행 또는 137행 부록을 normative dependency로 복원하지 않는다.
- CRITICAL 2건은 모두 **수정 수용**한다.
- MAJOR 22건은 취지를 모두 반영하되, 4건은 그대로 수용하고 18건은 더 안전하고 작은 계약으로 수정 수용한다.
- MINOR 36건은 16건 수용, 17건 수정 수용, 3건 별도 검증·감사 정비로 보류한다.
- 완전히 기각할 결함 진단은 없지만, 평가서의 **구체적 처방 8종**은 법률 오류·과잉복원·token economy 훼손 때문에 명시적으로 기각한다.
### 0.1 독립 검토 ensemble
세 독립 검토를 동시에 수행했다.
| lens | 검토 초점 | ensemble에 반영한 핵심 |
|---|---|---|
| 대한민국 민사법·소송실무 | 청구취지·청구원인, temporal rule, 당사자·원상회복 상대방 | M-19(d) 오류 교정, 이율 단일 공식 금지, 동시이행·대위·일부청구의 법률가 검토 경계 |
| AI architecture·data contract | Stage 1→2 IO, deterministic/LLM 경계, registry, cache, seal | 예정 자산의 비충분성, `case_type_id` 단일화, Markdown→structured contract→fixed calculator |
| 적대적 refute·감사 | 과잉 심각도, 중복 finding, v2-1 회귀 위험 | 60개 finding을 8개 복합 결함군으로 축약, 5-task 유지, 감사 erratum 분리 |
다수결로 정하지 않았다. 원문 locator, 현재 v.3의 등가 계약 존재 여부, 공식 법원, 사용자의 예정 자산 조건과 목적함수를 함께 보아 결정했다.
### 0.2 해석 경계
사용자가 “저장해 둘 예정”이라고 한 다음 자산은 **계획이 확정된 production input**으로 취급하되, 현재 구현·법률가 검수·hash 봉인·loader 배포가 끝난 것으로 간주하지 않는다.
1. `소가 산정 규칙.md`
2. `민사소송 등 인지규칙.md`
3. 대한민국 민사사건 137종의 canonical `case_type_id` registry
이 예정 자산은 평가 finding을 일부 흡수하지만, 그 자체만으로 M-1·M-15·m-34를 닫지는 않는다.
---
## 1. 사용자의 예정 자산을 v.3에 반영하는 방식
### 1.1 137종 `case_type_id` registry
평가서 M-1의 과거 root hash와 v2-1 부록 A를 복원하지 않는다. 새 registry를 유일한 사건종류 정본으로 둔다.
권장 배포 계약:
```text
Default_Agent/Stage_2_Clean/v3/
manifest/case_type_registry.v3.yml
manifest/case_type_rule_registry.v3.yml
schemas/case_type_registry.schema.json
schemas/case_type_rule_registry.schema.json
```
최소 row:
```yaml
case_type_id: CT-001
canonical_name: 대여금 청구
source_catalog_ref:
path: case_kinds.md
ordinal: 1
source_sha256: "..."
row_kind: CLAIM # CLAIM|DOCTRINE_TOPIC|GENERIC|GROUP
group_id: MONEY_CLAIM
classification_predicate: {}
allowed_renderer_ids: [R01]
allowed_companion_case_type_ids: []
relief_rule_refs: []
corpus_scope_refs: []
review_policy_base: STANDARD_ATTORNEY_REVIEW
review_tags: []
implementation_status: PLANNED
```
`case_type_id`는 v.3의 `case_kind_id`를 대체하는 **유일한 runtime ID**다. 과거 `case_kind_id`가 필요하면 one-time migration table의 `legacy_case_kind_id`로만 보존하고 runtime lookup·coverage key로 병존시키지 않는다.
실행 위치는 반드시 다음과 같다.
```text
Stage 1 domain/type/route/signal
-> S2_10: 청구권·구제수단의 실체법 판단
-> normalized atomic claim signature
-> S2_20/C25: case_type_id exact classification
-> 해당 relief rule + corpus scope + CE-13 branch 선택
```
즉 `case_type_id`는 **후단 drafting·retrieval·coverage selector**다. 사건명 또는 group으로 substantive profile을 활성화하거나 청구권 존부를 판단해서는 안 된다. zero/multi match는 nearest-name fallback이나 신규 청구 생성으로 처리하지 않고 `UNRESOLVED_BINDING`으로 보존한다.
#### 1.1.1 `review_policy`의 closed contract
모든 산출물은 최종 제출 전에 대한민국 변호사의 filing decision을 거친다. 아래 정책은 이를 대체하는 자동제출 등급이 아니라, **일반 변호사 검토에 더하여 전문 검토 receipt가 필요한지**를 결정하는 계약이다.
| 필드 | closed 값·규칙 |
|---|---|
| `review_policy_base` | `STANDARD_ATTORNEY_REVIEW \| MANDATORY_SPECIALIST_REVIEW` |
| `review_tags[]` | `PUBLIC_LAW_NEXUS_REVIEW \| UNROUTED_ISSUE_REVIEW \| DOCUMENT_AUTHENTICITY_REVIEW \| PROCEDURAL_REMEDY_SPECIALIST_REVIEW` |
| `required_receipt_types[]` | base policy와 활성 tag의 mapping으로만 생성하며 임의 문자열 금지 |
| `ready_eligible` | 아래 도출식을 만족할 때만 `true`; filing 승인 자체를 뜻하지 않음 |
| trigger | 추가 required receipt |
|---|---|
| base=`MANDATORY_SPECIALIST_REVIEW` | 해당 row의 `required_specialty_ids[]`에 대응하는 `SPECIALIST_LEGAL_REVIEW_RECEIPT` |
| `PUBLIC_LAW_NEXUS_REVIEW` | `PUBLIC_LAW_SPECIALIST_RECEIPT` |
| `UNROUTED_ISSUE_REVIEW` | `ROUTE_RESOLUTION_RECEIPT` |
| `DOCUMENT_AUTHENTICITY_REVIEW` | `DOCUMENT_AUTHENTICITY_RECEIPT` |
| `PROCEDURAL_REMEDY_SPECIALIST_REVIEW` | `PROCEDURAL_REMEDY_RECEIPT` |
```text
ready_eligible =
V01..V18 모두 PASS
AND case_type_id·authority·state 계약 해소
AND 모든 활성 trigger에 대응하는 receipt가
현재 package hash와 결속되어 VALID
```
runtime trigger는 base policy를 상향하거나 receipt를 추가할 수 있을 뿐 하향할 수 없다. receipt가 없더라도 draft·worknote·review packet은 저장하며, 상태만 `LAWYER_REVIEW_REQUIRED`로 둔다.
### 1.2 `소가 산정 규칙`·`민사소송 등 인지규칙` Markdown
두 Markdown은 법률가가 읽고 검수하는 설명 source다. runtime에서 Markdown을 파싱하거나 LLM이 산술하도록 만들지 않는다.
권장 자산 구조:
```text
Default_Agent/Stage_2_Clean/v3/
procedural_rules/소가_산정_규칙.md
procedural_rules/민사소송_등_인지규칙.md
registry/calculations/CE-13_court_value_cost.yml
law_values/court_fee_values.<version>.yml
schemas/court_value_cost_contract.schema.json
```
처리 순서:
1. 공식 법령·대법원규칙·판례를 포함한 Markdown을 법률가가 승인한다.
2. 승인된 명제를 `CE-13_court_value_cost.yml`의 branch·formula·temporal rule로 구조화한다.
3. 구조화 projection과 Markdown의 path, raw SHA-256, `as_of`, authority IDs를 한 manifest row에 봉인한다.
4. S2_20의 고정 Python calculator가 claim portfolio, 청구 병합관계, 주위·예비·선택 관계, object value, 부대청구 여부와 적용시점을 입력받아 계산한다.
5. 결과는 `filing_metrics.json`과 calculator receipt에 보존한다. S2_30에는 필요한 narrow excerpt만 제공한다.
민사소송법 제27조의 “여러 청구의 값 합산”도 무조건 적용할 문자열이 아니다. 부대청구, 경제적 이익이 중첩되는 청구, 선택·예비적 병합과 개별 소가 규칙을 구조화해야 한다. 민사소송 등 인지규칙은 사해행위취소, 공유물분할, 등기·등록, 확인·형성의 소 등 case별 산정방식을 가진다. 따라서 예정 Markdown은 **필요하지만 executable contract의 대체물은 아니다**.
---
## 2. 평가서에서 그대로 받아들이지 않을 처방
| 평가 권고 | 최종 판단 | 대체 전략 |
|---|---|---|
| LOST 15를 v2-1 조항으로 복원 | 기각 | 각 손실을 독립 schema·manifest·validator·fixture로 흡수 |
| 과거 `case_kinds.md` hash와 v2-1 137행 부록을 정본화 | 기각 | 신규 `case_type_id` registry를 정본화하고 source lineage만 보존 |
| 16개 legacy 자산 100% 재사용 | 기각 | 16개 모두 `MIGRATE\|REBUILD\|DROP` disposition, runtime load 0 |
| M-13 전역 `max(약정이율, 법정/소촉법 이율)` | 기각 | obligation별 authority-driven rate timeline |
| M-14 rule Markdown의 모든 numeral 금지 | 기각 | 실행값 숫자만 `law_value_id`; 인용·예시는 `NON_EXECUTABLE` 허용 |
| M-15 복수 exact match를 복수 atomic claim으로 생성 | 기각 | binding conflict로 보존; 청구권 생성은 S2_10 판단만 가능 |
| M-19(d) 말소등기·가액배상 모두 원고에게 | **법률 오류로 기각** | 원물회복=채무자 책임재산, 가액배상=취소채권자; 역할별 recipient 분리 |
| m-24 `max_tokens:0` cache warm call | 기각 | GPT-5.6 cache breakpoint/key/TTL + 첫 실제 cohort owner 직렬화 + telemetry |
### 2.1 M-19(d)의 필수 교정
평가서 본문은 “말소등기·가액배상=원고”라고 적었으나 이는 받아들일 수 없다. 평가의 검증 원장 `evals/stage2_v3/eval_v3_verification_ledger.md:1171-1172,1189`도 본문과 반대로 원물회복=채무자, 가액배상=원고로 기록한다. 대법원은 원상회복으로 사해행위 목적물을 **채무자에게 반환**한다고 판시하고, 지급되지 않은 배당금채권도 **채무자에게 양도**하도록 한다. 반면 원물반환이 불가능한 가액배상은 취소채권자인 원고에게 지급한다.
따라서 단일 `restoration_recipient ∈ {PLAINTIFF, DEBTOR_NONPARTY}`도 충분하지 않다. 다음 역할을 분리한다.
```yaml
restoration_route: REAL_PROPERTY_CANCELLATION
obligor_party_id: PARTY-BENEFICIARY
substantive_restoration_holder_party_id: PARTY-DEBTOR
registration_right_holder_party_id: PARTY-DEBTOR
rendered_performance_counterparty_party_id: PARTY-DEBTOR
assignment_recipient_party_id: null
notice_addressee_party_id: null
payment_recipient_party_id: null
```
| route | 핵심 recipient 계약 |
|---|---|
| 법률행위 취소 | 취소 자체는 형성판결; 급부 recipient 없음 |
| 소유권이전·근저당권 등 말소 | 등기권리자·책임재산 귀속 주체는 채무자; 주문상 절차이행 상대방은 route·등기구조·공식 authority로 별도 결속하며 검증된 기본 route는 채무자 |
| 진정명의회복형 이전등기 | 이전받는 자는 채무자 |
| 미지급 배당금채권 양도 | assignment recipient=채무자, notice addressee=제3채무자 |
| 이미 수령한 배당금·가액배상 | payment recipient=취소채권자인 원고 |
`rendered_performance_counterparty_party_id`는 실체 귀속주체에서 기계적으로 복사하지 않는다. route별 등기구조와 봉인된 공식 판례가 정한 주문 문형으로 결정하고, 근거 없이 원고로 바꾸는 것을 금지한다. 지정 migration source 10종과 별개인 기존 relief-rule 후보 문서 `청구취지작성규칙_사해행위취소청구.md`의 “수익자는 원고에게 … 말소등기절차를 이행” 문형은 일단 quarantine하고, 별도 authority 검수 전에는 canonical rule로 승격하지 않는다.
### 2.2 지연손해금과 법정수치
CE-01은 단일 산술식이 아니라 다음 순차 판정표를 실행한다.
```text
채무·청구 유형
-> 이행기/최고/불법행위/수익/판결확정/반대급부 제공 event
-> 약정이자 또는 약정 지연배상률의 성립·효력
-> 이자제한법·대부업법 등 상한·무효효과
-> 민법·상법 법정이율 적용 가능성
-> 피고별 소장 송달일과 소촉법 적용
-> 소촉법 제3조 제2항 또는 ACTIO-01 등 배제 특칙
-> 기간별 rate_law_value_id와 receipt
```
실행값으로 쓰이는 이율·기간·상한은 Markdown·prompt·Python literal에서 금지한다. 판례 선고일, 조문 번호, 역사적 예시 숫자는 `NON_EXECUTABLE` metadata로 허용한다.
---
## 3. CRITICAL·MAJOR 취사선택표
`수정 수용`은 결함 자체는 인정하지만 평가서의 복원 방식·필드·공식·심각도 또는 phase 배치를 바꾼다는 뜻이다.
| ID | 판정 | v.3 개정 내용 | 주된 위치 |
|---|---|---|---|
| C-1 | 수정 수용 | atom type별 provenance: 사실=`fact_id`, 증거=`evidence_id`, 당사자·목적물=`BO ref`, 법리=`authority/chunk`, 계산=`receipt`, 절차상 의사표시=`declaration ref`, glue=`template_id` | §3, §5.4, §13 |
| C-2 | 수정 수용 | `inheritance_opened_at` 기준 신·구 제1115조, 신법 R01 전용·R02/R03 금지, 권리자·부칙·시효·가액·이자 축과 fixture. 공식 원문을 기준일 재봉인 | §8.4 또는 별도 inheritance overlay, §12, §13 |
| M-1 | 수정 수용 | 예정 `case_type_id` registry를 유일 정본으로 사용. 과거 hash·부록 복원 금지 | §1.1, §6, §11.2 |
| M-2 | 수정 수용 | `review_policy_base`, runtime trigger, specialist tag를 분리. tag는 저장을 막지 않되 필요한 specialist receipt 전 READY 금지 | §6, §10 |
| M-3 | 수정 수용 | authority row에 effective period, transitional rule, supersedes, negative treatment, source별 refresh policy. 고정 24h/7d/30d 금지 | §12.1 |
| M-4 | 수정 수용 | module manifest에 profile별 scope·IO·authority·dependency·physical hash. X4는 출처를 확정하거나 E-13 defense map으로 흡수 | §11.3, §15 |
| M-5 | 수용 | 강제 사죄·사과광고 금지 invariant, 89헌마160 authority, 정정·반론 branch 분리 | §8.4, §13 |
| M-6 | 수정 수용 | legacy 16 source는 비차단 migration audit로 전수 disposition. 지정 ACTIO 10종과 release scope에 필요한 독자 명제만 Phase 0 receipt 대상; runtime dependency 0 | §9.2 인접 migration 절, §15 |
| M-8 | 수정 수용 | `ALL` read-set, digest/seal, review universe, P1/P4 gate를 ingress manifest 하나로 복원. 상류 finding은 affected READY만 제한 | §1.3, §3.3, §10.2 |
| M-9 | 수용 | 활성 profile의 `domain_config.json`을 slot 검증 input으로 명시. 누락 시 `UNEVALUABLE`+review, 전역 no-save 아님 | §1.3, §3.2 |
| M-10 | 수정 수용 | 정형 청구취지·비용·가집행에 closed template/AST·typed slots 적용. NFC·line-ending 정규화 후 독립 re-render 비교; 청구원인 자유서술 전체 byte-lock 금지 | §8, §13 |
| M-11 | 수용 | `all_option_ids = selected ∪ alternative ∪ excluded ∪ deferred`와 상호배타성, 제외·유보 사유·재검토조건·filing metrics 복원 | §4.3, §10, §13 |
| M-12 | 수정 수용 | 현행 Stage 1 `evidence_indexed.json`·`evidence_event_candidates.json`과 gate를 ingress에 추가. 내부 evidence ID와 외부 갑호증 label 분리, 기존 번호 보존 | §1.3, §8, §14 |
| M-13 | 수정 수용 | CE-01 obligation별 rate timeline과 피고별 송달·상한·배제 branch. 전역 `max()` 금지 | §11.3, §12, §13 |
| M-14 | 수정 수용 | output-affecting numeral만 `law_value_id` token 강제; 비실행 인용·예시는 허용하고 validator가 용도를 구분 | §6.3, §8, §13 |
| M-15 | 수정 수용 | `case_type_id` row에 closed predicate와 row kind. zero/multi match=`UNRESOLVED_BINDING`; 새 청구 자동 생성 금지 | §6 |
| M-16 | 수정 수용 | 법률가 승인 corpus↔Stage 1 slot crosswalk. 미매핑 chunk는 context-only이며 gap을 채우지 못함 | §7 |
| M-17 | 수정 수용 | `object_registry.json`, renderer/subtype별 `required_specification_slots`. 모든 R03에 동일 접수번호를 강제하지 않음 | §8, §14 |
| M-18 | 수정 수용 | `counter_performance`·상환이행 template·제공/수령거절 event와 CE-01 지체 연결 | §8, §11.3, §13 |
| M-19 | 수정 수용 | 담보 operand, 6 route, 기간 disposition, 전득자 악의, 역할별 recipient. 평가서 recipient 오류 교정 | §9 |
| M-20 | 수정 수용 | profile의 `party_set_rule_id`, required/present party set과 자료완전성. 미확정=review, 확인된 누락=READY 금지 | §5, §10, §13 |
| M-21 | 수정 수용 | 원고 title chain·책임형태·의뢰인 지시·회수정보. `exclude_now`는 법률상 EXCLUDED가 아니라 `DEFERRED_BY_CLIENT_INSTRUCTION` | §1.3, §4, §5 |
| M-22 | 수용 | 단일 상태 vocabulary와 scope→run aggregation. S2_00 abort도 S2_40 status-only short circuit가 최종 status 작성 | §10, §14 |
| M-23 | 수정 수용 | `procedural_declaration` atom, actor 권한·내용·예정 송달·도달 후 기간·효과조건. service 전 `PLANNED`, 이미 발생한 사실로 취급 금지 | §5.4, §8, §13 |
### 3.1 심각도 재배치
평가서의 “MAJOR 22개 구현 전 Phase 0 착수 불가”는 다음처럼 바꾼다.
- **전략 승인 전 필수:** C-1, C-2, M-19 recipient 교정, `case_type_id`와 소가·인지 자산의 역할 경계.
- **Phase 0 exit 필수:** canonical registry·authority·profile·schema lock, 지정 ACTIO 10종 receipt와 release scope에 필요한 독자 명제의 migration disposition. legacy 16종 전수 audit 자체는 비차단이다.
- **Phase 1 exit 필수:** ingress, option conservation, renderer/calculator, state/seal의 mock E2E.
- **Phase 2 exit 필수:** substantive overlays, typed LLM output, pleading 법률 contract.
- **FULL_137/filing readiness 필수:** 137종 row sign-off, corpus/rule coverage, CE-13, 모든 route fixture.
---
## 4. MINOR 취사선택표
| ID | 판정 | 반영 방식 |
|---|---|---|
| m-1 | 수정 수용 | 판례 4건을 전역 prompt에 넣지 않고 해당 route authority dependency로만 A00 후보 등록 |
| m-2 | 수정 수용 | 충돌 chunk 양쪽 provenance 보존. 단순 최신성이 아니라 적용시점·법원 위계·후속 취급 우선 |
| m-3 | 수용 | binding schema에 claim/group/option/renderer/branch와 오류코드 추가 |
| m-4 | 수정 수용 | 미정의 `cluster_impact_manifest` 삭제 또는 작은 `impact_scope` enum만 정의; v2-1 DSL 전문 복원 금지 |
| m-5 | 수용 | 사건 PII를 static cache prefix에서 제외, retention 승인·cache telemetry 추가 |
| m-6 | 수정 수용 | DR/IR/IM을 외부 regression manifest의 finding→fixture→invariant mapping으로 유지; runtime 법리 source 금지 |
| m-7 | 수용 | 지정 migration source의 exact path/hash와 NFC/NFD 정규화 기록 |
| m-8 | 수용 | `stage2_loader_binding.yml`+schema, 5 workflow path/hash와 legacy fallback 0 |
| m-9 | 수용 | Stage 1 ID와 S2-minted ID의 namespace owner를 schema에 명시 |
| m-10 | 수용 | P1~P3 exact handoff filename과 digest key를 ingress에 봉인 |
| m-11 | 수용 | set 외 cardinality·multiset·F-ID 순번 검사 |
| m-12 | 수용 | used/unused를 독립 순회로 계산하여 항진식 제거 |
| m-13 | 수정 수용 | 실제 Stage 1 배포본 확인 후 seal field와 활성 profile 집합을 봉인 |
| m-14 | 보류 | 피보전채권 cap 명제는 필요하나 `2000다66416` 공식 원문·판시범위를 재검증한 후 authority ID 확정 |
| m-15 | 수정 수용 | 대부업법 개정 부칙·계약일 경계를 공식 원문으로 재봉인 |
| m-16 | 수정 수용 | 비지배 option을 보존하고 정렬 vector만 계산; 법률가 override·의뢰인 선호 허용 |
| m-17 | 수정 수용·우선순위 상향 | CE-03에 청구별 만료일·잔여일·중단/완성유예 event와 비차단 `URGENT_DEADLINE` |
| m-18 | 수용·P0 상향 | `package_manifest_draft -> validation -> final seal` 순서로 순환 제거 |
| m-19 | 수용·P0 상향 | 파일별 single writer와 `issue_ledger.base -> plan -> final` chain |
| m-20 | 수정 수용 | profile ID를 먼저 정리한 뒤 manifest에 phase·status 배정 |
| m-21 | 수용 | 상태 vocabulary 단일 정본 |
| m-22 | 수정 수용 | 공유물분할 방법은 R06 `method_preference`와 worknote; 주위·예비 주문처럼 렌더링 금지 |
| m-23 | 수정 수용 | 불리한 사실 자동 은폐 금지. polarity, 자백 위험, 명백한 항변 선진술·재항변을 함께 review |
| m-24 | 수정 수용 | first real cohort owner 직렬화, GPT-5.6 cache breakpoint/key/30m TTL, cached token telemetry; `max_tokens:0` 금지 |
| m-25 | 수용 | migration 폐기 사유를 실물 결함에 맞게 교정 |
| m-26 | 수용 | “old C40” 오기 교정 |
| m-27 | 수용 | ACTIO 항변 범위와 수익자·전득자 선의 판단시점 분리 |
| m-28 | 수정 수용 | ACTIO overlay 하나의 manifest/schema에 통합하고 mortgage 분할 기준 명시 |
| m-29 | 보류 | 기존 검증 receipt hash·locator erratum은 전략 runtime과 분리한 감사 정비 |
| m-30 | 보류 | 과거 fixture rename 기록은 round receipt erratum으로 별도 처리 |
| m-31 | 수용 | fixture의 당사자·금액·날짜가 runtime branch로 유입되지 않는 mutation test |
| m-32 | 수용 | `delay_start_at` 입력과 소촉법 항쟁 상당성 worknote |
| m-33 | 수정 수용 | 검증된 gold 값은 외부 fixture file/hash로 보존; 전략 본문·일반 profile에 복제 금지 |
| m-34 | 수정 수용 | 예정 Markdown + structured CE-13 + fixed calculator + versioned law-value + receipt |
| m-35 | 수정 수용 | 명시적 일부청구를 lawyer-reviewed option으로 제공하고 잔부 유보·시효·기판력 위험 기록 |
| m-36 | 수정 수용 | 채권자대위 요건과 급부별 recipient branch; 금전 직접수령은 authority에 결속 |
---
## 5. LOST 15 처리
LOST 판정은 대부분 유효하지만 “이전 문장을 복원한다”는 의미로 받아들이지 않는다.
| LOST | 판정 | v.3 대체 계약 |
|---:|---|---|
| 1 유류분 전환 | 수정 수용 | CE-08/E-15 temporal overlay + renderer 금지 + fixture |
| 2 137 blueprint/hash | 수정 수용 | 신규 `case_type_id` registry + coverage manifest |
| 3 authority freshness | 수정 수용 | source별 policy·temporal authority schema |
| 4 profile scope | 수정 수용 | self-contained module manifest |
| 5 사죄광고 금지 | 수용 | forbidden relief invariant |
| 6 legacy 16자산 | 수정 수용 | 비차단 100% disposition audit, 선택 migration, runtime dependency 0; 지정 ACTIO 10종은 별도 필수 receipt |
| 7 Stage 1 ingress | 수정 수용 | 단일 ingress manifest contract |
| 8 closed template | 수정 수용 | 정형부 closed AST/template + normalized independent conformance |
| 9 claim option 보존 | 수용 | option conservation + excluded/deferred + filing metrics |
| 10 gold fixture 값 | 수정 수용 | 외부 fixture manifest/hash |
| 11 판례 4건 | 수정 수용 | route-local authority dependencies |
| 12 impact/envelope | 수정 수용 | 최소 `impact_scope`와 typed S2_10 envelope |
| 13 PII/cache | 수용 | non-PII static prefix·retention·telemetry |
| 14 finding coverage | 수정 수용 | regression-only coverage manifest |
| 15 loader binding | 수용 | loader binding schema·legacy fallback 0 |
---
## 6. v.3에 적용할 최소·충분 개정 패키지
### P-1. Typed ingress and provenance
- Stage 1 current outputs에 `evidence_indexed.json`, `evidence_event_candidates.json`, B1/B2 gate, 활성 `domain_config.json`, `defendant_target_matrix`, `asset_status`를 명시한다.
- `ALL` read-set expansion, review universe, digest/seal chain을 하나의 ingress schema로 결속한다.
- atom type별 source contract를 도입하고 unsourced fact mutation을 READY에서 차단한다.
- 법률 불확실성은 draft+worknote+review packet으로 저장한다. 물리적 parse/renderer 실패만 affected scope `TECHNICAL_INCOMPLETE`다.
### P-2. Canonical selector and authority
- `case_type_id` 137종 registry와 `review_policy_base/review_tags`를 정본화한다.
- C25는 normalized claim signature의 후단 exact selector로 한정한다.
- authority release에 temporal scope·부칙·negative treatment·refresh trigger를 넣는다.
- 유류분, 사죄광고, 대부계약 temporal rule을 route-local overlay로 둔다.
### P-3. Claim portfolio and pleading contracts
- claim-option conservation과 법률상 제외, 증거상 유보, 의뢰인 지시 유보를 구분한다.
- party completeness, plaintiff title chain, liability form, client target와 회수정보를 ReliefPlan에 결속한다.
- `object_registry`, `exhibit_register`, `counter_performance`, `procedural_declaration`, explicit partial claim을 추가한다.
- 청구취지 특정 slot은 renderer와 subtype별로 관리한다.
### P-4. Deterministic rendering and calculation
- 청구취지·소송비용·가집행 등 정형부만 closed template/AST로 렌더한다.
- CE-01은 obligation별 rate timeline, CE-13은 소가·인지·송달비용을 계산한다.
- Markdown은 설명 source, YAML은 rule data, Python은 고정 executor, LLM은 법률판단·서술로 역할을 유지한다.
- S2_40은 canonical normalization 후 template 재전개·calculator receipt·frozen plan을 독립 대조한다.
### P-5. ACTIO corrected route contract
- 지정 10자산의 migration provenance를 유지하되 법적 명제와 fixture를 새 contract로 교정한다.
- 담보·우선권 operand, 제척기간 disposition, 전득자 악의, 6 route, 이미 받은 배당금과 미지급 배당금채권을 분리한다.
- 실체 귀속주체·등기권리자·주문상 절차이행 상대방·양도수령인·통지상대방·지급수령인을 역할별 필드로 분리한다. 원물회복의 기본 귀속은 채무자, 가액배상 지급은 원고로 하되, 주문상 절차이행 상대방은 route·등기구조·공식 authority로 별도 결속한다.
- 기존 relief-rule 후보 문서는 지정 10종 migration receipt와 분리하여 검수하고, 검증되지 않은 “말소등기=원고” 문형은 quarantine한다.
### P-6. State, producer and seal
- scope→run→artifact 상태 lattice와 single status producer를 확정한다.
- `package_manifest_draft -> deterministic validation -> lawyer review packet hash -> final seal -> atomic commit` 순서로 바꾼다.
- 모든 emitted file은 단일 producer·schema·hash owner를 갖는다.
### P-7. Regression, security and cache
- finding→invariant→fixture mapping을 runtime 밖 regression manifest로 둔다.
- PII-free static prefix, explicit cache breakpoint/key/TTL, cache telemetry를 사용한다.
- gold 사건 값과 legacy 문구가 일반 profile 또는 runtime 분기로 유입되지 않는 mutation을 추가한다.
- m-29·m-30은 별도 audit erratum으로 처리한다.
---
## 7. 개정 후에도 유지할 5-task DAG
```text
Stage 1 current outputs
|
v
S2_00 [deterministic]
ingress/review/digest conservation
+ slot/evidence/object/party context
|
v
S2_10 [LLM]
substantive claim/relief options
+ typed provenance + normalized signature
|
v
S2_20 [deterministic]
option reducer + dependency
+ C25 case_type_id exact binding
+ C27~C29 retrieval orchestration
+ CE-01/CE-13 calculators
+ exhibit/party/filing reports
|
v
S2_30 [LLM]
frozen plan + selected rule/corpus only
-> typed cause/relief/declaration atoms
|
v
S2_40 [deterministic]
V01~V18 + canonical re-render
+ state/seal/atomic commit
|
+--> clean pleading
+--> attorney worknote/review packet
+--> validation/status/receipt
```
top-level task, 별도 C30 또는 제3 LLM reviewer를 추가하지 않는다.
---
## 8. v.3 절별 수정 위치
| v.3 절 | 개정 내용 |
|---|---|
| §0·§16 | 이 문서의 disposition과 LOST 대체표를 요약하고 “v2-1 전문 승계 아님” 명시 |
| §1·§3 | current Stage 1 evidence/domain/review ingress, typed provenance, ID ownership |
| §4·§5 | option conservation, title/liability/client constraint, party completeness, procedural declaration |
| §6 | `case_kind_id`→`case_type_id` 단일화, row kind·predicate·review policy·binding conflict |
| §7 | corpus-slot crosswalk, conflict preservation, context-only unmapped chunk |
| §8 | closed template scope, object/exhibit registry, 동시이행, 특정 slot, 실행값 token |
| §9 | ACTIO route·operand·deadline·transferee·recipient 교정 |
| §10 | 상태 lattice, READY predicate, specialist review receipt |
| §11 | profile scope manifest, CE-01·CE-13, migration disposition |
| §12 | temporal authority, freshness, PII/cache contract |
| §13 | V15~V18 및 신규 boundary/mutation fixture |
| §14 | producer matrix, ledger chain, draft manifest와 final seal 순서 |
| §15 | Phase entry/exit 재배치와 full-137/filing readiness gate |
---
## 9. 추가·보강할 핵심 IO
| task | 추가 input/output | 목적 |
|---|---|---|
| S2_00 | `evidence_inventory.json`, `object_registry.json`, `party_and_title_context.json`, `slot_crosswalk.json`, 강화 `ingress_status.json` | 사실·증거·당사자·목적물·slot의 정본화 |
| S2_10 | typed claim options, `normalized_claim_signature`, typed provenance refs | 실체법 판단과 후단 사건종류 selector 분리 |
| S2_20 | `case_type_bindings.json`, `exhibit_register.json`, `filing_metrics.json`, `option_conservation_report.json`, `party_completeness_report.json` | deterministic reducer·계산·완전성 검증 |
| S2_30 | typed relief/cause atoms, `procedural_declaration` atoms, exhibit tokens | 자유서술과 정형 계약의 분리 |
| S2_40 | `package_manifest_draft.json`, `issue_ledger.final.json`, render comparison, final validation/status/seal | 독립 검증과 atomic commit |
모든 파일은 schema, producer, consumer, ordering key, raw hash와 status vocabulary를 가져야 한다.
---
## 10. machine invariants 개정
기존 V01~V14를 폐기하지 않고 다음을 보강한다.
| invariant | 내용 |
|---|---|
| V01~V04 보강 | evidence/domain config/review universe/digest, Stage 1 ID와 S2 ID owner, independent conservation |
| `V15_TYPED_ATOM_PROVENANCE` | atom type별 허용 source ref만 사용; unsourced fact·증거 dangling 0 |
| `V16_CLAIM_OPTION_CONSERVATION` | 모든 option이 selected/alternative/excluded/deferred 중 정확히 하나에 존재 |
| `V17_PARTY_OBJECT_EVIDENCE_COMPLETENESS` | party-set, title, liability, required specification slot, exhibit token 완전성 |
| `V18_CLOSED_RENDER_AND_CALC_CONFORMANCE` | template/AST, frozen ReliefPlan, law-value, calculator receipt, counter-performance의 canonical 일치 |
| V13 보강 | temporal authority·부칙·freshness·negative treatment·specialist review dependency |
| V14 보강 | package draft manifest, validation, packet, final seal의 비순환 결속 |
READY는 V01~V18 전부 PASS하고, `case_type_id` binding·authority·review policy가 해소되며, 기술상태가 일관된 경우에만 부여한다. 실패한 경우에도 법률적으로 가능한 대안, worknote와 review packet은 저장한다.
---
## 11. Phase exit 개정
| phase | 개정 exit |
|---|---|
| Phase 0 | `case_type_id` 137 unique/schema/hash, authority·temporal policy, profile manifest, 지정 ACTIO 10종 source receipt, release scope의 독자 필수 명제 disposition, old YAML runtime edge 0. legacy 16종 전수 audit은 비차단 추적 |
| Phase 1 | mock LLM E2E에서 ingress·option·renderer·CE-01/CE-13·state·producer·seal property test PASS |
| Phase 2 | typed S2_10/S2_30, 유류분·사죄광고·동시이행·당사자/title/liability·procedural declaration·ACTIO fixture PASS |
| Phase 3 | release subset의 rule/corpus/crosswalk/case-type binding과 법률가 semantic sign-off; full-137 과장 금지 |
| Phase 4 | current Stage 1 live output, retrieval replay, cache telemetry, adversarial contamination, gold/mutation/metamorphic 전수 |
| Phase 5 | immutable release, loader binding, canary/rollback, 자격 있는 변호사 filing-decision workflow |
`소가·인지` 계산이 불가능하면 청구권·청구취지·청구원인 draft 자체를 폐기하지 않는다. `filing_metrics=UNEVALUABLE`과 missing operand를 review packet에 남기고 filing-decision READY만 제한한다.
---
## 12. 반드시 보존할 금지규칙
1. Stage 1에 없는 사건 사실·증거 창작 금지.
2. 적용시점·부칙 미확정 상태에서 현행법 default 선택 금지.
3. 사건명·group·`case_type_id`에 의한 substantive claim 활성화 금지.
4. case type·rule document fuzzy fallback 금지.
5. binding 충돌을 새로운 청구권으로 자동 증식 금지.
6. 미확정 금액·날짜를 clean pleading의 확정값으로 기재 금지.
7. 의뢰인 no-sue를 법률상 청구권 부존재와 혼동 금지.
8. 사해행위취소 자체의 채무자 피고화 금지.
9. route별 공식 authority 없이 사해행위 원물회복의 귀속주체 또는 주문상 절차이행 상대방을 원고로 고정하는 문형 금지.
10. 제척기간 만료가 확인된 취소청구의 예비적 승격 금지.
11. 강제 사죄·사과광고 atom 금지.
12. 중복회복·claim-option silent loss 금지.
13. rule/corpus가 Stage 1 사실 또는 frozen ReliefPlan을 변경하는 것 금지.
14. 소장 송달 의사표시를 이미 발생한 역사적 사실로 처리하는 것 금지.
15. 실행 가능한 법정수치를 authority/version 없이 Markdown·prompt·Python에 고정하는 것 금지.
16. v.0~v.3 YAML, v2-1 본문 또는 legacy migration asset을 runtime fallback으로 사용하는 것 금지.
17. 법률 불확실성을 이유로 review draft·worknote·packet의 저장을 전역 금지하는 strict no-save 회귀 금지.
---
## 13. 검증 oracle
최소 acceptance suite는 다음을 포함한다.
- unsourced fact, 잘못된 evidence ID, 법리 chunk를 사건 사실로 사용한 mutation
- 유류분 신법·구법·형제자매·경계일·청구일/송달일 fixture
- 137 registry zero/multi match, doctrine-topic row, alias drift, hash 변조
- 동시이행 전·이행제공 후·수령거절 후 지체 fixture
- 기존 호증 seed, 병렬 group 순서 변경, dangling/duplicate exhibit fixture
- 등기 말소·신규 이전·경정·인도·확인·사해행위별 목적물 특정 slot 제거 mutation
- 약정이율·상한·민/상이율·피고별 송달·소촉법 배제·ACTIO-01 기간분할 fixture
- 사해행위 원물회복 귀속=채무자, 가액배상 지급=원고, 배당금채권 양도=채무자, 통지=제3채무자, 주문상 절차이행 상대방의 authority-backed route matrix
- 공유자 1인 제거, 채권양도 통지/확정일자 제거, 책임형태 교환, client no-sue mutation
- 일부청구의 잔부 유보·시효 영향, 채권자대위 급부 recipient fixture
- state aggregation, S2_00 abort, single writer, seal 순환, atomic write failure property test
- cache prefix PII 오염, breakpoint drift, cached-token telemetry 0 회귀 test
- fixture 고유 값이 일반 profile branch로 들어간 mutation
---
## 14. 공식 근거와 미확인 경계
이번 취사선택에서 직접 재확인한 핵심 공식 source는 다음과 같다.
- [민법 제1115조 — 2026-03-17 시행 가액지급·청구일부터 이자](https://law.go.kr/LSW/lsLinkCommonInfo.do?lsJoLnkSeq=1031985365)
- [민법 제764조·헌법재판소 89헌마160 — 강제 사죄광고 위헌](https://www.law.go.kr/lsLinkCommonInfo.do?lsJoLnkSeq=1001851088)
- [민사소송법 — 소송목적의 값과 병합청구](https://www.law.go.kr/법령/민사소송법)
- [민사소송 등 인지규칙](https://law.go.kr/lsInfoP.do?lsId=005771)
- [민사소송 등 인지법 제2조](https://law.go.kr/LSW/lsLinkCommonInfo.do?chrClsCd=010202&lsJoLnkSeq=1020788181)
- [대법원 2017. 4. 27. 선고 2016다279206 — 원물반환은 채무자, 불능 시 가액배상](https://www.law.go.kr/LSW/precInfoP.do?precSeq=184747)
- [대법원 2013. 9. 13. 선고 2013다34945 — 미지급 배당금채권을 채무자에게 양도](https://www.law.go.kr/LSW/precInfoP.do?precSeq=230413)
- [대법원 2026. 5. 11. 자 2024마6174 — 인지규칙 제15조·제18조의2 해석](https://www.law.go.kr/LSW/precInfoP.do?precSeq=621983)
- [OpenAI API — GPT-5.6 prompt caching options·breakpoint·TTL](https://developers.openai.com/api/reference/cli/resources/responses/methods/create)
다음은 v.3 실제 개정 또는 Phase 0 authority seal 전에 재확인해야 한다.
1. `2000다66416`의 정확한 공식 판시범위.
2. 대부업법 법률 제20702호 부칙의 계약시점별 적용례.
3. 예정 소가·인지 Markdown의 실제 내용과 기준일 현행 법령·대법원규칙·판례 일치.
4. Stage 1 live output의 evidence/domain/party/object exact schema와 hash chain.
5. 예정 137 registry가 이름·group만 제공하는지 predicate·binding·review policy까지 제공하는지.
6. 137개 row의 법률가 semantic sign-off와 복합·generic·doctrine-topic 행의 정리.
---
## 15. 최종 take-away
v.3의 골격은 폐기할 필요가 없다. 필요한 것은 더 많은 top-level task나 v2-1 장문의 복원이 아니라, **(1) typed provenance, (2) canonical `case_type_id`, (3) authority-driven temporal·calculation contract, (4) 당사자·목적물·증거·동시이행·절차상 의사표시 계약, (5) 교정된 ACTIO route, (6) option/state/seal 보존, (7) 외부 regression·security·cache 계약**이다.
이 개정은 단순성과 token economy를 유지하면서도, 대한민국 법률과 실무에 맞지 않는 문안이 `READY_FOR_LAWYER_FILING_DECISION`에 도달하는 경로를 줄인다. 다만 이는 전략 개정안이다. 신규 registry/YAML/Python/module 구현, live Stage 1→2 E2E, 137종 법률가 검수와 filing decision은 별도의 실행·검증 단계다.
@@ -0,0 +1,118 @@
# Stage 2 v4 전략서와 자산 명세 작성
## Objective
`take_away_from_eval_v.3.md`의 취사선택을 `stage_2_optimal_update_strategy_v.3.md`의 5-task clean-slate 구조에 완전히 흡수하여 v4 전략서·상세 UML SVG·version-free 자산/source 명세를 작성하고, 사용자 지정 횟수의 독립 검증과 증분 개정을 완료한다.
## Deliverables
- `YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.4.md`
- `YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.4_workflow.svg`
- `YAML_Prompts/2. Stage_2/assets_for_stage_2_v.4.md`
- `YAML_Prompts/2. Stage_2/MEMORY.md` 압축 갱신
## Scope and Non-Scope
- 범위: v4의 전체·상세 DAG, IO, YAML 분류, 단계별 구현·검증 전략, 신규 자산/source inventory와 배포경로.
- 비범위: 실제 workflow YAML·Python engine·registry·rule Markdown·Weaviate collection 구현·배포, live LLM/E2E, 137종 법률가 sign-off, 법원 제출.
## Known Inputs
- `stage_2_optimal_update_strategy_v.3.md`
- `eval_stage_2_optimal_update_strategy_v.3.md`
- `take_away_from_eval_v.3.md`
- Stage 2 `MEMORY.md`
- 현행 Stage 1 v.8 산출물 계약과 지정 ACTIO migration source 10종
## Material Assumptions
- 소가 산정 규칙·민사소송 등 인지규칙 Markdown과 137종 canonical `case_type_id` registry는 계획된 production input이며 현재 구현 완료로 간주하지 않는다.
- v4 runtime은 구 Stage 2 v.0~v.3 YAML이나 legacy 자산을 직접 load하지 않는다.
- `case_type_id`는 S2_10 이후 drafting/retrieval/coverage selector이고 substantive claim router가 아니다.
- 모든 배포경로는 version-free canonical path로 제시하며 version은 manifest field/hash/release seal로 관리한다.
## Questions That Could Change the Outcome
- v3의 유효한 계약이 v4로 누락 없이 승계되는가.
- takeaway의 2 CRITICAL·22 MAJOR·36 MINOR·15 LOST disposition이 실행 가능한 schema·task·invariant·phase exit에 결속되는가.
- 사용자 예정 자산이 설명 source와 executable contract로 올바르게 분리되는가.
- 자산 inventory가 v4의 모든 named file/source를 정확히 포괄하는가.
## Workstreams and Dependencies
1. v3·takeaway·eval·기존 SVG·asset inventory 대조.
2. v4 backbone 설계 및 Markdown/SVG 초안 작성.
3. 독립 sub-agent 2개 병렬 검증 → 증분 개정, 정확히 2회.
4. 최종 v4에서 named assets/sources 추출하여 inventory 초안 작성.
5. 독립 sub-agent 1개 검증 → 1회 증분 개정.
6. 정적 검증, MEMORY 갱신, 결과 기록.
## Source and Tool Plan
- 로컬 전략서·평가서·원장을 1차 source로 사용한다.
- 법률 명제는 국가법령정보센터·대한민국 법원의 공식 원문만 authority seal 후보로 사용한다.
- `rg`, `sed`, `wc`, `shasum`, XML parser와 이미지 렌더 검증으로 무결성을 확인한다.
- 모든 편집은 `apply_patch`로 수행한다.
## Validation Plan
- v4에 5 task와 정확히 2 LLM task·3 deterministic task가 명시되는지 확인.
- overview DAG, ASCII 상세 DAG, 별도 SVG UML, IO, YAML 표, 단계별 작업이 상호 일치하는지 확인.
- C 2·M 22·m 36·LOST 15의 채택 결과가 contract/validator/fixture/phase에 보존되는지 crosswalk 검증.
- old YAML runtime edge, case-type substantive routing, LLM 산술, strict global no-save, legacy fallback이 0인지 확인.
- asset inventory의 named asset/source coverage, 중복, producer/consumer, version-free path를 검증.
- UTF-8, Markdown fence, SVG XML/render, internal link, whitespace, hash를 검사.
## Approval Boundaries
- 요청된 문서·SVG·MEMORY·ExecPlan만 수정한다.
- 외부 DB·서비스·repository remote에는 쓰지 않는다.
- 구현·배포·commit은 수행하지 않는다.
## Progress
- [x] AGENTS·MEMORY·workflow·evidence 규칙 확인
- [x] v3·takeaway·eval·기존 자산 구조 대조
- [x] v4 Markdown·SVG 초안 작성
- [x] 검증 round 1: sub-agent 2개 병렬 + 증분 개정
- [x] 검증 round 2: 동일 2개 sub-agent 병렬 + 증분 개정
- [x] assets v4 초안 작성
- [x] asset 검증 1회 + 증분 개정
- [x] 정적 검증·MEMORY 갱신
## Decision Log
| Date/Stage | Decision | Basis | Consequence |
|---|---|---|---|
| 2026-08-28 / intake | v3를 새로 축약하지 않고 유효 계약을 유지하며 takeaway만 증분 통합 | 대폭 개정에 따른 LOST 15 회귀 경험 | v3→v4 retained/replaced/added ledger를 둔다 |
| 2026-08-28 / intake | SVG는 별도 file artifact로 생성하고 Markdown은 image link만 삽입 | 사용자 content structure | UML source code를 본문에 넣지 않는다 |
| 2026-08-28 / intake | version은 path가 아닌 manifest metadata로 관리 | 사용자 version-free 배포경로 조건 | 모든 신규 runtime path에서 `/v2`, `/v3`, `/v4` segment 제거 |
| 2026-08-28 / round 1 | 외부 review receipt는 S2_40 산출물이 아니라 digest-bound human input으로 분리 | 두 독립 검증자가 동일 도달불능·seal 선후 문제 확인 | S2_40 idempotent wait/resume, commit intent와 post-rename result 도입 |
| 2026-08-28 / round 1 | retrieval config·crosswalk는 새 YAML 2개가 아니라 기존 `requirement_fact_scope.yml`의 closed section으로 둠 | 단순화·token economy와 92 catalog 안정성 | config/snapshot/replay hash는 receipt에 완전 봉인 |
| 2026-08-28 / round 2 | group ID는 C20에서 stable mint하고 content 변경 receipt는 새 DAG attempt로 되돌림 | 두 검증자가 GROUP_LOCAL 시점·review resume의 불변 candidate 모순을 확인 | C35 freeze, SUPERSEDED candidate 보존, S2_20/S2_30 재진입 계약 추가 |
| 2026-08-28 / round 2 | 제1117조 기간 경과 추정과 generic case type을 자동 탈락·catch-all로 사용하지 않음 | 항변·중단/정지·포기·권리남용과 claim-capable predicate가 법률판단을 요구 | digest-bound lawyer disposition과 closed generic predicate를 READY 전제로 둠 |
| 2026-08-28 / asset audit | release 증적은 `stage2_release.json` 내부 signed object로 일원화하고 기존 source inventory를 보완 | 1회 독립 감사에서 Stage 1 logical input, legacy 16, regression source가 누락됨 | 고정 manifest/receipt 10, fixture 동적 family, source/runtime 경계가 명시됨 |
## Evidence Ledger
| Claim/Issue | Source or Test | Status | Notes |
|---|---|---|---|
| v3 현행 전략 | `stage_2_optimal_update_strategy_v.3.md` | VERIFIED | 5-task 경계·유효 계약을 v4 retained/replaced/added ledger와 대조 |
| v3 취사선택 | `take_away_from_eval_v.3.md` | VERIFIED | 560행, C2/M22/m36/LOST15 disposition |
| 평가 원장 | `eval_stage_2_optimal_update_strategy_v.3.md`, `evals/stage2_v3/eval_v3_verification_ledger.md` | VERIFIED | v4가 채택한 C·M·m·LOST 처분과 최소 계약 대조 |
| 공식 법률 authority | law.go.kr/scourt official source | VERIFIED_LIMITED | 유류분 전환·사해행위 recipient·사죄광고·인지/소가 source 후보를 공식 원문에서 확인; release 전 A00 재봉인 필요 |
| v4 SVG 렌더 | `stage_2_optimal_update_strategy_v.4_workflow.svg`, `xmllint`, headless Chrome 1600×1900 | VERIFIED | XML well-formed 및 전체 화면 무잘림 확인 |
| 전략 검증 2회 | `evals/stage2_v4/round_1.md`, `evals/stage2_v4/round_2.md` | VERIFIED | 각 회차 독립 법률·architecture sub-agent 2개 병렬 검증 후 incremental revision |
| asset 검증 1회 | 독립 `v4_assets_audit` 결과와 deterministic catalog diff | VERIFIED | 92 YAML·21 Python·12 schema 일치; ACTIO 10·legacy 16 source 수 대조 |
## Risks and Failure Modes
- v3의 working contract를 문서 재구성 과정에서 누락할 위험.
- 전략서에 구현 완료·137종 coverage·live E2E를 과장할 위험.
- 자산 logical unit, physical file, source document, run output을 혼동할 위험.
- SVG와 ASCII/IO/YAML 표가 서로 다른 DAG를 표현할 위험.
- version-free 경로 조건을 file versioning과 혼동할 위험.
## Results and Residual Uncertainty
완료. 최종 산출물은 전략서 1,507행/112,959 bytes(`6baac7bb…`), SVG 179행/12,859 bytes(`88f98feb…`), 자산 명세 471행/40,855 bytes(`48616d9d…`)다. YAML 92개는 전략서와 자산 명세에서 exact name/class가 일치하며 분류는 LLM-DIRECT 2, LLM-CONTEXT 45, DUAL-CONTRACT 6, NON-LLM-DETERMINISTIC 39다. Python 21개와 schema 12개도 set 차이 0, SVG XML·Markdown fence·UTF-8·trailing whitespace 검사를 통과했다. 이는 설계 완료이며 실제 자산 구현·배포·live E2E·법률가 sign-off 완료 증거는 아니다.