요건사실론 파이프라인 산출물·사양 문서 일괄 반영 (배치 1~11)

여러 머신에서 Dropbox로 동기화되며 누적된 작업을 한 번에 반영한다.

## 산출물
- 사건종류_요건사실론문서/ 90건. 게이트 v4.0 기준 64건 PASS(71.1%).
  남은 26건은 골격 v2·v3 세대 산출물로 골격 11.5가 개정 불요로 정한 것들이다.
- 사건종류_요건사실론문서자료/ 96건, 청구취지작성규칙 문서 110건.

## 사양 문서
- 요건사실론_문서_공통골격_v4.md — v4-r5.
  §4.2·§6 항변 템플릿의 `주장책임 / 증명책임`에 「슬래시 하나로 나눈 두 값」 규칙 신설.
  이 필드에 문장을 쓰면 §7 총괄표의 두 열에 같은 값이 복제되는데 게이트가 잡지 못한다.
- 요건사실론_1차드래프트_생성_프롬프트_opus_v.5.txt — v.5-r4.
  같은 규칙 반영, `<efficiency_rules>` 4 (a)의 예산 60/80 자기모순 제거,
  법령 검색 응답의 <법령명한글>도 CDATA임을 `<external_lookup_conventions>` 0에 추가.
- 보존본 10건의 파일명을 `_r<n>_outdated` 기본형으로 정리했다.
  정리 전에는 `_orig`·`_old`·`_9_4_outdated`·`_r`·`_r2`가 섞여 있었고
  `..._v4_r.md`가 v4-r2를, `..._v4_r2.md`가 v4-r4를 담아 숫자가 실제와 어긋났다.
  이동 전후 해시를 대조해 내용 변형이 없음을 확인했다.

## 검증 자산
- tmp/rf_draft/_shared/ — 게이트 표준 구현체(rf_gate.py, RF_GATE_VERSION v4.0),
  배치별 preflight, 패치 후보, targets. tmp/rf_draft/leaf_id.py.
- MEMORY.md — 사건종류별 누적 교훈.

## .gitignore
- *.pdf 제외. 교재·자료 스캔 합계 1.7GB이고 여러 파일이 100MB를 넘어 호스트가 거부한다.
- tmp/ 스크래치 제외(_shared·leaf_id.py는 유지). law.go.kr XML 캐시 3,449개와
  페이지 추출 이미지·텍스트가 대부분이며 전부 재생성 가능하다.
- 그 결과 이 커밋은 497개 파일 32MB이고 2MB를 넘는 파일이 없다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-05 13:10:29 +09:00
co-authored by Claude Opus 5
parent f4d8a80e68
commit 19a6fc234a
497 changed files with 274599 additions and 21 deletions
@@ -0,0 +1,224 @@
# 요건사실론 1차 드래프트 생성 프롬프트 v.4 → v.5 패치안
작성일: 2026-09-02
근거: 배치 6(14개 사건종류, v.4/골격 v3 병렬 실행)의 워커 자기보고 68건과
오케스트레이터의 프롬프트 원문 직접 대조.
원칙: **결함만 고친다.** 명세 부족(underspecification)은 부록 B에 분리하고 v.5에 반영하지 않는다.
---
## 요약
| # | 결함 | 표수 | 절 | 성격 |
|---|---|---:|---|---|
| P1 | `<special_modes>` 5가 청구이의와 제3자이의에 같은 법리를 지시 | 2/14 | special_modes | **실체법 오류** |
| P2 | 판례 전문 조회 관례가 실측과 다름 | 2/14 | external_lookup_conventions | 사실 오류 |
| P3 | MST 취득 절차 불완전(필드명·파라미터·부분일치 함정) | 3/14 | external_lookup_conventions | 사실 누락 |
| P4 | Stage 4 집필 순서와 즉시 append 규칙이 양립 불가 | 3/14 | method | 자기모순 |
| P5 | 골격 v2 참조 잔재 9곳 (v2를 읽지 말라는 지시와 충돌) | 1/14 | 전역 | 자기모순 |
| P6 | `<section_generation_rules>` §11이 "v2의 13개 규칙" — 실제 v3는 15개 | 2/14 | section_generation_rules | 사실 오류 |
| P7 | Stage 0.4 (2) 파일 대조가 말미 어절 누락을 못 잡음 | 1/14 | method | 규칙 결손 |
| P8 | `<skeleton_contract>` 5가 §5 요건 블록 레벨을 명시하지 않아 게이트가 침묵 통과 | 2/14 | skeleton_contract | **침묵 실패** |
| P9 | `<efficiency_rules>` 4의 조문 계수 단위가 (a) 상한을 조기 소진 | 5/14 | efficiency_rules | 자기모순 |
| P10 | `<gate_script>` 절차 1이 요구하는 `RF_GATE_VERSION` 상수가 코드블록에 없음 | (지시 유도) | gate_script | 사양·구현 불일치 |
| P11 | 레코드 태그 속성(`<prec id="N">`)과 조문 XML CDATA 처리 순서 누락 | 3/14 | external_lookup_conventions | 사실 누락 |
P10의 14/14 보고는 오케스트레이터가 브리프에 적으라고 지시한 항목이므로 독립 수렴이 아니다.
실체는 프롬프트 576행과 코드블록의 불일치로 확인했다.
---
## P1. `<special_modes>` 5 — 청구이의와 제3자이의를 분리한다
**결함.** v.4 1413~1417행이 두 사건종류를 한 항목으로 묶고 세 지시를 공유시킨다.
세 가지가 모두 틀렸다.
1. **민법 제165조 10년을 두 사건 모두의 §6.4에 두라**는 지시. 제165조는 집행권원에 표시된
청구권의 시효로서 **채무자의 청구이의 사유**다. 제3자이의(민사집행법 제48조)의 이의원인은
목적물에 대한 제3자의 소유권·양도금지 권리이므로 집행채권의 시효는 이의원인이 될 수 없다.
2. **민사집행법 제44조 제2항(변론종결 후 발생)을 §4에 두라**는 지시. 제44조는 청구이의의 소
조항이므로 제3자이의에는 적용 자체가 없다. 청구이의에서도 이 제한은 기판력 있는 집행권원에만
걸리고 지급명령·집행증서·이행권고결정에서는 배제되므로(제58조 제3항·제59조 제3항,
소액사건심판법 제5조의8 제3항), §4로 올리면 골격의 「경로 전용 요건의 §4 승격 금지」와 충돌한다.
3. **청구이의 §6.4의 방향.** 소멸시효 완성은 원고의 이의사유(청구원인)이고, §6.4에 놓이는 것은
피고의 시효중단·시효이익 포기 항변이다. 지시대로 쓰면 §7 총괄표의 증명책임 값이 통째로 뒤집힌다.
**패치.** 5를 5-A(공통) / 5-B(청구이의) / 5-C(제3자이의)로 나눈다. 5-B에서 제44조 제2항을
§4가 아니라 §5의 경로 요건으로 내리고 집행권원 종류별 경로 분기를 명시한다. 5-C에서 제165조
지시를 삭제하고 제48조 이의원인을 넣는다. 두 사건 모두 §6의 부담 방향을 한 줄로 못박는다.
## P2. `<external_lookup_conventions>` 2 — 판례 전문 조회 관례 정정
**결함.** 1041행 "`lawService.do?target=prec`는 **메타데이터만** 반환한다. 전문(T2 확인)은
`precInfoP.do`다"가 실측과 다르다. 두 워커(PROV-137, PROV-075)가 각각
`lawService.do?OC=<키>&target=prec&type=XML&ID=<판례일련번호>`로 `<판례내용>` 전문을 받았고,
T2 확인 16건·17건 **전건**을 이 하나의 엔드포인트로 끝냈다. `precInfoP.do` 우회도
`evtNo`→`precSeq` 재시도도 필요 없었다. 배치 4 실측이라고 명시한 관례가 오히려 불필요한
2단 우회를 유도한다.
**패치.** 권장 경로를 `lawSearch.do?target=prec&nb=<사건번호>`로 일련번호 취득 →
`lawService.do?target=prec&ID=<일련번호>`로 전문 취득의 2단으로 고쳐 적는다.
`precInfoP.do`는 전문이 비어 올 때의 대체 경로로 강등한다.
## P3. `<external_lookup_conventions>` 1 — MST 취득 절차 보완
**결함.** "`lawSearch.do`로 먼저 MST를 얻고"까지만 적혀 두 가지가 빠졌다.
(가) 검색 응답의 필드명이 `<법령일련번호>`이고 그 값을 `lawService.do`에서는 `ID=`가 아니라
`MST=`에 넣어야 한다(PROV-072가 `ID=`로 시도해 "일치하는 법령이 없습니다"를 받았다).
(나) 법령명 검색이 부분일치라 짧고 흔한 이름은 이 경로로 MST를 얻을 수 없다
(`query=민법`이 「난민법」을, 「상법」이 56건을 반환. PROV-132·PROV-137·PROV-102가 각각 걸렸다).
**패치.** 필드명·파라미터명을 명시하고, 정확일치 필터 + `display=100` 재검색을 관례로 적는다.
조문 단위 조회 예시 `MST=<법령일련번호>&JO=<조 4자리+가지 2자리>`를 한 줄 넣는다.
실측 MST(상법 272919, 민사소송법 252393, 민법 284415)를 예시로 남긴다.
## P4. `<method>` Stage 4 — 집필 순서와 append 순서를 분리한다
**결함.** 1278행이 "집필 순서(의존 순서다)"로 §1 → §3 → §4 → §2.1 → §5 → …를 지시하고
1291행이 "절을 쓴 즉시 출력 파일에 append한다"고 한다. `<global_constraints>` 10도 같은 요구를
반복한다. §2가 파일에서 §4보다 앞이므로 두 규칙은 동시에 만족될 수 없다.
세 워커(PROV-132·PROV-059·PROV-076)가 각자 다른 방식으로 우회했다.
**패치.** "**의존 순서로 내용을 확정하되, 디스크에는 절 번호 오름차순으로 append한다.**
아직 차례가 오지 않은 절의 확정된 내용은 `tmp/rf_draft/<slug>/sections/§N.md`에 두고,
앞 절이 확정되는 즉시 번호 순으로 본 파일에 append한다"를 명문화한다. 60KB 일괄 생성 금지의
원래 취지(중단 시 부분 산출 보존)는 절별 파일로 유지된다.
## P5. 골격 v2 참조 잔재 제거
**결함.** `<input_data>`와 `<global_constraints>` 2가 "출력 사양은 v3 하나이며 구버전
공통골격_v2.md가 함께 있어도 읽지 않는다"고 못박았는데, 본문 9곳이 v2 원문을 상세 규범으로
삼으라고 지시한다: 21행(원칙 1), 185행(제5부), 1100행(원칙 8), 1235행(5.2 `RfAuthority`),
1274행(그 절의 v2 원문), 1329행(제2부 해당 절 원문이 상세 규범), 1365행(제3부 표),
1474행(제4부 서술규범), 1208행(v2를 함께 든 컨텍스트). 읽지 말라는 파일을 규범으로 삼으라는
자기모순이다.
**패치.** 9곳을 전부 v3로 정정한다. 227행("골격 v2 이전 세대다")과 553~556행(오버라이드 흡수
이력)은 역사적 서술이므로 유지한다.
## P6. `<section_generation_rules>` §11 — 규칙 수 정정
**결함.** 1359행 "11.2는 v2의 13개 규칙을 재기술(규칙 13은 오버라이드 4)". 골격 v3 §11.2는
**15개**다(직접 계수 확인: 14 `filing_deadline.kind`, 15 직권 참작사유가 신설). 또 "오버라이드 4"는
553행의 "오버라이드 6건은 골격 v3가 본문에 흡수했으므로 예외는 없다"와 어긋나는 잔재다.
**패치.** "11.2는 골격 v3 §11.2의 15개 금지규칙을 이 사건종류 기준으로 재기술"로 고치고
오버라이드 언급을 삭제한다. Stage 4의 "11.2 금지규칙 13 재기술"도 15로 고친다.
## P7. `<method>` Stage 0.4 (2) — 파일 대조 규칙 확장
**결함.** 대조 규칙이 "NFC 정규화 후 공백·`・`·`·`·`•` 제거 문자열로 대조"까지만 정해,
사건종류명 말미의 어절이 빠진 실재 파일을 부재로 판정한다. 실측:
leaf `증여・유증・유류분반환을 원인으로 한 소유권이전 청구`의 규칙 문서 실제 파일명은
`청구취지작성규칙_증여유증유류분반환을원인으로한소유권이전_v1.md`로 말미 `청구`가 없다(36,957 bytes).
오케스트레이터의 프리플라이트도 같은 함정에 빠졌다. 이번엔 워커가 규칙 밖에서 재탐색해 찾았지만
그건 운이지 사양이 아니다. 덧붙여 이 폴더는 NFC/NFD가 혼재하며(`청구취지작성규칙_*` 34건 전부 NFD,
`요건사실문서자료_*`는 NFC) 셸 `ls | grep`은 무력하다.
**패치.** 3단 대조로 넓힌다. ① 정규화 완전일치 → ② 양방향 포함관계 →
③ 말미 어절(`청구`/`등`/`의 소`/`청구 등`)을 제거한 어간으로 재시도. 어느 단계든 1건이면 채택,
2건 이상이면 중단·보고. 「부재」 결론은 `test -f`에 준하는 실재 확인을 한 번 더 거친 뒤에만 내린다.
셸 `grep`으로 파일명을 찾지 말라는 금지를 명시한다.
## P8. `<skeleton_contract>` 5 — §5 요건 블록의 헤딩 레벨과 침묵 실패 경고
**결함.** "요건 블록 헤딩은 §4·§5 모두 `####`로 통일한다(`#####`를 쓰지 않는다)"라고만 적혀,
§5에서는 그 결과 요건 블록이 항 헤딩(`#### 5.P1.2`)과 **같은 레벨**이 된다는 점이 드러나지 않는다.
시각적 위계가 사라지므로 초회 작성에서 `#####`를 쓰기 쉬운데, 표준 게이트 구현체의 `req_blocks`는
level 4만 수집하므로 그 경우 §5 요건이 통째로 수집되지 않고 **S4·S5·S7이 아무것도 검사하지 않은 채
PASS한다.** 오작성이 실패가 아니라 침묵으로 넘어간다는 점에서 이 목록 중 가장 위험하다.
PROV-132와 PROV-102가 독립적으로 지적했다.
**패치.** 레벨 관계를 예시로 못박고, `#####`를 쓰면 게이트가 FAIL이 아니라 **침묵 통과**한다는
사실을 경고로 붙인다. 집필 후 §5 요건 블록 수를 육안으로 세어 §7 총괄표 행수와 대조하라는
자기점검 한 줄을 추가한다.
## P9. `<efficiency_rules>` 4 — 조문 계수 단위 개정
**결함.** 계수 단위가 "법령 조문 1건"이라, 이미 내려받은 법령 XML 하나에서 읽은 조문이 전부
개별 대상으로 계수된다. 실측: 투자금반환은 HTTP 호출 **8회**로 조문 87건을 확인해 **89/60**으로
계수됐고, 청산금은 초과 11건 중 10건이 추가 네트워크 호출 없이 발생했다. 배치 6에서 5건이 초과했고
(61/67/71/61/89) **조사 범위를 넓혀서 초과한 건은 하나도 없다.**
더 나쁜 것은 삼자 충돌이다. 골격 v3가 §3.4·§3.5·§6.4·§8.4·§10.3에 특정 조문(민법 제168조·
제178조·제179조~제182조, 민사소송법 제202조의2 등)의 명시를 요구하고, `<authority_rules>` 1이
본문의 모든 조문에 T1 검증을 요구하므로, **골격을 지키는 것만으로 상한이 소진된다.**
규정이 스스로 밝힌 취지("도구 사용 미숙을 조사 범위 축소로 갚지 않게 한다")를 계수 단위가 깨뜨린다.
**패치.** 세 가지를 함께 적용한다.
1. **계수 단위를 「법령 1건」으로 바꾼다.** 한 번 확보한 법령에서 읽은 조문은 몇 개든 1대상이다.
판례는 종전대로 사건번호 1건 = 1대상.
2. **골격 v3가 조문번호까지 지정해 요구하는 항목은 상한 밖의 고정 목록으로 뺀다.**
골격 준수가 예산을 잡아먹지 않게 한다.
3. **(a) 60을 「법령 25 + 판례 35」로 분리한다.** 한쪽이 남아도 다른 쪽으로 넘기지 않는다.
확인의 소처럼 판례 의존도가 높은 사건(PROV-102가 판례만 35건)과 특별법이 여럿 걸리는 사건
(PROV-054가 조문만 47건)이 서로 다른 방향으로 상한을 소진하는 것이 실측됐다.
## P10. `<gate_script>` — `RF_GATE_VERSION` 상수를 코드블록에 넣는다
**결함.** 576행이 "`tmp/rf_draft/_shared/rf_gate.py`가 존재하고 첫머리의 `RF_GATE_VERSION`이
`v3.0`이면 그대로 쓴다"고 하는데, 같은 절의 코드블록에 그 상수가 없다. 그대로 두면 모든 세션이
「버전 다름」으로 판정해 같은 파일을 동시에 덮어쓴다 — 동시 쓰기 경합을 없애려고 만든 규정이
경합을 만드는 구조다. 배치 6에서는 오케스트레이터가 상수 1행을 부여해 막았다.
**패치.** 코드블록의 `import` 직후에 `RF_GATE_VERSION = 'v3.0'`를 넣는다. 게이트 판정 로직은
한 글자도 바꾸지 않는다.
## P11. `<external_lookup_conventions>` — 태그 속성과 CDATA 처리 순서
**결함.** (가) 레코드 태그가 `<prec id="1">`처럼 **속성을 가진다**는 점이 없다. `<prec>`로만 잡는
정규식은 `totalCnt`가 1인데도 0건을 반환해 「판례 부존재」로 오판한다(PROV-051이 12건,
PROV-132가 19건을 전건 재조회). 같은 함정이 법령 XML의 `<law id="1">`에도 있다.
(나) 조문 XML의 CDATA 처리 순서. `<조문내용>` 안이 CDATA로 감싸이고 그 안에 `>`가 없으면
`<[^>]+>` 치환이 CDATA 블록 전체를 하나의 태그로 보아 조문 본문을 통째로 지운다.
결과가 빈 문자열이어서 「조문 없음」으로 오판한다(PROV-051·PROV-094·PROV-132).
(다) 판례 전문 조회의 `IncompleteRead`가 관례에 없다(PROV-094가 5회, PROV-051이 2회 겪었다).
(라) 헌법재판소 결정 조회 관례가 없다. `target=detc`이고 응답 태그가 대문자 `<Detc>`여서
판례와 같은 소문자 가정 파서는 0건으로 읽는다(PROV-075).
**패치.** 네 항목을 관례 절에 명문화한다.
---
## 부록 A. v.5에서 함께 손보는 부수 항목
- `<prior_warnings>`에 「오케스트레이터의 사전 확정 정보(파일 실재 여부 포함)」를 진입점의
예시로 명시한다. 배치 6에서 실제로 틀린 것이 이 유형이었다.
- `<final_report_format>`에 「사전 통지와 원문이 갈린 사실」 항목을 추가한다. 현재 스키마는
「자료 파일 부분 존재」 외의 사전 통지 오류를 보고할 자리가 없다(PROV-075 지적).
- 자기 버전 표기를 v.5로 갱신하고, 배치 6 실측을 근거로 인용한다.
## 부록 B. v.5에 반영하지 않은 명세 부족 항목 (사용자 판단 필요)
결함이 아니라 명세 부족이므로 제외했다. 반영을 원하면 별도 지시가 필요하다.
1. `reading_plan.json` 필드 스펙 부재 — Stage 1.2가 산출을, Stage 0.5가 재사용을 요구하나
스펙이 없어 세션마다 형식이 갈린다. 재사용이 실제로는 작동하지 않는다(PROV-057).
2. `<efficiency_rules>` 6 정독 200쪽 상한의 계수 기준 모호 — 추출 기준인지 실제 독서 기준인지.
조준 grep으로 일부만 읽은 블록도 전체 쪽수로 계수되어 과대 집계된다(PROV-054·PROV-057).
3. `count_registry_t1`/`t2`의 정의 모호 — 「T1 이상 전체」인지 「T1에 머문 것」인지
(PROV-094는 전자, PROV-055는 후자로 셌다).
4. `<execution_architecture>` 4 blind 심사의 실효성 — 같은 세션이 집필과 심사를 모두 하므로
집필 맥락이 컨텍스트에 남는다. 저장된 판례 전문 재독이 T2 상한에 계수되는지도 불명확
(PROV-072·PROV-057).
5. `<skeleton_contract>` 5의 `주장책임 / 증명책임` 필드 값 형식(슬래시 구분)이 관례에만 의존
(PROV-053).
6. §4.4 기계판독 줄은 따옴표로 감싸고 §2.2 셀은 안쪽 문자열만 적는 비대칭이 미명시(PROV-054).
7. 13판 각주 분리 전처리 절차 부재 — 각주가 본문의 3배인 구간에서 300줄 상한 안에 명제가
거의 들어오지 않는다(PROV-072).
8. `<special_modes>`에 「§4가 해당 없음이면서 부수급부는 경로별로 실재하는 표지형」 지침 부재
(PROV-057).
9. §2.1 소송물 판례가 없거나 상한 안에서 특정되지 않는 경우의 처리 미명시(PROV-059).
10. Stage 1.5 블록별 노트 append가 총 정독량이 작을 때 낭비 — 통합 노트 예외 부재(PROV-055).
## 부록 C. 골격 v3 패치 후보 (이 패치안의 범위 밖)
v.5는 골격 v3 파일을 수정하지 않는다(`<global_constraints>` 15). 배치 6에서 수렴한 골격 결함:
| 표수 | 내용 |
|---:|---|
| 5/14 | S11(a)가 §4.4 구간표 전 행에 이율 값을 요구. 장래 정기금처럼 이율 부존재가 정답인 행의 정규값 부재 |
| 4/14 | S10b가 산문의 모든 `§N` 뒤에 제목 병기를 강제. 절 번호가 문장의 목적어인 경우까지 걸림 |
| 3/14 | 린트 L-c의 대조 재료가 목차 txt 원문 줄(점선·쪽번호 포함)이라 사실상 무조건 PASS |
| 2/14 | §4.2 `추정·전환` 필드에 설명 문장을 넣으면 §7 총괄표 붕괴. 열거값만 허용임을 명시 필요 |
| 1/14 | 제2부 §0 YAML 예시가 `schema_version: "2.0.0"` — 제5부 스키마의 `const "3.0.0"`과 자기모순 |
| 1/14 | §6 「주문에 미치는 영향」 열거값에 **소각하가 없음**. 소송요건 흠결 주장을 §6에 담을 자리 부재 |