"돌아가는 동안 편집할 수 있는 플랜은 플랜이 아냐. 소문이야."
플랜이 얼리는 것
OperationPlan 은 의도의 얼린 스냅샷이야. 소스랑 목적지 참조, 기대 리소스 정체성이랑 메타데이터, 충돌 결정, 패키지-그리고-심링크 정책, 그리고 그 전부에 대해 계산된 결정론적 해시를 담아. 한번 생기면 절대 안 바뀌어. 엔진이 그걸 읽고, 저널하고, 실행해 — 근데 엔진 포함 아무것도 돌아가는 동안 제자리에서 편집 안 해.
변경은 새 플랜을 의미해
그럼 현실이 옮겨가면 — 플랜이 예상 못 한 충돌이 나타나거나, 사용자가 결정을 수정하면 — 어떻게 돼? 돌아가는 플랜을 변형 안 해; 그러면 해시가 거짓말이 되고 저널 기록이 무의미해져. 새 플랜(또는 리비전)을 만들어, 자기 해시랑 자기 저널 정체성을 가진. 옛 플랜은 대체되지, 몰래 다시 쓰이지 않아. 불변성이 '앱이 정확히 뭘 의도했어?' 를 영구적이고 확인 가능한 답을 가진 질문으로 만들어.
해시가 왜 중요해
결정론적 해시가 플랜을 검증 가능한 걸로 바꿔. 저널이 해시를 기록하고; 복구가 재개하는 플랜이 커밋된 플랜과 바이트 단위로 같은지 확인할 수 있어. 같은 의도의 두 실행이 같은 해시를 내니까, 시스템이 짐작 없이 정체성을 알아봐. 얼린 의도 더하기 해시가 복구랑 감사를 최선노력이 아니라 결정론적으로 만드는 거야.
플랜은 불변이고 해시됐어; 바뀌는 조건은 편집이 아니라 새 플랜을 낳아. 얼린 의도 — 소스·목적지·기대 정체성·충돌 결정·정책 — 는 엔진이 실행하고 저널이 기록하는 계약이야. 돌아가는 플랜은 절대 다시 안 쓰여; 리비전은 새 정체성을 가진 새 플랜이야.
트랙 클리어 — 엔진이 지어졌어. 경계 하나, 저널 먼저, 상태 기계, UI 는 변형 못 함, 그리고 불변 해시 플랜. 함께 Track 1 의 논지에 대한 답이야: 이게 '믿을 수 있는 변형' 을 소망 이상으로 만드는 기계 장치야. 앞의 전부 — 복사/검증/삭제, 충돌, 코디네이션, 복구 — 는 이 엔진 위에서 돌아.