출입 기록이 사람을 대신하면 어떤 일이 벌어질까. 다들 출근한 사람이라고 표시되지만 정작 아무도 근무하지 않는 사무실. 업무 완료라고 찍혀 있지만 병원에서 환자가 기다리고 있는 응급실. 내 사진으로 뭔가를 끝내 놓고 실제 나는 아직 시작도 안 했다는 기록. 우리 회사는 그 모든 악몽을 하나의 버튼으로 묶었다. 이름하여 '원본 보호 장치 B'. 사용설명서에는 아마 고객 편의 기능이라고 적혀 있을 것이다.
우리는 바닥 아래에서 들려온 목소리를 안전하게 확인할 방법부터 찾았다. 소방대는 실제 시설 유지보수 문을 확인했지만 안쪽이 보이지 않는 공간에 구조 인력을 곧장 들여보내지는 않았다. 배만식 소장은 예전 설계도 바닥에 투명 필름을 얹었다. 문은 분명 존재했다. 다만 현재 평면도에서 위치가 지워져 있었다.
“이 문이 옮겨진 건가요?” 민재가 물었다.
“도면이 교체된 거죠.” 소장이 말했다. “건물이 지어지기 전 설비를 썼으니 후대 도면에 빠졌을 수 있습니다. 그런데 이 설명이 공간이 접히는 현상까지 설명하진 못해요.”
우리는 옛 도원솔루션의 전신 부지를 조사했다. 그곳에는 회사가 들어서기 전, 야간에 비어 있는 건물에서도 구조 요청을 보낼 수 있도록 만든 실험용 시설이 있었다. 설명서의 표지에는 [퇴근한 관리자가 돌아오기를 기다리게 하지 말 것]이라는 문구가 있었다. 적어도 초창기 설계자는 사람을 퇴근시키고도 위험 경고를 남기는 방법을 진지하게 고민했던 듯했다.
“그러니까 원래 좋은 설비였네요?” 민재가 물었다.
“좋은 설계였을 가능성이지.” 서윤이 답했다. “실제 시험에서 무슨 일이 있었는지 봐야 해요.”
문 옆에는 2018년부터 보관된 작업 이력 카드가 있었다. 사람이 일한 시간을 적는 카드가 아니라 설비 상태를 기록한 카드였다. 거기에 인적 사항란이 추가된 것은 최근 몇 년 사이였다. 어느 날부터 안전장치의 결함을 신고한 사람이 그 결함을 고쳐야 할 책임자로 자동 등록됐다. 그 사람이 퇴사하자 업무가 끝나지 않았다는 이유로 명부에 계속 남았다.
“회사 밖으로 나갈 때 일을 내려놓는 법을 모르는 곳이라니.” 나는 중얼거렸다. “우리 회사 문화 그대로네요.”
서윤이 펜을 내려놓았다. “도윤 씨. 저 장치의 '첫 번째 퇴사자'가 실제 특정 직원이라고 단정하지 않는 게 중요한 이유가 여기 있어요. 대피가 완료되지 않은 상태를 사람의 신분으로 표현했을 수도 있거든요.”
“그러면 지금 말하는 목소리는요?”
“그건 별도 확인해야죠. 이 낡은 문서가 지금 들리는 목소리의 정체를 대신 설명할 수는 없어요.”
배 소장은 회의실에서 원본 보호 장치 B와 연결된 하부 물리 설비를 표시했다. 오래된 기계식 방화문과 최신 디지털 출입문 사이에 짧은 연결선이 하나 있었다. 그 선은 현재 공사 승인서에 없었다. 남기석이 말했다. “저 케이블, 최근에 바뀐 것 같습니다. 절연 피복은 새것이에요.”
서윤이 승인서 담당자를 찾기 시작했다. 황규태 팀장은 서류의 일부를 본 기억은 있었으나 전체 배선 변경까지 승인했다고 주장하지 않았다. 누군가의 서명을 도용했을 가능성도, 정말 그가 기억하지 못할 때 결재했을 가능성도 남아 있었다. 단순히 그에게 화를 낸다고 사고가 해결되진 않았다.
나는 설명서 중간에서 옛 연필 자국을 발견했다. [퇴실 확인은 퇴실 요구를 뜻하지 않음]. 당시에도 누군가는 이름을 잘못 붙이면 사람이 다칠 수 있다고 경고했다. 그런데 복사본에는 그 문장이 빠져 있었다. 설명서의 내용을 줄이는 과정이었을지, 의도적인 삭제였을지는 원본 제출 경위를 알아야 했다. 민재는 복사본에서 빠진 페이지를 손으로 세었다. 정확히 네 장이었다. 이상하게도 네 장은 모두 '직원이 없는 시간에도 유지할 것'이라는 지침이 적힌 부분이었다. 나는 그 복사본을 만들어 배포한 부서를 찾도록 요청했다. 지금 당장 문을 여는 데는 도움 되지 않을 수도 있지만, 누군가 이 끔찍한 연결을 반복하지 못하게 하려면 반드시 필요한 일이었다.
실물 연결선의 외부 구간은 공공 경보망과 회사 출입 망이 교차하는 지점으로 이어졌다. 김하린은 위험 경고가 살아 있는지 시험했다. 경보는 제대로 전송됐다. 하지만 직후 회사 인사 시스템이 '신규 현장 책임자 지정 대기'라는 팝업을 띄웠다.
“선을 분리한 지 몇 시간인데 또 나오네요.” 민재가 말했다.
“추가 우회선이 있어.” 내가 장비 배치를 보며 말했다. “고장 난 코드를 한 군데 고쳐도 다른 데서 같은 요청을 보내는 구조야.”
나는 도원에서 7년간 구축한 백업 모듈을 떠올렸다. 본 서버가 죽으면 예비 서버가 같은 일을 이어받게 만들었다. 보통 서비스 연속성이라고 불렀다. 그런데 그 예비 서버가 사람을 마음대로 채용하는 프로그램이라면? 최초 시스템의 안전 규칙은 남아 있어도 우회 경로가 계속 잘못된 명령을 보낼 수 있었다.
우리는 인원 등록을 건드리지 않는 별도 차단 위치를 지정했다. 시설팀이 담당한 실물 경보는 유지했고, 원본 담당자들은 작업 이력을 남겼다. 잠시 팝업이 사라졌다. 그 순간 건물 서쪽에 있던 복도 하나가 정상 위치로 돌아왔다. 벽이 흔들리는 것을 열화상 카메라로 확인했고, 두 번째 경비가 그곳에서 손을 흔들었다.
“밖으로 나가도 돼요?” 그가 물었다.
“아직 그쪽 출구는 미확인입니다.” 서윤이 말했다. “안전 확인된 계단으로 같이 이동할 수 있어요.”
두 번째 경비는 고개를 끄덕였다. 그는 장한결의 옛 출입증을 돌려주고, 자기 호칭을 적은 종이띠를 받았다. 나는 그가 자신이 원하는 이름을 찾기 전까지 그 종이띠를 마음에 들어 했으면 좋겠다고 생각했다.
그때 전산실에서 오래된 업무 복구 안내가 떴다. [LEAVE-01 삭제 시 대기 공간 종료].
“역시 사람 하나 살리고 방 하나 지워 버리려는 모양이군.” 내가 말했다.
서윤은 메모지에 두 줄을 썼다. [실제 사람이 있는지 확인]과 [시험 기록 정리]. 둘은 다른 작업이라고 굵은 선으로 갈랐다. 우리는 대기 공간을 유지한 채 검증용 복사본만 별도 보관했다.
비상구 쪽에서 찬 공기가 밀려왔다. 이번에는 방이 아니라 사람의 발소리가 들렸다. 책상에 구두가 부딪치는 소리, 의자가 뒤로 밀리는 소리. 마치 누군가 좁은 공간에서 일어나려는 것 같았다.
“거기 계신 분, 지금 움직일 수 있습니까?” 김하린이 공공 구조선으로 물었다.
대답 대신 오래된 업무 설명서의 페이지가 저절로 넘어갔다. 누군가 보지 않는 곳에서 손가락으로 장을 넘기는 듯했다. 마지막 페이지에는 없던 문장이 나타났다.
[제0 대피 시험 중단 사유: 현장 시험자가 복귀하지 않음]
종이 가장자리에 연필로 쓴 이름 석 자가 있었지만, 반쯤 찢겨 읽을 수 없었다. 마지막 글자는 분명 '림'처럼 보였다. 그것만으로 누구인지 결론내릴 수는 없었다.
“실제 시험자가 있었단 말이네요.” 민재가 말했다.
“그랬을 가능성이 커졌지.” 내가 대답했다. “하지만 지금 안쪽 목소리가 그 시험자일지는 또 다른 문제야.”
그때 누군가 복도에 종이컵을 놓고 갔다. CCTV에는 아무도 잡히지 않았다. 컵에는 물 대신 작은 종이 조각 하나가 들어 있었다.
'제가 나가지 못한 게 아닙니다. 제가 나갔다고 기록한 문이 돌아오지 못했습니다.'
나는 글을 세 번 읽었다. 괴물보다 더 난감한 문장이었다. 하지만 적어도 한 가지는 분명했다. 지금까지 우리가 찾고 있던 '첫 퇴사자'는 사람만을 뜻하는 말이 아닐 수도 있었다.
제65화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.