**task-2064 완료 보고** **task-2064 완료 보고서** **핵심 결과** `_call_claude()`에 5가지 방어 층을 추가하고, 배치 처리에 연속 실패 안전 중단 + ��러 상세 로깅을 적용했다. pytest 279건 전체 PASS, pyright 에러 0건, 스모크테스트(규칙 기반 추출 + 에러 ���들링 3종) 전부 PASS. ## 수정 파일 ### insuwiki 레포 (worktree: task/task-2064-dev6) | 파일 | 변경 내용 | grep 검증 | 상태 | |------|-----------|-----------|------| | scripts/kakao_knowledge/knowledge_extractor_v2.py:208-260 | _call_claude() TimeoutExpired 명시 처리 + TimeoutError raise | grep "TimeoutExpired" → 224행 OK | verified | | scripts/kakao_knowledge/knowledge_extractor_v2.py:214-222 | 프롬프트 500KB 크기 제한 + 절단 경고 | grep "_MAX_PROMPT" → 214행 OK | verified | | scripts/kakao_knowledge/knowledge_extractor_v2.py:249-257 | OSError(E2BIG 등) 방어 catch 추가 | grep "OSError as exc" → 249행 OK | verified | | scripts/kakao_knowledge/knowledge_extractor_v2.py:252-262 | stdout 1MB 초과 시 50KB 절단 방 **발견/해결 이슈 5건** 1. **`_call_claude()` TimeoutExpired 미처리** — `subprocess.TimeoutExpired`를 명시적 catch하고 `TimeoutError`로 변환. subprocess.run()이 자식 프로세스를 자동 kill+wait하므로 수동 kill 불필요. 2. **stdout 무제한 메모리 적재** — LLM 비정상 응답(1MB+) 시 메모리 폭발 방지. 1MB 초과 시 앞 50KB만 반환 + 경고 로그. 3. **���롬프트 크기 제한 없음** — 긴 스레드가 커맨드라인 인자로 전달되어 OS ARG_MAX(2MB) 근접 가능. 500KB 제한 + 절단 경고 추가. 4. **OSError 미처리** — E2BIG(Argument list too long) 등 OS 레벨 에러 시 프로세스 crash. except OSError 추가. 5. **Pyright 에러 3건** — 스바로그 작업에서 `exc.process` (TimeoutExpired에 없는 속성) 참조 + 미사용 `fallback_succeeded` 변수. 직접 수정.