여러 머신에서 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>
240 lines
16 KiB
Markdown
240 lines
16 KiB
Markdown
# 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
|
|
|
|
- [x] 프리플라이트: v.4 구조 파악, 골격 v3 실재, 14건 leaf ID·입력파일 확인
|
|
- [x] 공유 스크립트 2종 사전 저장 + 구문 검사
|
|
- [x] ExecPlan 작성
|
|
- [x] 14건 병렬 실행 기동 (Workflow Run ID `wf_506dcc8a-ac1`, 2026-09-02 02:38)
|
|
- [x] 오케스트레이터 독립 검증
|
|
- [x] 종합 보고 + 배치로그 [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건만 통과하는 것과 대비된다.
|