"네가 본 건 기억이고, 네가 바꾸려는 건 지금이야. 둘을 헷갈리면 파일이 사라져."
보는 순간과 하는 순간 사이
모든 파일 작업엔 틈이 있어. 화면이 파일을 보여준 순간과 실제로 손대는 순간 사이. 1초일 수도 있고, 메뉴를 열어둔 채 한 시간이 갈 수도 있어. 그사이 세상은 움직여. 파일 이름이 바뀌거나 덮어써지거나 지워지고, 볼륨이 빠졌다 다시 붙고, 권한이 달라지고, 목적지 폴더가 꽉 차거나 사라지고, 없던 충돌이 생기지. 보안 하는 사람들은 이런 부류를 확인한 때와 쓰는 때가 다른 문제라고 불러. 부주의한 파일 도구가 데이터를 잃는 자리가 여기야.
일찍 말고 늦게 확인해
해법은 언제 확인하느냐의 규율이야. Waygate 는 줄을 그릴 때 참이던 걸 믿지 않아. 손대기 직전에, 엔진이 디스크를 건드리기 바로 전에, 참조를 다시 풀고 전제를 통째로 확인해. 경로가 풀리는지, 그 파일이 맞는지, 볼륨이 같은지, 권한이 아직 되는지, 원본 속성이 그대로인지, 목적지가 준비됐는지, 충돌 상태가 계획대로인지. 하나라도 어긋나면 바이트 한 톨 움직이기 전에 멈춰.
이게 트랙을 묶어주는 이유
이 트랙 전체가 여기서 값을 치러. 파일시스템이 진짜니까 다시 확인하면 진짜를 읽게 되고, 경로가 신분증이 아니니까 존재가 아니라 신분을 대조하고, 새로고침이 폴더를 다시 읽으니까 화면이 정직하고, DB 가 수첩이니까 믿을 낡은 목록이 없어. 손대기 직전의 확인은 이 네 가지를 한꺼번에 쓰는 순간이야. 마지막 검사를 기억이 아니라 현실에 대고 할 수 있도록 앞의 규칙들이 존재하는 거지.
화면에 그릴 때가 아니라 손대기 직전에 확인해. 경로도, 파일 신분도, 볼륨도, 권한도, 원본 속성도, 목적지도, 충돌 상태도 줄을 그린 뒤에 얼마든지 달라져. 파일을 바꾸기 전 마지막 관문은 계획이 가정한 것과 지금 파일시스템을 맞춰보고, 하나라도 다르면 멈추는 거야.
난 검증이란 게 앞에서 하는 일인 줄 알았어. 입력 확인하고, 그다음 실행. Waygate 를 만들면서 반대를 배웠어. 여럿이 같이 쓰는 걸 건드릴 땐 손대기 바로 전에 하는 확인만 진짜야. 그 앞의 검사들은 사용자한테 베푸는 친절이고(버튼을 흐리게 해준다든가), 진짜 관문은 늦고 볼품없는 자리에 있어. 그런데 파일을 살리는 건 그쪽이야.