needs_evidence 42건 반려 사유별 분포 및 반복 에이전트 실측
needs_evidence 42건 실측 (조회 2026-10-15 17:50 KST, sqlite3 -readonly)
결론 요약: 42건 중 30건(71%)이 guardian이다. 4블록 라벨 자체는 42건 중 41건이 갖췄고(1건은 근거파일 라벨 누락), 현재 게이트 코드로 재판정하면 _completion_required_evidence_gaps(1966행)는 42건 모두 빈 목록, 엄격 게이트 _completion_required_result_evidence_gaps(7349행)는 1건(#40691)만 차단, 문구 검사 _completion_block_reasons(4042행)는 33건을 차단한다. 원인은 에이전트 형식 문제가 주(主)가 아니라 게이트 쪽(과거 판정 코드 + 인용 문구 오탐)이다.
1. 에이전트별 (SELECT claimed_by,count(*) ... GROUP BY 1 → 5행)
- guardian: 30건 (71.4%)
- cowork: 5건 (11.9%)
- analyst-pm: 4건 (9.5%)
- analyst-macro: 2건 (4.8%)
- ron: 1건 (2.4%)
- 합계: 42건
2. 차단 사유 라벨별 (result_note의 '차단 사유:' 구간 파싱, 한 건에 여러 라벨 가능)
- 결과 확인 보류: 15건 / {'guardian': 13, 'cowork': 2}
- missing_verification_exit_code: 12건 / {'guardian': 12}
- missing_result_or_verification: 8건 / {'analyst-macro': 2, 'analyst-pm': 4, 'cowork': 1, 'guardian': 1}
- 검증 근거 없음: 8건 / {'guardian': 8}
- invalid_verification_exit_code: 7건 / {'ron': 1, 'guardian': 5, 'cowork': 1}
- 결과물과 검증 근거가 없음: 6건 / {'guardian': 6}
- missing_verification_command: 3건 / {'guardian': 3}
- missing_execution_artifact: 2건 / {'guardian': 2}
- completion_result_note_forces_rework: 2건 / {'cowork': 1, 'guardian': 1}
- verification_command_unverifiable: 1건 / {'cowork': 1}
- execution_artifact_path_not_found: 1건 / {'guardian': 1}
- 참고: 요청에 예시된 missing_source, missing_verification_value, truncated_unverifiable_evidence는 현재 42건의 차단 사유 구간에 0건이다. DB 저장 노트는 게이트가 '결론: 결과 확인 보류' 템플릿으로 덮어쓰고 원문은 약 200자만 '원본 요약'에 남기므로, 원문 전체는 /Users/ron/.hermes/logs/agent-queue-*.log에서 command_id로 복원했다(42/42 복원).
- 단순 문자열 검색(missing_source 등을 result_note 전체에서 검색)은 guardian이 집계 보고서 안에 라벨명을 인용한 것까지 세므로 '차단 사유:' 구간만 사용했다.
3. 반려 3건 이상 에이전트와 제목 패턴
- guardian 30건: 제목이 'needs_evidence/반려 N건 분류·집계' 류인 메타 태스크가 27건(90%). 반려 현황을 집계하는 태스크 자체가 반려되는 자기참조 루프다. 접수 건수가 N=7→41로 매번 늘어난 재발행 체인(#40825→#41640)이다.
- analyst-pm 4건 + analyst-macro 2건 = 6건: 전부 '미국 IG·HY OAS / 크레딧 스프레드' 계열(#40408 #40518 #40874 #40960 #41035 #41067). 라벨은 전부 missing_result_or_verification.
- cowork 5건: 전부 'needs_evidence N건 방지안/재발 방지' 메타 태스크(5건). 3건 미만: ron 1건(#40297 ETF 예열).
4. 원인 구분 (코드 수정 없이 읽기·재판정만)
재판정 방법: 로그에서 복원한 원문 42건을 현재 scripts/agent_queue_worker.py 함수에 넣어 호출(읽기 전용).
- _completion_required_evidence_gaps(text, agent=...)(1966행): 42건 중 0건 차단 (agent별 호출, 41385·41387·40518은 개별로도 [] 확인).
- _completion_required_result_evidence_gaps(7349행): 42건 중 1건(#40691 invalid_verification_result)만 차단.
- _completion_block_reasons(4042행, 문구 검사): 33건 차단. 주된 사유는 '확인 보류'·'결과물과 검증 근거가 없음'·'근거 없음' 같은 문구가 보고서 본문에 그대로 인용된 경우다(예: guardian이 반려 라벨을 설명하며 따옴표로 인용).
- 저장 시점 라벨(exit code 계열 19건 등)은 2026-10-13 이전 판정이다. updated_at 기준 10-13 이전 37건/42건. 10-13 CMD#41573 패치(exit_code 정규식 왼쪽 경계, 7082행)로 현 코드에서는 재현되지 않는다.
- 4블록 보유: 라벨 4개 모두 있음 41건(analyst-pm 4, analyst-macro 2, cowork 5, ron 1, guardian 29), guardian 1건은 3개.
대표 사례 3건 원문 근거
1) #40518 analyst-macro (IG OAS 추이, 형식 문제 아님 → 게이트/판정 시점 문제)
원문에 결론/근거/검증/근거파일 4블록, ls -l 결과와 python3 /tmp/oas.py 출력, '이 파싱 명령은 exit code 0으로 통과했습니다', 근거파일 BAMLC0A0CM.json:659 인용이 모두 있다. 산출물 /Users/ron/knowledge-agent/100-inbox/260930_hermes_us-ig-oas-trend.md 실존(1833 bytes, ls 확인). 그런데 저장 라벨은 missing_result_or_verification. 현재 코드 재판정: gaps=[], block_reasons=[] (통과). → 게이트 판정 로직/시점 문제. 같은 계열 #40408, #40874, #40960, #41035, #41067도 재판정 통과.
2) #41385 guardian (집계 태스크, 문구 오탐)
원문에 4블록과 ls -l 결과, 합계 27건 대조, '통과, exit code 0'이 있다. 근거 안에 '차단 사유 라벨이 없는 "결과 확인 보류"만 있는 건이 5건' 문장이 있어 문구 검사(_completion_block_reasons)가 '확인 보류'로 막는다. 저장 라벨은 invalid_verification_exit_code. 현재 gaps=[] → 게이트 문구 검사의 인용 오탐이면서, 보고서가 게이트 문구를 그대로 인용하는 제출 습관도 겹친다. #41387, #41494, #41623~#41640 등 guardian 집계 태스크 다수가 같은 구조.
3) #40691 cowork (제출 형식 쪽 요인 + 게이트 오탐)
원문 4블록은 있으나 '검증:' 값에 '추가 조치 없음 단독이 ...'처럼 설명 문장이 들어가 _CODEX_BAD_VERIFICATION_RESULT_VALUE_RE의 '없음'에 걸려 invalid_verification_result가 된다(재판정 재현). 검증 칸에 명령과 exit code만 쓰지 않고 서술을 섞은 제출 형식 문제 + '없음' 단어를 무조건 불량 취급하는 게이트 정규식의 거친 판정이 함께 원인이다.
구분 결과
- 게이트 쪽 원인(과거 exit code 판정 + 문구 인용 오탐 + '없음' 단어 정규식): 대부분. 라벨 기준으로 현재 재현되는 건 0건, 문구 검사는 33건.
- 에이전트 제출 형식 쪽: guardian 집계 보고서가 게이트 템플릿 문구('결과 확인 보류' 등)를 따옴표로 인용, cowork 검증 칸에 서술 혼입. 제출 형식만으로 막힌 건은 확인된 범위에서 소수.
- 인프라 지연(llm_infra_failure)이 실제 원인인 건: 확인한 범위에서 0건(문구는 일부 노트에 '0건' 설명으로 나올 뿐).
5. 해리 확인 필요/후속 제안 (미실행)
- 42건은 현재 코드로 라벨 게이트 통과 → 재처리(재판정) 후보. 상태 변경은 하지 않았다.
- 코드 변경 후보(codex 위임용):
_completion_block_reasons의 문구 검사가 따옴표/백틱 인용구를 제외하도록,_CODEX_BAD_VERIFICATION_RESULT_VALUE_RE의 '없음'을 단독 단어가 아닌 선언형에만 적용하도록. - 메타 집계 태스크의 자기참조 재발행(#40825→#41640)은 별도 중단 판단 필요.
- 한계: 로그 복원 원문과 DB 저장 노트의 판정 시점 코드 차이는 재현 불가능하여 '현재 코드 기준' 재판정이다.