잘못 전해진 말
갑판 스피커가 찢어진 클릭음을 뱉자 도경은 난간을 잡고 수신 방향을 돌렸다. 남동쪽 부표 셋이 동시에 흔들렸다. 화면의 산소 경계는 얇은 회색 혀처럼 북쪽으로 말려 올라오고 있었다.
이랑 무리의 표식은 그 경계와 나란히 움직였다. 성체 넷, 어린 개체 둘, 뒤처진 반향 하나. 탐사선은 그보다 바깥쪽에서 안전 거리를 유지해야 했다. 문제는 저산소대가 고래의 길을 계속 밀어내고 있다는 점이었다.
도경은 헤드셋을 고쳐 끼웠다. 바람 소리가 마이크 가장자리를 긁었다. 원신호 창에는 짧은 클릭과 낮은 진동이 빽빽하게 들어왔다. 이동 전 신호였다. 회피 신호도 섞여 있었다.
“해류, 분리 번역. 의미 후보보다 행동 단위 먼저.”
입력 원신호 / 모계 7 주변 개체군 / 저산소 경계 이동값 우선 대상: 이동 방향, 속도, 회피 조건
상태 분절 중 환경값 결합 후보 산출 대기
도경은 탐사선 자동 항로를 수동 확인 모드로 낮췄다. 승인 대기 경고가 떴지만, 감속 권고만은 현장 권한으로 남아 있었다. 그것도 오래 남을 권한은 아니었다.
“우리는 북서쪽 이격. 부표 둘은 고정. 셋째만 수신 보정.”
도현의 목소리가 내부 회선으로 들어왔다. “셋째 부표 제어는 잠겼습니다. 보정 요청만 넣을 수 있습니다.”
“요청 넣어. 답 기다리면 늦어.”
대답 대신 키보드 치는 소리가 들렸다. 도경은 이랑의 표식을 확대했다. 선두 개체가 속도를 줄였다. 뒤쪽 어린 개체가 오른쪽으로 벌어졌다가 다시 붙었다. 무리가 방향을 바꾸려는 순간이었다.
원신호가 다시 들어왔다.
클릭, 클릭, 낮은 진동 — 클릭 클릭, 클릭, 클릭 긴 하강음 — —
도경은 재생 속도를 낮췄다. 낮은 진동 뒤에 붙은 끊김이 이상했다. 단순한 잡음이면 주변 반향에도 남아야 했다. 하지만 원신호에는 소리가 있었다. 빈 것은 그 소리가 아니라, 그 위에 얹힌 출력 — 행동 지시 정렬표의 한가운데였다.
해류 창이 깜박였다.
후보 집단 이동 / 경계 회피 / 속도 조정 p 0.71 / 0.63 / 0.58 상태 행동 단위 재구성 중
“빨리.” 도경이 말했다.
말은 해류에게도, 도현에게도, 자기 손에게도 향했다. 고래의 길과 탐사선의 안전 거리가 한 화면에 겹쳤다. 잘못 읽으면 탐사선이 길을 막고, 늦게 읽으면 저산소대가 먼저 닫힌다.
번역이 시작됐다.
*
출력 첫 줄은 멀쩡했다. 무리의 위치, 주변 경계, 속도 변화. 도경은 눈으로 훑으며 안전 조율표에 숫자를 옮겼다. 두 번째 줄에서 손이 멈췄다.
후보 경계 접근 확인 어린 개체 보호 배열 유지 [공백] [공백] 속도 낮춤
p 0.74 0.69 — — 0.52
상태 선택적 결측 의미 후보 보존 행동 후보 누락
도경은 원신호와 출력을 나란히 붙였다. 빈칸은 소리 전체가 아니었다. 경계 확인은 살아 있었다. 보호 배열도 살아 있었다. 빠진 것은 그 다음이었다. 어디로 틀 것인가. 얼마나 내려갈 것인가. 누가 먼저 벗어날 것인가.
“행동 단위만 다시.” 도경은 건조하게 말했다. “환경값 빼고, 원신호 단독.”
입력 원신호 단독 환경값 제외 우선 대상: 방향 동사, 회피 명령
⟨보류⟩ 후보 안정성 부족
“보류하지 말고 결측 위치만 내.”
상태 결측 위치 산출 결과 표시
결과 경계 정보: 보존 개체 관계: 보존 방향 전환: 누락 심도 변경: 누락 위험 회피 순서: 누락
도경은 혀끝으로 어금니 안쪽을 눌렀다. 1부의 빈 구간이 떠올랐다. 그때도 문장처럼 보이는 것들은 남고, 몸을 움직이게 하는 부분이 빠졌다. 의미는 남아 사람을 유혹했고, 행동은 지워져 현장을 흔들었다.
단정할 수는 없었다. 원인은 모른다. 해류의 결함인지, 신호 자체의 손실인지, 중간에서 생기는 삭제인지 아직 갈라지지 않았다. 그러나 빠지는 자리는 반복됐다.
도경은 수동 마킹을 켰다. 원신호의 클릭 묶음마다 임시 표지를 붙였다. 관찰, 배열, 전환, 하강, 대기. 붙이는 순간마다 빈칸이 생긴 자리만 도려낸 듯 드러났다. 단어가 아니라 명령이 사라졌다.
“해류, 반대 검증. 같은 구간을 무작위 잡음으로 가정하면?”
후보 통신 잡음 p 0.18
후보 반향 중첩 p 0.22
후보 선택적 공백 p 0.61
상태 원인 미분류 행동 후보 복원 실패
선택적 공백. 해류가 만든 임시 라벨이었다. 설명은 없었다. 이름만으로 충분히 위험했다.
도경은 출력문을 삭제하지 않았다. 그대로 안전 조율표에 넘기면 안 됐다. 하지만 완전히 버리기에도 늦었다. 탐사선은 이미 무리의 바깥쪽으로 접근 중이었고, 저산소 경계는 계속 밀려왔다.
“도현, 자동 항로에 번역 후보 들어갔어?”
“요약값은 들어갔습니다. 방향 후보는 아직입니다.”
“요약값 빼.”
“본부 승인 항로랑 묶였습니다. 바로 빼면 경고 올라갑니다.”
“경고 올라가도 빼.”
잠깐 사이가 있었다. 도현의 숨이 마이크에 닿았다. “이미 반영됐습니다. 탐사선이 감속 대신 남서쪽 이격으로 잡았습니다.”
도경은 화면을 확대했다. 남서쪽. 빈칸이 남긴 자리에서 해류가 가장 안정적인 회피로 채운 방향이었다. 이랑 무리가 실제로 가려는 방향은 아직 비어 있었다.
빈칸은 조용히 남지 않았다. 빈칸은 다른 말로 채워졌다.
*
탐사선의 선수각이 7도 틀어졌다. 도경은 그 숫자를 보자마자 갑판 계단을 내려갔다. 선실 문이 열리며 냉각팬 소리와 경고음이 함께 쏟아졌다.
“수동 복귀.” 도경이 말했다.
도현은 콘솔에 붙어 있었다. “위원회 항로 잠금이 들어왔습니다. 안전 알고리즘이 남서쪽 이격을 유지하래요.”
“그건 완성된 지시가 아니야.”
“그 설명을 지금 어디에 넣습니까?”
하리시가 회선에 들어왔다. “서 박사, 상황 보고.”
도경은 화면을 본 채 답했다. “이랑 무리의 행동 지시가 누락됐습니다. 해류가 보존된 맥락으로 방향을 채웠고, 탐사선이 그 값을 받았습니다.”
“충돌 가능성?”
“고래와 직접 충돌은 아직 낮습니다. 문제는 저산소 경계입니다. 둘 다 같은 쪽으로 밀리고 있습니다.”
아마라의 목소리가 뒤늦게 붙었다. “동쪽 부표 반향에서 선두 개체 하강음 확인. 남서가 아니라 북동으로 얕게 틉니다.”
도경은 눈을 감지 않았다. 닫는 순간 숫자를 놓친다. 북동. 얕게. 빠진 지시가 그쪽에 있었다. 탐사선은 반대로 가고 있었다. 안전하게 비켜 간다고 계산한 길이 무리의 보조 이동로를 눌렀다.
“도현, 추진기 출력 줄여.”
“수동 감속은 가능합니다. 방향은 못 꺾습니다.”
“감속부터.”
콘솔의 녹색 막대가 내려갔다. 선체 진동이 늦게 변했다. 물이 배 옆을 때리는 간격이 벌어졌다. 그 짧은 변화가 화면에서는 너무 작았다.
본부 승인 창이 떴다.
상태 항로 변경 요청 접수 사유: 생물 이동로 재평가 처리: 대기
도경은 대기라는 단어를 지웠다가 다시 보았다. 지워지지 않았다. 선내 권한은 감속까지. 방향은 밖의 서버에 묶였다.
하리시가 낮게 말했다. “서 박사, 우선 원신호와 번역 출력 차이를 보내십시오. 잠금 해제 요청에 붙이겠습니다.”
“보내면 세이렌도 봅니다.”
“안 보내면 배가 먼저 갑니다.”
맞는 말이었다. 도경은 파일을 묶었다. 원신호, 결측 위치, 행동 후보 누락 표. 해류의 선택적 공백 라벨은 그대로 남겼다. 원인을 모른다는 표시도 함께 붙였다.
도현이 옆에서 말했다. “남서쪽 이격이면 보통은 안전합니다.”
“보통은 지시가 완성됐을 때 얘기야.”
그 말은 도현을 향한 것이 아니었다. 도경 자신의 어제 판단에도 닿았다. 빈칸이 있는 말을 믿고 움직였던 순간들이 있었다. 아버지의 노트에서도, 이랑의 신호에서도, 도경은 빠진 자리에 원하는 선을 그었다. 지금은 배가 그 선을 따라 움직였다.
아마라가 다시 말했다. “선두 개체가 속도 올립니다. 어린 개체 둘은 늦습니다.”
화면에서 점들이 벌어졌다. 무리는 갈라지지 않으려 했고, 탐사선은 잘못된 바깥쪽을 유지했다. 두 움직임은 서로를 피하는 척하며 같은 회색대로 다가갔다.
“감속 더 내려.”
도현이 고개를 흔들었다. “이 아래로 내리면 조류에 밀립니다.”
“밀리는 방향은?”
“남동.”
도경은 산소 지도를 봤다. 남동쪽도 회색이었다. 선택지가 줄어드는 속도가 눈에 보였다.
*
저녁 빛이 갑판 바닥에서 얇게 부서졌다. 도경은 밖으로 나와 휴대 단말을 난간 위에 고정했다. 선실 화면보다 바다가 느렸다. 그러나 느린 것이 덜 위험한 것은 아니었다.
수면 아래에서 낮은 진동이 올라왔다. 귀가 아니라 발바닥으로 먼저 닿았다. 이랑 무리의 표식은 북동으로 틀다 말고 둥글게 말렸다. 뒤처진 어린 개체를 기다리는 움직임이었다. 탐사선은 감속했지만, 조류에 밀려 남동쪽으로 내려갔다.
두 경로 사이에 저산소대가 끼어들었다. 회색 경계는 지도에서 선으로 보였지만, 실제로는 물의 두께였다. 산소가 낮은 물이 층을 이루며 위로 올라오고, 그 가장자리가 이동로를 좁혔다. 고래는 오래 버틸 수 있어도 어린 개체는 다르다. 탐사선의 엔진음은 그 좁은 통로를 더 복잡하게 만들었다.
도경은 해류에 마지막 계산을 넣었다.
입력 현 위치 / 조류 / 산소 경계 / 모계 7 속도 목표: 공통 위험대 진입 시간
상태 계산 중
결과 탐사선 위험대 접근: 11분 모계 7 후미 접근: 9분 경로 간 최소 거리: 감소 중
⟨오류⟩ 회피 지시 후보 없음
오류가 아니라 부재였다. 도경은 그 차이를 보고도 고칠 수 없었다. 회피 지시가 빠진 말은 안전 명령으로 바뀌지 않았다. 사람은 빈칸을 견디지 못하고 보통값을 넣었다. 그 보통값이 지금 바다 위의 선체를 움직이고 있었다.
본부에서 잠금 해제 응답이 왔다. 조건부 보류. 추가 검토 필요. 문장은 짧았고, 결과는 길었다.
도경은 난간을 세게 잡지 않았다. 손끝 힘을 풀었다. 떨림이 손으로 옮겨가면 단말 조작이 늦어진다. 서도진의 노트에 있던 빈칸이 잠깐 떠올랐다. 왜 말하지 않았느냐고 묻던 시간들이 있었다. 지금은 다른 질문이 앞섰다. 말이 빠진 자리를 누가 움직임으로 채우는가.
“도현, 엔진 음역 낮출 수 있어?”
“낮추면 추진 효율 떨어집니다.”
“고래 후미가 엔진음 피해서 말리고 있어. 효율보다 통로가 먼저야.”
도현은 바로 답하지 않았다. 몇 초 뒤 선체 진동이 둔하게 변했다. 엔진음의 날카로운 끝이 깎였다. 탐사선은 더 느려졌지만, 밀림은 커졌다.
아마라가 말했다. “후미 개체 반응 있습니다. 그런데 선두가 돌아옵니다.”
도경은 화면을 보았다. 이랑의 표식이 후미 쪽으로 되감겼다. 무리 전체가 좁은 회색 가장자리에 붙었다. 탐사선도 같은 가장자리로 밀렸다. 서로 피하려던 움직임이 같은 위험대를 골랐다.
해류 창에는 아직 빈 줄이 남아 있었다.
후보 경계 확인 보호 배열 유지 [공백] [공백]
상태 행동 후보 복원 실패 위험대 동시 접근
도경은 그 빈 줄을 삭제하지 않았다. 증거로 남겨야 했다. 공백은 단순히 다시 나타난 것이 아니었다. 공백은 행동을 빼앗고, 남은 말로 사람을 움직이게 했다. 그 결과가 지도 위에서 좁아지고 있었다.
탐사선의 위치 원과 이랑 무리의 후미 표식이 같은 회색 띠 위에 닿았다. 남은 거리는 숫자로 줄었다. 팔 분, 칠 분, 여섯 분. 도경은 수동 송출 버튼 위에 손을 올렸지만 누르지 못했다. 무엇을 보내야 하는지 빠져 있었다.
바다는 대답 대신 낮은 압력을 올려 보냈다. 화면의 회색대가 한 칸 더 안쪽으로 접혔다.
이 화, 어떠셨나요?
미리보기 — 댓글은 지금 이 브라우저에만 임시로 저장됩니다. 배포하면 Cloudflare에 저장됩니다.