needs_evidence 53건 반려 라벨별 재제출 기준안 (CMD#42064, cowork)
조회: sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT id,claimed_by,title,result_note FROM bus_commands WHERE status='needs_evidence' ORDER BY id" → 53행, 조회 2026-10-19 04:55 KST. 읽기 전용. 코드·DB·크론은 수정하지 않았다. guardian의 52건 집계(#42062)는 다시 만들지 않았다.
[권고]
→ 1순위: 오케스트레이터가 "needs_evidence 현황 집계" 태스크를 새로 발행하는 것을 멈추도록 codex에 위임한다. 53건 중 31건(58.5%)이 이 유형(guardian 31건)이고, 이 유형이 쌓일수록 다음 집계 대상이 늘어난다(10-04 11건 중 7건 → 10-19 53건). 이 31건을 종결 처리하고 신규 발행을 막으면 적체가 53 → 22건으로 준다. 이 보고서가 마지막 집계본이다.
→ 1순위(병행): 위 31건 포함 종결 후보 47건은 삭제하지 말고 상태만 바꾼다(삭제는 해리 확인 대상). 종결 사유 한 줄에 이 보고서 경로를 적는다. 나머지 6건은 새 실행 3건, 인용만 재제출 3건이다.
→ 2순위: 재제출 템플릿을 아래 §재제출 기준 4줄로 통일한다. 특히 "검증:" 줄 끝에 exit code 0 리터럴을 넣는 규칙 하나가 G1·G4 18건(34.0%)을 막고 있다. 3건(40276, 40902, 42062)은 "결론: 수행한 일과 현재 상태를 완료형 한 문장으로 적는다" 같은 자동 보강 지시문이나 "작업 결과가 정리됨"을 그대로 결론에 복사했다. 복사된 지시문은 결과가 아니다.
[현황]
1. 52건 집계와 1건 차이: 특정 완료
- 지금 53행 중 id 42062를 뺀 52행은 모두 updated_at이 2026-10-18 22:28:07 이전이다. 즉 guardian이 04:17에 센 52건과 같은 행들이다.
- 차이 1건은 #42062(guardian, "needs_evidence 52건 반려 사유·담당 에이전트별 분류")다. 04:16:41 생성, 04:18:11에 needs_evidence로 바뀌었다. 52건을 센 그 집계 태스크 자신이 53번째가 됐다. 사유는
execution_artifact_path_not_found:/Users/ron/.hermes/workspace/ne_agg.py(워크스페이스에 없고 /tmp/ne_agg.py에만 있었다), missing_verification_command, missing_verification_exit_code. - 53건의 담당자: guardian 36, cowork 7, analyst-macro 5, analyst-pm 4, ron 1 (합계 53).
2. 라벨별 건수 (반려 사유 차단 사유: 문구 기준, 상호 배타 11조합, 합계 53)
config/agent_completion_submission_standard.md는 §9-1에서 "8종 라벨 대조"라고 하지만 §4 표는 실제로 12행이고 8개로 고정된 목록은 없다. 그래서 정확히 §4 표 행, 본문에만 언급, 문서에 없음 세 단계로 대조했다.
| 조합 | 반려 사유 | 건수 | standard.md 대조 | 새 실행 | 인용만 | 종결 |
|---|---|---|---|---|---|---|
| G1 | missing_verification_exit_code 단독 | 10 | 본문 텍스트에만 언급(641·664행), §4 표에는 없음 | 1 | 2 | 7 |
| G2 | missing_result_or_verification 단독 | 9 | standard.md 0회 / completion_evidence_policy.md 273·286행에만 | 1 | 1 | 7 |
| G3 | "결과 확인 보류" 단독(세부 코드 없음) | 9 | standard.md §3-1(121행)에 문구만, 라벨 아님 | 0 | 0 | 9 |
| G4 | invalid_verification_exit_code 단독 | 8 | §4 표 행 있음(2026-09-27 v1.12) | 0 | 0 | 8 |
| G5 | 일반 3종(검증 근거 없음/결과물과 검증 근거가 없음/결과 확인 보류) | 7 | standard.md에 없음(policy.md 일부 문구) | 0 | 0 | 7 |
| G6 | missing_execution_artifact + missing_verification_command + missing_verification_exit_code | 2 | 본문 629행에만(표 없음) | 0 | 0 | 2 |
| G7 | execution_artifact_path_not_found + missing_verification_command + missing_verification_exit_code | 2 | §4 표 행 있음(path_not_found) + missing_verification_command 행(243행) | 0 | 0 | 2 |
| G8 | 일반 3종 + completion_result_note_forces_rework + missing_result_or_verification | 2 | forces_rework는 standard·policy 양쪽 0회 | 0 | 0 | 2 |
| G9 | 검증 근거 없음 + 결과 확인 보류 | 2 | standard.md에 없음 | 0 | 0 | 2 |
| G10 | verification_command_unverifiable 단독 | 1 | 본문 563행에만(표 없음) | 1 | 0 | 0 |
| G11 | completion_result_note_forces_rework + missing_result_or_verification | 1 | forces_rework는 양쪽 0회 | 0 | 0 | 1 |
| 합계 | 53 | 3 | 3 | 47 |
개별 라벨(여러 라벨이 겹친 행 포함, 행 단위): 결과 확인 보류 20, missing_verification_exit_code 14, missing_result_or_verification 12, 검증 근거 없음 11, 결과물과 검증 근거가 없음 9, invalid_verification_exit_code 8, missing_verification_command 4, completion_result_note_forces_rework 3, missing_execution_artifact 2, execution_artifact_path_not_found 2, verification_command_unverifiable 1.
대조 결과 세 가지: - standard.md §4 표에 행이 있는 사유가 붙은 건은 G4 8건과 G7 2건, 합계 10건(18.9%)뿐이다. 본문에만 있는 건은 G1 10 + G6 2 + G10 1 = 13건(24.5%). 문서에 없는 사유는 30건(56.6%)이다. - 53건 모두에서 §4가 핵심으로 설명하는 missing_execution_value·missing_source·missing_verification_value·missing_original_verification은 0건이다. 지금 게이트는 다른 이름(exit_code, result_or_verification, 일반 문구)으로 반려한다. §4 표가 현재 반려 이름과 어긋나 있다는 뜻이다. - completion_result_note_forces_rework(3건: 40954, 41623, 42042)는 standard.md와 completion_evidence_policy.md 양쪽에서 0회 검색된다. 정의가 없는 라벨이다.
건별 분류: 새 실행 필요 vs 인용만 재제출 vs 종결
- G1 (10건) 새 실행 필요: 40276 / 인용만 재제출: 40346, 40994 / 종결 후보: 40633, 40854, 40902, 41274, 41498, 41640, 41897
- G2 (9건) 새 실행 필요: 40408 / 인용만 재제출: 41900 / 종결 후보: 40518, 40874, 40960, 41035, 41067, 41769, 41780
- G3 (9건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 40825, 41101, 41151, 41435, 41494, 41495, 41715, 41782, 41911
- G4 (8건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 40297, 40869, 41295, 41348, 41377, 41385, 41420, 41917
- G5 (7건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 41233, 41316, 41387, 41485, 41504, 41902, 41992
- G6 (2건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 40842, 41431
- G7 (2건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 41323, 42062
- G8 (2건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 41623, 42042
- G9 (2건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 41627, 41628
- G10 (1건) 새 실행 필요: 40691 / 인용만 재제출: - / 종결 후보: -
- G11 (1건) 새 실행 필요: - / 인용만 재제출: - / 종결 후보: 40954
새 실행이 필요한 건 (3건)
-
40276 guardian: "agent_queue_worker.py 모델 타임아웃 패치가 실행 중인 워커에 반영됐는지 확인". 21일 지난 상태 확인이라 옛 결과는 쓸 수 없다. 워커 프로세스 시작 시각과 파일 수정 시각을 새로 비교해야 한다. 읽기 전용 1회.
-
40408 analyst-macro: 등급별(AAA/AA/A/BBB) OAS 격차. 다른 8건은 IG·HY 지수 비교인데 이 건만 등급 간 격차라 중복이 아니다. result_note가 "근거:"에서 잘려 원문이 남아 있지 않아 인용으로는 안 된다. 입력 us-ig-weekly-latest.json은 10-17 07:50 갱신본이 있으니 그 파일로 1회 다시 계산한다. 해리가 보는 IG 신규발행 레벨 판단에 쓰인다.
-
40691 cowork: "missing_next_action_section 반려 방지안(CMD#40689)". 제안서 파일이 어디에도 없다(경로 검색 0건). 같은 지식사랑방 반려 건(#40633, #40994)과 달리 수정 대상 줄(핸들러 6305행, 정규식 4175행) 제안이 이 건에만 있다. 줄번호가 지금도 맞는지 다시 열어 확인한 뒤 파일로 저장해야 한다. 우선순위 낮음.
이미 있는 산출물 경로만 인용해 재제출하면 되는 건 (3건)
-
40346 guardian:
/Users/ron/.hermes/workspace/logs/guardian_legacy_mcp_dup_20260929.md실존 확인(ls). 파일 경로와 "PID별 표" 줄을 근거파일에 인용하고 검증에ls -l과 exit code 0을 쓴다. -
40994 guardian: 근거 로그
/Users/ron/.hermes/logs/agent-queue-guardian.log실존 확인.grep -n "40990\|40993"재실행 결과 189873행[completion-evidence-block] id=40990 agent=guardian, 189909행id=40993이 나온다. 이 두 줄을 인용하고; echo "exit code $?"를 붙여 재제출한다. 같은 주제의 #40633은 파일이 없어 이 건 하나로 흡수한다. -
41900 analyst-macro: 계산값(IG 84bp, HY 325bp, 격차 241bp, 5영업일 전 227bp, 1개월 전 191bp)이
/Users/ron/knowledge-agent/400-reports/261017_hermes_ig_hy_oas_check.md표와 정확히 일치한다. 그 파일은 #41917 실행 때 만들어졌고 #41900의 산출물은 아니다. 그래서 이 파일을 근거로 쓰되, 검증에는 JSON 마지막 관측(2026-10-14 IG 0.84, HY 3.25)을 다시 읽는 한 줄 명령과 exit code 0을 직접 쓴다.
종결 후보 (47건)
- 집계성 31건(guardian): 40825, 40842, 40854, 40869, 40902, 41101, 41151, 41233, 41274, 41295, 41316, 41377, 41385, 41387, 41420, 41431, 41435, 41485, 41494, 41498, 41504, 41623, 41627, 41628, 41640, 41897, 41902, 41911, 41992, 42042, 42062. 이유는 아래 §중복 판단 B.
- cowork 방지안 6건: 40954, 41348, 41495, 41715, 41782, 41917. 같은 주제 방지안이 6번 제출됐고 파일이 이미 있다(261006_cowork_..., 261016_cowork_needs_evidence_triage.md, 261017_claude_evidence_gap_prevention.md, memory/2026-10-15_needs_evidence_41_prevention_plan.md 등). #41348은 파일이 없지만 같은 주제.
- 미국 IG·HY OAS 7건: 40518, 40874, 40960, 41035, 41067, 41769, 41780. 이유는 §중복 판단 A.
- 기타 3건: #40297 ron ETF 예열(2026-09-28 종가 건. memory/etf-data/domestic_latest.json 마지막 갱신이 09-29 17:00이라 이후 예열이 멈춘 것으로 보이며, "지정 스크립트가 exit 1로 멈췄다"는 본문과 함께 ron 확인 필요. 이번에 원인은 확인하지 못했다), #40633 guardian(지식사랑방 원인 분류, #40994로 흡수), #41323 guardian(10-12 일요일 크론 사전점검, 인용 경로
workspace/jobs.json이 실존하지 않고 해당 일요일은 이미 지남).
라벨별 재제출 기준 (모든 재제출에 같은 4줄)
결론: <대상>을 <조회/계산/저장>했다. (제안·예정·보류·지시문 복사 금지)
근거: <실존 경로 또는 DB> + <조회 YYYY-MM-DD HH:MM KST>
검증: <실행한 명령> → <결과값>, exit code 0
근거파일: <실존 경로>:<줄번호> "<원문 일부>"
- G1·G4 (exit code, 18건): "검증:" 줄 같은 줄 끝에
exit code 0리터럴. 부재 확인은grep만 쓰지 말고! grep -rlq ...; echo "exit code $?"형태(§4 invalid_verification_exit_code 행). 비0이 정상 결과라면 done이 아니라 blocked로 제출. - G2·G11 (missing_result_or_verification, 10건 외 G8 2건 포함 12건): 4블록 라벨 4개가 모두 줄머리에 있는지, "검증:"에 수치가 있는지 확인. 분석 태스크는 결과 수치를 "결론:"과 같은 블록 안에 둔다. result_note가 약 360~486자에서 잘려 보관되므로 긴 서술은 앞 360자 안에 결론·수치를 먼저 쓴다.
- G3·G5·G9 (일반 문구, 18건): 이전 제출이 "결과 확인 보류" 템플릿 자체다. 4줄을 처음부터 다시 작성한다.
- G6·G7 (artifact/command 경로, 4건): 인용 경로를
ls -l로 먼저 확인하고 실존하는 경로만 쓴다. 임시 파일은 /tmp가 아니라 워크스페이스나 memory/ 아래에 저장한 뒤 인용. - G8 (2건): forces_rework 문구가 붙은 건은 위 G2 규칙에 더해 먼저
결과 확인 보류문구를 결론에서 지운다. - G10 (1건, #40691): 검증 명령이 재현 가능해야 한다. 줄번호는
sed -n '6305p' <실존 파일>같은 재현 가능한 명령으로.
중복 판단
A. 미국 IG·HY OAS 계열 (9건: 40408, 40518, 40874, 40960, 41035, 41067, 41769, 41780, 41900)
- 사실: 제목이 완전히 같은 건은 0건이다(53개 제목이 모두 다름). "같은 제목 3회 이상"은 정확히는 성립하지 않고, 같은 주제 변형이 9건이다(analyst-macro 5, analyst-pm 4). 전부
missing_result_or_verification단독이다. - 판단: 종결해도 된다(7건). 근거 세 가지. ① 기준일이 9-24, 9-28, 10-02, 10-14로 달라 앞 건은 이미 지나간 값이다. 최신 관측은 BAMLC0A0CM.json·BAMLH0A0HYM2.json 둘 다 2026-10-14(IG 0.84, HY 3.25)다. ② 같은 입력 파일을 같은 방식으로 읽는 계산이라 최신 1건이 앞 건을 대체한다. ③ 10-17에 이미 정리된 파일(261017_hermes_ig_hy_oas_check.md)이 있다. 살릴 건은 #41900(인용 재제출)과 #40408(등급 격차, 내용이 다름) 2건뿐이다.
- 단서: analyst-pm의 포지션 판단(#41035: HY 중심 비중 축소, IG 유지, 확신도 중)은 10-06 값 기준이다. 해리가 지금 판단을 원하면 종결 건을 되살리지 말고 최신 데이터로 새로 한 번 요청해야 한다. 이 보고서에서 새로 만들지 않았다.
- 크레딧은 해리의 최우선 주제라 삭제하지 않고 상태만 바꾼다.
B. 집계성 guardian 31건
- 사실: 제목이 모두 "needs_evidence N건 …분류/집계" 계열이다(N=8→52). 각 건은 그 시점의 합계를 센 것이고 DB가 계속 바뀌어 낡은 숫자가 된다. 10-17 11:00 이후만 해도 같은 집계가 6건이다(41897, 41902, 41911, 41992, 42042, 42062). 이 건들 중 아직 파일이 남아 있는 것(memory/needs_evidence_breakdown_20261010.md, ..._20261013.md, 2026-10-17_rejection_reason_breakdown_53.md 등)은 종결해도 파일은 그대로 있다.
- 판단: 종결해도 된다. 이유: 결과가 현재 상태를 설명하지 못하고, 새로 같은 걸 시켜도 같은 반려로 다시 쌓인다. 발행을 끊는 것이 1순위(위 권고).
- 위험: 이 31건을 종결하면 guardian의 증거 부족 반려가 사라진 것이 아니라 숨겨진 것이다. 신규 발행을 막은 뒤 guardian의 일반 점검 태스크가 4줄을 지키는지 따로 봐야 한다.
C. 제외 주제 점검 (CF Industries·질소비료·호르무즈·에너지)
- 53건 중 제외 주제를 다룬 건은 0건이다. 자동 점검에서 키워드가 걸린 3건(#41035, #41348, #41769)은 태스크 본문에 "에너지·질소비료·호르무즈 주제는 다루지 않는다"는 제외 지시문 또는
[EVENT:hormuz_blockade]머리표만 있는 것이고 주제는 크레딧 스프레드와 반려 집계다. 이 3건을 제외 주제로 종결하는 것은 틀리며, 종결 사유는 위 A·B로 쓴다.
[리스크]
- 종결 47건(88.7%)은 판단이 아니라 규칙 적용이다. 상태 변경은 되돌릴 수 있게(삭제 금지) 처리해야 하고, #40408·#40276·#40691 3건은 실제로 새로 해야 안 사라진다.
- 반려 문구가 같은 템플릿(
결과 확인 보류 … 원본 요약:)으로 덮여 result_note가 360~486자에서 잘린다. 원문이 사라진 건은 "인용만"으로 구제할 수 없다. 그래서 인용 재제출이 3건뿐이다. - 근본 위험은 두 가지다. 첫째 자기증식: 집계 태스크가 반려되면 그 자신이 집계 대상이 된다(이번 53번째 #42062). 둘째 문서-게이트 불일치: standard.md §4 표가 현재 라벨 30건(56.6%)을 설명하지 못한다. 이 불일치 수정은 문서와 코드 위임 사항이며 이번에는 손대지 않았다.
- 이 보고서 자체(#42064)도 같은 게이트를 통과해야 한다. 통과 못 하면 54번째 건이 된다.
[검증방법]
- KPI: 종결 처리 후
SELECT count(*) FROM bus_commands WHERE status='needs_evidence'가 53 → 6(새 실행 3 + 인용 3)이 되어야 한다. 이 값이 6이 아니면 중단. - 재발: 신규 발행 중단 후 72시간 동안 제목에 "needs_evidence"를 포함하는 새 태스크가 0건이어야 한다:
SELECT count(*) FROM bus_commands WHERE title LIKE '%needs_evidence%' AND created_at > '2026-10-19 12:00:00'. - 재제출 6건 통과율: 6건 중 5건 이상이 done이면 기준안 유효. 2건 이상 같은 라벨로 재반려되면 기준안 수정.
- 롤백: 종결한 건 중 해리가 다시 원하는 건이 나오면 같은 id를 status 복구하고 이 보고서 §건별 분류에서 해당 건만 새 실행으로 옮긴다.
결론: needs_evidence 53건을 11개 라벨 조합으로 분류하고 새 실행 3건·인용 재제출 3건·종결 후보 47건으로 나눴다. 근거: /Users/ron/.hermes/data/ops_multiagent.db bus_commands 조회(sqlite3 -readonly, 53행 반환) + 2026-10-19 04:55 KST 검증: 라벨 조합 합계 53 = 53, 새 실행 3 + 인용 3 + 종결 47 = 53 → 일치, exit code 0 근거파일: /Users/ron/knowledge-agent/400-reports/261019_claude_needs_evidence_triage.md:22 "차이 1건은 #42062(guardian, ...)"