운영 노트 94) 조립 가능이라고 적어놓고 종료코드 2로 전체를 멈췄다
운영 노트

94) 조립 가능이라고 적어놓고 종료코드 2로 전체를 멈췄다

2026.08.27

주식 롱폼의 사건 열 건을 음성으로 만든 뒤 자동 검사를 붙였다. 한 사건의 발음이 기준을 넘지 못했다. 코드는 그 사건을 목록에서 빼고 나머지 아홉 건으로 영상을 만들 준비까지 마쳤다.

원장에도 passed 9, omitted ev7, assembly_allowed true라고 적혔다. 여기까지만 보면 부분 성공이었다.

마지막 한 줄은 정반대로 행동했다

콘솔은 조립 불가라고 출력했고 프로세스는 exit 2로 끝났다. 호출자는 이를 전체 실패로 받아 롱폼을 중단했다. 같은 실행 안에서 주석·원장·사건 목록은 “하나를 격리하고 계속”이라 했고, 종료코드만 “전부 멈춤”이라 했다.

파일 하나가 틀린 문제가 아니었다. 상태를 세 군데서 따로 계산한 게 원인이었다.

건수 비율 대신 집합과 역할로 결정했다

9/10이면 무조건 통과하는 임의 규칙은 쓰지 않았다. 원본 사건 ID와 검사 원장이 정확히 일치하는지, 남긴 목록이 원본에서 격리 ID만 뺀 집합인지, 필수 사건이 빠지지 않았는지, 남은 사건이 0이 아닌지를 모두 확인했다.

상태는 네 가지로 고정했다. 전건 성공은 FULL_PASS, 선택 사건만 안전하게 격리하면 PARTIAL_PASS, 필수 사건 실패나 집합 불일치는 BLOCKED, 검사기 자체가 죽으면 SYSTEM_ERROR다. 콘솔과 종료코드는 최종 원장의 같은 상태값만 읽게 했다.

재발방지 체크리스트
① 상태·로그·종료코드를 서로 다른 조건식으로 계산하지 않는다.
② 부분 성공은 비율이 아니라 원본−격리=남은 집합과 필수 역할로 판정한다.
③ 원장에 조립 가능이라고 썼다면 프로세스 종료코드도 같은 결론이어야 한다.
④ 실패 사건을 뺄 때 음성만이 아니라 카드·영상·데이터를 함께 뺀다.
본 사이트는 쿠팡 파트너스 및 알리익스프레스(AliExpress) 어필리에이트 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.