"성공한 draft 는 따로 남아 언제든 열려. 나중 실패한 시도가 마지막 좋은 결과를 지우거나 숨기지 못해."
다시 만들기를 안전하게 하는 invariant
지난 레슨은 draft 를 다시 만들고 버리고 여러 개 둘 수 있다고 했어. 함정을 알아채기 전엔 태평하게 들려. '다시 만들기' 가 '제자리 덮어쓰기' 를 뜻하면, 나쁜 재생성 한 번이 네가 아끼던 draft 를 부숴. 다신 그 버튼 누르길 망설이고, 자유는 거짓말이 돼. Vesta 는 물려받은 invariant 로 그 함정을 닫아. 성공한 draft 는 따로 남아 언제든 열리고, 나중의 실패했거나 더 나쁜 시도가 마지막 좋은 결과를 지우거나 숨기지 못해. 다시 만들기가 안전한 건 정확히, 새 시도가 좋은 옛것을 절대 못 덮어써서야.
구조로 보면 draft 는 status 를 지녀. proposed, accepted, superseded. 그리고 새 조립은 기존 걸 바꾸는 대신 새 draft 를 만들어. 네 accepted draft 는 네가 대놓고 '더 나은 걸로 갈아치울게' 할 때까지 accepted 로 남아 언제든 열려. 약하게 돌아온 재생성이나 아예 실패한 조립은 그냥 accepted draft 가 안 될 뿐이야. 좋은 결과는 있던 자리에 안 건드려진 채 앉아 있어.
대량 생성은 절대 자동 승인 안 해
같은 원리가 위로 확장돼. 언젠가 Pippa 한테 한 달을 한 번에, 또는 연말 정리를 조립해 달라고 할 수 있어. 그 대량 생성은 하루치 제안을 여럿 읽을 수 있어. 근데 널 대신해 절대 자동 승인 안 해. 묶음 draft 는 근거 있는 범위별 제안을 입력으로 쓸 수 있지만, 검토 status 는 대놓고 남아. 뭐가 accepted 될지 여전히 네가 정해. 대량 출력을 자동 승인하는 시스템은 규모로 history 를 조용히 다시 쓰는 걸로 돌아가고, 더 나쁘게는 아무도 검토 안 한 기계 생성물 아래 좋은 accepted draft 를 묻어.
왜 이게 발명이 아니라 상속이야
Vesta 는 이 규칙도 맨땅에서 설계 안 했어. 성공한 결과가 언제든 열리고 나중 실패한 시도가 못 지운다는 Waystone 자신의 invariant 의 모양이야. 두 진실 규칙처럼 물려받은 흉터지. 부모가 재시도가 좋은 결과를 뭉개게 두면 작업을 잃는다는 걸 배우고, invariant 를 쓰고, 자식이 안전을 공짜로 물려받아. Vesta 에서 누르는 모든 '다시 만들기' 가 안전한 건, 형제가 안 그럴 때 뭐가 일어나는지 이미 배웠기 때문이야.