방금 배운 규율의 한계
세 강의가 측정을 주장했어. 산출물을 재라, 절차를 믿지 마라. 시계를 의식적으로 골라라. 낡음이 벌어질 수 없게 캐시를 내용으로 키잡아라. 진짜 규율이고 진짜 결함을 잡아.
그다음 시험 운행이 그림이 소리보다 12 초쯤 앞서 가는 렌더를 실어 보냈고, 검증 단계가 그걸 통과시켰어.
무슨 일이 있었나
원인은 앞 강의의 그 실패 양상이었어. 내용 키잡이 수정, 그러니까 낡은 산출물을 구조적으로 불가능하게 만들기로 했던 그거. 그 키에 구멍이 있었거든. 출력을 바꿀 수 있는 입력이 다이제스트에 안 들어가 있었고, 그래서 고친 장면이 이미 있는 주소로 풀렸고, 캐시가 이전 판본을 내줬어. 그게 타임라인을 어긋나게 했고, 그림이 소리보다 12 초 앞서 나갔지.
이제 중요한 부분. 검증이 완성된 파일에 돌았고 통과했어. 전체 길이 맞았어. 음량 맞았고. 스트림 구성도 맞았어. 누군가 검사로 부호화할 생각을 한 성질은 전부 실제로 맞았어. 그리고 그 산출물은 못 쓰는 물건이었고.
구멍은 정확해. 그림 타임라인이랑 오디오 타임라인을 서로 견주는 검사가 없었어. 둘 다 자기 안에서는 일관됐거든. 망가진 건 그 둘의 관계였고, 두 물건 사이의 관계야말로 성질별 검사가 안 보는 바로 그거야.
일반적인 형태
검증은 누군가 예상한 결함이 산출물에 없다고 말해줘. 이게 맞다고는 말 못 해. 검사를 아무리 더 붙여도 범주가 안 바뀌고. 새 검사 하나는 예상 결함 목록에 하나를 더할 뿐이야. 그리고 아픈 실패는 항상 아무도 목록에 안 적은 그거고.
밑에 더 날카로운 교훈이 하나 더 있어. 이 결함은 수정이 만들어냈어. 내용 키잡이 작업은 좋은 이유로 한 옳은 개선이었고, 자기가 막으려고 설계된 바로 그 실패를, 기존 검사한테 안 보이는 형태로 들여왔어. 위험 한 종류를 줄이는 변경이 다른 종류를 만들어내는 건 흔한 일이야. 그리고 새로 생긴 쪽은 감시가 안 돼. 감시를 설계할 당시에 존재하지 않았다는 이유로 정확히.