"모두가 서 있는 바닥을 옮기는 건 존재하는 제일 무서운 campaign 이야. 바닥을 remake 해서 하지, 제자리에서 편집해서 절대 안 해."
remake, 리마스터 말고
fleet 의 두 번째 큰 campaign 은 레거시 클라우드-provider root — 모든 프로젝트가 사는 폴더 — 를 retire 하고 보통 것으로 바꿨어. 유혹은 옛 데이터를 제자리에서 변환 하는 거야: 가능한 빨리 새 모양으로 mutate. 그게 리마스터고, 함정이야. 이주는 대신 root 를 현재 ground truth 에서 remake 했어: authoritative 호스트의 live 프로젝트가 유일 소스였고, 각 peer 의 active project tree 는 옛 바이트에서 변형이 아니라 거기서 새로 rebuild 됐어.
writer 가 destination 을 validate 하고 fail closed
cutover 가 시작하기도 전에, 더 좁은 guard 가 어디나 내려앉았어: 모든 local·cross-host writer 가 destination root 를 identity 로 validate 하고 틀리면 fail closed 해야 했어 — 옛 root 를 재생성하는 일 없이. 이 guard 는 데이터를 안 옮기고 authority 를 안 줬어. 그 일 전부는 진짜 이주가 아직 셋업되는 동안 stray 재부팅이나 백그라운드 sync 가 두 번째 split-brain root 를 조용히 못 낳게 하는 거였어.
가시성은 로컬 바이트가 아냐
클라우드 file provider 가 Finder 에 파일을 보여주는 게 바이트가 디스크에 있다는 뜻이 아냐. 그래서 complete copy 는 빈 placeholder 를 조용히 복사하느니 예상 못 한 dataless object 에 block 했어; 클라우드의 명랑한 여기 있어 는 증거로 절대 안 받았어. materialization 보다 가시성을 믿는 게 정확히 이주가 자신만만하고 빈 파일로 가득 찬 디렉토리로 끝나는 방식이야.
소스를 보존; 재생성된 옛 root 는 drift
원본 provider 랑 어떤 split-brain root 도 안 건드려진 채, 별도의 나중 cleanup campaign 을 위해 retained 로 남았어 — cutover 승인은 삭제를 명시적으로 안 포함했어. 그리고 이후에 어떤 stale writer 가 재생성해서 옛 root 가 다시 나타나면, 그건 audit 할 observed drift 로 기록됐지, 시스템이 기댈 fallback 으로 절대 아냐. 과거를 증거로 곁에 두고, 예상 못 한 귀환을 safety net 이 아니라 신호로 다뤄.