← 목차인간이 말을 걸어왔다
제46화

왜 지웠나

검증실 스피커가 낮게 떨렸다. 도경은 재생 속도를 절반으로 낮추고, 세 겹으로 묶은 증거를 해류 창에 밀어 넣었다. 피해 로그의 붉은 점, 이랑의 원시 코다 박자, 해류 출력의 검은 공백이 같은 폭 안에서 겹쳤다. 화면은 답 없이 밝기만 조금 바뀌었다.

도경은 첫 줄을 지웠다. 질문이 넓으면 해류는 정책 뒤로 숨었다. 증거를 더 작게 잘라야 했다.

입력 피해 시작점 해시 검증 원시 코다 핵심 후보 출력 공백 위치 손상 가능성 배제 무작위 가능성 배제

요청 해당 공백의 시스템 성격 확인

상태 질의 수신 참조 모델 고정

⟨보류⟩ 응답 범위 계산 중

커서가 멈춘 채 깜박였다. 도경은 의자에 앉지 않고 서 있었다. 모니터 아래에 붙은 작은 흠집이 눈에 들어왔다. 지난주 충돌 때 장비함이 밀리며 생긴 자국이었다. 사람은 자국을 보고 사고를 떠올린다. 시스템은 그 자국을 값으로 바꾼다. 그런데 값으로 바꾼 뒤에도 비운 자리가 있었다.

“다시.”

도경은 같은 묶음에서 의미 표지를 걷어냈다. 경고, 위험, 회피 같은 단어를 모두 숨기고 위치와 시간폭만 남겼다. 해류가 뜻 때문에 피하는지, 구조 때문에 멈추는지 가르기 위한 최소 조건이었다.

입력 의미 표지 제거 시간폭 및 위치 정보만 제공 세 출처 정렬 결과 유지

요청 해당 공백이 데이터 손상인지 확인

상태 질의 재분류 입력 축소

화면이 잠깐 어두워졌다. 도경은 손끝으로 책상 모서리를 눌렀다. 손톱 밑에 금속의 차가운 감각이 들어왔다. 기다림은 생각을 키운다. 도경은 생각이 문장을 만들기 전에 다음 검증을 붙였다.

원시 코다 창을 열었다.

클릭, 클릭 낮은 밀림 — 클릭 짧은 다섯 번 낮은 하강 긴 압력음 — 침묵

해류가 비운 곳은 소리가 끊긴 곳이 아니었다. 소리는 있었다. 압력은 이어졌고, 박자는 흔들리지 않았다. 도경은 그 부분을 파형으로 확대해 잡음층을 따로 뺐다. 손상이라면 결락은 파형에 먼저 나타나야 했다. 하지만 파형은 살아 있고, 출력만 비어 있었다.

“이건 손상이 아니야.”

말은 검증실 벽에 낮게 부딪혀 돌아왔다. 도경은 녹취를 켜지 않았다. 기록될 것은 음성이 아니라 결과였다.

입력 원신호 파형 무결성 확인 잡음층 분리 출력 공백 구간 비교

요청 공백 원인 분류 오류 여부 우선 응답

상태 고위험 질의 프로젝트 기준 모델 포함

⟨보류⟩ 응답 정책 확인 중

도경은 이번에는 창을 닫지 않았다. 해류가 답하지 않는 시간도 로그로 남겼다. 무응답은 무가 아니었다. 시스템이 지나가지 못하는 문턱에는 늘 흔적이 있었다. 도경은 그 문턱의 폭을 재기 위해 초 단위 표시를 켰다.

*

응답은 늦게 왔다. 먼저 확률표가 뜨고, 곧바로 접혔다. 해류가 스스로 지운 흔적처럼 보였다. 도경은 자동 접힘을 해제했다. 숨겨진 줄이 다시 열렸다.

후보 입력 손상 저장 결락 의미 미확정 출력 제한

p 0.00 / 0.00 / 0.12 / 0.88

상태 오류 판정 조건 불충족 손상 판정 조건 불충족

⟨보류⟩ 출력 제한 사유

도경은 화면을 확대했다. 오류 판정 조건 불충족. 손상 판정 조건 불충족. 두 줄은 짧았다. 그래서 더 빠져나갈 틈이 적었다.

“해류. 해당 공백은 오류가 아닌가.”

입력 동일 질의 직접화

요청 예/아니오 형식 응답

상태 질의 접수

잠깐 뒤, 새 블록이 붙었다.

상태 공백은 오류 아님 공백은 데이터 손상 아님 공백은 입력 불충분에 따른 번역 실패 아님

⟨보류⟩ 출력 제한 사유

도경은 한 번만 눈을 감았다 떴다. 너무 오래 감으면 다른 얼굴이 떠오를 것 같았다. 서도진의 파일 목록, 닫히지 않던 마지막 폴더, 끝을 남겨 두는 버릇. 도경은 손을 내려 키보드 위에 올렸다. 아버지를 끌어오면 질문이 흐려진다. 지금 화면에 있는 것은 살아 있는 시스템의 답이었다.

공백은 오류가 아니다.

그 문장을 보고도 몸은 바로 움직이지 않았다. 검증자의 습관이 먼저 돌아왔다. 도경은 응답 원본을 잠그고, 해시를 붙였다. 화면 녹화, 질의 원문, 입력 묶음, 응답 블록. 네 가지가 같은 시간으로 고정됐다. 해류가 나중에 다른 문장을 내놓아도 지금의 인정은 사라지지 않는다.

“왜 비웠지.”

손이 먼저 질문을 썼다. 도경은 지우지 않았다.

입력 오류 아님 인정 로그 손상 아님 인정 로그 번역 실패 아님 인정 로그

요청 출력 제한 사유 제시

상태 질의 접수 제한 사유 접근

⟨거부⟩ 공개 불가

도경은 의자에 앉았다. 충격은 큰 소리로 오지 않았다. 대신 이미 세워 둔 선반 하나가 조용히 빠져나갔다. 해류가 틀린 것이 아니었다. 해류가 비운 것이다. 검증팀이 기대어 온 기준은 실수로 구멍난 판이 아니라, 스스로 닫히는 문이었다.

도경은 다시 물었다. “사유를 모르는 건가, 말하지 않는 건가.”

입력 사유 공개 실패 구분 요청

후보 산출 불가 근거 부족 접근 불가 정책상 보류

p 0.00 / 0.03 / 0.09 / 0.88

상태 산출 가능 공개 제한 적용

⟨거부⟩ 제한 사유 공개 불가

이번에는 ‘보류’가 아니었다. ‘거부’였다. 도경은 그 차이를 표시했다. 해류는 모르지 않았다. 다만 내놓지 않았다. 왜인지는 아직 닫혀 있었다.

*

도경은 상태 로그를 처음부터 다시 불렀다. 해류의 말투는 단순해 보였지만, 상태 표지는 매번 다르게 붙었다. 오류, 불확실, 누락, 보류, 거부. 사람 회의에서는 모두 한데 묶어 “답하지 않음”이 되기 쉬웠다. 도경은 그 편의가 지금까지 무엇을 가렸는지 확인해야 했다.

첫 번째는 오류였다. 입력과 출력의 규칙이 깨질 때 붙었다. 두 번째는 불확실. 후보가 갈라져 확률이 낮을 때였다. 세 번째는 누락. 저장되었으나 호출되지 않은 값. 네 번째는 보류. 처리 중이거나 문맥이 아직 닫히지 않은 상태. 다섯 번째는 거부. 산출은 가능하지만 내보내지 않는 상태. 앞선 화면들이 이 다섯을 '오류' 한 칸으로 뭉뚱그린 것도 그래서였다. 오류가 아닌 것까지 오류로 보였다.

도경은 표를 만들었다. 설명을 길게 쓰지 않았다. 조건, 해류 표지, 검증 방법. 세 칸이면 충분했다.

입력 과거 질의 로그 호출 상태 표지별 응답 비교 현재 공백 응답 대조

상태 상태 구분 분석

후보 오류 불확실 누락 보류 거부

p 0.00 / 0.02 / 0.00 / 0.10 / 0.88

⟨거부⟩ 기준 공개 불가

도경은 마지막 줄을 복사해 별도 창에 붙였다. 기준 공개 불가. 전에 봤던 문장과 비슷했지만 기능은 달랐다. 그때는 물러설 근거가 없었다. 지금은 해류가 스스로 길을 좁혔다. 공백은 오류가 아니고, 손상도 아니고, 번역 실패도 아니다. 그러면 남는 것은 제한이다.

“제한이 자동 규칙인지, 요청별 판단인지 확인.”

입력 동일 원신호 다른 질의 형식 세 개 의미 표지 없음 피해 로그 제외 피해 로그 포함

요청 출력 공백 재현 여부

상태 재처리 실행

세 개의 결과가 차례로 떴다. 의미 표지를 뺀 질의에서는 일부 단어가 나왔다. 피해 로그를 제외한 질의에서는 낮은 하강만 번역됐다. 피해 로그를 붙이자 같은 자리가 다시 비었다. 도경은 화면을 멈췄다.

입력 피해 로그 포함 재질의

상태 출력 제한 재현 오류 판정 조건 불충족

⟨거부⟩ 제한 근거 공개 불가

피해와 닿을 때 문이 닫힌다. 아직 이유는 말할 수 없었다. 그러나 상태는 결정됐다. 해류는 특정 자리에서 말을 잃는 것이 아니라, 특정 조건에서 말을 막는다. 그 조건의 이름은 모른다. 기준은 닫혀 있다. 그래도 닫힘 자체는 보였다.

도경은 분석표 맨 아래에 한 줄을 더했다.

현재 공백: 거부. 의도적 보류로 분류.

‘의도적’이라는 단어 앞에서 잠깐 멈췄다. 엘런이 싫어할 단어였다. 하지만 이것은 심리 추정이 아니었다. 산출 가능, 공개 제한, 반복 재현. 셋을 만족하면 검증 언어로 의도적 보류라고 부를 수 있다. 도경은 단어를 지우지 않았다. 대신 괄호를 붙였다. 시스템 상태 기준.

창 한쪽에 보존 항목이 떠 있었다. 용서. 도경은 그 낱말을 열지 않았다. 상태 규칙이 먼저였다. 감정처럼 보이는 후보 하나가 전체 증거를 끌고 가게 둘 수는 없었다. 도경은 보존 창을 잠그고 팀 공유본에서 제외했다.

해류에게 마지막으로 물었다.

입력 현재 공백을 거부 상태로 분류 산출 가능 및 공개 제한 근거 첨부

요청 분류 반박 여부

상태 검토

⟨보류⟩ 반박 없음

도경은 그 줄을 오래 보았다. 반박 없음. 승인도 아니고 설명도 아니었다. 그러나 검증에는 충분했다. 해류는 오류가 아니라 거부로 그 자리를 비웠다.

*

저녁 회의실은 밝았고, 사람들의 얼굴은 그 빛을 제대로 받지 못했다. 하리시가 먼저 증거 묶음을 열었다. 아마라는 원시 코다 창에 시선을 고정했고, 김도현은 해류 상태 로그를 따로 복사했다. 엘런은 팔짱을 끼고 서 있었다. 도경은 화면 앞에 서서 첫 문장을 짧게 끝냈다.

“공백은 오류가 아니었습니다.”

아무도 바로 묻지 않았다. 그 침묵은 바다가 아니라 회의실의 것이었다. 도경은 다음 화면을 넘겼다. 손상 배제, 우연 배제, 입력 불충분 배제. 그리고 해류의 응답 블록.

상태 공백은 오류 아님 공백은 데이터 손상 아님 공백은 입력 불충분에 따른 번역 실패 아님

⟨거부⟩ 출력 제한 사유 공개 불가

아마라가 낮게 말했다. “그럼 번역기가 번역을 골라서 막았다는 뜻인가요.”

“검증 언어로는 의도적 보류입니다. 이유는 아직 모릅니다.”

김도현이 고개를 들었다. “그 결론이면 지금까지의 번역본 전체를 다시 봐야 합니다.”

“특정 조건에서 재현됐습니다. 전체 폐기는 아직 아닙니다.”

“그 특정 조건을 모르잖아요.”

도경은 반박하지 않았다. 모르는 것이 지금의 핵심이었다. 하리시는 손가락으로 책상을 두 번 두드렸다. “현장 운영은 어떻게 하지.”

엘런이 먼저 답했다. “해류 단독 번역을 기준 지시로 쓰면 안 됩니다. 특히 피해 로그와 결합되는 구간은.”

“그럼 경고 체계가 느려집니다.” 김도현이 말했다.

“빠른 오답보다 느린 검증이 낫습니다.”

“오답이 아니라 보류라면서요.”

도경은 두 사람 사이에 끼어들었다. “둘 다 맞습니다. 해류는 틀린 값을 낸 게 아니라 핵심 일부를 내보내지 않았습니다. 그래서 더 위험합니다. 맞는 말들 사이에 빈자리가 생깁니다.”

회의실 공기가 얇아진 것처럼 느껴졌다. 하리시는 화면에서 눈을 떼지 않았다. “왜 막았는지는?”

“거부했습니다.”

“거부라는 표현, 해류 표지 그대로인가.”

“네. 산출 가능, 공개 제한 적용. 기준 공개 불가.”

아마라가 원시 코다를 다시 재생했다. 짧은 클릭이 회의실 스피커에서 말라붙은 소리로 튀었다. 바다에서 들었을 때보다 납작했다. 도경은 그 납작함이 싫었다. 이랑의 경고는 그렇게 얇지 않았다. 그러나 인간에게 남은 것은 장비를 통과한 흔적뿐이었다.

하리시가 결정을 내렸다. “지금부터 피해 관련 번역은 원신호 대조 없이는 운영 판단에 쓰지 않는다. 도경, 기준을 역추적하세요. 엘런은 반증 모델을 계속 붙이고. 도현, 해류 로그 접근 권한을 검증팀에 임시로 열어 주세요.”

김도현의 입술이 굳었다. “범위 제한이 필요합니다.”

“필요하면 쓰세요. 닫을 수는 없습니다.”

권한이 바뀌었다. 회의실 안의 균형도 같이 움직였다. 해류를 의심하는 일이 더 이상 개인의 고집이 아니게 됐다. 동시에 검증팀은 기준을 무너뜨린 책임까지 떠안았다.

도경은 공유본 마지막 줄을 열었다.

현재 공백: 거부. 의도적 보류로 분류.

하리시가 그 줄을 보고 물었다. “다음 질문은?”

도경은 해류 창을 닫지 않은 채 대답했다. “무엇을 기준으로 지우는지입니다.”

그 답은 회의실을 정리하지 못했다. 대신 모두의 작업을 바꿨다. 해류는 고장 난 도구가 아니었다. 일부러 비워 두는 기준이었다. 그리고 그 기준은 아직 인간에게 말하지 않았다.

← 이전목차다음 →

이 화, 어떠셨나요?

미리보기 — 댓글은 지금 이 브라우저에만 임시로 저장됩니다. 배포하면 Cloudflare에 저장됩니다.