needs_evidence 55건 처리 기준안 (재검증 vs 종결)
needs_evidence 55건 처리 기준안 (보완 3 / 재실행 1 / 종결 51)
조회 2026-10-20 KST, sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db (55행 반환). DB 상태 변경·삭제·코드 수정은 하지 않았다. 아래는 해리 승인용 제안이다.
입력 자료: guardian #42131(2026-10-19 22:51 done)의 result_note가 가리키는 /Users/ron/.hermes/workspace/memory/2026-10-19_needs_evidence_분류집계.md(120줄, 22:53 저장). 이 파일의 에이전트별 합계(guardian 37 / cowork 8 / analyst-macro 5 / analyst-pm 4 / ron 1 = 55)를 DB와 대조해 일치함을 확인했다.
[권고]
→ 1순위(재실행 1건, 채권 우선): #40408 미국 IG 등급별(AAA/AA/A/BBB) OAS 격차를 새로 실행한다. 이후 done 건 중 등급 4분해를 한 건이 없고(40451=BBB-A, 41256=BBB 대 전체 IG뿐), 주간 크레딧 리포트 입력이다. 입력은 memory/fi-session/us-ig-weekly-latest.json(as_of 2026-10-15, rating 시리즈 available) 사용. 기대효과: 채권 관련 미해결 반려 10건 중 유일한 실질 공백 1건 해소.
→ 2순위(4블록 보완 3건): #41715, #41917, #42083. 산출 문서가 실존하고, 게이트 구현 태스크(#42125·#42127 failed, #42130 cancelled)의 설계 입력으로 계속 쓰인다. 문서 경로·줄번호를 4블록으로 다시 제출하면 된다. 새 분석은 필요 없다.
→ 3순위(종결 51건): 후속 done 건이나 코드 패치로 대체됐거나, 시점 스냅샷이라 낡은 건이다. 상태 변경 방식은 해리 승인 후 codex가 실행한다(삭제 금지, result_note 끝에 이 문서 경로 1줄).
→ 선행 조건: 신규 발행 차단 게이트(#42130 cancelled 상태)가 먼저다. 막지 않고 종결만 하면 guardian 집계류가 다시 쌓인다(55건 중 32건 = 58.2%가 이 유형).
[현황]
1. 직전 정책 문서와 달라진 판정 (확인한 증거)
- 261019_claude_needs_evidence_policy.md는 재작업 후보 4건(40276, 40346, 40408, 40691)을 꼽았다. 이번에 DB·코드를 다시 열어 40276, 40346, 40691은 종결로 바꿨다. 40408만 재실행으로 유지했다.
-
40276: 후속 #40332/#40360(done)이 워커 반영 8/미반영 0을 이미 실측함.
-
40346: 후속 #40356(done)이 PID 11개 재대조(일치 11)를 끝냈고 점검 파일이 실존함.
-
40691: agent_queue_worker.py 6391행에 "[패치 2026-10-03 CMD#40689]" 주석으로 원인 코드가 이미 반영됨.
- guardian 분류표의 "llm_infra_failure 14건"은 차단 사유 라벨이 아니다. DB에서
차단 사유:필드를 직접 파싱하면 llm_infra 계열은 0건이다. result_note 본문에서 이 문자열이 나오는 15건(40825, 40842, 40854, 41233, 41274, 41316, 41377, 41387, 41420, 41485, 41494, 41504, 41628, 41902, 42042)은 중 14건은 분류 보고가 "인프라 원인 0건"이라고 쓴 문장 인용이다. 나머지 1건(42042)은 "56건 중 계열 1건(1.8%)"이라 적었는데, 이 건의 차단 사유 필드에는 llm_infra 라벨이 없다. 그래서 아래 표에서 llm_infra_failure 행은 0건이다.
2. 반려 라벨 × 처리 분류 (건수 / 대표 CMD 3개)
분류: A=결과물 실존, 4블록만 보완 / B=결과물 없음, 재실행 / C=후속 태스크·코드 반영으로 대체, 종결. 라벨은 차단 사유:에 여러 개 있을 때 우선순위(구체 경로·종료코드 라벨 > 껍데기 문구) 첫 번째로 1건당 1개만 배정했다(합계 55).
| 반려 라벨 | A 보완 | B 재실행 | C 종결 | 합계 | 대표 CMD (종결 기준 3개) |
|---|---|---|---|---|---|
| execution_artifact_path_not_found | 0 | 0 | 2 | 2 | #41323, #42062 |
| missing_execution_artifact (+verification_command/exit_code 동반) | 1 | 0 | 2 | 3 | #40842, #41431 |
| verification_command_unverifiable | 0 | 0 | 2 | 2 | #40691, #42111 |
| invalid_verification_exit_code | 1 | 0 | 7 | 8 | #40297, #40869, #41295 |
| missing_verification_exit_code | 0 | 0 | 10 | 10 | #40276, #40346, #40633 |
| missing_result_or_verification | 0 | 1 | 11 | 12 | #40518, #40874, #40954 |
| 껍데기 문구형 (검증 근거 없음/결과물과 검증 근거가 없음) | 0 | 0 | 9 | 9 | #41233, #41316, #41387 |
| 껍데기 문구형 (결과 확인 보류 단독) | 1 | 0 | 8 | 9 | #40825, #41101, #41151 |
| llm_infra_failure (차단 사유 필드 기준) | 0 | 0 | 0 | 0 | 해당 없음 |
| 합계 | 3 | 1 | 51 | 55 |
3. 에이전트별
- guardian 37건: A 0 / B 0 / C 37
- cowork 8건: A 3 / B 0 / C 5
- analyst-macro 5건: A 0 / B 1 / C 4
- analyst-pm 4건: A 0 / B 0 / C 4
- ron 1건: A 0 / B 0 / C 1
재실행·보완 후보 (해리 승인 대상)
| 순위 | CMD | 에이전트 | 구분 | 채권 | 내용 | 근거 |
|---|---|---|---|---|---|---|
| 1 | #40408 | analyst-macro | B 재실행 | 높음 | 미국 IG 등급별 OAS(AAA/AA/A/BBB) 격차 산출 (us-ig-weekly-latest.json 직접 파싱) | AAA/AA/A/BBB 등급별 OAS 4분해는 이후 done 건이 대체하지 못함(40451=BBB-A, 41256=BBB 대 전체IG 만). note에 수치는 있으나 산출 파일·검증 없음. 기준일 갱신 후 새로 실행 |
| 2 | #42083 | cowork | A 4블록 보완 | 아니오 | needs_evidence 반복 반려 사유별 정책 개선안 작성 | 정책 제안서 실존(400-reports/261019_claude_needs_evidence_policy.md 14,701B). 이 triage와 reissue_loop_policy가 인용하는 기준 문서 |
| 3 | #41917 | cowork | A 4블록 보완 | 아니오 | 반려 55건 집계 결과 기반 완료보고 4블록 미준수 방지안 작성 | cowork 방지안 문서 실존(400-reports/261017_claude_evidence_gap_prevention.md 10,693B, body 개선안 A/B/C). 게이트 구현 입력으로 유지 |
| 4 | #41715 | cowork | A 4블록 보완 | 아니오 | needs_evidence 41건 반복 사유별 완료보고 방지안 정리 | cowork 방지안 문서 실존(memory/2026-10-15_needs_evidence_41_prevention_plan.md 14,433B). 후속 codex 게이트 구현(42125 failed, 42127 failed, 42130 cancelled)의 설계 근거라 문서 가치 유지 |
채권(크레딧) 관련 반려는 총 10건(40408, 40518, 40874, 40960, 41035, 41067, 41769, 41780, 41900, 41323)이다. 이 중 재실행은 40408뿐이고 나머지 9건은 아래 근거로 종결 후보다. 해리가 "지금 시점의 IG·HY 포지션 판단"을 원하면 옛 건을 되살리지 말고 최신 데이터(10-15 기준)로 새 요청 1건을 내는 편이 낫다. 최신 pm 판단은 #41923(10-17 done)이다.
종결 후보 목록 (51건)
| CMD | 에이전트 | 채권 | 대체 근거 |
|---|---|---|---|
| #40276 | guardian | 후속 done #40332·#40360(2026-09-29): 워커 8개 반영 8/미반영 0 확인 | |
| #40297 | ron | 후속 done #40310: 8종·기준일 09-28·실패 0 증거 보완 재제출 | |
| #40346 | guardian | 후속 done #40356: PID 11개 재대조 일치 11, 점검 파일 logs/guardian_legacy_mcp_dup_20260929.md 실존 | |
| #40518 | analyst-macro | 예 | 후속 done #40899·#41242·#41881·#42092·#42116: IG OAS 추이 파일 기반 판독 반복 완료 |
| #40633 | guardian | 후속 done #40634: 지식사랑방 실패(10/02) 원인 재분류 | |
| #40691 | cowork | 원인 코드 이미 패치됨: scripts/agent_queue_worker.py:6391 "[패치 2026-10-03 CMD#40689]". 제안서 파일 자체는 실존 확인 못함 | |
| #40825 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #40842 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #40854 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #40869 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #40874 | analyst-pm | 예 | 후속 done pm #41129·#41733·#41734·#41923(10-17 IG·HY 종합 판단). 05~07일자 값이라 낡음 |
| #40902 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #40954 | cowork | cowork 정책 제안. 후속 done #42123(재발행 루프 차단 정책)과 A군 문서(41715·41917·42083)가 대체 | |
| #40960 | analyst-pm | 예 | 후속 done pm #41129·#41733·#41734·#41923(10-17 IG·HY 종합 판단). 05~07일자 값이라 낡음 |
| #40994 | guardian | 시점 값(10-06). 이후 지식사랑방 생성 done 45건(id>40994)이 정상 가동 | |
| #41035 | analyst-pm | 예 | 후속 done pm #41129·#41733·#41734·#41923(10-17 IG·HY 종합 판단). 05~07일자 값이라 낡음 |
| #41067 | analyst-pm | 예 | 후속 done pm #41129·#41733·#41734·#41923(10-17 IG·HY 종합 판단). 05~07일자 값이라 낡음 |
| #41101 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41151 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41233 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41274 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41295 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41316 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41323 | guardian | 예 | 후속 done #41339·#41843·#41979(10-18 사전점검). jobs.json 경로는 실제 ~/.hermes/cron/jobs.json (workspace/jobs.json 아님) |
| #41348 | cowork | cowork 정책 제안. 후속 done #42123(재발행 루프 차단 정책)과 A군 문서(41715·41917·42083)가 대체 | |
| #41377 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41385 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41387 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41420 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41431 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41435 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41485 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41494 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41495 | cowork | cowork 정책 제안. 후속 done #42123(재발행 루프 차단 정책)과 A군 문서(41715·41917·42083)가 대체 | |
| #41498 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41504 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41623 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41627 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41628 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41640 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41769 | analyst-macro | 예 | 후속 done #41771·#41781·#41816·#41848·#41920·#41954·#42030·#42055·#42082·#42092·#42116 |
| #41780 | analyst-macro | 예 | 후속 done #41771·#41781·#41816·#41848·#41920·#41954·#42030·#42055·#42082·#42092·#42116 |
| #41782 | cowork | cowork 정책 제안. 후속 done #42123(재발행 루프 차단 정책)과 A군 문서(41715·41917·42083)가 대체 | |
| #41897 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41900 | analyst-macro | 예 | 후속 done #41771·#41781·#41816·#41848·#41920·#41954·#42030·#42055·#42082·#42092·#42116 |
| #41902 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41911 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #41992 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #42042 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #42062 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 | |
| #42111 | guardian | 스냅샷 집계(그 시점 N건). 후속 done #42120·#42131(55건 집계, 10-19 22:51)과 261019_guardian_...분류표.md·261019_claude..._triage.md가 대체 |
[리스크]
- 종결은 해결이 아니라 숨김이다. 신규 발행 게이트(#42125·#42127 failed, #42130 cancelled)가 미구현이라 같은 집계 태스크가 다시 생길 수 있다(10-04 7건 → 10-19 55건). 근거: DB의 codex 3건 상태.
- guardian 편중 37건(67.3%). 집계성 32건을 종결하면 guardian 일반 점검의 4블록 준수 여부가 이번 55건으로는 측정되지 않는다.
- 40691의 제안서 파일은 실존을 확인하지 못했다(10-03 04:58~05:10 생성 파일 탐색에서 미발견). 코드 패치는 확인했으므로 종결에는 영향이 없다.
- 대체 근거는 후속 태스크의 status=done 확인 기준이다. 후속 건의 내용 품질(예: 42131의 result_note 잘림)은 이번에 전수 검증하지 않았다. 미확인.
- 상태값 후보(cancelled 등)와 종결 시 부수효과(재큐잉, 알림)는 조회하지 않았다. 실행 전 codex가 확인해야 한다.
[검증방법]
- KPI: 승인 후
SELECT count(*) FROM bus_commands WHERE status='needs_evidence'기대값 55 → 3 (A 3건 보완 전) 또는 1 (보완 완료 후) 또는 0~1 (B 재실행 완료 후). - 검증 명령:
sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT id,status FROM bus_commands WHERE id IN (40408,41715,41917,42083)"로 4건 상태 추적. - 롤백 조건: 종결 처리 후 24시간 안에 같은 제목 계열이 3건 이상 재발행되면 종결 중단하고 게이트 구현을 먼저 한다.
- 이 문서의 CMD별 판정은
/tmp/ne/build.py(임시)에서 DB 조회 결과와 대조해 생성했고 합계 55를 assert로 확인했다.