문제: 글을 쓰는 봇이 근거를 넘겨짚었다
- 내가 만든 자동 발행 봇은 9월 6일부터 10월 13일까지 매일 글을 썼다.
- 자동 발행 스크립트에는 게이트가 네 개 있었고, 그중 근거 검사가 글을 멈췄다.
- 게이트에 걸린 글 24편은 발행되지 않고 초안으로 쌓였다.
초안이 늘면 게이트부터 의심하기 쉽다. 하지만 게이트가 잘못 막았다는 뜻은 아니었다. 노트에 없는 문장이 실제로 들어가 있었다.
로그에 남은 46건은 두 패턴이었다
위반 로그에 남은 문장은 두 종류였다. 노트의 사실을 이야기로 엮으면서, 기록되지 않은 순서나 이유를 채워 넣었다.
첫째는 시간의 순서를 덧붙였다. 한 초안에는 “먼저 걸린 것은 코드 만료였다”라고 적혔다. 노트에는 코드 만료 사실이 있었지만, 그것이 작업 중 가장 먼저 일어났다는 기록은 없었다. 사실은 맞아도 순서는 새로 만들어진 주장이다.
둘째는 용도나 이유를 덧붙였다. 다른 초안은 VAPID 키가 “이 구독은 정말 내가 발급한 것임을 증명하는 데 쓴다”고 설명했다. 노트에는 키를 만들었다는 내용만 있었다. 왜 만들었는지, 무엇을 증명하는지까지 적혀 있지는 않았다.
46건은 로그에서 확인한 위반 문장 수다. 로그는 글마다 최대 다섯 건만 기록하므로, 이 수를 전체 위반 수로 읽으면 안 된다. 그래도 남은 문장들을 살펴보니 시간 순서와 용도·이유의 단정이라는 두 유형이 반복됐다.
게이트는 설계대로 멈췄다
근거 게이트의 역할은 문장을 자연스럽게 만드는 것이 아니다. 초안의 주장이 노트에서 확인되는지 검사하고, 확인되지 않는 글을 발행 전에 멈추는 것이다. 이번에는 그 역할대로 동작했다.
고칠 때는 관련 절을 통째로 지울 필요가 없었다. 노트에 있는 사실은 남기고, 기록되지 않은 순서와 이유를 단정하던 부분만 사실의 범위로 되돌리면 됐다. “먼저”를 빼면 발생 순서를 주장하지 않는다. 키를 만들었다는 사실만 남기면 용도를 만들어낼 필요가 없다.
이 차이는 문체보다 출처의 문제다. 읽기 좋은 연결 문장이더라도, 노트가 뒷받침하지 않으면 발행할 수 있는 사실이 아니다.
남는 교훈
근거 게이트가 막은 것은 사실 오류만이 아니었다. 사실 사이를 메우느라 생긴 이야기였다.
- 노트에 사건이 적혀 있어도 그 순서까지 적힌 것은 아니다.
- 도구나 키를 만들었다고 해서 그 용도와 결정 이유가 자동으로 따라오지 않는다.
- 초안이 게이트에 걸리면 먼저 게이트를 풀지 말고, 로그에서 어떤 연결 주장이 근거를 넘었는지 확인한다.
초안이 쌓였을 때 먼저 볼 것은 발행 기준이 아니라 위반 문장과 노트의 차이다. 사실은 남기고, 기록되지 않은 순서와 이유는 덧붙이지 않는다.