Files
Theory_of_Requirement_Facts/plans/batch6-요건사실론-1차드래프트-병렬-v4.md
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

16 KiB

ExecPlan — 요건사실론 1차 드래프트 병렬 생성 (배치 6, 프롬프트 v.4)

작성일: 2026-09-02 오케스트레이터: Claude Opus 5 (main session) 주입 프롬프트: 요건사실론_1차드래프트_생성_프롬프트_opus_v.4.txt (1734행, 106,522 bytes) 출력 사양: 요건사실론_문서_공통골격_v3.md (86,471 bytes) — v2 아님

Objective

사용자가 지정한 14개 사건종류 각각에 대해 v.4 프롬프트를 독립 병렬로 1회씩 실행하여 사건종류_요건사실론문서/요건사실론_<####>_v1.md 14개를 생성한다.

Deliverables

  1. 문서 14건 (아래 Known Inputs 표의 파일명)
  2. MEMORY.md에 사건별 교훈 14건 추가 (append-only)
  3. 최종 종합 보고: 게이트·심사 결과, 조회 사용량, 골격 v3 패치 후보

Scope / Non-Scope

  • Scope: 아래 14건만. case_kinds.md의 나머지 leaf는 건드리지 않는다.
  • Non-Scope: 골격 v3 파일 수정, 프롬프트 v.4 수정, 기존 50개 문서의 개정, 자료조사(1단계) 재실행, 2·3·4단계 파이프라인.

Known Inputs (Stage 0.4 사전 확정 — 각 세션은 재도출이 아니라 검증만)

# 사건종류 case_kind_id 자료 규칙문서 특수모드
1 정산금 청구 PROV-051 _1 있음 —
2 제3자이의 PROV-132 _1 있음 5 (집행관계)
3 주주총회결의취소의 소 PROV-137 _1 있음 — (leaf 검산 기대값)
4 증여・유증・유류분반환을 원인으로 한 소유권이전 청구 PROV-075 _1 부재 7 (규칙문서 부재)
5 지료 청구 PROV-053 _1 있음 —
6 진료비・치료비・의료비 청구 PROV-054 _1 있음 —
7 진정명의 회복을 등기원인으로 하는 소유권이전등기 청구 PROV-094 _1 있음 —
8 채무부존재확인 청구 PROV-102 _1 있음 3 (§4 치환)
9 청구이의 PROV-131 _1 있음 5 (집행관계)
10 청산금・채무인수금・체당금・추심금・출자금 청구 등 PROV-055 _1 있음 —
11 취득시효완성을 원인으로 한 소유권이전등기 청구 PROV-072 _1 있음 —
12 투자금반환 청구 PROV-057 _1 있음 —
13 하자보수비・할부대금・화해금・확약금・환급금・회원가입비 등 PROV-059 _1 있음 —
14 화해·환매를 원인으로 한 소유권이전등기 청구 PROV-076 _1 있음 —

출력 파일 14건 모두 부재 확인(신규 생성). 문서 폴더 현재 50건 → 종료 후 64건 기대.

Material Assumptions

  1. 자료 파일이 14건 전부 _1(gpt) 단독이다. _0(perplexity)·_2(grok)는 하나도 없다. → 전건 앙상블 교차검증 불성립. <failure_handling> "자료 파일 부분 존재"가 14건 모두에 걸린다. 각 세션은 §12.7에 UNVERIFIED — 자료 파일 단일 출처(_1). 앙상블 교차검증 미실시를 적고 verification_status에 반영해야 한다. 배치 4(다출처)와 비교해 status가 낮게 나오는 것이 정상이다.
  2. 병렬성은 오케스트레이터 층에만 존재한다. v.4 <execution_architecture> 2의 하위 에이전트 spawn 금지는 실행 세션을 구속하며, 배치 1~5와 동일하게 유지된다.
  3. 모델 미지정 → 세션 모델(Opus 5) 상속. effort xhigh.

Questions

없음. 사용자 지시가 사건종류 14건과 프롬프트 버전을 특정했고, 입력 실재가 전건 확인되었다.

Workstreams

14개 독립 워크스트림. 상호 의존 없음. 각 워크스트림 = v.4의 P0~P6 전체.

Source and Tool Plan

  • Workflow 도구, parallel() 14 thunk, 단일 스테이지, agentType: 'general-purpose', effort: 'xhigh'.
  • 각 세션 도구: Read/Bash(pdftotext·grep·sed·python3)/WebFetch·WebSearch/Write·Edit.
  • 외부 조회 상한(v.4 <efficiency_rules> 4): (a) 대상 60, (b) T2 전문 대상 20 (그중 3은 R6 예비). 계수 단위는 호출 횟수가 아니라 확인한 대상 수다(v.4 신설).

동시성 안전 설계 (오케스트레이터 책임)

  1. tmp/rf_draft/_shared/rf_gate.py — 배치 시작 전 오케스트레이터가 1회 저장 완료. v.4 <gate_script> 절차 2가 명시적으로 요구한 조치. 각 세션은 실행만 한다.
    • v.4 결함 대응: 프롬프트 576행은 "첫머리의 RF_GATE_VERSION이 v3.0이면 그대로 쓴다"고 하나 코드블록에 그 상수가 없다. 그대로 두면 각 세션이 "버전 다름"으로 판단해 덮어써 경합이 난다. 오케스트레이터가 상수 RF_GATE_VERSION = 'v3.0'를 import 직후에 1행 추가했다(게이트 로직 무변경). 이 사실을 각 브리프에 명시하고, 최종 보고의 v.4 패치 후보로 올린다.
  2. tmp/rf_draft/leaf_id.py — 사전 저장 완료. v.3 추출본과 바이트 동일(md5 e46f93d3812a8edd57552b2d80207744).
  3. MEMORY.md — 14 세션 동시 append. Edit/Write 금지, cat >> MEMORY.md <<'EOF' 셸 append만 허용. 각 세션은 동일 내용을 tmp/rf_draft/<slug>/memory_entry.md에도 남겨 사후 복구 가능하게 한다.
  4. 쓰기 범위를 세션당 정확히 2개소로 한정: 출력 문서 1개 + tmp/rf_draft/<slug>/. plans/에 쓰지 않는다(v.4 <global_constraints> 20이 이미 금지).
  5. worktree 격리 미채택 — 저장소에 700MB+ PDF가 있어 복제 비용이 이익을 초과한다.

Validation Plan (오케스트레이터가 직접 수행, 세션 자기보고에 의존하지 않음)

  1. 파일 14건 실재·크기
  2. ## §1. ~ ## §12. 헤딩 누락 0
  3. front matter --- 짝, 코드펜스 짝
  4. front matter의 case_kind_id가 위 표와 일치
  5. verification_status 값 존재
  6. rf_gate.py를 오케스트레이터가 14건에 재실행 (세션이 고쳤는지 여부와 무관한 독립 판정)
  7. rf_gate.py·leaf_id.py md5 무변경 (세션이 덮어쓰지 않았음)
  8. MEMORY.md 증가분에 14건 항목 존재
  9. plans/ 파일수 62 유지 (세션 오염 없음)

Approval Boundaries

  • 파일 생성·MEMORY.md append는 사용자 지시 범위 내. 승인 불요.
  • 골격 v3·프롬프트 v.4·기존 50개 문서 수정은 범위 밖. 발견한 결함은 보고만 한다.

Progress

  • 프리플라이트: v.4 구조 파악, 골격 v3 실재, 14건 leaf ID·입력파일 확인
  • 공유 스크립트 2종 사전 저장 + 구문 검사
  • ExecPlan 작성
  • 14건 병렬 실행 기동 (Workflow Run ID wf_506dcc8a-ac1, 2026-09-02 02:38)
  • 오케스트레이터 독립 검증
  • 종합 보고 + 배치로그 [running] → [completed]

Decision Log

  • 2026-09-02 프리플라이트: 자료파일 전건 _1 단독임을 확인. 하드 스톱 사유(자료 전무)는 아니므로 진행.
  • 2026-09-02 RF_GATE_VERSION 상수 부재 확인 → 오케스트레이터가 1행 추가. 게이트 판정 로직 무변경.
  • 2026-09-02 worktree 격리 미채택 (배치 4와 동일 근거).

Evidence Ledger

  • v.4 절 맵: case_type 1-88, working_directory 91-112, execution_architecture 115-167, skeleton_contract 321-567, gate_script 570-1022(신설), external_lookup_conventions 1025-1053(신설), prior_warnings 1056-1068(신설), source_hierarchy 1071-1112, method 1115-1324, efficiency_rules 1552-1605, global_constraints 1647-1684, final_report_format 1713-1734.
  • tmp/rf_draft/_shared/rf_gate.py 428행, py_compile 통과.
  • tmp/rf_draft/leaf_id.py 36행, py_compile 통과, 14건 전부 assert 통과.

Risks

  1. 자료 단일 출처 → verification_status가 배치 4보다 낮게 수렴할 가능성. 완화: 사양대로 §12.7 기록.
  2. 골격 v2 → v3 전환 첫 배치. 게이트 표준 구현체도 첫 실전. 오탐이 나오면 문서를 고치지 말고 v3 패치 후보로 올리도록 브리프에 명시.
  3. 제3자이의·청구이의(특수모드 5), 채무부존재확인(특수모드 3), 증여·유증·유류분반환(특수모드 7)은 비표준 경로. 브리프에 해당 모드를 지정해 세션이 놓치지 않게 한다.

실행 전 기준선 (2026-09-02 02:38:44)

항목 값
MEMORY.md 204,849 bytes / 424 lines
사건종류_요건사실론문서/ 50건
plans/ 62건
tmp/rf_draft/_shared/rf_gate.py md5 38f79613c9a08624f82baae34e3bf345
tmp/rf_draft/leaf_id.py md5 e46f93d3812a8edd57552b2d80207744
요건사실론_문서_공통골격_v3.md md5 96364d6150e8e125e6e7cca86887ef19
요건사실론_1차드래프트_생성_프롬프트_opus_v.4.txt md5 6ee23f66e6d7c06a7889af38742fa894

종료 후 이 값들과 대조한다. 골격 v3·프롬프트 v.4·공유 스크립트 2종의 md5는 불변이어야 한다.

Outcome (2026-09-02)

14/14 완료. 에이전트 오류 0, 스킵 0, 빈 결과 0. 소요 3,427,698 ms (약 57분). 서브에이전트 토큰 6,369,692 / 도구 호출 1,360회.

결과

사건종류 id KB 경로 §4 §5 항변 T1 T2 쪽 (a) (b) 재시도 미해결
정산금 청구 PROV-051 147 5 0 15 13 46 12 183 60 13 4 8
제3자이의 PROV-132 103 3 7 5 8 37 17 10 56 17 22 5
주주총회결의취소의 소 PROV-137 89 2 4 6 1 33 17 15 49 16 2 6
증여・유증・유류분반환 소유권이전 PROV-075 157 4 0 15 15 73 22 31 46 20 4 7
지료 청구 PROV-053 143 5 1 21 10 41 27 135 60 20 8 12
진료비・치료비・의료비 청구 PROV-054 123 6 0 21 18 47 14 177 61 13 3 8
진정명의 회복 소유권이전등기 PROV-094 121 4 3 5 8 35 20 89 55 20 6 6
채무부존재확인 청구 PROV-102 111 4 5 6 7 37 23 122 60 15 2 8
청구이의 PROV-131 122 5 3 7 7 47 30 164 67 20 3 9
청산금・채무인수금 등 PROV-055 162 8 0 30 17 58 13 51 71 13 4 7
취득시효완성 소유권이전등기 PROV-072 108 4 3 6 10 32 21 21 54 20 8 5
투자금반환 청구 PROV-057 167 10 0 38 15 89 28 198 89 17 6 9
하자보수비・할부대금 등 PROV-059 161 8 0 26 15 61 17 200 61 17 3 10
화해·환매 소유권이전등기 PROV-076 131 5 0 17 13 40 28 146 60 18 3 7

집계: completed 14/14, memory_updated 14/14, no_subagent_spawned 14/14, shared_scripts_untouched 14/14, verification_status 전건 QUALIFIED, 라운드 전건 1회, 실측 오프셋 전건 38, R1~R6 전건 3점 이상.

오케스트레이터 독립 검증 (에이전트 자기보고와 무관하게 직접 수행)

항목 결과
파일 14건 실재·§1~§12 헤딩 누락 0
front matter 1행 시작 + --- 짝 14/14 정상 (배치 4의 S2 레이아웃 변이 재발 없음)
코드펜스 짝 14/14 짝수
case_kind_id 표 일치 14/14
schema_version 14/14 = 3.0.0
게이트 재실행 (rf_gate.py, 오케스트레이터가 직접) 14/14 22/22 PASS, 종료코드 0, FAIL 0
코퍼스 전체 게이트 대조 신규 14/14 PASS vs 기존 50건 중 22건 PASS
rf_gate.py / leaf_id.py md5 기준선과 동일 (세션이 덮어쓰지 않음)
골격 v3 / 프롬프트 v.4 md5 기준선과 동일 (수정 없음)
MEMORY.md 204,849 → 281,431 bytes, 424 → 624 lines, 14건 전부 반영, 유실 0
plans/ 62 유지 (세션 오염 0)
문서 폴더 50 → 64

오케스트레이터 프리플라이트 오류 1건 (자기 지적)

PROV-075(증여・유증・유류분반환)의 청구취지작성규칙 문서를 「부재」로 판정해 브리프에 "부재한다 … 다시 찾지 마라"라고 적었으나 실재한다(36,957 bytes). 원인은 NFC 정규화가 아니라 파일명 어간 차이다. 실제 파일명이 청구취지작성규칙_증여유증유류분반환을원인으로한소유권이전_v1.md로 끝나 사건종류명의 말미 청구가 빠져 있어 포함관계 대조가 False를 반환했다. 덧붙여 이 폴더는 NFC/NFD가 혼재하며 (청구취지작성규칙_* 34건 전부 NFD, 요건사실문서자료_*는 NFC) 셸 ls | grep은 무력하다.

워커는 브리프를 무시하고 직접 탐색해 파일을 찾아 사용했고 claim_rule_doc에 실제 경로를 보고했다. v.4 <prior_warnings>("사전 경고는 판정이 아니라 조사의 진입점")가 첫 실전에서 정확히 작동한 사례다. 피해 없음. 교훈은 사용자 메모리 korean-filename-nfd-dropbox에 갱신했다.

(a) 외부 조회 상한 초과 5건 — 사양 결함이 원인

61 / 67 / 71 / 61 / 89. 조사 범위 확대가 아니라 계수 단위 때문이다. v.4 <efficiency_rules> 4는 "대상 = 법령 조문 1건"으로 세는데, 이미 내려받은 법령 XML 하나에서 읽은 조문이 전부 개별 대상으로 계수된다. 투자금반환은 실제 HTTP 호출 8회로 조문 87건을 확인해 89로 계수됐다. 청산금은 초과 11건 중 10건이 추가 네트워크 호출 없이 발생했다. 규정의 명시된 취지("도구 사용 미숙을 조사 범위 축소로 갚지 않게 한다")를 계수 단위가 스스로 깨뜨린다. 5건 모두 초과를 인지한 시점에 조회를 멈추고 잔여를 §12.7 UNKNOWN으로 남겨 처리 규칙은 지켰다.

수렴 지적 (독립 실행 간 일치 = 증거)

v3 후보 28건, v.4 후보 68건. 주요 클러스터:

표수 대상 내용
5/14 v.4 <efficiency_rules> 4 조문 계수 단위가 (a) 상한을 조기 소진. 법령 1건 단위 계수 또는 조문·판례 상한 분리 필요
5/14 v3 S11(a)가 §4.4 구간표 전 행에 이율 값을 요구하나, 장래 정기금처럼 이율 부존재가 정답인 행이 있다. 정규값 필요
4/14 v3 S10b가 산문의 모든 §N 뒤에 제목 병기를 강제해, 절 번호가 참조가 아니라 문장 목적어인 경우까지 걸린다
3/14 v.4 <external_lookup_conventions>에 레코드 태그가 <prec id="N">처럼 속성을 가진다는 점이 없다. <prec>로만 잡는 정규식은 전건 0건을 반환해 「판례 부존재」로 오판
3/14 v.4 조문 XML의 CDATA 처리 순서. <[^>]+> 치환을 먼저 하면 CDATA 블록 전체를 태그로 보아 조문 본문을 통째로 삭제
3/14 v3 린트 L-c의 대조 재료가 목차 txt 원문 줄(점선·쪽번호 포함)이라 사실상 무조건 PASS. 13판 표제 유출을 못 잡는다
2/14 v3 §4.2 추정·전환 필드에 설명 문장을 넣으면 §7 총괄표가 붕괴. 열거값만 허용함을 명시 필요
1/14 v3 제2부 §0 YAML 예시가 schema_version: "2.0.0" — 제5부 5.1 스키마의 const "3.0.0"과 자기모순
1/14 v3 §6 「주문에 미치는 영향」 열거값에 소각하가 없다. 소송요건 흠결을 다투는 주장을 §6에 담을 자리가 없음 (주주총회결의취소)

RF_GATE_VERSION 상수 부재는 14/14가 보고했으나 내가 브리프에 적으라고 지시한 항목이므로 독립 수렴이 아니다. 실체는 사실이다(v.4 576행과 코드블록 불일치).

배치 4 대비 개선 확인

배치 4에서는 10/10이 초회 게이트 FAIL 폭주를 겪었고 대부분이 각자 작성한 스크립트의 오탐이었다. 배치 6은 <gate_script> 표준 구현체를 오케스트레이터가 사전 배포해 14건 전부 1라운드에서 종료했고, 오케스트레이터 재실행에서도 14/14가 22/22 PASS다. 기존 코퍼스 50건 중 22건만 통과하는 것과 대비된다.