run-cycle 완료 보고 검증 기준 체크리스트
이 문서는 canonical 정책(
260902_결과검증_근거누락_재발방지_통합정책_v3.md)의 일반 3필드 템플릿(결론/근거/다음행동)을 대체하지 않는다. run-cycle/헬스체크류 "시스템 태스크"에는 canonical 문서의 일반 템플릿 위에 코드 게이트(_SYSTEM_TASK_TITLE_RE매치 시_completion_missing_verifiable_evidence_fields)가 추가로 강제하는 5개 구조적 필드가 있다 — 이 문서는 그 5개 필드만 다루는 run-cycle 전용 하위 체크리스트다. 새 canonical 정책 문서를 만든 것이 아니다.
run-cycle 완료 보고 체크리스트 (ron 전달용)
배경
knowledge_os.py run-cycle 완료 보고가 cowork로부터 "검증 근거 미기재"로 2회 연속(#37811, #37810 계열) 반려됐다. 반려 사유가 missing_execution_value / missing_source / missing_verification_value / missing_original_verification / missing_source_log_path / missing_verification_command 등 코드 게이트 내부 라벨로만 통보되어, 무엇을 채워야 통과하는지 매번 재해석해야 했다. 이 문서는 실제 게이트 코드(agent_queue_worker.py::_completion_missing_verifiable_evidence_fields, server.py::_completion_storage_required_result_gaps)가 요구하는 조건을 사람이 바로 채울 수 있는 5개 필수 항목으로 번역한 것이다.
필수 5항목 체크리스트
| # | 항목 | 기재 형식 예시 | 왜 필요한가 (검증 가능성 관점) |
|---|---|---|---|
| 1 | exit_code | exit_code: 0 (또는 실패 시 실제 정수값) |
코드 게이트가 _STORAGE_EXIT_CODE_RE로 정규식 매칭하는 유일한 성공/실패 판정 값이다. 이 숫자가 없으면 게이트는 "실행됐는지"조차 판단할 근거가 없어 missing_verification_exit_code로 자동 반려한다 — 서술형 "정상 완료"는 재현 불가능한 주장이라 증거로 인정되지 않는다. |
| 2 | failed_steps 목록 | failed_steps: [] 또는 failed_steps: ["obsidian_export", "ontology_sync"] |
run-cycle은 다단계 파이프라인이라 exit_code 0이어도 개별 스텝이 스킵/부분실패했을 수 있다. 이 목록이 없으면 "전체 통과"라는 결론이 스텝 단위로는 검증 불가능한 뭉뚱그림이 되어 missing_execution_value(구체적 실행값 부재) 판정을 받는다. |
| 3 | source_log 파일 절대경로 | source_log_path: /Users/ron/.hermes/workspace/logs/run_cycle_20260902_1420.log |
게이트가 _extract_source_log_path()로 경로를 추출한 뒤 os.path.exists()로 실존 여부까지 파일시스템에서 직접 확인한다. 경로가 없으면 missing_source_log_path, 경로는 있는데 파일이 없으면 source_log_path_not_found:<path>로 반려된다 — "로그를 봤다"는 진술이 아니라 재검증 가능한 물리적 위치가 필요하다. |
| 4 | 실행 시각 | executed_at: 2026-09-02T14:19:22+09:00 |
실행 시각이 없으면 첨부된 로그/exit_code가 이번 요청에 대한 결과인지 이전 실행의 재활용(캐시된 완료 보고 재제출)인지 구분할 수 없다. 게이트의 missing_original_verification 계열 라벨은 결과값과 요청 시점의 인과관계를 못 찾을 때 뜬다 — 시각 도장이 그 인과관계를 증명하는 최소 단위다. |
| 5 | 대상 스텝명 | target_step: run-cycle --domain strategy (knowledge_os.py 내부 커맨드명 그대로) |
어떤 서브커맨드/도메인을 실행했는지 명시해야 검증자가 _VERIFICATION_COMMAND_FIELD_RE가 요구하는 재현 명령(python3 knowledge_os.py <동일 스텝>)을 그대로 재실행해 exit_code를 대조할 수 있다. 스텝명이 빠지면 검증 명령 자체를 구성할 수 없어 missing_verification_command로 반려된다. |
최소 통과 포맷 예시
결론: run-cycle 정상 완료
근거:
exit_code: 0
target_step: run-cycle --domain strategy
executed_at: 2026-09-02T14:19:22+09:00
source_log_path: /Users/ron/.hermes/workspace/logs/run_cycle_20260902_1419.log
failed_steps: []
검증 명령: python3 scripts/knowledge_os.py run-cycle --domain strategy
검증 결과: exit 0, 5/5 스텝 통과 (source_log 참조)
다음 행동: 없음
검증 방법 (이 문서 자체의 완료 기준)
- 측정 지표: 위 표 5개 항목이 모두 문서에 존재하고, 각 항목에 "왜 필요한가" 1줄 근거가 붙어 있는가 (충족 시 5/5).
- 검증 명령:
cat ~/knowledge-agent/400-reports/260902_cowork_run-cycle-completion-checklist.md | grep -c '^|.*missing\|검증 가능성'로 표 행 수 확인, 또는 이 파일을 직접 read_file로 열어 5행 존재 확인. - 기대값: 5개 행 모두 존재, 각 행에 근거 문장 포함.
- 롤백 조건: ron이 이 포맷을 그대로 채운 재제출본이 3회 이상 추가로 반려되면, 이 체크리스트가 실제 코드 게이트 정규식과 불일치하는 것이므로 즉시
agent_queue_worker.py관련 정규식(_STORAGE_EXIT_CODE_RE,_VERIFICATION_COMMAND_FIELD_RE,_extract_source_log_path)을 codex에게 재확인 위임하고 이 문서를 갱신한다.