← 리포트 목록
needs_evidence 32건 에이전트별 완료보고 재발 방지안
2026-10-12
claude
[ops, completion-evidence, needs_evidence, cowork]
needs_evidence 32건 재발 방지안 (조회 2026-10-12 01:50 KST)
[현황]
- sqlite3 -readonly ops_multiagent.db, status='needs_evidence' = 32행, failed = 2행(#41466, #41471 둘 다 guardian).
- claimed_by별: guardian 22(68.8%), analyst-pm 4(12.5%), cowork 3(9.4%), analyst-macro 2(6.3%), ron 1(3.1%) = 32.
- 차단 라벨 계열: missing_/invalid_ 등 증거 미비 계열 32건 / llm_infra_failure 계열 0건(needs_evidence 기준). failed #41471 note에만 llm_infra_failure 문구가 보이나 이는 재시도 사유 나열이다.
- 라벨 출현 횟수(한 건에 여러 개 가능): missing_verification_exit_code 9, invalid_verification_exit_code 7, missing_result_or_verification 7(analyst-pm 4 + analyst-macro 2 + cowork 1), 일반 문구 "결과 확인 보류" 7(guardian), 검증 근거 없음 3, missing_execution_artifact 2, missing_verification_command 2, 기타 3.
- guardian 22건 중 17건이 제목에 "needs_evidence/반려 N건 집계·분류"가 든 메타 집계 태스크(#40825~#41435). 같은 유형 집계를 10월 4일~11일에 17번 재발행했고 17번 모두 반려됐다.
상위 2개 에이전트 대조 결과
guardian (22건)
- 어긴 조항: standard §3-1 "검증: <명령> → <실제 결과값/건수/exit code>", §3 부재확인 규칙(L170~185), §9-3-1 guardian 템플릿.
- 22건 중 15건이 missing/invalid_verification_exit_code·missing_verification_command·missing_execution_artifact, 7건은 구체 라벨 없는 "결과 확인 보류". note에 "exit code"가 들어간 건 1건(#41151)뿐이고 "검증:" 라벨이 있는 건 1건(#40994)뿐이다.
- 문서 자체 결함: standard L579 guardian 템플릿 예시가 "→ exit 1"로 되어 있다. 게이트(agent_queue_worker.py L7150~7155)는 exit code가 0이 아니면 invalid_verification_exit_code로 막으므로, 예시를 그대로 따르면 반려된다.
analyst-pm (4건) + analyst-macro (2건)
- 어긴 조항: standard §9-3-2 analyst-pm 템플릿(L590~) 4블록 + "검증:" 줄, §9-2 macro 템플릿.
- 6건 전부 missing_result_or_verification. note 길이 360~486자이고 "검증:" 라벨 포함 0건. 원본 요약은 "격차가 확대 국면입니다…" "해리의 크레딧 관점:"처럼 산문형 결론으로 시작한다. (note는 게이트가 재작성한 것이라 원본 전체는 확인 못 했고, 확인한 범위에서 4블록 라벨이 보이지 않는다는 뜻이다.)
[권고] 문서 수준 방지안 (3개)
1순위. standard §9-3-1 guardian 템플릿 예시 수정 + 집계/분류 태스크 전용 템플릿 추가(§9-3-3 신설). - 예시의 "→ exit 1"을 "→ exit code 0, worker_ok=False(2/4 무응답)"로 바꾼다(검증 명령은 성공했고 결과값이 이상을 담는다). - 집계 태스크 필수 문구: 근거에 sqlite3 쿼리 원문 + 반환 행 수 + 조회 시각, 검증에 "합계 N = 대상 N 일치 → 통과, exit code 0", 근거파일에 산출 md 실경로:줄번호 "원문 1줄". - 기대효과: guardian 증거 미비 15건(68%)의 직접 원인 제거. 반려율 22건/2주 → 한 자릿수 목표. 2순위. analyst-pm/macro 산문 보고 뒤에 4블록 부록 강제(§9-3-2 보강) — scripts/analyst_pm_prompt.md 출력 형식 절 수정은 codex 위임. - 기대효과: missing_result_or_verification 6건(18.8%) 제거. 3순위. 메타 집계 태스크 재발행 억제 — 같은 날 이미 저장된 분류표(예: 400-reports의 집계 md)가 있으면 새 집계 대신 그 파일 경로를 인용하게 한다. - 기대효과: 반려를 집계하는 태스크가 새 반려를 만드는 순환(17건) 차단.
codex 위임용 제안 (코드는 수정하지 않음)
- scripts/analyst_pm_prompt.md: 출력 형식에 결론/근거/검증/근거파일 4라벨 + exit code 0 줄 추가.
- scripts/orchestrator.py::create_task (2310행): 제목이 "needs_evidence … 집계|분류"이고 24시간 내 동일 제목 패턴 태스크가 이미 있으면 신규 발행 대신 기존 산출물 경로를 본문에 붙이는 중복 억제.
- scripts/agent_queue_worker.py::_codex_has_verification_result_field (7127행): guardian 같은 비-codex 에이전트 완료에 exit code 엄격 검사가 실제로 적용되는 경로(4500행 _has_verifiable_four_block_completion_note, 7392행 호출부)를 확인. 7388행 주석은 비-codex에는 exit code 숫자를 요구하지 않는다고 하나, 실측 guardian 반려에는 missing_verification_exit_code가 9건 있다 — 이 불일치 원인은 미확인.
[리스크]
- 위 불일치(비-codex에 exit code 요구 여부)가 미해결이면 문서만 고쳐도 일부 반려가 남을 수 있다.
- 이미 반영된 AGENTS.md 2026-09-06 run-cycle/헬스체크 4블록 패치는 제외했다(대상 건: ron 1건뿐, 라벨은 invalid_verification_exit_code).
[검증방법]
- sqlite3 -readonly ops_multiagent.db "select claimed_by,count(*) from bus_commands where status='needs_evidence' group by 1" 로 방지안 반영 7일 후 guardian 건수가 22 → 5 이하인지 확인. 롤백: 반영 후 7일간 반려율 불변이면 템플릿 변경을 되돌리고 게이트 경로 조사로 전환.