새벽 비가 그치자 강변 낮은 길의 난간 하나가 사라졌다. 전날 밤까지 있던 난간이 아침에는 반쪽만 남아 있었다. 잘린 자리에 새 금속면이 아니라 오래된 녹 자국이 나타났다. 마치 수년 전에 이미 철거된 것처럼 보였다. 시설 담당 이선경이 현장 주변을 통제하고 보수팀을 불렀다. 나는 도원솔루션으로 출근하지 않겠다고 다짐한 사람답게 강변에 아침 여덟 시부터 서 있었다. 민재가 따뜻한 두유를 건네며 말했다. “형, 퇴사하고 출근 시간이 더 빨라졌어요.” “회사에서 야근한 시간 누적 정산하면 이 정도는 휴가야.”
사라진 난간은 작은 물건이 아니었다. 한 사람이 몸을 기대면 강으로 떨어지지 않게 하는 구조물이었다. 하필 그 자리는 자전거를 끌고 가는 사람들이 자주 지나가는 코너였다. 우리는 임시 우회로와 차단막을 설치하고, 관리자는 새 난간을 보수할 때까지 통행을 다른 쪽으로 돌렸다. 사람을 먼저 빼고 나서야 조사할 수 있었다. 카메라 기록에는 난간이 순간적으로 사라진 장면이 없었다. 대신 전날 저녁의 난간과 아침의 빈자리가 서로 다른 날짜의 영상처럼 이어져 있었다.
김하린은 019 하부 고정틀의 외부 신호가 난간의 위치 좌표를 반복 호출했다고 보고했다. 안전 장치에 등록된 난간은 옛 사진 속에서는 없고 새 도면에만 있었다. 원본 보존 코일이 두 날짜의 안내도를 하나로 합치려 한 것으로 보였다. 민재는 모니터를 보고 중얼거렸다. “이러다 보수한 난간도 다시 없어지는 거 아니에요?” “그래서 전원을 무작정 끄면 안 되는 거지. 아직 무슨 화면을 실물로 붙잡고 있는지 모르니까.” 우리가 찾아야 할 것은 시스템의 ‘최신’ 버튼이 아니라 실제 현장이 어떤 상태인지 확인하는 방법이었다.
하진은 이날 처음으로 자신의 이름을 다른 사람 앞에서 사용했다. 현장에 오지는 않고 통신으로만 참석했다. “하진입니다. 강변에서 제가 본 그림자와 난간 변화를 같이 볼 수 있을까요?” 서윤은 본인이 동의한 범위에서 영상을 공유했다. 하진은 오래된 난간의 끊어진 부분을 보더니 표정을 굳혔다. “제가 안에서 기억하던 길에는 저 난간이 없었어요. 그런데 처음 밖으로 나온 날은 있었죠.” 그의 기억은 과거 장치가 만들어 넣은 영상일 수도 있었다. 그래도 우리가 두 시기의 실물 상태를 구별해야 한다는 데에는 도움이 됐다.
난간이 사라진 코너에는 매일 출근하던 환경미화원 박춘례가 있었다. 그는 아침마다 그 난간 위에 잠깐 장갑을 올려놓고 물을 마셨다고 했다. 오늘 장갑을 올리려 손을 뻗었더니 아무것도 없어 깜짝 놀랐다는 것이다. 다행히 몸을 기대지는 않았다. 구청은 현장 증언을 정식 안전 점검 기록에 반영했다. 박춘례는 우리가 한참 기록하는 동안에도 통행이 허용된 바깥쪽을 청소했다. “자꾸 어제가 돌아와도 쓰레기는 오늘 생기는 거네요.” 그 말에 모두 웃었다. 누군가 매일 쓸고 닦아야 하는 길을 오래된 사진 한 장으로 바꿔 버릴 권리는 누구에게도 없었다. 나는 그가 쓰는 청소 도구가 위험선에 닿지 않는지 확인했다.
오후에 구청 보관고에서 난간 설치 영수증을 찾았다. 오래된 설계도에는 `안전한 대기 방향을 유지할 것`이란 조건만 있었고 난간 치수는 없었다. 후대 보수 공사에서 난간을 실제로 세웠고, 그 공사 전후 사진이 서로 다른 형식으로 저장됐다. 원본 보존 코일은 둘 중 한 사진을 더 오래된 기준 상태로 여겼다. 그런데 사진을 부르는 지시 자체는 `현재 통행 위험 안내 갱신`이었다. 시스템이 과거 사진의 물체를 지금의 경계에 덮어쓰고 있다는 가설이 점점 구체적으로 보였다.
나는 배만식에게 물었다. “장치가 실물을 따라 사진을 고쳐야 하는데, 사진을 따라 실물이 고쳐지면 어떻게 합니까?” 그는 손에 쥔 볼트를 굴렸다. “기술자라면 그걸 수리라고 안 부르지. 사고지.” 그리고 평범한 말을 덧붙였다. “사람이 다칠 때까지 기다릴 필요는 없어. 난간부터 다시 세워야지.” 우리는 기능 검증과 실제 보수를 분리했다. 원인을 찾지 못했다고 안전한 난간도 포기할 수는 없었다. 보수팀이 임시 구조물을 설치하는 동안 도원 쪽에서는 중첩된 통로의 하중을 낮추는 작업을 진행했다.
오재현은 보존 서버의 재계약 서류에 첨부된 비용표를 별도 열람했다. 공간을 실제로 유지하는 비용은 `미사용 면적 관리비`로 표시돼 있었다. 사용하지 않는다는 이유로 위험을 관리할 필요가 없다고 판단한 것은 아니었을까. 문태수가 추진했던 0층 자산 등록도 그 비용표에 연결돼 있었다. 나는 그가 모든 현상의 주범이라고 여기지 않았다. 그러나 책임을 피하려는 회계 처리와 경계를 임대 면적처럼 취급한 일은 분명히 조사할 필요가 있었다. 오래된 사진 하나를 선택하는 행위조차 건물 유지비와 이어져 있었다. 도시의 던전은 복잡했지만, 그 안에서 돈은 언제나 비교적 단순하게 움직였다.
그날 저녁, 도원 사내 게시판에 이상한 공지가 떴다. `강변 외부시설 임시 고용 전환 / 담당자: 차도윤.` 나는 누가 그 명령을 보냈는지 추적하기 전에 먼저 인사팀에 내가 그 회사 직원이 아니라는 사실을 다시 알렸다. 서윤이 웃음을 참지 못했다. “상황이 이렇게 심각한데도 회사는 도윤 씨를 다시 채용하고 싶나 봐요.” “정말 필요하면 면접이라도 보고 오라고 하죠. 입사 지원서에 ‘건물 일부가 출근을 거부합니다’라고 쓰고.” 자동 고용을 차단하자 공지는 사라졌다. 그러나 난간의 실제 복구는 멈추지 않았다.
나중에 강변 보수팀장은 임시 난간을 세우면서 작은 실험을 했다. 옛 도면에 없는 볼트 구멍을 새로 뚫지 않고, 기존의 검증된 고정 위치를 사용했다. 장치가 무엇을 복원하려 하든 현재의 난간 자체가 버틸 수 있도록 하려는 선택이었다. 설치를 끝낸 뒤 하중 시험 결과가 통과되자 민재가 박수를 쳤다. 누군가는 대단한 마법을 막는 장면을 기대했겠지만, 그날 우리에게 가장 중요한 승리는 볼트 네 개가 제자리를 지킨 것이었다. 배만식은 그 결과를 보더니 “기계는 고장 나면 갈아 끼울 수 있지만, 사람이 난간 아래로 떨어진 다음에는 되돌리기 어렵다”고 말했다. 나는 퇴사 이후 처음으로 정말 기술자다운 회의를 들은 것 같았다.
밤 아홉 시, 강변 임시 난간의 볼트가 단단히 고정됐는지 확인하고 나서야 팀은 철수했다. 나는 마지막으로 019 고정틀 화면을 봤다. 위험 경보 정상, 수동 우회로 확보, 인사 연동 차단. 세 항목을 확인하고도 한 줄이 남았다. `기준 사진 재생 위치 변경 요청.` 출처는 도원 서버실 B가 아니라 도원 밖의 협의회 보존 서버였다. 그동안 우리는 코일이 혼자 옛날을 불러오는 줄 알았다. 하지만 누군가 지금 이 순간에도 어느 날짜의 난간과 어느 날짜의 길을 선택하고 있을지 모른다.
민재가 내 어깨 너머로 메일 제목을 읽었다. `지난주 협의회 제4차 공간 보존 재계약 — 외부 경계 실물 기준 갱신.` “형, 이건 지금도 돌아가는 업무네요.” 나는 고개를 끄덕였다. 퇴사자를 다시 출근시키는 기술을 만든 사람들의 회의는 아직 끝나지 않았다. 더구나 메일의 첨부 파일에는 난간 사진이 두 장 있었다. 하나는 실제 난간이 복구된 현재, 다른 하나는 난간이 없는 과거였다. 발신자는 두 사진 가운데 하나를 `정본`으로 지정해 달라고 요구하고 있었다. 그리고 그 승인 버튼 아래에는 이렇게 적혀 있었다. `선택하지 않으면 자동으로 가장 오래된 경계가 적용됩니다.`
제135화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.