오전 9시 38분에 남은 기록에는 사람이 없었다.
그러나 그 기록을 만들도록 조건을 정한 사람은 있을 수 있었다. 그 사실을 처음 말한 것은 내가 아니라 윤세한이었다.
2027년 3월 16일 화요일 오전, 오선영은 회사와 운영업체에서 확보한 감사 기록을 교차 검증한 중간 결과를 설명했다. 2025년 8월 25일 오전 9시 38분 항목은 자동 질의로 생성됐을 가능성이 높았다. 9시 43분 경고 하향은 별도의 공용 계정 실행으로 남았다. 두 사건을 하나의 사람 이름으로 묶을 수는 없었다.
“그런데 자동 질의는 왜 그날 생겼습니까?” 내가 물었다.
“전날부터 대기하던 배치 작업이 조건을 점검했기 때문이야. 그리고 그 배치 작업이 어느 설정으로 돌았는지는 기록이 있어.”
“누가 설정했습니까?”
“그걸 이제 확인하는 중이야.”
나는 웃지 않았다. 오랫동안 들어온 말이었기 때문이다. 그러나 이번에는 그녀가 내민 자료에 새로운 번호가 있었다. 2025년 8월 21일 저녁 6시 12분, ‘월말 미결 항목 확인 일정 조정’이라는 운영 요청이 접수돼 있었다.
요청 주체 칸에는 화진모빌리티 정산관리실이라고 적혀 있었다. 그 아래 검토 담당자 칸에는 최명환이라는 이름이 있었다.
나는 손가락으로 그 이름을 짚었다.
“드디어 나온 겁니까?”
“서진혁.”
오선영이 내 이름을 불렀다. 나는 손을 거뒀다.
“이건 부서 검토 담당자를 표시한 거야. 실제 요청을 작성했거나 25일에 경고를 낮췄다는 증거는 아니야.”
“알고 있습니다.”
“알면서 왜 손부터 움직여?”
나는 대답하지 못했다. 누군가의 이름이 나타나자 내가 먼저 그 이름을 범인 칸으로 옮기려 했다. 오선영은 내가 무슨 생각을 하는지 보지 않고도 알았다.
이날의 진전은 달랐다. 8월 21일의 운영 요청은 실제로 존재했고, 서버에 남은 기록번호와 접수함 문서가 맞았다. 단순한 익명 사진이 아니었다. 하지만 그 요청 내용은 ‘마감 전 확인 대기열을 조회하라’는 것이었다. ‘검토자 공석 경고를 무시하라’는 지시는 발견되지 않았다.
“그럼 별문제 없는 요청이네요.”
“그럴 수도 있어.” 선영이 대답했다. “하지만 그 요청이 25일 오전 어떤 조건을 불러왔는지, 그 다음에 누가 무엇을 결정했는지는 더 확인해야 해.”
윤세한은 서면 회신에서 운영 정책의 구조를 설명했다. 마감 전 조회 기능은 정상적인 업무였다. 다만 오래된 시스템에서는 조회 결과의 경고 수준을 사람이 따로 정정할 수 있었다. 그 경고를 참고로 낮추면 다음 시스템에서 확인된 항목처럼 받아들일 가능성이 생겼다.
“그러니까 범인은 미리 정해진 예약을 이용했을 수도 있지만, 반드시 예약을 만든 사람일 필요는 없군요.”
“그래.”
나는 처음으로 8월 21일과 25일을 한 장의 표에 올렸다. 다만 굵은 화살표 대신 점선으로 연결했다. 확인된 것은 예약 작업의 존재와 당시 시스템의 취약점이었다. 악용하려는 의도가 언제 생겼는지는 아직 모른다.
점심 무렵 정민규에게서 연락이 왔다. 그는 인천 건물의 두 번째 잠금장치 신고를 재확인하는 과정에서 새로운 차이를 발견했다고 했다. 오후 7시 18분으로 알려진 시간은 당직 직원 개인 메모의 작성 시각이었다. 실제 전화가 걸려온 시각은 교환기의 기록에서 약간 달랐다. 차이는 몇 분 이내였다. 그러나 누군가 통화를 7시 18분에 했다고 말하면 틀린 문장이 된다.
“왜 이제 확인했습니까?” 내가 물었다.
“제가 그걸 하나로 적었으니까요.”
그는 말을 멈추지 않았다.
“제가 첫 번째 보고서에서 통화 시각과 메모 시각을 한 칸에 넣었습니다. 그게 편해서요. 그런데 이번 사건은 그 편의 때문에 잘못된 동선이 생길 수 있어요.”
“이번에는 어떻게 했습니까?”
“두 개로 나누어 정정했습니다. 상급자에게도 이유를 남겼고요.”
나는 짧게 대답했다.
“그게 맞습니다.”
그는 감사하다고 말하지 않았다. 나도 칭찬을 바라지 않았다. 누군가의 죽음에 관한 수사에서 정확한 두 칸을 만드는 건 그저 필요한 일이었다.
오후 두 시, 박혜림에게서 메시지가 왔다. 면접 결과는 아직 나오지 않았지만, 옛 근무처의 허위 방문 신청이 실제 출입과 무관하다는 공식 확인문을 받았다고 했다. 그녀는 문서를 내게 보내지 않았다. “이번에는 제게 있는 게 더 안전할 것 같아요.” 나는 그 생각에 동의했다.
그녀의 삶을 옮겨 다니는 서류 속에서 구해낸 것은 누군가의 영웅적인 추리가 아니었다. 잘못된 수신 기록을 구분하는 일, 직접 확인한 사실을 남기는 일, 다른 사람이 그녀의 이름으로 신청하지 못하게 막는 일이었다. 그것들이 모여 면접 한 번을 지켰다.
오후 네 시, 오선영에게 인천 현장에 관한 추가 연락이 왔다. 공용 출입문 앞 사람의 접근 정황은 다른 기록과 일부 맞아떨어졌지만, 그 사람이 실제로 건물에 들어갔는지까지는 확인하지 못했다. 경찰은 주변 자료를 정식으로 대조하고 있었다. 나는 추가 자료를 달라고 하지 않았다.
그날 저녁 최명환이 서면으로 응답했다. 2025년 8월 21일의 요청에 자기 이름이 검토 담당자로 기록된 사실은 인정했다. 다만 실제 작성자는 팀 공용 접수 담당자였고, 자신은 월말 조회 일정 조정의 결과만 보고받았다고 했다. 그 진술을 뒷받침할 인계 기록도 제출하겠다고 했다.
“거짓말일까요?” 한유리가 물었다.
“모릅니다. 지금까지는 부인과 자료 제출 약속이 있을 뿐입니다.”
“그럼 이번에도 범인은 안 나오는군요.”
“범인 이름을 오늘 정하면 내일 다른 피해자가 생길 수 있습니다.”
그녀는 고개를 끄덕였다. 하지만 표정은 어두웠다.
“독자는 답답하겠네요.”
“저도 답답합니다.”
실제로 그랬다. 나는 어쩌면 의심을 너무 두려워하는 사람이 돼 있었는지도 모른다. 의심하지 않으면 아무도 찾을 수 없다. 그러나 의심한 순간 단정하면 다른 사람이 상처 입는다. 그 사이에서 움직이는 방법을 나는 이제야 조금 배우고 있었다.
밤 9시 14분, 익명 메일이 왔다. 제목은 처음 받았던 사건기록과 같은 형식이었다.
‘사건기록 송부 — 보정본.’
이번에는 내일의 살인사건이 없었다. 대신 2026년 11월 2일의 첫 이메일이 어느 프로그램에서 만들어졌는지를 설명하는 듯한 화면이 있었다. ‘수신자별 문서 생성 목록’이라는 표였다. 한 행에는 서진혁, 다른 행에는 배정우의 이름이 적혀 있었다.
나는 숨을 멈췄다. 2026년 11월 3일 죽은 남자에게도 사건기록이 전달됐다는 말인가.
하지만 표 아래 작은 글씨가 보였다.
‘미발송 초안 포함. 수신 완료 여부 별도 확인.’
나는 화면을 확대했다. 두 이름 옆에 적힌 코드가 달랐다. 서진혁은 02-B, 배정우는 02-A. 지난번 한유리가 받은 문서와 배정우의 기록에서 발견했던 바로 그 구분이었다.
누군가는 수신자별로 다른 문서를 만들었을 수 있었다. 그렇다고 모두에게 실제로 보냈다는 뜻은 아니다. 그래도 이 목록이 진본이라면 처음부터 단 하나의 미래를 본 사람이 아니라, 사람마다 다른 반응을 이끌어내려 한 설계자가 있었을 가능성이 커진다.
나는 메일의 마지막 문장을 읽었다.
‘이번에는 받았다고 쓰지 않겠습니다. 어느 사람이 읽었는지부터 확인하겠습니다.’
보낸 사람은 마치 우리가 몇 달 동안 되풀이한 원칙을 배운 것처럼 적었다. 나를 흉내 내는 것인지, 처음부터 그 원칙을 알고 시험한 것인지 알 수 없었다.
나는 오선영에게 원본과 내가 확인한 두 코드만 보냈다. 그리고 수첩 마지막 장에 적었다.
‘02-A와 02-B는 확인됐다. 첫 메일의 생성 목록은 진본 미확정. 배정우가 메일을 받았는지는 미확정.’
그 아래 마지막 문장을 적으려다가 손을 멈췄다.
여태껏 나는 누가 사람을 죽였는지를 물었다.
이제는 그 질문과 별도로, 누가 사람들에게 서로 다른 사건기록을 읽게 했는지를 물을 수 있게 됐다.
그리고 그 두 질문의 답이 반드시 같은 사람일 필요는 없었다.
제140화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.