메모 106건을 위키로 옮기는 중이다. 대부분은 그냥 옮기면 되는데, 규칙이랑 진행상황이 한 문서에 섞여 있는 메모 11건이 문제였다. 이건 쪼개야 한다.
쪼갠 초안이 28건 나왔다. 그대로 승격시키기 전에 검수기를 하나 만들어 돌렸다. 초안에 들어간 문장이 원본 메모에 글자 그대로 있는지 대조하는 물건이다.
28건 중 20건이 걸렸다
결과를 보고 좀 멍했다. 28건 중 20건이 원문 불일치.
쪼개기만 했는데 원문이 왜 달라져. 검수기가 잘못 짜였나 싶었다.
불일치로 잡힌 문장을 꺼내봤다. 겉보기엔 멀쩡했다. 앞부분은 원본이랑 똑같다. 그런데 뒤가 없었다.
초안이 아니라 초안을 만든 놈이 범인이었다
의심 대상을 바꿨다. 초안이 아니라 초안을 뽑아낸 내 코드. 열어보니 한 줄이 있었다.
slice(0, 300)
분류가 애매해서 “미분류”로 남긴 덩어리를 문서에 적을 때, 앞에 하이픈을 붙이고, 줄바꿈을 공백으로 바꾸고, 300자에서 잘라내고 있었다.
내가 금지해둔 게 세 개다. 자동 요약 금지, 자동 재작성 금지, 원문 수정 금지.
한 줄이 세 개를 동시에 어기고 있었다.
눈으로 읽었으면 절대 못 잡는다
이게 제일 서늘한 대목이다. 잘린 글은 앞 300자가 멀쩡하다. 사람이 문서를 열어서 읽으면 자연스럽게 읽힌다. 뒤에 뭐가 있었는지 모르니까 없어진 걸 알아챌 방법이 없다.
28건을 아무리 정독해도 못 찾는다. 원본을 옆에 띄워놓고 글자 단위로 맞춰봐야 나온다. 그건 사람이 할 일이 아니라 기계가 할 일이다.
한 줄 고치고 초안을 다시 뽑았다. 20건 → 0건. 그다음 27건을 정식 승격했는데, 승격할 때도 본문이 바이트 단위로 같은지 프로그램이 확인하게 했다. 변경 0.
남은 것
원본 메모 106건은 하나도 안 지웠다. 옮겼다고 원본을 바로 버리면, 오늘 같은 일이 났을 때 돌아갈 데가 없다. 삭제는 나중에 따로 판단하기로 하고 별도 항목으로 빼뒀다.
① 자동 생성물은 원본과 글자 단위로 대조한다. 읽어보고 판단하지 않는다.
② 문자열을 자르는 코드(
slice, substr)는 원문 보존 구간에 두지 않는다.③ 옮기기·쪼개기 작업은 원본을 지우지 않은 상태로 끝낸다. 삭제는 별도 승인 건.
④ “앞부분이 멀쩡하면 사람은 못 알아챈다”를 전제로 검사를 설계한다.