주간 목록에 자료가 없다는 말은 간단하지만 그 뜻은 여러 가지예요. 아직 자료를 읽지 못했을 수도 있고, 읽는 과정이 실패했을 수도 있고, 다 읽었지만 이번 기간에 해당하는 항목이 없을 수도 있어요. 7월 복구 과정에서는 이 차이를 한 상태로 다루며 혼선이 생겼어요.
운영 화면의 성공 표시도 비슷했어요. 작업이 정상 종료됐다고 필요한 결과가 반드시 남은 것은 아니었어요. 오래된 작업까지 살피자 실행 결과와 산출물, 원천 조회 상태가 서로 다른 설명을 하는 경우가 드러났어요. 한 가지 원인보다 여러 확인 기준이 어긋난 복구 묶음이었어요.

없다는 결과보다, 없게 된 과정을 보기
필수 결과를 만들지 못했는데 성공처럼 보일 수 있던 작업은 그 결과를 기준으로 다시 확인했어요. 반대로 자료를 정상 조회한 뒤 기간에 맞는 항목이 없었던 경우는 실패로 보지 않아야 했어요. 결과의 빈 모습보다 앞의 관측 과정이 판단을 바꿨어요.
주간 원천을 다시 조회하니 자료 자체는 있었지만 대상 기간에 넣을 항목은 없었어요. 조회를 못 했다는 뜻과 달랐어요. 읽은 범위와 기간 밖으로 제외된 결과를 남기니 빈 목록이 정상적인 판단이라는 근거를 설명할 수 있었어요.
이때 새 항목을 억지로 넣어 목록을 채우지 않았어요. 항목의 수와 원천의 상태를 나눴어요. 다음 자료를 기다려야 하는 경우와 검토할 항목이 없는 경우에 사용자가 해야 할 행동이 다르기 때문이에요. 0건도 무엇을 확인했는지 함께 남아야 했어요.

실행과 결과와 전달을 같은 뜻으로 만들지 않기
다른 복구에서는 작업 중인 폴더를 보존하는 조건도 다뤘어요. 자동 작업이 잘 끝나야 한다는 이유로 사람이 남긴 변경을 덮어쓸 수는 없었어요. 복구의 성공에 필요한 결과뿐 아니라 작업 과정에서 보존해야 할 상태도 포함됐어요.

또 어떤 작업은 파일 생성보다 전달이 목적이었어요. 그런 작업을 무조건 파일의 존재로 평가하면 정상 전달을 누락으로 볼 수 있어요. 파일을 만들어야 하는 작업에는 파일이 필요하고, 보내야 하는 작업에는 실제 전달 근거가 필요했어요. 한 가지 검사를 모든 작업에 적용하지 않았어요.
관련 작업을 다시 실행한 뒤 정상 결과와 주간 검토 목록의 준비 상태를 확인한 기록이 있어요. 검토 가능한 목록이 준비됐다는 것이 장기 기록에 자동으로 반영됐다는 뜻은 아니었어요. 결과를 모으는 단계와 사용자가 채택하는 단계도 따로 남겼어요.
과거 이력의 처리나 다음 정기 실행의 안정성까지 전부 끝난 작업은 아니었어요. 회복된 현재 상태는 확인하되 남은 범위를 이어 기록했어요. 회사 발행을 다룬 부분은 앞선 회사 원고와 겹쳐 별도 성공 이야기로 다시 늘리지 않도록 대조 대상으로 표시했어요.
이 과정은 하나의 결함을 고친 이야기로 단순화하기 어려웠어요. 대신 사용자가 빈 결과를 받았을 때 무엇을 판단할 수 있어야 하는지를 중심으로 묶었어요. 처음부터 끝까지 확인했다면 검토할 항목이 없다는 결론을 말할 수 있고, 확인이 안 됐다면 그 불확실성을 남겨야 했어요.
자료가 없다는 설명은 기다릴지 조사할지도 결정하게 해요. 아직 조회하지 못했다면 후속 수집을 봐야 하고, 이번 기간에 해당하는 항목이 없다면 그 결과를 검토할 수 있어요. 같은 빈 목록에 다른 다음 행동이 담겨 있었어요.
이 글에서는 각 복구를 하나의 원인이라고 설명하지 않았어요. 필수 결과를 만들지 못한 작업과 정상 조회 뒤 비어 있던 목록은 다른 문제예요. 공통으로 바꾼 것은 빈 모습만 보고 성공이나 실패를 정하던 기준이었어요.
정상적인 빈 결과가 확인됐다고 전체 기간의 자료가 완전하다는 뜻도 아니에요. 조회한 범위와 대상 기간의 판단이 맞았다는 결과예요. 기록을 오래 모을수록 이런 범위를 남겨야 나중에 그 한 번의 0건을 지나치게 넓게 해석하지 않을 수 있어요.
내가 원했던 보고는 늘 무언가를 추천하는 보고가 아니었어요. 이번에는 무엇을 읽었고 무엇이 남았는지 알 수 있는 보고였어요. 결과를 채우는 것보다 빈 결과의 이유를 설명하는 처리가 있어야 사용자가 다시 파일을 열어 수집 상태를 추리하는 부담을 줄이려는 방향으로 갈 수 있었어요.

