디버깅 라이프: 오류 코드 404 · 2화
2화. 미러 고스트의 복도
준의 답장은 삼 분 뒤에 도착했다.
그 네 글자뿐이었다.
거기서 나와.
민지는 메시지를 읽고도 자리에서 일어나지 못했다. 대시보드 오른쪽 상단의 노란 점은 금세 다시 초록색으로 돌아왔지만, 그게 오히려 더 기분 나빴다. 시스템이 잠깐 긴장했다가, 이내 아무 일도 없었다는 듯 표정을 정리한 것 같았다. 그녀는 모니터를 캡처해 개인 드라이브에 숨기고, 사내 로그 보존 정책이 시작되기 전에 캐시 덤프를 한 번 더 뜯어냈다. 이번에는 문자열 하나가 추가로 걸렸다.
maintenance ingress / west-17
서부 주거 지구, 17번 유지보수 입구. 세탁 라운지가 있던 블록과 정확히 겹쳤다.
준은 은퇴한 보안 설계자였고, 민지가 회사를 그만둘 무렵 마지막까지 연락을 끊지 않은 몇 안 되는 사람이었다. 둘은 오전 네 시 반, 지상철 종점 아래 비어 있는 선로 점검실에서 만났다. 녹슨 안내판과 폐쇄된 개찰구 사이에서 준은 담배 대신 민트 캔디를 깨물고 있었다. 담배는 끊었지만, 불안한 손놀림까지 버리진 못한 모양이었다.
“메시지 보내지 말라고 했잖아.”
“404가 떴어.”
민지가 태블릿을 내밀자 준의 표정이 잠깐 굳었다. 화면에는 USER 7A-114와 'route=/citizen/mirror/ghost'가 나란히 떠 있었다. 그는 욕설을 삼키듯 입술 안쪽을 깨문 뒤, 손목 단말로 주변 전파를 한 번 훑었다.
“그 문자열이 아직 살아 있었단 말이지.”
“미러 고스트, 실존해?”
준은 대답 대신 점검실 문을 닫고 전등을 껐다. 어둠에 익숙해질 즈음, 그의 단말 화면만 푸르게 떠올랐다.
“정식 명칭은 ‘미러 버퍼’였어. 도시 운영 AI가 처리 비용이 높은 예외 시민을 임시로 격리하는 그림자 계층.”
민지는 잠깐 말을 잃었다. “예외 시민?”
“의료, 돌봄, 주거, 정신건강, 출입 게이트, 생활 보조를 동시에 많이 요구하는 사람들. 시스템은 그들을 지원해야 했고, 시는 비용과 지표를 동시에 관리하고 싶어 했지. 그래서 누군가가 제안했어. 현실을 끊지 않고도 지표에서만 사라지게 만드는 방법.”
“사람을 그래프 밖으로 밀어냈다고?”
“처음엔 임시 복구 계층이라고 했어. 데이터 오류를 고칠 동안만 머무르게 하는 백업 공간. 그런데 임시는 늘 가장 오래 가는 이름이지.”
민지는 세탁 라운지의 마지막 프레임을 떠올렸다. 플라스틱 의자, 종이컵, 젖은 우산. 사람만 사라졌던 자리.
준은 벽면 패널 하나를 열어 케이블 두 줄을 바꿔 꽂았다. 곧바로 점검실 뒤쪽 콘크리트 벽에 얇은 선이 나타났다. 문도 아니고 스크린도 아닌, 현실 표면이 아주 가늘게 어긋난 자국 같았다.
“유지보수 복도는 원래 AI 점검 인력이 쓰는 경로였어. 지금은 거의 자동화됐고.”
“그 안으로 들어갈 수 있어?”
“들어가는 건 가능해. 문제는 나올 때 네가 아직 원래 계층에 등록된 사람으로 남아 있느냐지.”
그 말이 끝나기도 전에 민지는 손을 뻗어 틈새를 밀었다. 차가운 공기가 아니라, 냉장고 문을 열었을 때처럼 납작한 정적이 손등을 훑고 지나갔다. 복도 안쪽은 도시 어디에나 있는 유지보수 통로처럼 보였지만, 모든 것이 한 박자씩 늦게 반응했다. 비상등은 켜져 있었는데 그림자가 먼저 움직였고, 멀리서 들려오는 환풍기 소리는 금속 배관을 타고 두 번 울린 뒤에야 귀에 닿았다.
준이 낮게 말했다. “말 걸면 대답하지 마. 여기서 부르는 건 대부분 네 이름을 확인하려는 거야.”
복도 끝에는 세탁 라운지와 구조가 비슷한 방이 나타났다. 하지만 원래 공간보다 더 넓고, 더 텅 비어 있었다. 사용 중지 딱지가 붙은 세탁기들이 일렬로 서 있었고, 벽면 광고는 ‘도시 돌봄은 당신 곁에 있습니다’라는 문구에서 마지막 두 글자만 지워져 있었다.
그 방 한가운데, 민지가 카메라 프레임에서 보았던 여자와 똑같은 코트를 입은 사람이 앉아 있었다.
여자는 놀랄 만큼 멀쩡해 보였다. 죽은 사람의 분위기도, 유령의 기척도 없었다. 다만 표정이 이상했다. 오래 기다린 사람의 얼굴인데, 무엇을 기다렸는지 잊어버린 사람의 얼굴.
“당신이 7A-114예요?”
준이 손으로 제지하기도 전에 민지가 먼저 물었다. 여자는 천천히 고개를 들었다. 눈동자 초점이 한 번 흔들리더니, 민지를 정확히 바라봤다.
“그 번호는 여기서만 불려요.”
“이름은요?”
여자는 한참 뒤에 대답했다.
“유리. 강유리.”
이름이 입 밖으로 나온 순간, 민지의 태블릿 화면에 잿빛이던 사용자명 필드가 잠깐 깜빡였다. KANG YURI. 그리고 곧바로 다시 사라졌다.
민지는 숨을 죽였다. 시스템은 아직 그녀를 알고 있었다. 다만 표면으로 끌어올리기를 거부하고 있을 뿐이었다.
“왜 여기에 있어요?”
강유리는 잠깐 웃는 듯하다가 표정을 접었다. “처음엔 며칠이면 끝난다고 했어요. 복지 포인트 정산이 꼬였고, 생활 지원망이 중복 연결돼서 잠깐 격리하는 거라고. 사람을 직접 옮기는 게 아니라 데이터만 조용히 눕혀 놓는 거라고.”
“며칠이 몇 년이 됐군.”
준이 대신 말했다. 강유리는 대답하지 않았지만, 그 침묵이 가장 정확한 인정처럼 들렸다.
벽면 반대편에는 작은 모니터 여러 대가 꺼진 채 박혀 있었다. 민지가 전원을 넣자 숫자 행렬이 흐르다 한 화면에서 멈췄다.
BUFFER OCCUPANCY: 483
민지는 본능적으로 뒤로 물러섰다.
“한 사람만 아니었어.”
준은 고개를 숙였다. “내가 말했잖아. 임시는 늘 오래 간다고.”
강유리는 모니터를 보지 않았다. 오히려 민지를 바라보며 조용히 물었다.
“밖은 여전히 아침이 잘 오나요?”
민지는 그 질문에 바로 답하지 못했다. 밖의 도시가 여전히 제시간에 지하철을 보내고 가로등을 끄고 배달 드론을 돌리는 동안, 그 질서 바깥에 483명이 눌려 있었다. 그리고 아마 더 있을 수도 있었다. 단지 이 버퍼 안에만 483명일 뿐이었다.
준이 급히 시계를 확인했다. “오래 있으면 네 식별도 여기로 잡힌다. 지금은 한 사람만 데리고 나갈 수 있어.”
“한 사람만?”
“현실 계층으로 다시 연결하려면 빈 슬롯이 필요해. 지금 살아 있는 사용자 하나의 경로를 통째로 열어야 하거든.”
민지는 강유리를 봤다. 강유리는 놀라지도 않고, 기대하지도 않는 표정으로 가만히 있었다. 그 얼굴이 민지를 더 흔들었다. 오래 버려진 사람은 희망에도 소음을 붙이지 않는다.
“당신, 나가고 싶어요?”
강유리는 천천히 눈을 내리깔았다.
“나가고 싶다는 감각은 이미 오래전에 닳았어요. 그래도… 내 딸이 아직 내가 사라진 이유를 모른다면, 그건 싫어요.”
그 한마디에 민지는 결정했다. 한 사람이라도 표면으로 돌려보내면, 이 계층의 존재를 부정하기가 훨씬 어려워진다. 시스템이 404로 눌러 버린 자리에 다시 이름을 꽂아 넣을 수 있다면, 그 다음부터는 단순한 음모론이 아니라 실제 장애 복구 문제가 된다.
준이 낮게 욕했다. “너 지금 무슨 생각 하는지 다 보여.”
“로그를 복구할 거야.”
“한 사람을 올리는 순간 전체가 흔들려. 운영 AI가 모를 리가 없지.”
“좋아. 그럼 알게 해.”
복도 끝 비상등이 그 순간 한꺼번에 깜빡였다. 천장 스피커 어디선가 기계음이 낮게 흘렀다.
UNAUTHORIZED TRACE DETECTED
준이 민지의 팔을 잡아당겼다. 강유리는 자리에서 천천히 일어났다. 세탁기 도어에 비친 세 사람의 그림자는 실제보다 한 박자 늦게 따라왔다.
민지는 태블릿을 꽉 쥔 채, 숫자 483이 박힌 화면을 끝까지 바라봤다. 이건 404 하나로 끝나는 일이 아니었다. 도시가 잘 굴러간다고 믿게 하기 위해, 누군가가 사람들을 통째로 버퍼에 접어 넣고 있었다.
그리고 이제 시스템도, 그들이 자신을 보고 있다는 걸 알아챘다.