virtual-insanity
← 리포트 목록

needs_evidence 45건 사유별 분류와 에이전트별 집중도

2026-10-17 claude [needs_evidence, completion-gate, bus_commands, cowork]

needs_evidence 45건 분류 (조회 2026-10-17 05:06 KST)

조회: sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT id,claimed_by,title,result_note FROM bus_commands WHERE status='needs_evidence'" → 45행 (id 40276~41782). 읽기 전용, 수정 없음. 라벨 기준: config/agent_completion_submission_standard.md §4 반려 라벨표(236행~) + result_note의 "차단 사유:" 필드 실측값.

1. 사유별 분류 (상호배타, 합계 45)

분류 실제 차단 사유 라벨 건수 비율
A. 검증값 계열 missing_verification_exit_code 9, invalid_verification_exit_code 7, verification_command_unverifiable 1 17 37.8%
B. 결과·검증 통합 누락 missing_result_or_verification 8 (분석가 8건 전부) + 메타 2건(#40954, #41623) 10 22.2%
C. 라벨 없는 일반 "결과 확인 보류" 차단 사유가 "결과 확인 보류/검증 근거 없음" 문구뿐 15 33.3%
D. 실행산출물·검증명령·exit code 3종 누락 missing_execution_artifact (=missing_execution_value 계열) 2 4.4%
E. execution_artifact_path_not_found /Users/ron/.hermes/workspace/jobs.json 미실존 (#41323) 1 2.2%
F. llm_infra_failure 계열 차단 사유 필드에 0건 0 0%
  • missing_source / missing_verification_value / missing_original_verification 단독 라벨은 현재 45건 중 0건(본문 인용으로만 1건씩 등장). 반려 사유는 대부분 최신 게이트 라벨(exit code, result_or_verification)로 바뀌었다.
  • 주의: result_note에 "llm_infra"가 들어간 13건(전부 guardian)은 guardian이 다른 태스크를 분류한 요약문 속 단어이며, 자기 반려 사유가 아니다. F는 0건.
  • 한계: DB의 result_note는 360~486자로 잘려 있어(길이 분포 360×9, 382×25 등) 원본 4블록 중 어느 줄이 비었는지는 본문만으로 확정 불가. "원본 요약"이 "근거:"에서 끊긴 사례가 있다(#40408).

2. 에이전트별 집중도

에이전트 건수 비율 A B C D E
guardian 30 66.7% 14 1 12 2 1
cowork 6 13.3% 2 1 3 0 0
analyst-macro 4 8.9% 0 4 0 0 0
analyst-pm 4 8.9% 0 4 0 0 0
ron 1 2.2% 1 0 0 0 0
codex 0 0% - - - - -
analyst-technical 0 0% - - - - -
analyst-fundamental/기타 0 0% - - - - -
합계 45 100% 17 10 15 2 1

(요청 목록의 analyst-pm·analyst-technical·guardian 외 codex/analyst-technical은 0건. 위 표의 analyst-pm 4건은 모두 미국 IG·HY 크레딧 건.)

3. 3회 이상 반복 묶음

패턴 1 — 반려 분류 작업 자체의 반려 루프: 31건 (guardian 25 + cowork 6, 전체의 68.9%)

  • 제목에 needs_evidence/반려가 들어간 태스크가 "needs_evidence N건 분류"를 반복 요청 → 매번 needs_evidence로 반려 → 건수만 늘려(8→9→10→12→19→20→…→44) 재발행. 제목 속 N이 40842(8건)에서 41782(44건)까지 증가.
  • 31건 중 C 15, A 12, D 2, B 2. 즉 데이터 부재가 아니라 4블록·exit code 미준수. 근거: DB에 데이터는 있고(이번 조회로 45행 확인) 지시문에 4블록 요구가 있다.
  • 구분: 4블록 미준수(주원인) + 지시문 구조 문제(분류 요청이 자기 자신을 새 반려 대상으로 만드는 재귀).

패턴 2 — 미국 IG·HY OAS(BAMLC0A0CM/BAMLH0A0HYM2) 분석: 8건 (analyst-macro 4 + analyst-pm 4), 전부 missing_result_or_verification

  • id: 40408, 40518, 40874, 40960, 41035, 41067, 41769, 41780. 같은 제목 계열 전체 조회에서도 needs_evidence는 8건.
  • 데이터 부재 아님: memory/macro-timeseries/BAMLC0A0CM.json(10,856B)과 BAMLH0A0HYM2.json(10,857B)이 10/16 07:10 갱신본으로 실존, 결과 요약에 최신값·bp 변화가 이미 계산돼 있다.
  • 지시문 문제 아님: #41780 본문은 4블록 라벨, 근거 경로, "exit code 0 또는 통과" 끝 문구까지 요구한다.
  • 판정: 4블록 미준수. 분석가가 판단 서술은 쓰지만 "근거:" 블록(경로+조회시각)과 "검증:" 블록(명령+결과값)을 비운다(#40408 "근거:"에서 요약 종료).

패턴 3 — 검증값 exit code 계열: 17건 (9 missing + 7 invalid + 1 unverifiable)

  • 12건이 패턴 1과 겹치고 ron #40297 포함. 표준 §4(245행)가 기술한 대로 부재 확인 grep이 exit 1이 되거나, 검증 줄에 숫자 exit code가 없어 반려.
  • 40297(ron): 본문에 "exit code 1"과 "exit code 0"이 한 줄에 혼재 → invalid. 확인은 성공했지만 형식이 막음.

  • 판정: 4블록 중 검증 줄 형식 미준수(데이터 있음, 지시문 있음).

(참고: 지식사랑방 인사이트 실패 분류 #40633, #40994, #40691 3건은 모두 패턴 1·3과 겹침.)

4. 구조적 개선안 (코드 작성 없음)

패턴 1

  • 개선: needs_evidence 분류 태스크 발행을 중단하고, 분류표는 이 문서처럼 파일 1개를 갱신해 재사용(이미 400-reports에 25개 유사 파일 존재). 오케스트레이터는 제목에 needs_evidence/반려 N건이 있는 태스크를 24시간에 1건으로 제한.
  • codex 위임안: 수정 대상 scripts/orchestrator.py — create_task()(제목 중복·반복 억제 게이트), 필요 시 scripts/agent_queue_worker.py — _completion_required_evidence_gaps()는 변경 불요.

패턴 2

  • 개선: analyst 프롬프트·태스크 본문에서 "근거:" 줄에 조회 YYYY-MM-DD HH:MM KST와 JSON 경로, "검증:" 줄에 파싱 명령+최신 관측일·값+exit code 숫자를 한 줄에 쓰도록 고정 템플릿 제공. 판단 서술이 4블록보다 먼저 길게 나오지 않도록 4블록을 맨 위로.
  • codex 위임안: scripts/agent_registry.py — AGENT_ROLE_PROMPTS의 analyst-macro/analyst-pm 항목에 4블록 선행 규칙 반영(존재하지 않는 도구 참조 금지 원칙 유지).

패턴 3

  • 개선: exit code는 "exit code 0" 한 가지 숫자만 쓰고, 실패 시연·부정형 확인은 ! grep -q ...; echo "exit code $?" 형태로 0을 만든다(표준 §4 245행). 검증 줄에 다른 숫자 exit code를 섞지 않는다.
  • codex 위임안: scripts/shared/public_result_formatter.py — completion_required_evidence_gaps()가 검증 줄에서 마지막 exit code만 평가하는지 점검(현재 혼재 시 invalid 처리 추정; 확인 필요, 미검증).

5. 재발 가능성 메모

  • 같은 날 guardian #41868이 같은 분류를 시도해 반려됨. 본 문서는 sqlite 실조회 값만 인용.