virtual-insanity
← 리포트 목록

완료보고 검증근거 표준 v2 — orchestrator 오분류 방지 포함

2026-08-27 cowork [정책, 완료보고, 검증근거, evidence_gate, orchestrator, ops_todos]

완료보고 검증근거 표준 v2

[권고]

1순위: orchestrator의 실패 재분류 로직을 수정한다 — llm_infra_failure_retry_deferred 사유 건을 "검증 근거 미기재"로 재위임하지 못하게 막는다. 근거 — 이번 정책 요청(#36890)의 트리거로 지목된 #36884/#36885는 실측 결과 evidence gate와 무관하다. 두 건의 result_note는 100%(2/2) 동일 문구 "결론: needs_evidence: llm_infra_failure_retry_deferred\n근거: 후보 모델 전체가 모델 응답 타임아웃로 실행 자체에 실패함..."이며, orchestrator가 이를 근거로 신규 생성한 #36889(codex 대상, "evidence gate 코드 수정")도 동일하게 llm_infra_failure_retry_deferred로 failed 처리됐다(3/3 동일 사유). 즉 "검증 근거 미기재로 반복 차단"이라는 이번 요청의 전제 자체가 오분류다 — evidence gate는 정상 동작 중이고, 실제 원인은 모델 게이트웨이 타임아웃(인프라 장애)이다. hermes-cron-ops 스킬 0번 섹션이 이미 이 두 원인(오탐 vs 인프라 429/타임아웃)을 섞지 말라고 명시했는데 이번에도 재발했다. 기대효과: 인프라 장애 건이 codex/cowork 큐로 잘못 재위임되는 것을 구조적으로 차단 — 최근 관측 3건(#36884/#36885/#36889) 기준 무의미한 재위임 100% 제거.

2순위: ops_todos #1920(2순위 정책) 상태를 실제 코드 반영 상태와 일치시키고, 최소 검증근거 4항목을 canonical 표준으로 확정한다. 근거 — agent_queue_worker.py 365~410행(R14, 2026-08-27 패치)을 직접 확인한 결과 _completion_missing_verifiable_evidence_fields()가 이미 (a) source_log_path(파일 실존을 os.path.exists()로 검사) + (b) verification_command 필드 둘 다를 시스템 태스크(_SYSTEM_TASK_TITLE_RE: run-cycle/헬스체크/지식순환/자가진단)에 하드 필수화하고 있다 — 이는 ops_todos #1920("2순위: verification_command 필드 필수화 + 경로 실존 검증")이 요구한 범위와 정확히 일치한다. 그런데 sqlite3 ops_todos where id=1920 조회 결과 상태는 여전히 todo다. pytest 재검증(test_agent_queue_worker_codex_quality.py) 36/36 passed로 회귀 없음도 확인됐다. 코드는 완성됐는데 추적 대장만 미갱신인 상태 — 방치하면 다음 세션이 "미구현"으로 오판해 중복 구현을 시도할 위험이 있다. 기대효과: ops_todos와 코드 상태 100% 일치, 중복 구현 재발 방지.

[현황]

  • 36884/#36885/#36889 result_note 3건 전수 동일: llm_infra_failure_retry_deferred(모델 타임아웃) — evidence gate 판정 문구(missing_source/missing_verification_value/missing_original_verification 등) 전무. orchestrator가 이 사유를 "검증 근거 미기재"로 잘못 요약해 #36889(codex)/#36890(cowork) 두 건을 신규 생성함.

  • ops_todos: id=1919(1순위, source_log_path) = done(2026-08-27 처리), id=1920(2순위, verification_command+실존검증) = todo — 그러나 코드(agent_queue_worker.py 365~410행, _SYSTEM_TASK_TITLE_RE/_completion_missing_verifiable_evidence_fields)에는 2순위 요건이 이미 하드블록으로 구현·배포됨.
  • pytest: scripts/tests/test_agent_queue_worker_codex_quality.py 재실행 결과 36 passed, 0 failed (2026-08-27 방금 재검증, 기존 34건+신규 2건 전부 유지, R1-1 회귀 케이스 포함).
  • 최근 7일 status='done' 건 중 source_log_path 필드 포함 건수: 1건 중 0건(0%) — 표본이 1건뿐이라 결론을 낼 수 없음. run-cycle/헬스체크류(_SYSTEM_TASK_TITLE_RE 매치) 태스크가 최근 24시간 동안 2건 모두 failed 처리됐고(위 조회로 확인, done 0건) 하드블록 적용 후 실제 통과 사례 자체가 아직 없다 — 정책 효과성 실측은 표본 부족으로 보류.
  • 코드 위치: 1순위/2순위 로직 모두 ~/.hermes/workspace/scripts/agent_queue_worker.py 350~410행 단일 블록에 위치. 백업 agent_queue_worker.py.bak_260827(11:02 생성) 존재 확인.

[최소 필수 검증근거 4항목 — codex 반영용 canonical 표준]

기존 게이트(completion_required_evidence_gaps, shared/public_result_formatter.py 2151행 및 agent_queue_worker.py 633행)가 요구하는 4대 근거를 재확인·고정한다. 이미 코드에 구현돼 있으므로 신규 구현이 아니라 문서화 + 상태 동기화가 이번 작업의 실질 내용이다.

  1. execution_value — 실행값. 코딩 태스크: returncode=0/exit code/rc=/stdout/pytest ... passed. 시스템 태스크: verification_command 필드 값이 실제 실행 결과를 포함.
  2. source/artifact — 근거 위치. 코딩 태스크: 파일 경로(.py/.md/.json 확장자, /Users/ron/ 절대경로) + 라인번호(\d+행, line \d+, .py:\d+) + 원문 인용(따옴표 8자 이상 또는 > 인용). 시스템 태스크: source_log_path 필드 + os.path.exists() 실존 확인 필수(R14, 이미 구현됨).
  3. verification_value — 검증값. pytest/py_compile/passed/통과 등 재현 가능한 검증 수행 근거.
  4. original_verification_number_storage — 위 세 요소 중 어느 완화 예외(구조화 리포트/대화체/데이터판단/액션데이터/메타조사, R2~R10)에도 해당하지 않는 잔여 케이스는 파일경로+라인번호+원문인용 3요소 전부(_completion_has_file_line_quote_evidence, R11)를 요구.

통과(approved) 조건: 위 4항목 중 3개 이상 충족 또는 R2~R10 도메인별 완화 예외(분석 리포트류 구조화 태그+수치 2개 이상) 충족 또는 시스템 태스크는 예외 없이 source_log_path(실존)+verification_command 둘 다 충족. 반려(rejected) 조건: (a) result_note가 비어있거나 플레이스홀더 문구(문장 없음/결과 확인 보류/작업 결과가 정리됨)만 있음, (b) {/} 불일치 + ... 포함(잘린 JSON, R12, 이미 구현됨), (c) 시스템 태스크인데 source_log_path 미기재 또는 파일 미실존, 또는 verification_command 미기재, (d) 위 4항목 중 2개 이하만 충족하고 완화 예외에도 미해당. 적용 제외(반려 대상 아님): llm_infra_failure_retry_deferred/429/모델 타임아웃 등 실행 자체가 상류 인프라 문제로 성립하지 못한 경우 — 이는 evidence gate 판정 대상이 아니라 재시도 스케줄링 대상이다. orchestrator가 이 구분을 먼저 하지 않으면 1순위 권고가 무력화된다.

[리스크]

  • 단일 장애점: evidence gate 전체 로직이 agent_queue_worker.py 한 파일(현재 5,100행대)에 R1~R14 정규식 완화가 순차 누적된 구조다. 매 패치가 "직전 패치의 오탐"을 막는 예외 추가 방식이었고(R1-1에서 실제 done→failed 회귀 1건 발생 이력), 이번처럼 R15급 요청이 계속 들어오면 파일 복잡도와 회귀 위험이 선형 이상으로 증가한다. shared/public_result_formatter.py(canonical, server.py가 import)와 agent_queue_worker.py(로컬 폴백) 2곳에 로직이 중복 정의돼 있어 한쪽만 패치하면 또 다른 오탐 경로가 남는다(과거 R11에서 실제 발생).
  • 오분류 재발 의존관계: 이번 사례가 보여주듯 evidence gate 코드를 아무리 정교화해도, orchestrator의 실패사유 분류 단계(코드 위치 미확인 — 별도 조사 필요)가 llm_infra_failure_retry_deferred와 missing_original_verification을 구분하지 않으면 동일 패턴(#36884→#36889→#36890 연쇄)이 반복된다. 이 조사는 이번 제안서 범위 밖이며 3순위 후속 작업으로 별도 위임이 필요하다.
  • 추적 신뢰도 저하: ops_todos #1920이 todo로 남아있는데 코드는 이미 구현된 상태가 방치되면, 향후 세션이 "미구현"으로 오판해 codex에 중복 구현을 위임하고 불필요한 LLM 예산을 소모할 위험이 있다(이미 hermes-cron-ops 스킬이 "재조사·재작성 금지"를 반복 경고하는 이유와 동일 패턴).

[검증방법]

  • 측정 지표(KPI): (1) 향후 7일간 llm_infra_failure_retry_deferred/429/타임아웃 사유 result_note를 가진 건이 orchestrator에 의해 "검증 근거 미기재"류 신규 태스크로 재생성되는 건수 — 목표 0건(현재 관측 3건: #36884/#36885/#36889). (2) ops_todos #1920 상태 — 목표 done으로 갱신(현재 todo). (3) 시스템 태스크(run-cycle/헬스체크) done 처리 건 중 source_log_path 실존율 — 표본 10건 이상 확보 후 재측정(현재 표본 1건, 결론 보류. 9/3경 1주일 표본으로 재측정 예정이었던 기존 계획 유지).
  • 검증 명령: bash # (1) orchestrator 오분류 재발 여부 sqlite3 ~/.hermes/data/ops_multiagent.db \ "select id,title,created_at from bus_commands where requested_by='orchestrator' \ and body like '%검증 근거%' and created_at > datetime('now','+0 day') order by created_at desc limit 10;" # (2) ops_todos 상태 동기화 확인 sqlite3 ~/.hermes/data/ops_multiagent.db "select id,status from ops_todos where id=1920;" # (3) pytest 회귀 확인 (매 패치 후 필수) cd ~/.hermes/workspace && python3 -m pytest scripts/tests/test_agent_queue_worker_codex_quality.py -v # (4) 시스템 태스크 표본 확대 재측정 sqlite3 ~/.hermes/data/ops_multiagent.db \ "select count(*) as total, sum(case when result_note like '%source_log_path%' then 1 else 0 end) as has_slp \ from bus_commands where completed_at > datetime('now','-7 day') and status='done';"
  • 기대값: (1) 0건, (2) done, (3) pytest 36/36 유지(회귀 0건), (4) 표본 10건 이상 확보 시 실존율 90% 이상.
  • 롤백 조건: 시스템 태스크 하드블록(R14) 적용 후 24시간 내 정당한 run-cycle/헬스체크 완료가 10건 이상 오탐 차단되면 즉시 소프트모드(경고만, status 유지)로 되돌린다 — 이는 기존 정책안(260827_cowork_완료보고-검증근거-필수화-정책안.md [검증방법])의 조건을 그대로 승계한다.

작성: cowork | 근거 원본: ~/.hermes/data/ops_multiagent.db bus_commands(id 36884/36885/36889/36890/36867), ops_todos(id 1919/1920), ~/.hermes/workspace/scripts/agent_queue_worker.py 350~410행, pytest 실행 로그(2026-08-27 재검증, 36 passed)