골격 v4-r7 / 프롬프트 v.5-r7 / 게이트 v4.2: 추정·전환 단일값 문제 해결

배치 13H에서 워커 넷이 서로 다른 사건종류에서 같은 벽에 부딪힌 문제를 반영했다.
§4.2 추정·전환은 요건 블록 하나에 값 하나인데, §4의 진짜 공통 요건이면서 추정의 근거가
경로마다 다른 경우가 실재한다. 손해배상(지)의 「고의 또는 과실」은 일곱 경로 전부에
성립하는데 추정은 조문상 법률상 추정·판례에 의한 추정·부존재 셋으로 갈린다.
어느 기본값을 골라도 §7 총괄표의 그 행이 일부 경로에 대하여 거짓이 되고,
§7은 벡터 DB로 변환되는 구조화 산출물이므로 거짓값이 후속 에이전트에게 그대로 전달된다.

후보 셋 중 (c) 복합 형식 신설을 택했다. (a) 명문화만 하는 안은 §12.7 공개가 문서 밖의
조치일 뿐 §7 자체는 거짓인 채로 남고, (b) 선택적 필드 신설은 10필드 계약과 L-f의
REQ_FIELDS를 바꾸어 기존 코퍼스 전건에 회귀를 낸다.

반영 3건
1. 추정·전환에 「경로별 상이 — <다수 경로의 값>」 형식 신설. 쓸 때의 의무 셋을 함께 정했다 —
   경로별 내역을 증명 실무에 전부 적을 것, §12.7에 올리지 않을 것(근사가 아니라 정규형),
   먼저 §5로 내릴 수 있는지 볼 것(요건 자체가 갈리면 공통 요건이 아니다).
2. 한 경로 안에서 증명책임 방향이 갈리면 요건 블록을 나눈다(상법 제826조의 준용 목록이
   운송인·여객으로 부담을 뒤집는 경우). 경로별 상이로도 담기지 않는다.
3. 증거방법의 진정성립 추정은 이 필드가 아니다(민사소송법 제356조·제358조).
   추정·전환: 없음 + 증명 실무가 정규 처리이고, 증거법칙적 추정은 그 요건사실 자체가
   조문에 근거해 추정되나 반증으로 깨지는 경우에 쓴다.

게이트 v4.2 — L-f의 추정·전환 검사에 ^경로별 상이 — (.+)$ 형식을 추가 허용(CHU_MIXED).
허용 집합을 넓히기만 하는 개정이다. 코퍼스 108건 전수 회귀 실측 결과 v4.1과 v4.2의
FAIL 분포가 완전히 동일하고 기존 PASS → 신규 FAIL 0건이다. 새 형식의 실동작도 확인했다
(v4.1은 L-f FAIL, v4.2는 PASS). rf_gate.py를 v4.2로 교체하고 구버전은
rf_gate_v4.1_outdated.py로 보존했다. 프롬프트의 절차 1·2와 verification_loop의
버전 참조도 v4.2로 갱신했다.

원본 보존: ..._v4_r6_outdated.md (153,940 B, a93d093ca6be),
..._v.5_r6_outdated.txt (163,563 B, 017da9041958).
patch_candidates_b13home.md의 §1.3을 해결됨으로 표시하고 선택 근거를 적었다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 22:57:32 +09:00
co-authored by Claude Opus 5
parent ec78fa26dd
commit 75e2d5bcc9
8 changed files with 4047 additions and 22 deletions
@@ -56,7 +56,7 @@ PROV-039·PROV-044가 각각 독립적으로 발견해 실측값을 썼다.
**`<prior_warnings>`(사전 통지는 판정이 아니다)가 세 배치 연속으로 값을 냈다.**
오케스트레이터의 교훈: **브리프에 PROV ID를 적을 때는 `leaf_id.py`로 도출한 값만 쓴다.**
### 1.3 **§4.2 `추정·전환`의 단일 열거값이 조건부·경로별 추정을 담지 못한다 — 4/10 워커**
### 1.3 ✅ **[해결됨 — 골격 v4-r7 / 프롬프트 v.5-r7 / 게이트 v4.2]** §4.2 `추정·전환`의 단일 열거값이 조건부·경로별 추정을 담지 못한다 — 4/10 워커
- **PROV-028**: R-PROV028-4-03(고의 또는 과실)은 일곱 경로 전부에 성립하는 진짜 공통 요건인데 추정은
P1·P2·P4와 등록된 P5에서 조문상 법률상 추정, P3에서 판례에 의한 추정, P7과 미등록 P5에서는 부존재로 갈린다.
@@ -69,9 +69,26 @@ PROV-039·PROV-044가 각각 독립적으로 발견해 실측값을 썼다.
- **PROV-038**: 민사소송법 제358조의 증거법칙적 추정처럼 **증거방법의 진정성립**이 추정되는 경우를
어느 필드에 적을지가 정해져 있지 않다. `추정·전환: 없음` + `증명 실무` 처리가 정규인지 명시가 필요하다.
**후보 방향** — (a) 「조건부·경로별로 갈리면 다수 경로의 값을 적고 조건을 `증명 실무`에 적는다」를 명문화(회귀 없음),
(b) 선택적 필드 `경로별 추정` 신설, (c) `추정·전환`에 「경로별 상이 — <다수 값>」 복합 형식 신설 + L-f의 `CHU_OK` 확장.
(b)·(c)는 판정 경계를 늘리므로 코퍼스 회귀 규모를 먼저 재야 한다.
**처리 (2026-09-09) — (c)를 택했다.** 후보 셋 중
(a) 명문화만 하는 안은 §7 자체가 여전히 거짓값을 담으므로 문제를 해결하지 못하고(§12.7 공개는 문서 **밖**의 조치다),
(b) 선택적 필드 신설은 10필드 계약과 L-f의 `REQ_FIELDS`를 바꾸어 **기존 코퍼스 전건에 회귀**를 낸다.
(c)는 값 집합을 넓히기만 하므로 회귀가 없고 §7에 **참인 값**을 담는다.
**골격 v4-r7 / 프롬프트 v.5-r7 / 게이트 v4.2**로 셋을 함께 반영했다.
1. `추정·전환`에 **`경로별 상이 — <다수 경로의 값>`** 형식 신설. 쓸 때의 의무 셋을 함께 정했다 —
① 경로별 내역을 `증명 실무`에 전부 적는다(적지 않으면 정보가 아니라 회피다),
② **§12.7에 올리지 않는다**(근사가 아니라 정규형이다),
③ 먼저 §5로 내릴 수 있는지 본다(요건 자체가 갈리면 공통 요건이 아니므로 §5가 정답이다).
2. **한 경로 안에서 증명책임 방향이 갈리면 요건 블록을 나눈다**(PROV-033의 상법 제826조 준용 목록).
`경로별 상이`로도 담기지 않고, `주장책임 / 증명책임`이 슬래시 하나·두 값으로 고정되어 있어
한 블록에 반대 방향을 담으면 어느 쪽도 참이 아니게 된다.
3. **증거방법의 진정성립 추정은 이 필드가 아니다**(PROV-038). 민사소송법 제356조·제358조는
`추정·전환: 없음` + `증명 실무`가 정규 처리이고, `증거법칙적 추정`은 **그 요건사실 자체가**
조문에 근거해 추정되나 반증으로 깨지는 경우에 쓴다.
**게이트 v4.2 회귀 실측**: 코퍼스 108건 전수에서 v4.1과 v4.2의 FAIL 분포가 **완전히 동일**하고
기존 PASS → 신규 FAIL **0건**. 새 형식의 실동작도 확인했다(v4.1은 `L-f FAIL`, v4.2는 `PASS`).
`tmp/rf_draft/_shared/rf_gate.py`를 v4.2로 교체했고 구버전은 `rf_gate_v4.1_outdated.py`로 보존했다.
### 1.4 **열거값이 「판결로 재판하는 절차」만 전제한다 — PROV-134가 정면으로 걸렸다**
+9 -3
View File
@@ -7,7 +7,9 @@
종료코드 0 = 전 항목 PASS."""
import sys, re, os, io, hashlib, unicodedata as U
RF_GATE_VERSION = 'v4.1' # 절차 1의 버전 확인 대상. 정본은 tmp/rf_draft/_shared/rf_gate.py이며 워커는 저장·덮어쓰기하지 않는다.
RF_GATE_VERSION = 'v4.2' # 절차 1의 버전 확인 대상. 정본은 tmp/rf_draft/_shared/rf_gate.py이며 워커는 저장·덮어쓰기하지 않는다.
# v4.2 (골격 v4-r7, 2026-09-09): L-f의 추정·전환 값에 「경로별 상이 — <기본값>」 형식을 추가 허용.
# 허용 집합을 넓히기만 하므로 v4.1에서 PASS하던 문서는 전부 그대로 PASS한다(코퍼스 회귀 없음).
# v4.1 (골격 v4-r6, 2026-09-09): §6.6 신설(L-d 범위), S1 content_hash 형식, S10b 면제 단위 정정·범위 표기 면제,
# §7 소속 절 열에 절 제목 병기, 린트 L-f(블록 필드 존재·순서·형식) / L-g(본문 조문의 §12 등재) 신설.
@@ -43,7 +45,8 @@ DENY_LEAK = ['불성립','미교부','부존재','없었다'] # L-d
SUNG_OK = {'부인','권리장애 항변','권리멸각 항변','권리저지 항변','기간·시효 항변',
'신의칙·권리남용','직권 참작사유'}
PROC_OK = {'이송','보정명령 후 소장각하명령','소각하판결','본안기각'}
CHU_OK = {'법률상 추정','의사해석규정상 추정','증거법칙적 추정','사실상 추정','전환규정','간주','없음'} # §4.2 추정·전환 (v4-r6: 간주 신설)
CHU_OK = {'법률상 추정','의사해석규정상 추정','증거법칙적 추정','사실상 추정','전환규정','간주','없음'} # §4.2 추정·전환 기본 7값 (v4-r6: 간주 신설)
CHU_MIXED = re.compile(r'^경로별 상이 — (.+)$') # v4.2: 경로별로 갈리는 경우의 복합 형식. 오른쪽은 다수 경로의 기본값
REQ_FIELDS = ['적용 경로','규범적 근거','요건분류','주장의 정도','주장책임 / 증명책임','추정·전환','다중 대응','증명 실무','흠결 빈발점','권위 ID']
DEF_FIELDS = ['대상요건','요건사실','주장책임 / 증명책임','재항변','재재항변','주문에 미치는 영향','소변경·석명 요부','권위 ID']
SEC_TITLE = {'4':'§4(공통 청구원인사실)','5':'§5(경로별 분기 요건사실)'} # §7 소속 절 열 (v4-r6: 제목 병기)
@@ -462,7 +465,10 @@ def run(path):
for rid,_,blk in req_blocks(lines, hs):
_chk(rid, blk, REQ_FIELDS)
v=field(blk,'추정·전환').strip('`*').strip()
if v and v not in CHU_OK: ef.append('%s 추정·전환:%s' % (rid, v[:16]))
if v:
m=CHU_MIXED.match(v)
base=m.group(1).strip() if m else v
if base not in CHU_OK: ef.append('%s 추정·전환:%s' % (rid, v[:24]))
for no,blk in def_blocks(lines, hs): _chk(no, blk, DEF_FIELDS)
ck('L-f', not ef, '%d건 예:%s' % (len(ef), ef[:3]))