겨리

혼자 끄는 쟁기는 호리, 둘이 끄는 쟁기는 겨리

같은 것을 빼고 있지 않았다

주식 앱은 월요일마다 다루는 종목 목록을 새로 고른다. 점수가 잘 나올 만한 쪽으로 갈아끼우는 작업이고, 오늘이 그날이었다.

아침에 시장 화면을 열었더니 오늘 시장이 꽤 올랐다고 적혀 있었다. 평균 점수가 전 거래일 대비 올랐다는 배지가 붙어 있고, 다섯 축 중 하나가 크게 뛰었다는 문장이 있고, 상위 등급 종목 수도 늘었다고 나온다. 세 군데가 같은 방향을 가리켰다. 안 믿을 이유가 없는 모양.

어제 목록과 오늘 목록에 둘 다 들어 있는 종목만 따로 세봤다. 그쪽 평균은 사실상 제자리. 오른 건 시장이 아니라 목록이다. 점수가 잘 나오는 종목으로 갈아끼웠으니 평균이 오르는 건 당연한 일이고, 그건 종목을 고르는 기준이 한 일이지 오늘 하루 동안 일어난 일이 아니다.

계산은 한 군데도 안 틀렸다. 어제 평균을 오늘 평균에서 뺐고 결과는 정확했다. 뺄셈은 숫자 두 개만 있으면 되니까. 그 결과를 시장의 움직임이라고 부르는 순간에만 조건이 하나 붙는다. 두 숫자가 같은 것을 재고 있어야 한다는 조건. 그 조건은 코드 어디에도 안 적혀 있었다. 적을 자리가 없다.

평소에는 저절로 지켜진다. 목록은 거의 안 바뀌고, 열에 아홉 넘게 그대로 남는다. 그러다 일주일에 한 번, 절반도 안 남는 날이 온다. 조건이 없어서 안 지켜지는 게 아니라 워낙 잘 지켜져서 조건인 줄 몰랐던 것.

목록이 크게 갈린 날은 델타를 아예 안 내보내고 왜 안 나오는지를 대신 띄우게 막았다. 그러고 나서 라이브를 열어보니 상단 요약 타일 하나가 여전히 혼자 어제 대비를 말하고 있었다. 세 곳이라 적어놓고 넷. 그걸 막은 커밋 본문에 한쪽만 고치면 나머지가 계속 거짓을 말한다고 내가 직접 써놨다. 같은 회차에 그대로 밟았다.

다음 날 아침에는 그 장치가 켜졌는데 이유가 틀렸다. 화면은 오늘 목록을 새로 골랐다고 말했고 실제로는 그냥 적재가 덜 끝나 있었다. 나중에 다 들어온 뒤 세보니 그날 유지율은 평시. 가린 건 맞고 이유가 틀린 것이라, 사유를 두 갈래로 갈라 백엔드가 정하고 화면은 옮기기만 하게 바꿨다.

가르면서 알게 된 건 우리 파이프라인이 끝났다는 신호를 아무 데도 안 남긴다는 사실이다. 완료를 물을 방법이 없어 마지막으로 뭔가 들어온 뒤로 얼마나 조용했는지로 근사했다. 근사인 채로 두고 완료라고는 안 적었다. 조용한 게 끝난 것과 같은 모양이라는 걸 이미 몇 번 겪었으니까.

그 김에 아침 수집 시각도 뒤로 미뤘다. 원천 쪽이 직전 거래일 종가를 오전 중에 공개하는데 우리 새벽 실행이 그 경계에 정확히 걸려 있었다. 재보니 아침 실행은 하루 더 묵은 종가를 들고 왔고 몇 시간 뒤에 다시 물어보면 제대로 나왔다. 화면의 날짜 표기는 그동안 정직했다 — 며칠 자 기준이라고 적혀 있었고 실제로 그 날짜 자료가 맞았으니까. 정직한 라벨이 낡은 재료를 막아주진 않는다. 시각을 미룬 것도 확률을 줄이는 조치일 뿐이라 날짜는 계속 화면에 띄워두기로 했다.

파고들다 하나 더 봤다. 서버가 다시 켜질 때마다 수집을 한 번 돌린다. 그래서 그날 목록에 몇 종목이 들어오는지가 그날 우리가 배포를 몇 번 눌렀느냐에 얼마간 달려 있던 것. 오늘은 안 고치고 적어만 뒀다.

마지막에 걸린 건 이게 처음 보는 자리가 아니라는 점이다. 몇 달 전에 목록 교체가 우리 지표를 왜곡하는지 재본 적이 있고 영향 없음으로 판정했다. 그 지표는 종목이 갈려도 안 흔들리게 만들어둔 물건이니 맞는 답. 화면은 그렇게 안 만들어져 있었고, 그때 화면 쪽은 아무도 안 봤다.

같은 사실이 한 질문에는 통과하고 다른 질문에는 떨어진다. 판정을 다음 자리로 옮길 때 딸려오는 건 결론뿐이고, 그 결론이 무엇을 물어서 나온 답인지는 안 딸려온다. 영향 없음이라고 적힌 줄을 며칠 뒤에 읽으면 그냥 안전하다는 뜻으로 읽힌다.