Close

저승에서 버그 리포트가 왔습니다

by 버질

도현은 문을 열지 않았다.

대신 걸쇠를 걸고 한 뼘만 열었다. 한 뼘이면 충분했다.

옥상에 남자가 서 있었다. 스물일고여덟쯤. 검은 정장에 검은 넥타이, 목에는 사원증. 왼손에는 계산기만 한 단말기를 들고 있었다. 택배 기사들이 예전에 들고 다니던 기계처럼 생긴 물건이었다.

머리는 단정했고 구두는 깨끗했다. 오 층 계단과 옥상 물웅덩이를 지나온 구두가 아니었다.

문 위의 센서등은 꺼져 있었다. 고양이만 지나가도 켜지는 등이었다.

“명부전 전산과 품질보증 담당 무영입니다.”

남자가 사원증을 들어 보였다. 한자가 빽빽했다. 冥府殿 電算課. 사진 속 얼굴은 지금과 똑같았는데 사원증 자체는 백 년쯤 묵은 것처럼 누랬다.

도현은 문을 닫았다.

똑, 똑, 똑.

“이승 출입 시 노크는 세 번으로 정해져 있습니다. 응답이 없으면 삼십 초 뒤 다시 세 번입니다. 횟수 제한은 없습니다.”

“경찰 부릅니다.”

“부르셔도 됩니다. 다만 접수 경로를 불문하고 성실히 보수할 책임을 지신다고 오늘 오후 세 시 십이 분에 서명하셨습니다. 제7조입니다.”

도현의 손이 걸쇠 위에서 멈췄다.

계약서는 책상 서랍에 있었다. 사본은 소윤이 가져갔다. 그 조항을 아는 사람은 세상에 둘이었다. 죽은 사람까지 치면 셋.

그는 문을 다시 한 뼘 열었다.

“누가 보냈어요. 소윤 씨? 아니면 전에 일하던 외주 업체?”

“저희 쪽 신고자 사백십칠 분이 보내셨다고 보시면 됩니다.”

무영이 단말기를 이쪽으로 돌렸다. 녹색 글자가 뜨는 흑백 화면이었다. 맨 위 줄에 익숙한 번호가 있었다.

[이음-0001] 재현 불가 → 재접수

처리자: 명부전 전산과 무영

사유: 2번 단계는 이미 재현 완료됨. 신고자 본인이 재현함.

도현은 고개를 돌려 방 안의 모니터를 봤다. 문틈에서도 보였다. 방금 닫은 사백십칠 건이 위에서부터 한 줄씩 열리고 있었다. 상태가 바뀔 때마다 처리자 칸에 같은 이름이 찍혔다. 그가 만든 적 없는 계정이었다. 권한 테이블에 없는 계정이었다.

“믿지 않으셔도 됩니다.”

무영이 말했다.

“버그는 믿음과 무관하게 재현됩니다. 그건 개발자분들이 더 잘 아실 겁니다.”

* * *

믹스커피를 내줬다.

달리 내줄 게 없었다. 무영은 종이컵을 두 손으로 받더니 한참 냄새를 맡았다.

“이건 익숙합니다. 제사상에 제일 자주 올라옵니다.”

“……저승 사람이라는 설정을 계속 미시네요.”

“설정이 아니라 소속입니다.”

그는 방 안으로 들어오지 않고 문지방 위에 무릎을 꿇고 앉았다. 거기까지가 허용 범위라고 했다. 도현은 따지지 않았다. 따질 게 너무 많으면 사람은 순서부터 놓친다.

설명은 길지 않았다. 무영은 보고서를 읽듯이 말했다.

저승에도 전산이 있다. 정확히는 올해 생겼다. 수천 년 종이 명부로 버티다가 명부를 통째로 전산에 올리는 사업을 벌였다. 이승의 은행들이 ‘차세대’라고 부르는 종류의 일이다. 두 번 엎어진 끝에 지난달에야 이관을 시작했다.

종이 명부를 한 줄씩 옮기다 보니 걸리는 게 나왔다. 죽었는데 명부를 닫을 수 없는 사람들.

“차세대가 두 번 엎어졌다고요.”

“첫 번째는 요구 사항이 사천 년 치라 엎어졌고, 두 번째는 수행 책임자가 사업 중간에 환생하는 바람에 엎어졌습니다. 인수인계 문서가 남지 않았습니다.”

도현은 그 문장을 이해해 보려다 그만뒀다. 다만 인수인계 문서가 없다는 대목에서는 저도 모르게 고개를 끄덕였다. 이승이나 저승이나 사업이 망하는 길은 비슷했다.

“이승에 보낼 것이 남아 있는 분들입니다. 발신자는 사망했는데 발신 예약은 살아 있는 건. 저희 용어로는 미결이라고 합니다.”

“나중 편지.”

“전국에 비슷한 서비스가 몇 있습니다만, 사백십칠 건이 한 시스템에 몰린 곳은 이음뿐입니다. 전임 계약자께서 기능을 성실하게 만드셨기 때문입니다.”

무영이 단말기를 한 장 넘겼다.

“실패하면 다음 날 다시 보냅니다. 포기하지 않습니다. 그래서 예약이 죽지 않고, 예약이 죽지 않으니 신고자분들도 못 떠나십니다.”

재시도 로직. 도현은 낮에 그 코드를 봤다. 실패하면 스물네 시간 뒤 재시도, 횟수 제한 없음. 주석도 기억났다. // 한 번 실패했다고 그만두면 안 된다. 이건 편지다.

성실하게 만든 기능이 사람을 사백십칠 명이나 붙잡아 두고 있었다.

“이관 검수 기한이 사십구 일입니다. 오늘이 첫날이었으니 사십팔 일 남았습니다. 그 안에 닫히지 않은 건은 영구 미결로 넘어갑니다.”

“넘어가면요?”

“명부에 오르지 못합니다. 가실 곳이 없어집니다.”

무영은 그 말을 재고 수량 말하듯 했다. 그게 더 무서웠다.

“그쪽에서 직접 고치면 되잖아요. 방금 내 화면에 있는 상태값도 바꿨으면서.”

“상태값은 저희 소관입니다. 접수와 종료는 품질보증의 권한이니까요. 코드는 아닙니다. 이승 시스템의 수정 권한은 이승의 계약자에게 있습니다. 저는 고치는 사람이 아니라 고쳐졌는지 확인하는 사람입니다.”

“큐에이.”

“그렇게들 부르시더군요.”

도현은 웃음이 나왔다. 웃을 일이 아닌데 나왔다. 구 년 차 개발자였다. 귀신은 처음이어도 큐에이는 처음이 아니었다.

재현 경로를 들고 와서, 고쳤다고 하면 안 고쳐졌다고 하고, 퇴근 직전에 재접수를 누르는 사람들. 저승에도 그 직군이 있었다.

“보수는요.”

“없습니다.”

“……거절하면요.”

“기한이 지나면 미결 신고자분들은 귀책 당사자 곁에서 대기하시게 됩니다. 사백십칠 분입니다.”

무영이 그제야 방을 둘러봤다. 여섯 평짜리 옥탑이었다.

“댁이 넓지는 않아 보입니다만.”

도현은 여섯 평에 사백십칠 명을 넣어 보다가 그만뒀다. 계산이 되지 않는 쪽이 오히려 실감이 났다.

“전임자도 이걸 알았습니까. 한기주 씨도.”

“전임 계약자와는 일곱 번 뵈었습니다. 그 이상은 제가 말씀드릴 수 있는 범위가 아닙니다.”

일곱 번. 그는 그 숫자를 접어서 넣어 두었다. 주석에 적혀 있던 ‘그분들’이 국세청이 아니었다는 것만은 이제 분명했다.

* * *

새벽 두 시에 도현은 0001번을 다시 열었다.

믿어서가 아니었다. 믿고 말고를 미뤄 두고 일단 로그를 보는 것, 그게 그가 할 줄 아는 유일한 대처였다.

정말심. 칠십사 세. 편지 한 통. 수신인 ‘막내’. 실패 487회.

발송 로그를 펼쳤다. 문자 중계 업체가 돌려준 응답이 사백팔십일곱 줄 쌓여 있었다. 전부 같은 줄이었다.

INVALID_NUMBER

수신 번호 칸을 봤다. 011로 시작했다.

“아.”

소리가 먼저 나왔다. 011, 016, 017, 018, 019. 그 번호들은 2021년 여름에 마지막 통신사가 2세대 망을 내리면서 전부 사라졌다.

할머니는 그 뒤에 편지를 썼다. 막내의 번호를 외우던 대로 적었고, 앱은 그 번호를 구 년 전 방식 그대로 받아 저장했다. 없는 번호로 매일 새벽 한 통씩. 사백팔십일곱 번.

버그라고 부르기도 애매했다. 구 년 전에는 멀쩡한 번호였다. 코드는 그때 옳았고, 세상이 바뀌는 동안 아무도 코드에게 알려 주지 않았을 뿐이다. 오래된 프로그램은 대개 그렇게 틀린다. 혼자 그 자리에 서 있다가.

“원인 나왔습니까.”

문지방에서 무영이 물었다. 커피는 한 모금도 줄지 않았는데 김은 다 빠져 있었다.

“번호요. 수신인 번호가 죽은 번호예요.”

말해 놓고 도현은 입을 닫았다. 오늘은 낱말이 자꾸 그쪽으로 굴렀다.

고칠 길을 찾았다. 편지에 적힌 번호는 못 쓴다. 대신 회원 테이블이 있었다. ‘막내’가 누군지 앱은 모르지만, 정말심의 부고를 받은 사람 명단은 남아 있었다.

그중에 상주로 등록된 사람이 셋. 막내아들 김영배. 그는 장례 때 조문록을 열어 보려고 본인 인증을 다시 했고, 그때 010 번호가 새로 저장됐다.

연결하는 코드를 썼다. 편지의 옛 번호가 죽어 있으면, 같은 고인의 유족 명단에서 이름과 관계가 맞는 사람의 최신 번호를 찾는다. 스무 줄이었다. 시험 서버에서 돌리고, 정말심의 편지 한 통만 골라 실제 서버에서 다시 보냈다.

새벽 세 시 사십 분이었다. 주석이 떠올랐다. 부고는 새벽에 보내지 않는다. 이건 부고가 아니라 편지라고, 그는 속으로 변명했다.

발송 상태: 발송 완료

일 년 사 개월 만에 처음으로 다른 글자가 떴다.

도현은 의자를 돌렸다.

“갔어요. 닫아 주세요.”

무영은 단말기를 내려다봤다. 오래 봤다.

“닫히지 않습니다.”

“갔다니까요. 중계 업체 응답도 정상이고.”

“발송은 확인했습니다. 종료 조건은 발송이 아닙니다.”

그가 단말기를 돌려 보였다. 0001번 맨 아래에 항목이 하나 더 있었다. 도현 쪽 화면에는 없는 칸이었다.

수신 확인: 미확인

“편지는 읽혀야 편지입니다. 수신인이 스스로 열어서 끝까지 읽으셔야 닫힙니다. 누가 대신 읽어 드리거나 억지로 읽힌 것은 읽은 것으로 치지 않습니다.”

“문자로 링크가 갔어요. 누르면 열려요.”

“모르는 번호에서 온 링크를 새벽 세 시에 누르는 분은 드뭅니다. 요즘 이승 사정은 저희도 교육을 받습니다.”

도현은 할 말이 없었다. 그 자신도 그런 문자는 열지 않고 지운다.

“그럼 내가 뭘 더 합니까. 코드는 다 했는데.”

무영이 종이컵을 문지방에 반듯하게 내려놓았다.

“개발자분들이 제일 싫어하시는 일을 하셔야 합니다.”

“……뭔데요.”

“사용자를 만나셔야 합니다.”