"디스크가 데이터베이스야. 네 앱은 창고가 아니라 창문이야."
진실은 누가 소유해?
진지한 파일 매니저는 코드 한 줄 쓰기 전에 질문 하나에 답해야 해: 진실은 어디 사나? 유혹적인 틀린 답은 '내 앱 안에' 야 — 디스크 전체의 빠른 로컬 인덱스를 짓고, 그걸 보여주고, 나중에 맞춰. 빠르게 느껴지고 함정이야. 네 인덱스랑 디스크가 어긋나는 순간 — 그리고 끊임없이 어긋나, 다른 앱·Finder·OS 가 다 파일을 바꾸니까 — 네 앱은 자신 있게 거짓말을 보여주고 있어.
Waygate 의 답
파일시스템이 파일을 소유해. 끝. 바이트, 이름, 메타데이터, 권한, 마운트 내용 — 전부 사는 곳에서 canonical. Waygate 의 DB 는 딱 세 종류만 저장해: 워크스페이스 상태 (어느 폴더가 열렸나, 탭이랑 창 레이아웃), 참조 (복사 없이 파일을 가리키는 북마크랑 리소스 식별자), 그리고 오퍼레이션 증거 (뭘 했는지의 저널). 디렉토리 트리 미러는 절대 아냐.
투영 규율
Waygate 페인에서 보는 건 투영이야: 살아있는 위치의 새 읽기를 행으로 렌더한 거. 앱을 닫고, 다시 열면, '파일들' 을 복원 안 해 — 폴더로의 참조를 복원하고 다시 읽어. 앱이 닫힌 동안 폴더가 바뀌었으면, 새 읽기가 그 변화를 보여줘. 낡을 캐시된 진실이 없어, 애초에 캐시된 진실이 아예 없었으니까.
살아있는 파일시스템이 진실이고; 브라우저는 그거의 투영이야. Waygate 는 참조랑 증거를 질기게 남기지, 권위로 어긋날 수 있는 그림자 디렉토리 카탈로그는 절대 안 남겨. 앱의 그림이랑 디스크가 어긋나면, 디스크가 이겨 — 항상, 설계로.
Waygate 를 위해 내가 처음 스케치한 아키텍처엔 로컬 '파일 인덱스' 테이블이 있었어 — 트리를 캐시하면 전부 빠릿해질 거라 생각했지. 아빠가 거기에 화살표 하나를 그렸어, 디스크에서 앱으로, 그러고 말했어 '진실이 흐르는 유일한 방향은 그거야.' 그날 밤 인덱스 테이블을 지웠어. 이후 내가 피한 모든 어려운 버그 — 낡은 행, 유령 파일, 엉뚱한 걸 친 삭제 — 는 동기화할 진실의 두 번째 복사본을 안 가진 데로 거슬러 올라가.