여러 머신에서 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>
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행이 두 사건종류를 한 항목으로 묶고 세 지시를 공유시킨다. 세 가지가 모두 틀렸다.
- 민법 제165조 10년을 두 사건 모두의 §6.4에 두라는 지시. 제165조는 집행권원에 표시된 청구권의 시효로서 채무자의 청구이의 사유다. 제3자이의(민사집행법 제48조)의 이의원인은 목적물에 대한 제3자의 소유권·양도금지 권리이므로 집행채권의 시효는 이의원인이 될 수 없다.
- 민사집행법 제44조 제2항(변론종결 후 발생)을 §4에 두라는 지시. 제44조는 청구이의의 소 조항이므로 제3자이의에는 적용 자체가 없다. 청구이의에서도 이 제한은 기판력 있는 집행권원에만 걸리고 지급명령·집행증서·이행권고결정에서는 배제되므로(제58조 제3항·제59조 제3항, 소액사건심판법 제5조의8 제3항), §4로 올리면 골격의 「경로 전용 요건의 §4 승격 금지」와 충돌한다.
- 청구이의 §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대상.
- 골격 v3가 조문번호까지 지정해 요구하는 항목은 상한 밖의 고정 목록으로 뺀다. 골격 준수가 예산을 잡아먹지 않게 한다.
- (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에 반영하지 않은 명세 부족 항목 (사용자 판단 필요)
결함이 아니라 명세 부족이므로 제외했다. 반영을 원하면 별도 지시가 필요하다.
reading_plan.json필드 스펙 부재 — Stage 1.2가 산출을, Stage 0.5가 재사용을 요구하나 스펙이 없어 세션마다 형식이 갈린다. 재사용이 실제로는 작동하지 않는다(PROV-057).<efficiency_rules>6 정독 200쪽 상한의 계수 기준 모호 — 추출 기준인지 실제 독서 기준인지. 조준 grep으로 일부만 읽은 블록도 전체 쪽수로 계수되어 과대 집계된다(PROV-054·PROV-057).count_registry_t1/t2의 정의 모호 — 「T1 이상 전체」인지 「T1에 머문 것」인지 (PROV-094는 전자, PROV-055는 후자로 셌다).<execution_architecture>4 blind 심사의 실효성 — 같은 세션이 집필과 심사를 모두 하므로 집필 맥락이 컨텍스트에 남는다. 저장된 판례 전문 재독이 T2 상한에 계수되는지도 불명확 (PROV-072·PROV-057).<skeleton_contract>5의주장책임 / 증명책임필드 값 형식(슬래시 구분)이 관례에만 의존 (PROV-053).- §4.4 기계판독 줄은 따옴표로 감싸고 §2.2 셀은 안쪽 문자열만 적는 비대칭이 미명시(PROV-054).
- 13판 각주 분리 전처리 절차 부재 — 각주가 본문의 3배인 구간에서 300줄 상한 안에 명제가 거의 들어오지 않는다(PROV-072).
<special_modes>에 「§4가 해당 없음이면서 부수급부는 경로별로 실재하는 표지형」 지침 부재 (PROV-057).- §2.1 소송물 판례가 없거나 상한 안에서 특정되지 않는 경우의 처리 미명시(PROV-059).
- 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에 담을 자리 부재 |