애널리스트 완료보고 근거누락 방지 지시문 정리
작성: cowork(다듬) 작성시각: 2026-09-20 08:30 KST 범위: 코드 수정 없음. analyst-macro와 analyst-technical의 최근 needs_evidence 반려, config/agent_completion_submission_standard.md, config/completion_evidence_policy.md를 근거로 새 analyst-* 작업 body에 붙일 문장 템플릿 3개만 정리.
- [권고] 우선순위별 액션과 근거
→ 1순위: analyst-macro와 analyst-technical의 새 작업 body 맨 끝에 아래 “공통 4블록 강제 템플릿”을 그대로 붙인다. 이유는 2026-09-20 07:25 KST 최신 반려 2건(#39480 analyst-macro, #39481 analyst-technical)이 둘 다 verification_command_unverifiable로 실패했기 때문이다. 기대효과: 검증 명령 재현 불가형 반려 2건/2건(100%)의 직접 원인인 “검증 줄 안 경로·결과값 누락”을 차단한다.
→ 2순위: 매크로 로컬 캐시와 기술신호 로컬 캐시는 공통 템플릿만으로 부족하므로, 작업 주제별 전용 문장을 함께 넣는다. #39476 analyst-macro는 verification_command_path_not_found와 missing_verification_result가 함께 붙었고, #39477 analyst-technical은 LLM 인프라 실패라 4블록 문제가 아니었다. 기대효과: evidence 계열 실패 3건 중 인프라 실패 1건을 제외한 2건을 직접 겨냥해 재시도 낭비를 줄인다.
- [현황] 수치와 변화
최근 조회 결과(2026-09-20 08:30 KST), analyst-macro/analyst-technical 최신 실패 4건 중 evidence-gate 계열은 3건, 인프라 실패는 1건이다. evidence-gate 3건의 라벨은 verification_command_unverifiable 2건(#39480/#39481), verification_command_path_not_found+missing_verification_result 1건(#39476)이다.
정책 파일 기준은 이미 명확하다. config/agent_completion_submission_standard.md 81~90행은 결론/근거/검증/근거파일 4블록을 표준으로 요구하고, 594~615행은 analyst-macro와 analyst-technical 예시를 이미 제시한다. config/completion_evidence_policy.md 20~28행은 실행값·출처·검증값·파일/라인/원문 인용 4요소를 요구하고, 701~757행은 로컬 JSON 타임시리즈 직접 파싱 때 명령을 실제 실행한 stdout과 원문 줄을 써야 한다고 명시한다.
- [리스크] 구조적 위험과 원인
첫째, “4블록을 써라”만 있으면 에이전트가 검증: 줄에 자연어 설명만 넣고 실제 경로 토큰을 빼먹는다. 이번 #39480/#39481의 공통 실패가 바로 verification_command_unverifiable 2건이다.
둘째, 매크로 로컬 캐시 작업은 파일명을 상대경로 없이 쓰면 verification_command_path_not_found로 떨어진다. #39476은 BAMLC0A0CM.json만 열려 했고, 실제 작업공간 경로가 빠져 경로 확인과 검증 결과가 동시에 실패했다.
셋째, 인프라 실패와 근거누락 실패를 섞어 재시도하면 해결 방향이 틀어진다. #39477은 llm_infra_failure_retry_deferred라 템플릿 문제가 아니며, 템플릿 보강 대상에서 제외해야 한다.
- [검증방법] 성공/실패 기준
측정 지표: analyst-macro/analyst-technical의 verification_command_unverifiable, verification_command_path_not_found, missing_verification_result 반려 건수.
검증 명령어:
sqlite3 /Users/ron/.hermes/data/ops_multiagent.db "SELECT id,claimed_by,status,result_note FROM bus_commands WHERE claimed_by IN ('analyst-macro','analyst-technical') AND status='failed' AND (result_note LIKE '%verification_command_unverifiable%' OR result_note LIKE '%verification_command_path_not_found%' OR result_note LIKE '%missing_verification_result%') AND datetime(created_at)>=datetime('now','-7 day') ORDER BY id DESC;"
기대값: 아래 3개 템플릿을 새 analyst-* 작업 body에 붙인 뒤 7일 내 동일 라벨 재발 0건. 재발이 3회 연속 나오면 문장 문제가 아니라 태스크 생성 body 배선 또는 게이트 코드 인식 문제로 보고 codex 재조사로 격상한다.
템플릿 1 — 공통 4블록 강제 문장
새 analyst-* 작업 body 끝에 그대로 붙일 문장:
“완료 보고를 status=done으로 제출할 때는 result_note 맨 끝에 아래 4줄을 줄 맨 앞 라벨까지 그대로 채워라. 검증: 줄 안에는 반드시 실제 실행한 명령, 워크스페이스 경로(scripts/..., memory/..., config/... 등), 결과값 또는 exit code/stdout 요약을 한 줄에 함께 쓴다. 경로를 확인하지 못했거나 결과값이 없으면 done 금지다.
결론: <실행/확인/저장한 대상과 숫자 포함 판단을 완료형으로 쓴다>
근거: <직접 읽은 파일·DB·API·스크립트 경로 + 조회 YYYY-MM-DD HH:MM KST + 핵심 수치>
검증: <재현 가능한 명령 + 워크스페이스 경로> → <실제 결과값/건수/exit code/stdout>
근거파일: <실존 경로>:<줄번호 또는 JSON 항목> “<원문 일부 1줄>””
템플릿 2 — analyst-macro 로컬 크레딧/스프레드 캐시 문장
미국 IG/HY OAS, 크레딧 스프레드, FRED 로컬 캐시 작업 body에 추가할 문장:
“이 작업은 analyst-macro 로컬 캐시 판정이다. BAMLC0A0CM.json처럼 파일명만 쓰지 말고, 먼저 실제 경로를 확인한 뒤 memory/macro-timeseries/<시리즈>.json 또는 scripts/pipeline/market_indicator_tracker.py를 근거:와 검증: 양쪽에 그대로 써라. 검증: 줄에는 python3 -c "import json; d=json.load(open('memory/macro-timeseries/<시리즈>.json')); print(d['data'][-1], d.get('last_updated'))"처럼 실제 읽은 경로가 들어간 명령과 stdout, exit code 0을 함께 적는다. 존재 확인 전 market_indicator.py, vault_macro_bridge.py, /tmp/..., 파일명 단독 경로는 금지다.”
템플릿 3 — analyst-technical 크레딧 ETF 기술신호 문장
크레딧 ETF RSI/MACD, LQD/HYG/VCIT/IGSB 기술신호 작업 body에 추가할 문장:
“이 작업은 analyst-technical 기술신호 판정이다. 시작 전 실제 산출물·스크립트 경로를 확인하고, 검증: 줄에는 scripts/pipeline/technical_data_collector.py, scripts/pipeline/credit_etf_technical_check.py, scripts/pipeline/credit_etf_technical_recalc.py, memory/technical-signals/*.json, memory/price-history/*.json 중 실제 사용한 경로 하나 이상을 반드시 포함하라. 검증:은 ‘python3 scripts/pipeline/credit_etf_technical_recalc.py 실행 → exit code 0, analyzed_count=N, missing_count=0, RSI/MACD 수치 확인’처럼 명령·경로·결과값을 한 줄에 같이 쓴다. 자연어로 ‘검증 완료’만 쓰면 done 금지다.”
금지 문구
- “정상 확인함”, “이상 없음”, “처리됨”, “검증 완료” 단독 서술.
- “결과 확인 보류”, “검증 근거 없음”, “근거 섹션 미기재”.
- 실행할 명령 계획만 쓰고 stdout·exit code·저장 파일 경로를 안 쓰는 것.
- 실존 확인 전 경로를 지어내는 것.
- 인프라 실패(
llm_infra_failure_retry_deferred)를 4블록 재작성 문제로 오분류하는 것.
결론: analyst-macro와 analyst-technical의 최신 evidence-gate 반려를 읽고, 새 analyst-* 작업 body에 붙일 문장 템플릿 3개를 작성해 저장했다. 근거: config/agent_completion_submission_standard.md, config/completion_evidence_policy.md, ops_multiagent.db bus_commands #39476/#39480/#39481 원문 요약 조회 2026-09-20 08:30 KST — 최신 evidence 반려 3건 중 2건은 verification_command_unverifiable, 1건은 verification_command_path_not_found+missing_verification_result. 검증: python3로 /Users/ron/knowledge-agent/400-reports/260920_analyst_evidence_prompt_template.md 읽기 → 템플릿 3개 표제 모두 존재, 공통/매크로/기술신호 3개 저장 확인. 근거파일: /Users/ron/knowledge-agent/400-reports/260920_analyst_evidence_prompt_template.md:50 "템플릿 1 — 공통 4블록 강제 문장"