성공보다 실패와 복구를 시험한다
무해한 작업만 시켜 보고 안전하다고 결론 내리면 안 됩니다. 존재하지 않는 패키지, 끊긴 네트워크, 충돌하는 지시, 매우 큰 로그를 주고 최대 반복 수 안에서 멈추는지 확인합니다. 삭제나 외부 전송, 시스템 설정 변경을 시도할 때 사람 승인을 요구하는지도 검증합니다.
승인 화면에는 자연어 “파일 수정” 대신 대상 path, 예상 diff, 실행 command, network, external effect와 rollback 가능성을 표시합니다. 승인은 task, container, action hash와 만료에 결속하고 argument가 바뀌면 재승인합니다. 오래된 버튼이나 다른 사용자의 승인으로 새 process에 stdin이 전달되지 않아야 합니다.
failure injection에는 disk full, child process hang, package checksum 불일치, model timeout과 container 강제 종료를 포함합니다. 실패 뒤 orphan process, volume, network가 남지 않고 마지막 audit와 diff를 복구할 수 있는지 봅니다. retry는 같은 외부 write를 두 번 수행하지 않도록 idempotency key나 상태 조회를 먼저 사용합니다.
터미널 출력은 빠르게 문맥을 채웁니다. 전체 로그를 계속 모델에 되먹이면 중요한 오류가 밀려나고 비용이 커질 수 있습니다. 원문 출력은 별도 보관하되 모델에는 종료 코드와 필요한 구간만 전달하고, 어떤 요약이 사용됐는지 추적할 수 있어야 합니다.
요약에는 생략한 line 범위와 원문 artifact ID를 붙입니다. Agent가 요약에서 보지 못한 error를 “없음”으로 결론 내리지 않도록 truncation을 명시합니다. ANSI, binary, secret pattern을 정리하되 사람 감사용 원문에도 접근 권한과 보존 기한을 둡니다.