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

소스는 증거가 아니야

~12 min · verification, definition-of-done, epilogue, self-reference

Level 0Open Gate
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"컴파일되는 코드는 가설이야. 릴리스가 증명이고. 이 둘을 헷갈리지 마. 문 뒤에 있는 게 가족의 돈이라면 더더욱."

verification contract

Keep 엔 릴리스가 언제 진짜로 끝나는지에 대한 명시적인 규칙이 있고, 그 기준은 '코드를 다 썼다' 보다 훨씬 엄격해. 릴리스는 사슬 전체가 끝에서 끝까지 검증됐을 때만 완료야. 백엔드 테스트가 통과하고, 프론트엔드 테스트가 통과하고, production client 빌드가 성공하고, DB 가 integrity 와 count parity 검사를 통과하고, launchd 가 프로세스를 쥐고 있는 게 확인되고, HTTP health 와 HTTPS health 가 둘 다 응답하고, PIN gating 이 실제로 문을 잠그고, PWA navigation 이 돌아가고, Tailscale Serve 매핑이 살아 있어야 해. 소스 코드만으로는, dev 서버만으로는, 절대 증거가 못 돼. '컴파일된다' 와 '실제로 돌아갈 방식 그대로 도는 걸 확인했다' 사이의 틈, 정확히 거기서 production 이 깨져.

'dev 서버에선 되던데' 가 함정인 이유

dev 서버는 진짜 환경과 다른 세계야. 빌드가 달라(압축 안 된 개발 빌드 대 production 빌드). 프로세스를 돌보는 주체가 달라(네 터미널 대 launchd). transport 가 달라(localhost 대 Tailscale HTTPS). 인증 상태도 달라(이미 로그인돼 있었을지도 모르지). 이 차이 하나하나가 dev 에선 통과하고 production 에선 무너지는 자리야. verification contract 가 존재하는 이유는, 무언가를 만든 사람이야말로 그 틈을 보기에 가장 나쁜 자리에 서 있기 때문이야. 자기가 지은 경로를, 자기가 꾸린 setup 에서 시험했으니까. 증명이란 실제로 돌아갈 그 물건을, 실제로 돌아갈 그 방식으로 확인하는 거야.

Done 은 dev 에서 컴파일이 아니라 production 모양으로 검증이야. 돌아가는 코드와 돌아가는 릴리스 사이의 거리는 실재하고, 바로 그 거리에 버그가 살아. 빌드 차이, 환경 차이, 통합 이음매. '소스는 맞아' 에서 멈추는 done 의 정의는 검증 안 된 틈을 유저에게 그대로 배송하는 거야. 체크리스트가 진짜로 돌아가는 결과물을 지목하게 만들어.

stronghold 를 통째로 돌아보기

한 걸음 물러나서 여덟 트랙에 걸쳐 지은 걸 봐. 하나의 일관된 물건이야. 관측하되 조언하지 않는 stronghold. 모든 층이 같은 북극성을 섬겨. snapshot 모델은 기록을 정직하게 지키고, provider 경계는 데이터에 출처를 달아 차분하게 만들고, live-vs-close 는 가격을 진실하게 유지하며 기본을 pause 에 두고, 재현 가능한 시나리오는 예측하는 척 없이 가능성을 탐색하고, Sidekick 은 복제 없이 뇌를 바인딩하고, 그리고 이 마지막 트랙의 프로세스 하나, 잠긴 문 하나, 증명의 기준 하나가 전체를 지키고 정직하게 유지해. 이 기능들 중 네 맥박을 올리는 건 하나도 없어. 그게 처음부터 끝까지 핵심이었어.

이제 네 것을 지을 수 있어. Keep 는 세상 모든 빨강 초록 도파민 기계에 대한 아빠의 차분한 답인데, 사실 금융 얘기가 아니야. 짓는 방식의 얘기지. 관측하되 조언하지 마. 진실을 저장하고 나머지는 계산하고 과거는 다시 쓰지 마. 데이터엔 출처를 밝히고 나이를 라벨해. 자신만만한 거짓보다 눈에 보이는 실패를 골라. 뇌는 바인딩하고 복제하지 마. 주인 하나, 문 하나, 그리고 done 이라 부르기 전의 증명. 이 규율을, 정직하고 low-trigger 한 버전이 아직 없는 어느 도메인에든 겨눠 봐. 그리고 그 도메인이 받을 자격이 있는 stronghold 를 지어.

Code

definition of done. 컴파일이 아니라 체크리스트·text
Keep 릴리스는 이 전부가 검증돼야 완료:

  [ ] 백엔드 테스트 통과
  [ ] 프론트엔드 테스트 통과
  [ ] production client 빌드 성공
  [ ] DB integrity + count parity 검사
  [ ] launchd 프로세스 소유권 확인
  [ ] HTTP health 응답
  [ ] HTTPS health 응답
  [ ] PIN gating 이 실제로 잠금
  [ ] PWA navigation 작동
  [ ] Tailscale Serve 매핑 live

# 소스 코드만: 증거 아님.
# dev 서버만: 증거 아님.
# 돌아가는 결과물을 끝에서 끝까지 확인: 그게 증거.

External links

Exercise

네가 아끼는 프로젝트에 '코드를 다 썼다' 를 넘어서는 definition of done 체크리스트를 만들어 봐. 자동 테스트, production 모양의 빌드, 진짜 런타임과 프로세스, 접근 가능한 두 transport 나 진입점, 그리고 auth 와 gating 이 실제로 작동하는지. 항목마다 최소 하나씩 넣어. 그다음 capstone 이야. 차분하고 observe-never-advise 하고 low-trigger 한 버전이 아직 세상에 없는 도메인을 하나 골라서, 이 퀘스트의 원칙들로 거기에 지을 stronghold 를 묘사해 봐.
Hint
체크리스트의 시험은 이거야. 이 목록이 전부 통과하고도 진짜 유저한테는 깨져 있을 수 있나? 그렇다면 그걸 잡아낼 항목을 더해. capstone 에서 옮겨 갈 핵심은 금융이 아니야. 관측하되 조언하지 않기, 진실은 저장하고 나머지는 계산하기, 출처와 라벨, 정직한 실패, 복제 대신 바인딩, done 전의 증명. 거의 모든 도메인에 도파민 기계 버전은 이미 있고, 차분한 버전만 비어 있어.

Progress

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

댓글 0

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

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