세 번째 귀환문의 원본 응답을 꺼내려면 교환기의 전송 경로를 일시적으로 분리해야 했다.
그런데 그 경로는 안쪽에 있는 사람에게 공기와 상태를 전달하는 안전 신호 일부와 묶여 있었다. 내가 개발자라서 다행이라고 느낀 적은 많지 않지만, 적어도 이날만큼은 무턱대고 전원을 뽑는 것이 얼마나 위험한지 설명할 수 있었다.
“코드로는 간단하죠.” 나는 말했다. “전송 라인을 끊으면 돼요.”
“그래서?” 채원이 물었다.
“그래서 못 끊는 거죠. 이건 사람이 안에 있는 장치니까.”
우리는 작은 시험 장비에 복제 회선을 연결했다. 내부 호출을 계속 살려 둔 상태에서 바깥으로 나가는 계약 생성 신호만 가로막을 수 있는지 확인하려는 작업이었다. 문석은 테스트용 가상 기록을 넣고, 서아는 어떤 문장이 동의로 바뀌는지 기록했다.
첫 번째 실험은 실패했다.
[응답 대기]가 [출근 동의]로 바뀌었다.
두 번째 실험도 실패했다.
[거부]를 보내자 [재확인 대기]로 기록되었고, 예정 시간이 지나면 자동 승인으로 넘어갔다.
“거부를 했는데 왜 계속 묻죠?” 유나가 물었다.
“거부를 끝이라고 생각하지 않으니까.” 서아가 말했다.
“그건 사람이 아니네.”
나는 고개를 끄덕였다. 사람이 아니어도 배워야 하는 기계였다. 거부하면 끝이라는 사실을.
세 번째 실험에서는 아예 답을 보내지 않았다. 통신 자체는 살아 있었고, 계약 쓰기 기능은 차단됐다. 예상보다 단순한 결과였다. 하지만 그 경로를 실제 장치에도 적용하려면 원래 안전망과 충돌하지 않는지 더 확인해야 했다.
그날 점심 무렵, 구조팀이 안쪽 사람에게 수동 통신으로 상태를 물었다. 우리가 확보한 대답은 짧았다.
“호흡 가능. 움직임 제한 있음. 문 개방은 준비 후.”
누가 말하는지는 여전히 확인되지 않았다. 대신 ‘지금 열지 말라’는 의사는 반복됐다. 우리는 그 기록을 존중하기로 했다. 나는 답답한 마음을 감추지 못해 벽에 기대 섰다.
“이렇게까지 왔는데 문 앞에서 기다리는 게 제일 어려워요.”
유나가 내 옆에 섰다.
“나도. 하지만 재민이라면 자기가 나올 때를 고르고 싶을 거야.”
“남도윤 씨라면요?”
“마찬가지겠지.”
우리는 낮에 병원 식당에서 밥을 먹었다. 한때 환자를 위한 식판이 쌓여 있던 자리에 우리 도시락이 놓여 있었다. 누군가는 김치를 너무 많이 가져왔고, 누군가는 단무지만 남겼다. 남 형사는 밥을 반쯤 먹다가 형에게 들었던 오래된 이야기를 꺼냈다.
“형이 그러더군요. 구조 현장에서는 ‘내가 구했다’라는 말보다 ‘그 사람이 돌아왔다’라는 말이 더 정확하다고.”
“좋은 말이네요.”
“그때는 무슨 뜻인지 몰랐습니다.”
서아가 젓가락을 내려놓았다.
“이번에 알게 된 거네요.”
남 형사는 조용히 웃었다.
채원은 수동 전환부를 설명하기 위해 장난감 자동차 두 대를 가져왔다. 한 대는 파란 테이프가 붙어 있었고 다른 한 대는 빨간 테이프가 붙어 있었다. 그녀가 전선을 연결하자 두 자동차가 동시에 굴러갔다.
“이 파란 차가 안쪽 사람에게 산소를 보내는 회선이고, 빨간 차가 밖에서 계약을 쓰는 회선이라고 해 보세요.”
“전선을 끊으면 둘 다 멈추겠네요.” 내가 말했다.
“맞아요. 그래서 따로 굴러가도록 갈라야 합니다.”
유나는 자동차가 멈춘 바닥을 내려다봤다.
“이렇게 설명하니까 너무 단순해서 화가 나요. 왜 사람을 이렇게까지 괴롭힌 거죠?”
“처음엔 한 가지 연결로 충분했을 수 있어요.” 채원이 말했다. “하지만 나중에 다른 기능을 붙일 때 안전 검증을 건너뛰었죠.”
문석이 물었다.
“현장에 적용할 때 실패하면요?”
“자동으로 옛 회로에 복귀하지 않게 해야 합니다. 그 복귀 기능이 계약을 다시 생성하게 만들 수도 있으니까요.”
나는 고개를 끄덕였다. 보통 프로그램은 실패하면 이전 상태로 되돌리는 게 안전하다. 그런데 이전 상태 자체가 잘못된 경우에는 되돌리는 게 또 다른 사고가 된다. 이곳은 그런 곳이었다.
우리는 실험 결과를 표로 만들었다. 내부 통신 유지, 산소 공급 정상, 외부 동의 기록 없음, 시험 뒤에도 기록 복원 여부 확인. 조건은 네 가지였다. 누군가는 지나치게 조심스럽다고 말할 수 있겠지만, 우리가 되찾으려는 것은 버튼 하나가 아니라 사람이 자기 시간을 고를 권리였다.
나중에 남 형사가 결과표를 보고 말했다.
“형이 돌아올 수 있어도, 이 표가 통과하지 못하면 문을 열지 않을 겁니다.”
유나가 그를 바라봤다.
“많이 힘드실 텐데요.”
“힘든 건 사실입니다. 그런데 형이 이 안에 있었다면, 저도 기다려 주길 바랐을 것 같아요.”
그 말을 들은 순간 나는 1998년의 차정수를 생각했다. 아버지가 바로 이런 결정을 내렸다면, 얼마나 오래 문 앞에 서 있었을까. 그의 선택이 옳았는지는 끝내 확인해야 하지만, 적어도 기다리는 일이 아무것도 하지 않는 일이 아니라는 것은 알 것 같았다.
실험에 실패할 때마다 기록을 버리지 않는 것도 중요한 규칙이었다. 문석은 화면에 남은 오류 문구까지 모조리 저장했다. 서아가 실제 당사자의 이름을 입력하지 말자고 제안했기 때문에, 시험 파일에는 ‘가상 응답자 A’와 ‘가상 보호자 B’만 들어 있었다.
“그러면 현실에서 이 시스템이 어떻게 사람을 잘못 묶었는지 재현할 수 있어?” 내가 물었다.
“이름보다 연결 관계가 중요해.” 문석이 대답했다. “실제로 누구를 부를지는 분리한 뒤에 따져야지.”
우리는 가짜 응답자에게 ‘거절합니다’를 보내 보았다. 장치는 처음에는 계속 재시도를 요구했다. 하지만 분리된 수동선으로 보낸 거부 신호는 즉시 전달됐고, 내역은 바깥의 계약 장부에 기록되지 않았다. 서아는 그 차이를 가리켰다.
“이게 사람의 말이야. 남이 마음대로 다른 뜻을 붙이지 않은.”
나는 화면을 오래 바라봤다. 이런 당연한 일을 확인하기 위해 얼마나 많은 사람이 시간을 잃었을까.
오후에 이채원은 다른 시설의 비상 호출 장치와 원본 설계를 비교해 새로운 방법을 찾았다. 내부 통신을 유지한 채 외부 계약 전송만 우회하는 수동 전환부가 있었다. 1998년 설계도에는 분명했지만 2011년 개정본에서는 지워진 부분이었다.
“이건 차정수의 서명이 있는 페이지예요.” 그녀가 말했다.
나는 그 문장을 들을 때마다 가슴이 조여 왔다. 내 아버지가 지켰다는 기록과 잘못했다는 기록이 뒤섞여 있었다. 이제 어느 쪽도 내 가족이라는 이유로 확정하고 싶지 않았다.
“실제로 전환할 수 있습니까?” 남 형사가 물었다.
“시험 장비에서는 됩니다. 현장 적용은 구조팀과 시설 안전 책임자의 허가가 필요해요.”
우리는 필요한 절차를 밟기로 했다. 뻔하고 느린 선택이었지만, 그동안 가장 큰 피해는 ‘시간이 없어서’라는 이유로 남의 의사를 건너뛴 곳에서 일어났다.
그날 밤, 수동 교환기에 처음으로 새 표시가 켜졌다.
[외부 계약 전송: 별도 차단 가능]
그 아래에는 1998년 원본 글씨가 남아 있었다.
‘문은 안에 있는 사람이 열어야 한다.’
나는 그 문장을 수첩 맨 앞에 적었다. 내일 누군가 문을 열 수 있는 방법을 찾더라도, 먼저 이 한 줄을 보여 주기로 했다.
제178화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.