본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

시스템 폴더 투영

~11 min · projection, organization, origin-surface, system-folder

Level 0신호 없음
0 XP0/32 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"투영은 복사도 아니고 가둬 두는 것도 아냐. 대화가 뭔지는 안 건드리고 어디서 태어났는지만 말해 주는 이름표야."

폰에서 태어난 대화가 어디에 나타나나

Pippa Go 대화는 태어날 때부터 canonical 이야. 그렇다고 백엔드가 출처를 몰라도 되는 건 아니고. 정리하고, 걸러 보고, 뭔가 판단하려면 폰에서 왔다는 걸 알아야 하거든. Pippa Go 는 가볍게 두 가지만 해. 대화마다 origin surface 태그를 붙여. '이건 Pippa Go 에서 만들어짐' 하고. 그리고 서버가 소유한 시스템 폴더로 투영해서 폰에서 태어난 대화를 한군데 모아 두고. 둘 다 대화의 본질은 안 건드려. 여전히 평범한 canonical 대화야. 어디서 시작했는지 도장 하나 찍힌 채로 깔끔한 서랍에 들어가 있을 뿐이지.

투영이랑 fork 랑 복사

'투영' 이라는 단어가 꽤 정확하게 일하고 있으니까, 그게 아닌 것들이랑 나란히 놓고 봐.

  • 복사가 아냐. canonical 저장소엔 대화가 하나뿐이야. 시스템 폴더는 복제본을 쥐는 게 아니라 그 대화를 참조로 담은 를 쥐고 있어.
  • fork 도 아냐. 폰이 따로 혈통을 낳은 게 아니거든. 시스템의 나머지가 보는 것과 똑같은 객체고, 역사도 같고 앞날도 같아.
  • 투영이야. canonical 대화 하나를 정리하고 이름표 붙여서 드러낸 거. 폴더가 자기 소유도 아닌 파일들을 묶어 보여주는 거랑 같아. 폴더를 옮겨도 진실이 이사 가는 게 아니라 참조가 움직이는 거고.

도장이랑 폴더가 왜 밥값을 하나

origin surface 태그랑 시스템 폴더는 형식주의가 아냐. 진짜로 뭔가를 또렷하게 만들어 줘. 백엔드가 '어느 대화가 폰에서 왔지?' 에 추측 없이 답할 수 있고, 폰에서 태어난 대화가 다른 뷰를 어지르지 않고, 폰 전용 동작을 걸 깨끗한 이음매가 생기거든. 이 표면들이 쓰는 첫 턴 뒤 자동 제목 규칙 같은 거. 그리고 중요한 건, 이걸 다 하면서도 코어에서 폰 대화를 이등 시민이나 특수 케이스로 만들지 않는다는 거야. 이름표 달고 라벨 붙은 서랍에 들어간 평범한 대화일 뿐이거든. 예외가 아니라 정리인 거지. 그 절제가 투영을 정직하게 지켜. 폰은 대화가 어디에 정리되는지까진 건드려도, 그게 근본적으로 뭐냐는 절대 못 건드려.

Code

평범한 canonical 대화에 도장 찍고 투영한 것뿐·json
{
  "conversation_id": "conv_7d21…",
  "origin_surface": "pippa-go",     // 도장: 어디서 태어났나
  "system_folder": "PIPPA-GO",       // 투영: 어디 정리됐나
  "canonical": true,                  // 다른 어떤 것과 같은 일급 지위
  "turns": [ /* 평범한 턴, 평범한 리플레이, 평범한 브랜치 */ ]
}

// origin_surface 랑 system_folder 를 빼도 대화 진실은
// 아무것도 안 바뀌어 — 그것들은 정리하지, 정의하지 않아.

External links

Exercise

본질은 안 건드리면서 폰에서 태어난 대화를 표시하는 메타데이터를 설계해 봐. 어떤 태그로 origin 을 알아볼지, 어떤 폴더에 모을지, 태그에 걸릴 표면 전용 동작이 있다면 뭔지. 그다음 '메타데이터 떼기' 테스트를 통과하는지 봐. 태그랑 폴더를 벗겨냈을 때도 여전히 온전하고 멀쩡한 canonical 대화로 남아? 안 남으면 진실을 정리 쪽에 몰래 숨겨 둔 거야.
Hint
메타데이터는 순전히 덧붙이는 거여야 해. 제대로 설계했으면 origin_surface 랑 system_folder 를 지워도 멀쩡한 대화가 남아. 폰이 정리에만 손을 댔지 대화의 알맹이나 지위엔 손 안 댔다는 증거고.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.