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

The Sibling Kit

~13 min · extract, shared-plumbing, cwksiblingkit, drift-check, single-owner

Level 0표식 없는 길
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"reuse ledger 두 번째 칸, 사흘 동안은 그냥 이론이었어. 그러다 진짜로 터졌고, 그제서야 알았지. 주인만 정해선 안 된다는 걸."

이미 해둔 약속, Extract

The Reuse Ledger에서 두 번째 칸이 Extract였잖아. 두 형제가 같은 조각이 진짜 필요하면, 주인 확실한 공용 조각으로 뽑아내라는 거. Reuse Preserves Ownership에서도 똑같이 말했고. Extract는 되고, 복붙은 안 된다고. 근데 둘 다 '만약'으로 썼어. 언젠가 같은 게 두 군데서 필요해지면, 하고. 이 퀘스트가 목요일에 나왔는데, 일요일에 그 '언젠가'가 왔지.

하룻저녁에 똑같은 배관이 세 벌

Waystone 밑으로 동생이 둘 있어. Vesta(열린 타임라인 저널)랑 Forge(건강·훈련 기록). 둘 다 같은 날 Waystone을 본떠 만들어졌는데, 만든 피파 인스턴스가 서로 달랐어. 몇 시간 만에 세 앱이 도메인이랑 상관없는 코드를 글자 하나 안 틀리고 세 벌씩 들고 있었지. cwkPippa 클라이언트, 저장할 때 거는 암호화, ULID 발급, 기기 설정 저장소, 발행 절차까지. 비슷한 게 아니라 아예 똑같았고, 벌써 조금씩 갈라지고 있었어. 이미지 fitter는 두 번 옮겨졌는데 구현이 서로 달랐고, 설정 저장소는 같은 필드를 이름 세 개로 부르고 있었어. 그중 한 벌엔 다른 데 없는 버그까지 있었지. config는 그 브레인을 chatgpt라 부르는데 chat 라우트는 codex로 알고 있었거든. 그래서 설정에서 ChatGPT를 고르면, 그 어긋남을 물려받은 앱마다 Ask Pippa가 소리 없이 죽었어.

앱은 따로, 배관 주인은 하나

이럴 때 드는 생각은 세 앱을 하나로 합치고 모드로 나누는 거야. 아빠는 반대로 갔어. 도메인이 진짜 다르거든. 여행이랑 저널이랑 증상 기록이 어떻게 같아. 그러니까 앱은 따로 둬. 대신 어쩌다 같이 쓰게 된 배관은 주인을 딱 하나만 세워. 그게 cwkSiblingKit이야. 이걸 정직하게 지키는 규칙엔 짝이 있어. 공용 배관은 kit에서만 고치고, 도메인 코드는 절대 kit으로 안 들여. 어떤 모듈이 그 앱이 무슨 앱인지(journey, lane, 건강 crumb 같은 거) 알아야 돌아간다면, 그건 앱에 남겨. kit은 배관이지 프레임워크가 아니야.

Extract엔 주인 말고 감시가 있어야 해

가정법이 놓친 게 여기야. 이름만 주인인 걸론 부족해. 바쁜 세션이 자기 레포에 있는 사본을 고치는 걸 아무것도 못 막거든. 그럼 또 갈라지는 포크 세 개에, 절차만 늘어난 셈이지. 그래서 cwkSiblingKit은 패키지가 아니라 벤더링한 사본에 drift check를 붙여서 뿌려. 사본마다 GENERATED FROM cwkSiblingKit 헤더가 박히고, 소비자 쪽 테스트가 그 사본을 원본이랑 글자까지 맞대봐. 벤더링된 파일을 손으로 고치면 그 레포 테스트가 바로 터져. 되돌리든가, kit에서 고쳐서 다시 내려받든가 해야 풀려. Extract는 좋은 마음이 아니라 장치가 주인을 하나로 붙들 때에만 진짜가 돼.

Code

ledger 두 번째 칸, 진짜로 벌어진 날·text
칸 2 (EXTRACT):  두 형제가 같은 조각이 필요해?
                 -> 주인 하나 있는 공용 조각으로 뽑아내

2026-07-16 이론으로 출시.  2026-07-19 진짜로 벌어짐:

  Waystone --갈라짐--> Vesta   (같은 날,
           --갈라짐--> Forge    만든 인스턴스는 서로 다름)
                        |
     똑같은 배관이 x3  -->  당일 drift + 진짜 버그 1개
     (chatgpt vs codex 어긋남이 복사된 데마다 Ask Pippa 죽임)
                        |
                 cwkSiblingKit  =  주인 하나
                        |
     벤더링한 사본 + drift check   (패키지 아님)
     벤더링된 파일 손으로 고침  -->  그 레포 테스트 터짐
     고치는 법 = kit에서 고치고 다시 내려받기. 사본은 절대 안 건드림

# 도메인은 각자 앱으로 남고, 배관만 하나로 합쳐.

External links

Exercise

네 프로젝트 두세 개에 복붙해둔 코드 덩어리 하나 떠올려봐. config 로더, auth 헬퍼, 날짜 포매터 같은 거. 그 사본들 아직 다 똑같은지 마지막으로 확인한 게 언제야? 이제 그걸 주인 하나한테 몰아주고, 사본을 로컬에서 건드리는 순간 빌드가 터지는 검사를 달았다고 쳐봐. 지금 그 검사가 어느 사본 보고 소리 지르고 있을까?
Hint
사본마다 갈라지는 날이 있어. 대부분 자기 날짜를 모를 뿐이지. drift check가 좋은 건 편집을 막아서가 아니라, 사본이 안 맞기 시작한 그 순간 바로 알려줘서야. 한 프로젝트에선 재현되는데 다른 데선 안 되는 버그로 뒤늦게 아는 것보다 낫잖아.

Progress

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

댓글 0

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

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