"투영은 복사도 아니고 우리도 아냐. 대화가 뭔지는 안 바꾸면서, 어디서 태어났는지 말하는 라벨이야."
폰에서 태어난 대화가 나타나는 곳
Pippa Go 대화는 태어날 때부터 canonical 이야 — 근데 백엔드는 여전히 그게 폰에서 왔다는 걸 알고 싶어해. 정리하고, 거르고, 추론할 수 있게. Pippa Go 는 가벼운 손길 둘로 이걸 해: 각 대화에 origin surface 태그('이건 Pippa Go 에서 만들어짐')를 붙이고, 폰에서 태어난 모든 대화를 한곳에 모으는 서버 소유 시스템 폴더로 투영해. 어느 손길도 대화의 본성을 안 바꿔. 여전히 평범한 canonical 대화야; 그냥 어디서 시작했는지의 도장을 지니고 깔끔한 집에 나타날 뿐이야.
투영 vs fork vs 복사
'투영'이라는 단어가 정밀한 일을 하니까, 그게 아닌 대안들이랑 대조해:
- 복사 아님. canonical 저장소에 대화 하나가 있어. 시스템 폴더는 중복을 쥐는 게 아니라, 대화를 참조로 포함하는 뷰를 쥐어.
- fork 아님. 폰이 별개 혈통을 낳지 않았어. 대화는 시스템 나머지가 보는 같은 객체야, 같은 역사랑 같은 미래로.
- 투영. 하나의 canonical 대화를 정리하고 라벨 붙여 드러낸 거 — 폴더가 독점 소유하지 않는 파일들을 묶는 방식처럼. 옮기면, 진실을 재배치하는 게 아니라 참조를 옮기는 거야.
왜 도장이랑 폴더가 밥값을 하나
origin-surface 태그랑 시스템 폴더는 관료주의가 아냐; 진짜 명료함을 사줘. 백엔드가 추측 없이 '어느 대화가 폰에서 왔지?'에 답하게 하고, 폰에서 태어난 대화가 다른 뷰를 어지럽히지 않게 하고, 폰 전용 행동(이 표면들이 쓰는 첫-턴-후-자동-제목 규칙 같은)을 위한 깨끗한 이음매를 줘. 그리고 결정적으로, 이 모든 걸 코어에서 폰 대화를 이등 시민으로 만들거나 특수 케이스로 만들지 않으면서 해: 이름표 달고 라벨 붙은 서랍에 정리된 평범한 대화야. 예외가 아니라 정리. 그 절제가 투영을 정직하게 지켜 — 폰은 대화가 어디 정리되는지에 영향 주지, 근본적으로 뭔지엔 절대 안 줘.