"이 지도엔 핀을 못 떨궈. breadcrumb만 남길 수 있고, 지도는 breadcrumb이 이미 아는 걸 그려."
저장 버튼 없는 지도
지리를 정직하게 만드는 invariant가 여기 있어. 지도는 자기 데이터를 하나도 저장 안 해. 'marker 추가' 도구도, 손으로 놓는 핀도, 다른 어디에도 안 사는 지도 전용 annotation 레이어도 없어. Journey Map의 flag는 전부 여행 truth가 심어. breadcrumb에 붙은 place hint를 geocoder가 좌표로 resolve한 거지. flag를 띄우고 싶으면 place 붙은 breadcrumb을 남겨. flag를 옮기고 싶으면 breadcrumb을 고치고. 지도는 crumb의 순수 projection이야. 어긋날 자기 기억이 없어.
crumb이 flag가 되는 법
출시된 v0 truth 레이어에선, crumb의 위치를 정하는 순서가 엄격해. 아빠가 정했으면 intended location, 그다음 captured GPS 좌표, 그다음, 정말 최후에만, 텍스트 place hint를 geocoding. 좌표는 지도로 바로 가고, reverse-geocode된 이름은 점에 label을 붙일 순 있어도 좌표를 절대 대체 안 해. 못 찾은 건 조용히 버리지 않아. 'Unplaced' 스트립에 드러내서, resolve 못 한 장소가 없는 척하는 대신 보여줘. 위치를 지어내길 거부하는 그게 지도가 아무것도 저장 안 하는 거랑 같은 정직함이야. projection은 truth가 받쳐주는 딱 그만큼만 보여주고, 못 하는 건 인정해.
왜 이 규율이 남는 장사야
그릴 수 있는 지도는 곧 두 번째 DB야. 지도에만 있는 핀을 손으로 놓는 순간, 다른 어떤 view도 모르는 fact를 만든 거고, 이제 지도랑 itinerary가 안 맞을 수 있어. 지도 전용 state를 금지해서 Waystone은 지도가 절대 거짓말 못 하게 해. 거짓말할 자기 게 없으니까. 이건 편의 하나(지도에 낙서 못 함)를 팔아서 보장 하나(지도는 언제나 여행 state의 충실한 그림)를 사는 거야. 기억 엔진한텐 그 거래는 고민할 것도 없어.