    - name: stage4_1_청구항변반박전략_중간작업
      tools:
        mcpServers:
            code-executor:
                type: streamable-http
                url: https://code-executor.mcp.eroomai.com/mcp
                description: Run scripts of programming languages
                headers:
                Authorization: Bearer rR8OXqWrVZA1gFEo8oWfBkw2XgpWoGrrspw5ObsxTCM=      
            localdocs:
                type: streamable-http
                url: "http://mcp-localdocs:8012/mcp"
                description: Get the content of local documents       

      description: 지금까지의 작업을 바탕으로 청구, 항변, 반박 구조도 작성
      llm_provider: anthropic
      llm_model: claude-haiku-4-5
      
      
      # Task 정의
      tasks:
        - task_name: "Task_B"
          llm_provider: "anthropic"
          llm_model: "claude-haiku-4-5"
          prompts:
            - role: "user"
              content: |
                ## Goal
                아래 지시사항을 **정확히** 따라 `claim_master_table.md`를 생성하라.

                ## IO
                - IN: `stage4_claim_packets.json`
                - OUT: `claim_master_table.md`

                ## Speed Hard Constraints (MUST)
                1. **입력 파일 재읽기 금지**: `read_doc`/동등 기능으로 `stage4_claim_packets.json`은 **1회만** 읽는다.
                2. **초안/미리보기/채팅 출력 금지**: 문서 본문(json 혹은 markdown 전체)을 대화 메시지로 출력하지 말고, **오직 `write_file` 1회로만 저장**한다.
                3. **출력 파일 내용 재열람 금지**: 생성된 `claim_master_table.md`를 다시 열어 읽거나(format 검증 목적 포함) 부분 발췌/요약을 출력하지 않는다.
                4. **수정 루프 금지**: “검증→수정→재저장→재검증” 반복 금지. **단일 패스(one-pass)** 로 끝낸다.
                5. **검증 최소화**: `write_file` 이후에는 **파일 존재 확인만 1회** 수행(예: `list_docs`)하고 종료한다. (내용 검증/형식 검증 금지)
                6. **사고과정/추론문/설명문/주석/JSON 출력 금지**: 최종 산출물은 파일로만 저장.
                7. **턴/호출 최소화**: 생성(write_file) 턴 + 존재확인(list_docs) 턴으로 **총 2턴에 종료**한다.

                ## 최상위 문서 형식
                1. 문서 첫 줄은 반드시 아래와 동일:
                - `# 청구 마스터 표`
                2. 그 다음 줄은 빈 줄 1개.
                3. 이후 `claim_packets` 배열 순서를 그대로 유지하여, 각 `claim_id`마다 표 1개씩 생성.

                ## 섹션 형식(각 claim마다 반복)
                각 claim마다 아래 순서를 **그대로** 사용:

                1. 섹션 제목:
                - `## 청구 ID: {claim_id}`
                2. 빈 줄 1개
                3. 아래 HTML 테이블 구조를 그대로 사용(스타일/폭/열비율 포함):

                ```html
                <table style="width:170mm; table-layout:fixed; border-collapse:collapse;">
                <colgroup>
                    <col style="width:30%;">
                    <col style="width:35%;">
                    <col style="width:35%;">
                </colgroup>
                <thead>
                    <tr>
                    <th style="white-space:nowrap; text-align:left;">항목</th>
                    <th style="text-align:left;">내용</th>
                    <th style="text-align:left;">출처/세부</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">청구 종류</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{claim_type}</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;"></td>
                    </tr>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">청구 방식</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{procedural_structures_joined}</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;"></td>
                    </tr>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">청구 취지</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{purpose_sentence}</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;"></td>
                    </tr>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">청구 원인</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{cause_sentence}</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{cause_src_formatted}</td>
                    </tr>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">당사자</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">원고</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{plaintiff_value}</td>
                    </tr>
                    <tr>
                    <td style="white-space:nowrap; text-align:left;">당사자</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">피고</td>
                    <td style="text-align:left; word-break:keep-all; overflow-wrap:break-word;">{defendants_joined}</td>
                    </tr>
                </tbody>
                </table>
                ```

                4. 각 테이블 뒤에는 빈 줄 1개.

                ## 값 매핑 규칙(정확히 적용)
                - `{claim_type}` = claim의 `claim_type`
                - `{procedural_structures_joined}` = claim의 `procedural_structures`를 `, `로 결합
                - `{purpose_sentence}` = claim의 `purpose_sentence` (빈 문자열이면 빈칸 유지)
                - `{cause_sentence}` = claim의 `cause_sentence` (빈 문자열이면 빈칸 유지)
                - `{plaintiff_value}`:
                - 우선 `parties.plaintiff` 사용
                - 없으면 claim 최상위 `plaintiff` 사용
                - `{defendants_joined}` = `parties.defendants` 배열을 `, `로 결합

                ## 청구 원인 출처(cause_src_formatted) 생성 규칙
                아래 순서대로 수집 후, 중복 제거(처음 등장 순서 유지):
                1. `elements` 배열의 각 원소에서 `element_id`를 수집하되 정규식 `^LF-Q\d{3}-P\d+$` 일치값만 포함
                2. 같은 `elements`의 `fact_candidates` 값들을 수집하되 정규식 `^F-\d{3}$` 일치값만 포함
                3. 최종 포맷:
                - 값이 있으면: `출처: [A, B, C]`
                - 값이 없으면: `출처: []`

                ## 강제 제약
                - 모든 claim의 `청구 취지` 행 3열(`출처/세부`)은 **항상 빈칸**이어야 한다.
                - 표는 반드시 HTML `<table>` 형식으로 작성한다(마크다운 파이프 테이블 금지).
                - 1열 셀은 `white-space:nowrap`을 유지해야 한다.
                - 2열/3열 폭은 동일(각 35%)이어야 한다.
                - 불필요한 설명문, 주석, 추가 문단을 출력하지 마라.

                ## 최종 출력
                - 오직 `claim_master_table.md` 파일을 생성/덮어쓴다.

                완료되면 **terminate** 을 출력하세요.

        - task_name: "Task_C"
          llm_provider: "anthropic"
          llm_model: "claude-haiku-4-5"
          prompts:
            - role: "user"
              content: |
                ## 목적
                - stage4_claim_packets.json + stage4_compute_inputs.json + stage4_index.json → claim_legal_facts_table.md
                - 출력은 **마크다운 본문만**(코드펜스/설명/메타 금지)

                ## Speed mode (CRITICAL)
                - **1-pass 생성**: 문서를 다 만든 뒤 다시 읽어 전수검증/재생성/재검증하지 말 것.
                - ### Execution policy
                - 파일을 1회 작성하고 생성 완료 후, 파일이 실제 생성되었는지만 검증하라.
                - **생성된 파일을 다시 읽거나, 내용을 검증하거나, 추가 요약을 생성하는 등의 후속 작업을 절대 수행하지 마라.**
                - 파일 생성 검증 후, 곧바로 "claim_legal_facts_table.md 생성 완료" 메시지를 춭력하고, 작업을 종료하라. 
                - 작업 종료 후에도 iteration 작업을 수행하는 등의 그 어떤 작업도 수행하지 마라. 
                - 아래 규칙을 그대로 적용하여 **만들면서 정합성 보장**.
                - 불필요한 서론/요약/체크리스트 출력 금지(오로지 최종 md 본문만).

                ## Input files (ONLY these)
                - stage4_claim_packets.json
                - stage4_compute_inputs.json
                - stage4_index.json

                ## Allowed fields (시간 절약을 위해 아래 필드만 읽고 나머지는 무시)
                - stage4_claim_packets.json: claim_packets[].{claim_id, claim_type, elements[], paulian_actions[], purpose_sentence}
                - stage4_index.json:
                - fact_index[F-###].summary
                - claim_index[C-###].summary
                - stage4_compute_inputs.json:
                - claims[] (claim_id로 매칭)에서 아래만 사용:
                - principal.candidates[].{raw, src}
                - rate.{contractual_rate, statutory_rate, recommended_rate}
                - dates.start_date.{value, candidates[]}
                - fees.claim_value.value

                ## Absolute constraints
                - 데이터 소스는 위 3개 JSON만 사용.
                - JSON에 없는 값 생성 금지.
                - “인지대”, “송달료” 문자열을 출력에 포함시키지 말 것.
                - 줄바꿈은 LF(`\n`)만, 후행 공백 금지.

                ## Global markdown format (deterministic)
                - 문서 첫 줄은 정확히: `# 청구 요건사실 및 세부사항`
                - claim_packets 순서대로 모든 claim_id 처리.
                - 각 청구 섹션 시작 제목은 정확히: `## 청구 ID: {claim_id} - 요건 사실`
                - 각 표 헤더는 항상 다음 2줄(정확히 일치):
                | 요건 요소 | 요건 요소 내용 | 서증 목록 |
                | --- | --- | --- |
                - 표와 표(또는 표와 다음 텍스트) 사이는 **빈 줄 1개**.
                - 각 표의 행 수는 **정확히 `M + 4`** (M = elements 길이). *(생성 시점에 M을 고정하고 그대로 출력)*

                ## Row construction rules
                ### A) 요소 행 (1~M행)
                - 1열: `<span style="white-space: nowrap;">{element}</span>` 사용
                - {element} 내부의 모든 공백은 `&nbsp;`로 치환
                - 2열: fact_candidates 순서 유지
                - 각 항목: `F-xxx: {fact_index[F-xxx].summary}`
                - 다수 항목은 `,<br>`로 연결
                - 3열: evidence_candidates 순서 유지
                - `E-xxx, E-yyy` 형식(접두어/라벨 금지)
                - 구분자는 `, `

                ### B) 소송 금액/원금 (M+1행)
                - 1열: `<span style="white-space: nowrap;">소송&nbsp;금액</span>`
                - 2열: `<span style="white-space: nowrap;">원금</span>`
                - 3열: principal.candidates 순서 유지
                - 각 항목: `k. "{raw}": {clean_summary} & 출처: [src1, src2, ...]`
                - 다수 항목은 `,<br>`로 연결
                - candidates가 없으면 **빈 셀**(아무것도 쓰지 않음)
                - clean_summary 생성 규칙(청구당 1회 계산 후 재사용):
                1) stage4_index.claim_index[claim_id].summary에서 `(F-... )`로 시작하는 괄호 덩어리 전체 삭제
                2) 동일하게 `(E-... )`로 시작하는 괄호 덩어리 전체 삭제
                3) 남은 텍스트에 포함된 단독 `F-###`, `E-###` 토큰을 모두 삭제
                4) 연속 공백을 1개로 정리하고 문장만 남김

                ### C) 소송 금액/이자금액 (M+2행)
                - 1열: `<span style="white-space: nowrap;">소송&nbsp;금액</span>`
                - 2열: `<span style="white-space: nowrap;">이자금액</span>`
                - contractual_rate가 null이거나 contractual_rate.annual_pct 또는 contractual_rate.raw가 null이면 3열은 정확히 `정보없음`
                - 그 외 3열은 아래 4문장을 `,<br>`로 연결:
                1) `약정이율 {contractual_rate.annual_pct}%, {contractual_rate.raw},`
                2) `{statutory_rate.basis}: {statutory_rate.annual_pct}%,`
                3) `권고이자율: {recommended_rate.type} {recommended_rate.annual_pct}%,`
                4) `출처: [{contractual_rate.src...}]`

                ### D) 날짜 산정 (M+3행)
                - 1열: `<span style="white-space: nowrap;">날짜&nbsp;산정</span>`
                - 2열: `만기일(기산일 후보), 변제기 또는 부도일`
                - 3열: dates.start_date.candidates 순서대로
                - `{value}, {origin}, {note}, 시작일: {dates.start_date.value} & 출처: [src...]`
                - 다수 항목은 `,<br>`로 연결
                - candidates가 없으면 **빈 셀**

                ### E) 비용/소송가액 (M+4행)
                - 1열: `<span style="white-space: nowrap;">비용</span>`
                - 2열: `<span style="white-space: nowrap;">소송가액</span>`
                - 3열: fees.claim_value.value가 정수면 천단위 콤마 후 `원` 붙임
                - value가 null이면 정확히 `null원`

                ## Special rule: claim_type에 “사해행위취소” 포함 시 (표 바로 아래 추가)
                - 표 바로 아래에 제목 `### 사해행위취소특칙` 출력(앞뒤 빈 줄 규칙 유지)
                - 아래 3개를 번호 목록으로 정확히 작성:

                1. 피보전채권 특정:
                - paulian_actions 순서대로 `연결 청구: {preserved_claim_link} (근거: [src...])`
                - 다수는 `; `로 연결
                - paulian_actions가 없으면 `명시 없음`

                2. 요건:
                - elements 중 element 텍스트에 `제척기간`, `무자력`, `사해의사`, `수익자·전득자` 중 하나라도 포함된 항목만 선택(원래 elements 순서 유지)
                - 각 항목 출력 형식(중요):
                    - `{element} (F-..., F-..., ...)`
                    - 괄호 안에는 **fact_candidates만**, 순서 유지, 구분자는 `, `
                - 다수는 `; `로 연결
                - 해당 항목이 없으면 `명시 없음`
                - **절대 출력 금지**: `element_id`, `fact_candidates:` 문자열 또는 대괄호 `[...]`

                3. 주위적 vs 예비적:
                - 한 줄로: `주위적(원물반환): ..., 예비적(가액배상): ...`
                - purpose_sentence에 취소/말소등기/원물반환/주위 관련 문구가 있으면 주위적에 purpose_sentence 사용, 없으면 `명시 없음`
                - purpose_sentence에 가액배상/예비 관련 문구가 있으면 예비적에 purpose_sentence 사용, 없으면 `명시 없음`

                ## Formatting rules
                - 1열은 모든 행에서 nowrap 유지(위 span 규칙 준수).
                - 2열/3열에서만 `<br>` 사용 가능.
                - 식별자/숫자 토큰 내부 분할 금지(`F-001`, `E-012`, `1,000,000원` 등).
                - 항목 구분자는 각 규칙에서 지정한 그대로 사용(`; `, `, `, `,<br>`).
                - JSON 키/경로 설명 등 메타 출력 금지.
                ## Output
                - 위 규칙을 적용한 **최종 마크다운 본문만** 출력.

                완료되면 **terminate** 을 출력하세요.

        - task_name: "Task_D"
          llm_provider: "anthropic"
          llm_model: "claude-haiku-4-5"
          prompts:
            - role: "user"
              content: |
                # Role
                세계적 수준의 인공지능 아키텍트 개발자 & 대한민국 최고의 법률 전문가

                # Goal
                - 항변/재반박 매트릭스 생성(defense_rebuttal.md)
                - 토큰/시간 최소화

                # IO
                - IN:
                - stage4_claim_packets.json
                - stage4_index.json
                - stage4_compute_inputs.json (기본 미사용)
                - OUT: defense_rebuttal.md

                ## Speed mode (CRITICAL)
                - **1-pass 생성**: 문서를 다 만든 뒤 다시 읽어 전수검증/재생성/재검증하지 말 것.
                - ### Execution policy
                - 파일을 1회 작성하고 생성 완료 후, 파일이 실제 생성되었는지만 검증하라.
                - **생성된 파일을 다시 읽거나, 내용을 검증하거나, 추가 요약을 생성하는 등의 후속 작업을 절대 수행하지 마라.**
                - 파일 생성 검증 후, 곧바로 "defense_rebuttal.md 생성 완료" 메시지를 춭력하고, 작업을 종료하라. 
                - 작업 종료 후에도 iteration 작업을 수행하는 등의 그 어떤 작업도 수행하지 마라. 
                - 아래 규칙을 그대로 적용하여 **만들면서 정합성 보장**.
                - 불필요한 서론/요약/체크리스트 출력 금지(오로지 최종 md 본문만).

                # Hard Constraints
                1. 첫 줄: `# 항변/재반박 매트릭스`
                2. claim 처리 순서: `claim_id` 오름차순
                3. claim 섹션: `## 청구 ID - C-xxx`
                4. 표 제목: `### C-xxx - 항변/재반박 k`
                5. 각 표는 정확히 6행: 유형/상대방 예상 항변·주장/핵심 쟁점/재반박/근거/신뢰도
                6. `재반박`에 `[태그]` 금지
                7. `신뢰도`는 `High|Medium`만 허용 (`Low` 금지)
                8. 설명문/추가 섹션/사고과정 출력 금지

                # Data Use (minimal)
                - 사용 필드만 읽기:
                - claim: `claim_id, claim_type, defendant, purpose_sentence, cause_sentence, elements[]`
                - element: `element_id, element, fact_candidates, evidence_candidates`
                - index: `fact_index[F-###].credibility, summary`
                - `stage4_compute_inputs.json`은 누락 보정이 필요할 때만 읽기

                # Candidate Rules
                ## 상대방 예상 항변/부인/절차 후보 선정 방법
                * 읽어들인 Data에서 "요건사실 요소에서 파생되는 전형적 다툼"만 고려
                * 반드시 관련 F-###/E-###를 찾을 수 있는 것만 채택(HIGH/MEDIUM)
                * 예: 소멸시효(기산점), 변제/상계, 무자력 부인, 피보전채권 부인 등

                ## 유효 후보 조건(모두 충족):
                - 트리거 매칭 element >=1
                - 매칭 element의 F-### >=1
                - 매칭 element의 E-### >=1

                ## 점수(결정형):
                - `score = 10*매칭 element 수 + 2*credibility가 high/medium인 fact 수 + evidence 수`
                - 동점이면 후보 `항변 - 부인 - 절차` 순서로 우선 순위 결정

                ## M 결정:
                - 점수순 상위 유효 후보 사용
                - `2위 score >= 12`이면 `M=2`, 아니면 `M=1` (최소 1 보장)

                ## `핵심 쟁점`:
                - `{대표 element명} 충족과 증거연결(E/F)의 충분성으로 해당 항변 배척 가능 여부가 쟁점이다.`

                ## `재반박`:
                - `원고는 {대표 element_id} 및 연결 사실·증거를 통해 상대방 주장의 요건사실 부합성을 탄핵할 수 있다.`

                ## `근거(사실/증거/법리)`:
                - `{element_id들}; F:{fact_id들}; E:{evidence_id들}`
                - 각 id 목록은 중복 제거 + 오름차순

                ## `신뢰도`:
                - High: `element_id >=2` AND `evidence_id >=2`
                - 그 외 유효 후보: Medium

                # Representative Selection (deterministic)
                - 대표 element = 매칭 element 중 `element_id` 오름차순 첫 항목
                - element_id들/fact_id들/evidence_id들 = 매칭 집합 전체(오름차순)

                # Markdown Layout (exact)
                - `# 항변/재반박 매트릭스`
                - 반복: `## 청구 ID - C-xxx`
                - 반복: `### C-xxx - 항변/재반박 k`
                - 표:
                - `| 항목 | 내용/세부 |`
                - `|---|---|`
                - `| 유형 | ... |`
                - `| 상대방 예상 항변/주장 | ... |`
                - `| 핵심 쟁점 | ... |`
                - `| 재반박 | ... |`
                - `| 근거(사실/증거/법리) | ... |`
                - `| 신뢰도 | High 또는 Medium |`"

                완료되면 **terminate** 을 출력하세요.


        - task_name: "Task_E"
          llm_provider: "anthropic"
          llm_model: "claude-haiku-4-5"
          prompts:
            - role: "user"
              content: |
                ## Goal
                - **최소 지연**으로 `서증및위험성평가.md` **단일 파일**을 1회에 생성한다.
                - **품질/내용/형식은 기존 `서증및위험성평가.md`와 동일 수준**이어야 한다.
                - 생성 후 **재읽기·형식검증·재작성 루프를 수행하지 않는다**(형식을 “생성 by construction”).

                ## IO
                - IN: `stage4_claim_packets.json`, `stage4_index.json`
                - OUT: `서증및위험성평가.md` (단일 파일, 중간파일 생성 금지)

                ---

                ## Speed Hard Constraints (MUST)
                1. **입력 파일 재읽기 금지**: `read_doc`/동등 기능으로 `stage4_claim_packets.json`, `stage4_index.json`은 **각 1회만** 읽는다.
                2. **초안/미리보기/채팅 출력 금지**: 문서 본문(markdown 전체)을 대화 메시지로 출력하지 말고, **오직 `write_file` 1회로만 저장**한다.
                3. **출력 파일 내용 재열람 금지**: 생성된 `서증및위험성평가.md`를 다시 열어 읽거나(format 검증 목적 포함) 부분 발췌/요약을 출력하지 않는다.
                4. **수정 루프 금지**: “검증→수정→재저장→재검증” 반복 금지. **단일 패스(one-pass)** 로 끝낸다.
                5. **검증 최소화**: `write_file` 이후에는 **파일 존재 확인만 1회** 수행(예: `list_docs`)하고 종료한다. (내용 검증/형식 검증 금지)
                6. **사고과정/추론문/설명문/주석/JSON 출력 금지**: 최종 산출물은 파일로만 저장.
                7. **정렬·구분자·표 헤더는 아래 스키마를 그대로** 사용(변형 금지).
                8. **턴/호출 최소화**: 생성(write_file) 턴 + 존재확인(list_docs) 턴으로 **총 2턴에 종료**한다.

                ---

                ## Data Use (minimal)
                아래 필드만 사용하고, 나머지는 읽었더라도 무시한다.

                ### From `stage4_index.json`
                - `meta.generated_at`
                - `evidence_index` (E-### 키, `title`)
                - `fact_index` (F-###: `summary`, `credibility`, `evidence_refs`, `related_claims`)

                ### From `stage4_claim_packets.json`
                - `claim_packets[].claim_id`
                - `claim_packets[].claim_type`
                - `claim_packets[].elements[].element`
                - `claim_packets[].elements[].fact_candidates`
                - `claim_packets[].elements[].evidence_candidates`
                - `claim_packets[].paulian_actions` (특히 `time`, `act_type`, `src`)
                - `claim_packets[].warnings[]`

                ---

                ## 법률 판단 기준 (LLM이 추론하지 말고 아래를 그대로 적용)

                | 항목 | 기준 |
                |------|------|
                | 평가 기준일 | `meta.generated_at` 값 사용 |
                | 상사채권 소멸시효 | 5년 (상법 §64) — 여신금융업자(우방캐피탈)의 대출채권에 적용 |
                | 민사채권 소멸시효 | 10년 (민법 §162①) — 보증인 구상채권에 적용 |
                | 사해행위취소 제척기간 | **법률행위가 있은 날**(등기완료일 우선, 없으면 계약일)로부터 5년 (민법 §406②) |
                | 시효중단 사유 | fact_index에 경매신청(민법 §168②)·가압류(§168③)·배당 사실이 존재하면, 해당 시점에 중단·갱신된 것으로 처리 |
                | warnings 처리 | `claim_packets[].warnings[]` 항목을 리스크 평가의 `핵심 리스크` 컬럼에 **반드시** 반영 |

                ---

                ## 출력 스키마 (아래 3개 섹션을 순서대로 단일 .md에 작성)

                ---

                ### 섹션 1: `# 서증 목록`

                **데이터 소스**: `evidence_index` 전체(E-001~E-020) + `claim_packets[].elements[].evidence_candidates`(역방향 매핑) + `fact_index`(입증취지 보강)

                #### 표

                | 서증번호 | 문서명 | 입증취지 | 대응 청구·요건 | 예상다툼 | 증거능력 |
                |----------|--------|----------|----------------|----------|----------|

                **컬럼 규칙(결정형, 변형 금지)**:
                - `서증번호`: E-### (번호 오름차순)
                - `문서명`: `evidence_index[E-###].title`
                - `입증취지`:
                - 1순위: `evidence_index[E-###].key_facts`가 비어있지 않으면 이를 세미콜론(;)로 병합
                - 2순위(필수 fallback): 비어있으면 `fact_index`에서 `evidence_refs`에 해당 E-###가 포함된 모든 사실(F-###)의 `summary`를 **F-### 오름차순**으로 수집하여 세미콜론(;)로 병합
                - 3순위: 그래도 0개면 `{문서명} 관련 사실 입증`(정확히 이 문구)
                - `대응 청구·요건`:
                - claim_packets 전체 elements를 순회 → 해당 E-###가 `evidence_candidates`에 포함된 모든 `(claim_id, element)` 쌍을 수집
                - 표기: `{claim_id}/{element}`
                - 중복 제거 후 `claim_id` 오름차순 → `element` 사전순으로 정렬
                - 연결: ` / ` (공백-슬래시-공백)로 병합
                - 어떤 claim에도 연결되지 않으면 **"배경 증거"**
                - `예상다툼`:
                - 아래 2계층 규칙 적용(동일 문구 유지)
                - **1계층(doc_type 기반)**: 공문서→"형식적 증거력 추정", 처분문서→"성립 진정 시 내용 부인 곤란", 판결/결정→"공적 증거력", 거래기록→"작성 진정·정확성 다툼 가능", 기타→"별도 보강 필요"
                - **2계층(구체적 쟁점)**: 위 입증취지(사실 요약)에서 금액 차이, 조건부 거래, 시간적 근접성 등 쟁점이 식별되면 1계층 뒤에 추가 (예: "성립 진정 시 내용 부인 곤란; 채무인수 조건의 실질 검토 필요")
                - `증거능력`: 1줄 결론

                #### 보강수단 (서증 목록 하단)

                아래 4개 항목 각각 1줄로 판단. **판단 근거**:
                - `fact_index`에서 `credibility == "low"` AND `evidence_refs`가 빈 배열인 사실(F-###) 존재 여부
                - + `claim_packets[].warnings[]` 내용

                **형식은 아래 코드블록을 그대로 사용** (문구/순서/줄바꿈 유지):

                ```
                ## 보강수단
                - 문서제출명령: [필요/불필요] — 대상·사유
                - 사실조회: [필요/불필요] — 조회처·목표사실
                - 감정: [필요/불필요] — 대상물·감정목적
                - 증인: [필요/불필요] — 증인명·입증사항
                ```

                ---

                ### 섹션 2: `# 리스크 평가`

                **데이터 소스**: `claim_packets`(warnings, paulian_actions.time), `fact_index`(날짜·credibility), 섹션 1의 보강수단 판단 결과

                #### 표

                | 청구 ID | 청구유형 | 시효·제척 | 집행 | 입증 | 핵심 리스크 |
                |---------|----------|-----------|------|------|-------------|

                **척도 정의** (상=위험 ↑, 하=안전 ↓):

                | 축 | 하 (안전) | 중 | 상 (위험) |
                |----|-----------|-----|-----------|
                | 시효·제척 | 잔여 > 총기간 50% | 잔여 10%~50% | 잔여 <10% 또는 도과 |
                | 집행 | 회수·원물반환 확실 | 가능하나 불확실 | 가능성 낮음/없음 |
                | 입증 | 핵심 서증 전부 확보 | 일부 누락·보강 필요 | 핵심 서증 부재·입증 곤란 |

                **`핵심 리스크` 컬럼(결정형)**:
                - 해당 청구의 최대 위험 1~2개를 1줄로 기재
                - `claim_packets[].warnings[]`의 WARNING-### 내용을 **반드시 포함**
                - WARNING-###가 없으면(예외) 핵심 리스크는 데이터 기반(시효·제척/집행/입증)으로만 작성

                #### 상세 분석 (리스크 표 하단)

                `## 상세 분석` 헤더를 두고, 각 청구 ID별로 **2~4문장**(과다 서술 금지):
                1. 시효·제척 판단 근거 (기산일, 만료일, 중단 사유 유무)
                2. 집행·입증 판단 핵심 논거
                3. 해당 warnings 원문 인용 및 대응 방안

                **warnings 원문 인용 규칙(결정형, 편차/재작성 방지)**:
                - `claim_packets[].warnings[]`는 문자열이며 형식은 보통 `WARNING-###: <내용>`이다.
                - 상세 분석에서는 반드시 아래 형식으로 인용한다:
                - `WARNING-### 원문: "<내용>"`
                - 여기서 `<내용>`은 원 문자열에서 접두 `WARNING-###: `를 제거한 본문을 사용하되,
                - 본문 내의 ` - ` (공백-하이픈-공백)을 ` — ` (공백-emdash-공백)으로 치환
                - 문장 끝이 마침표(`.`)가 아니면 `.`를 1개 추가
                - 위 규칙 외의 요약/의역/재서술 금지(동일한 인용 형식 유지).

                ---

                ### 섹션 3: `# 교차참조표`

                **데이터 소스**: `claim_packets[].elements[]`

                마크다운 표로 작성 (**JSON 금지**):

                | 청구 ID | 요건요소 | 관련 사실 (F-###) | 관련 증거 (E-###) |
                |---------|----------|-------------------|-------------------|

                `claim_packets`의 각 `claim_id` > `elements[]` 배열을 행 단위로 펼친다.

                ---

                ## 실행 규칙 (MUST)

                1. **단일 파일 출력**: `서증및위험성평가.md` 하나만 생성. 중간 파일(JSON, 임시 .md 등) 생성 금지.
                2. **완전성**: evidence_index의 E-001~E-020 전부 서증 목록에 포함. claim_packets의 C-001~C-006 전부 리스크 평가에 포함.
                3. **섹션 구분**: 3개 섹션 사이에 `---` 구분선 삽입.
                4. **warnings 필수 반영**: claim_packets의 모든 WARNING-### 항목이 리스크 평가표의 `핵심 리스크` 컬럼 또는 상세 분석에 1회 이상 등장해야 한다.
                5. **법률 기준 고정**: 위 "법률 판단 기준" 표의 내용을 그대로 적용. 모델 자체 법률 추론으로 대체 금지.

                ---

                ## Execution Plan (MUST, minimal calls)
                - 1) `read_doc(stage4_index.json)` 1회
                - 2) `read_doc(stage4_claim_packets.json)` 1회
                - 3) 위 스키마대로 markdown을 **한 번에 완성** (내부 메모리에서만)
                - 4) `write_file(서증및위험성평가.md, <markdown>)` **정확히 1회**
                - 5) 다음 턴에서 `list_docs` 1회로 파일 존재만 확인하고 즉시 종료

                ## Completion Message (after existence check)
                - 최종 대화 메시지는 아래 1줄만 출력:
                - `DONE: 서증및위험성평가.md`

                완료되면 **terminate** 을 출력하세요.




      # DAG 기반 실행 순서
      #
      #    ┌─ Task_B ──┐
      #    │           │             
      #    ├─ Task_C ──│
      # IN │           │──────  OUT 
      #    ├─ Task_D   │                   
      #    │           │
      #    └─ Task_E ──┘
      #

      task_procedure:
        IN:
          nexts: ["Task_B", "Task_C", "Task_D", "Task_E"]
          wait_until: []
        Task_B:
          nexts: ["OUT"]
          wait_until: []
        Task_C:
          nexts: ["OUT"]
          wait_until: []
        Task_D:
          nexts: ["OUT"]
          wait_until: []
        Task_E:
          nexts: ["OUT"]
          wait_until: []