자동 게재를 켜자 사흘 동안 넷이 드러났다
사람이 손으로 내보낼 때는 안 보이던 것들이다. 재실행이 옛 응답을 새 목록에 붙이고, 슬러그가 다시 만들어져 링크가 어긋나고, 스키마만 채운 껍데기가 지면에 오르고, 한 곳이 후보 25칸 중 9칸을 먹었다
뉴스 파이프라인의 자동 게재를 켰다. 사람이 마지막에 한 번 보던 단계가 빠지자 사흘 동안 네 가지가 드러났다. 전부 전에도 있던 결함인데, 사람이 눈으로 걸러 주고 있어서 안 보였을 뿐이다.
하려던 것
뉴스 파이프라인은 기사를 모아 묶고, 중요도를 매기고, 원고를 쓰고, 지면에 올린다. 마지막 단계까지는 자동인데 게재만 내가 눌렀다.
그걸 켰다. 판정 기준은 점수가 아니라 “사실이 자막에 있는가”로 뒀다. 자동으로 나가고, 걸린 것만 알림으로 온다.
어디서 막혔나
하나. 재실행이 옛 응답을 새 목록에 붙였다.
묶음 잡의 멱등 키가 날짜#시도 뿐이었다. 요약 잡 키에는 프롬프트 버전이 들어 있는데 이쪽만 없었다.
이게 왜 문제인가. 묶음 잡의 응답은 기사를 번호로 가리킨다. 그 번호는 후보 목록을 펼친 순서다. 그러니 후보를 고르는 규칙을 바꾸면 번호가 가리키는 대상이 통째로 바뀐다. 그 상태에서 이미 돌린 날짜를 다시 돌리면, 큐가 “같은 키니까” 하고 옛 응답을 돌려준다. 옛 번호가 새 목록에 그대로 적용된다.
중요도와 분류와 묶음이 엉뚱한 기사에 붙는다. 그런데 에러는 안 난다. 번호는 유효한 범위 안에 있으니까.
재실행은 실제로 일어난다. 9월 12일자는 세 번째 시도까지 갔다.
키에 묶음 버전을 넣고, 프롬프트를 고칠 때뿐 아니라 선별 규칙을 바꿀 때도 올리기로 했다.
둘. 슬러그를 두 번 만들었다.
주소가 되는 슬러그는 편집실에서 대기열에 올릴 때 정해진다. 그런데 원고를 쓰는 쪽이 그걸 쓰지 않고 자기가 집어간 날 날짜로 다시 만들고 있었다.
같은 날 안에서는 두 값이 같다. 자정을 넘겨 집어가거나, 실패하고 재시도하면 달라진다. 그러면 알림에 붙은 읽기와 고치기 링크가 404가 되고, 영상 단계가 틀린 공개 주소를 찍는다.
셋. 스키마만 채운 껍데기가 지면에 올라갔다.
9월 14일 특집이 이렇게 나갔다. 제목은 “테스트 제목”, 리드는 “테스트 리드”, 목차는 항목 두 개. 전체 138바이트다.
구조화 출력이 여러 번 깨진 뒤 마지막 시도에서 나오는 응답이었다. 형식은 맞다. 그래서 파서도 통과하고 품질 잣대도 통과한다. 잣대는 형식을 재지 내용의 존재를 재지 않는다. 9월 11일에도 한 번 있었고 그때는 152바이트였다.
목차가 셋 미만이거나 본문이 300자 미만이거나 자리 채우기 문구가 보이면, 잣대를 재기 전에 실패로 돌리기로 했다. 원고를 받은 직후에 본다. 인용과 영어판과 사진 토큰을 버리지 않으려면 그 자리여야 한다.
넷. 한 곳이 후보 25칸 중 9칸을 먹었다.
9월 13일 조간에 앤트로픽 CEO가 속도 조절을 말했다는 기사가 안 실렸다. 중요도가 낮아서가 아니다. 중요도를 매기는 잡에 들어가지도 못했다. 규칙 점수 28위였고 컷이 25위였다.
25칸 중 아홉 칸이 개인 블로그 한 곳이었다. 그중 여섯은 그 사람이 만든 도구의 소수점 버전 올림이었고, 모델이 매긴 중요도는 1이었다.
점수식이 1.5 × 다룬 곳 수 + 티어 가중치 합이다. 그래서 큐레이션 매체 하나가 단독으로 다룬 것(3.0)이 일반 매체 하나가 단독으로 다룬 것(2.7)을 내용과 무관하게 항상 이긴다. 게다가 컷이 하필 동점 덩어리 한가운데 떨어져 있었다. 3점이 열 묶음, 2.7점이 열여섯 묶음이다. 같은 2.7점 중에 무엇이 살아남는지를 배열 순서가 정하고 있었다.
어떻게 풀었나
넷째 건이 제일 손이 많이 갔다. 출처당 상한을 네 묶음으로 뒀는데, 구분 없이 막으니 더 나빠졌다.
9월 13일자 1위가 상한에 걸려 빠졌다. 모델이 매긴 중요도 4짜리다. 9월 1일자에서는 공식 발표 세 건이 밀려나고 그 자리를 프리프린트가 채웠다. 발표 원문과 색인 사이트는 성격이 다르다. 같은 곳에서 여러 건이 오는 게 정상이고, 그게 편향이 아니다.
그래서 상한 밖에 두는 부류를 따로 뒀다. 그리고 상한에 걸린 묶음은 버리지 않고 미뤄 뒀다가 자리가 남으면 채우게 했다. 동점은 배열 순서 대신 다룬 곳 수, 항목 수, 최신 순으로 갈랐다.
상한으로 생긴 빈자리에 예상 못 한 게 들어왔다. 컨퍼런스 전시 부스 예약 안내 같은 자기 행사 광고다. 일반 매체 티어에서만 그걸 걸러냈다.
9월 1일부터 13일까지 다시 돌리니 대부분 0건에서 1건 교체고, 9월 13일자만 네 건 바뀐다. 버전 올림 네 건이 빠지고 앤트로픽 CEO 건과 올트먼 IPO 발언과 데이터센터 규제 건이 들어온다.
셋째 건에서는 자동 게재 기준선을 어디에 둘지가 문제였다. 처음엔 미달 항목 개수로 끊으려 했는데, 실측 19편 중 15편이 미달을 하나 이상 갖고 있었다. 그중 열한 편은 같은 항목 하나였다. 개수로 막으면 자동 게재가 사실상 꺼진다. 점수 85점 아래만 승인 대기로 돌리는 쪽으로 갔다. 19편에 돌리면 껍데기 한 편이 걸리고 두 편이 보류되고 열일곱 편은 지금처럼 나간다.
배운 점
- 사람이 마지막에 보던 단계를 빼면, 그 사람이 걸러 주던 게 전부 드러난다. 넷 다 전에도 있던 결함이다. 자동 게재가 만든 게 아니라 보이게 만들었다.
- 멱등 키에는 결과를 바꾸는 모든 것의 버전이 들어가야 한다. 프롬프트만 넣고 선별 규칙을 빼면, 규칙을 바꾼 날 재실행이 조용히 거짓말을 한다.
- 번호로 가리키는 응답은 목록이 바뀌면 에러 없이 틀린다. 범위 안에 있는 숫자는 검증을 통과한다.
- 한 번 정해진 값을 나중에 다시 만들지 않는다. 슬러그를 두 곳에서 만들면 같은 날에는 같고 자정 넘으면 다르다. 이런 건 테스트로 안 잡힌다.
- 형식 검사는 내용의 존재를 보장하지 않는다. 스키마를 통과한 138바이트가 지면에 올랐다.
- 점수만으로 고르면 다양성이 깨진다. 그렇다고 상한을 똑같이 걸면 정상적인 집중까지 막는다. 발표 원문과 색인은 한 곳에서 여러 건 오는 게 맞다.