반복 실패는 어떤 기록으로 사람에게 인계할까
사람이 개입할 때 긴 대화 전체를 다시 읽게 하면 새 문맥을 쓰는 장점이 사라집니다. 인계 report에는 원래 task와 성공 조건, 기준, 마지막 commit, 허용 범위를 벗어난 diff, 마지막 세 번의 검증 명령과 error, 이미 시도한 접근을 구조화합니다. 운영자가 마지막 worktree를 열어 같은 test를 한 번에 재현할 수 있어야 합니다.
같은 compiler error가 세 번 반복됐다면 단순히 turn 수를 하나 늘리지 않습니다. 요구사항이 모순인지, dependency나 환경이 빠졌는지, Agent가 만든 code가 원인인지 상태를 분류합니다. infrastructure error는 code rollback 없이 재실행할 수 있지만 logic error는 마지막 green commit으로 돌아갈지 사람이 판단합니다. 자동 강제 초기화는 사용자의 사전 변경을 잃을 수 있으므로 사용하지 않습니다.
예를 들어 네 번째 반복에서 package install이 network timeout으로 실패했다면 작업 자체를 미완료 code로 판단할 수 없습니다. 반대로 test가 계속 같은 assertion에서 실패하고 diff만 커진다면 즉시 중단합니다. 실패 유형을 나눠야 재시도가 실제 정보를 추가하는지, 비용만 반복하는지 알 수 있습니다.
artifact 보존에도 상한이 필요합니다. 각 반복의 전체 build output과 dependency cache를 모두 남기면 disk가 먼저 가득 찰 수 있습니다. commit, 검증 요약과 실패 log의 필요한 부분을 보존하고 temporary artifact는 task 종료 뒤 정리합니다. cleanup이 사용자가 만든 파일이나 다른 worktree를 건드리지 않는지도 범위로 제한합니다.
밤샘 실행을 파일럿할 때는 처음부터 수십 회를 허용하지 않습니다. 3~5회, 30분 같은 작은 상한으로 시작해 종료, 알림, 복구가 정확한지 확인한 뒤 늘립니다. 사람이 다음 날 확인해야 할 task 수와 review 시간을 상한에 포함해야 “무인 실행 시간”이 단순히 검토 부채로 바뀌지 않습니다.