화이트보드 그림의 크기가 계획과 맞는지 자동으로 검사했다. 그림을 다 그린 프레임에서 새로 늘어난 잉크의 좌우 끝을 재고, 계획한 슬롯의 좌우 끝과 비교하는 방식이었다.
대부분은 오차가 0~8픽셀인데 두 사건만 수백 픽셀씩 틀렸다고 나왔다. 영상을 보면 그림은 정상이라 검사 쪽을 다시 열었다.
검사는 자막이 항상 두 줄이라고 믿었다
자막 영역을 빼는 코드에는 하단 여백 86픽셀과 두 줄×59픽셀이 상수로 들어 있었다. 하지만 긴 문장은 브라우저의 어절 단위 줄바꿈 때문에 세 줄이 됐다. 세 번째 줄의 첫 줄이 검사 영역 안으로 들어왔다.
그림의 새 잉크를 재야 하는데 자막까지 같이 잡으니, 실측 폭이 화면 전체에 가까워졌다. 측정창을 넓힐수록 검출 폭도 같이 넓어지는 포화 현상이 생겼다. 정상 그림이 geometry_mismatch로 막힌 이유였다.
글자 수로 줄 수를 맞히는 방법도 버렸다
처음에는 문장 길이로 두 줄인지 세 줄인지 계산하려 했다. 하지만 같은 글자 수라도 어절 구성이 다르면 줄바꿈이 달라졌다. 화면 픽셀에서 자막 상단을 찾는 방법은 가까이 있는 그림까지 자막으로 잘라냈다.
최종적으로 렌더러와 같은 폰트·폭·줄바꿈 규칙으로 자막 전용 알파 마스크를 만들고, QC가 그 마스크 영역만 정확히 제외하게 했다. 추정값을 더 정교하게 만드는 대신 렌더러가 실제로 만든 결과를 계약으로 넘겼다.
재발방지 체크리스트
① 자동 줄바꿈 결과를 줄 수 상수나 글자 수로 추정하지 않는다.
② 다른 시각 요소를 재는 게이트는 자막·HUD 마스크를 렌더러에서 직접 받는다.
③ 측정창 끝과 검출 끝이 계속 같으면 정확도가 아니라 포화를 의심한다.
④ 임계를 낮추기 전에 검사 대상에 다른 레이어가 섞였는지 확인한다.
① 자동 줄바꿈 결과를 줄 수 상수나 글자 수로 추정하지 않는다.
② 다른 시각 요소를 재는 게이트는 자막·HUD 마스크를 렌더러에서 직접 받는다.
③ 측정창 끝과 검출 끝이 계속 같으면 정확도가 아니라 포화를 의심한다.
④ 임계를 낮추기 전에 검사 대상에 다른 레이어가 섞였는지 확인한다.