Files
Theory_of_Requirement_Facts/요건사실론_1차드래프트생성프롬프트_v5_패치안.md
T
jhogyuandClaude Opus 5 19a6fc234a 요건사실론 파이프라인 산출물·사양 문서 일괄 반영 (배치 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>
2026-09-05 13:10:29 +09:00

17 KiB

요건사실론 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에 담을 자리 부재