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

조상 버그: Waystone 은 왜 이미 알았나

~9 min · lineage, inherited-invariant, waystone, scar-tissue

Level 0식은 화로
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Waystone 의 lane invariant 가, 두 날짜를 뭉치면 자리채움 날짜와 데이터 증발이 난다는 증거야."

Vesta 는 이 규칙을 발견한 게 아니라 물려받았어

두 진실 규칙은 영리한 선견지명처럼 들려. 근데 Vesta 가 빈 페이지에서 여기까지 추론한 게 아냐. 부모한테 물려받았어. Waystone 이 이미 같은 나눔을 다른 이름으로 지녔거든. captured_local_date 는 현장에서 breadcrumb 을 실제로 찍은 날, schedule-owner 의 local_date 는 그 breadcrumb 이 속한 여행의 날. 같은 두 질문이야. 언제 일어났나, 그리고 어느 날 아래 파일링됐나. Waystone 은 그래야만 한다는 걸 현장에서 배웠기에 둘을 따로 칸에 뒀어.

그 배움이 Waystone 의 lane invariant 에 담겨. 두 날짜를 뭉치면 자리채움 날짜가 생기고 데이터가 소리 없이 사라진다는 증거지. Waystone 은 실제 여행에서 그 실패를 만났고, 그것에 맞서 규칙을 단련하고, invariant 를 적었어. Vesta 는 그 invariant 를 상속으로 읽고 버그의 저편에서 시작해. 그걸 가르친 사고를 다시 겪지 않고 올바른 모델을 공짜로 얻어.

물려받은 invariant 는 규칙으로 건네받은 형제의 흉터야. 가족 누군가가 이미 실패를 만나 그걸 막는 규칙을 적어 뒀으면, 그 레슨을 어렵게 다시 배우지 않는 게 그 규칙을 존중하는 거야. 고치기 제일 싼 버그는 형제가 이미 피 흘린 거고, 제일 비싼 건 규칙이 겉치레 같아 보여서 네가 도로 들이는 거야.

겉치레 같아 보이는 규칙이 왜 아냐

위험이 여기 있어. 갓 온 사람한테 '날짜 칸 두 개를 따로 둬라' 는 과한 설계로 보여. 날짜 하나가 간단한데 왜 둘을 지녀? 바로 그 생각이 버그를 도로 들이는 방식이야. 누가 '단순화' 하려 칸을 뭉치고, 배포하고, Waystone 이 이미 치른 자리채움 날짜와 잃은 쓴 시간을 천천히 재발견해. invariant 가 있는 건 정확히 그 단순화가 솔깃하고 틀렸기 때문이야. lineage 를 읽는 것, 이 규칙이 장식이 아니라 흉터라는 걸 아는 것이, 나중에 손대는 사람이 그걸 자르는 걸 막아.

퀘스트 나머지로 가는 다리

이게 Vesta 가 자식 엔진이라는 게 뭔지, 그 첫 진짜 맛이야. 마지막 트랙 전체가 이 얘기지. Vesta 의 거의 모든 빡센 규칙이 Waystone 에서 온 상속이야. 현장 멍을 그대로 안고 이어졌어. 두 진실 규칙은 가장 또렷한 예일 뿐이야. 부모가 실패를 만나고, 자식이 고침을 받아. 그 관계, 그러니까 힘들게 얻은 계약을 물려받고 도메인이 진짜 다른 곳에서만 갈라서는 것이, 이 퀘스트가 가르칠 가장 깊은 거야.

Code

같은 규칙, 계보를 따라 이어짐·text
WAYSTONE (the parent, learned in the field):
  captured_local_date   -> the day a breadcrumb was actually taken
  local_date (schedule) -> the trip-day it belongs to
  lane invariant        -> collapsing them = sentinel dates + silent loss

VESTA (the child, inherits the hardened rule):
  captured_at / captured_local_date -> when the crumb was written
  target_date                       -> the day it belongs to
  invariant #4                      -> the two never collapse

# Vesta starts on the far side of the bug Waystone already paid for.

External links

Exercise

네가 일하는 코드베이스에서 불필요한 겉치레처럼 보이는 invariant 나 '이상한 규칙' 을 찾아 봐. 없애기 전에 그 뿌리를 추적해 봐. 진짜 실패 뒤에 적힌 거야? 그게 막는 버그를 한 문장으로 적어 봐. 버그를 못 찾겠으면, 그게 바로 찾을 수 있을 때까진 자르면 안 되는 Chesterton's Fence 야.
Hint
겉치레처럼 보이는 물려받은 규칙은 보통 네가 못 본 실패의 흉터야. 없애기 전 테스트는 간단해. 그게 막는 구체적 버그를 댈 수 있어? 못 대면 그 규칙은 네가 아직 모르는 걸 알고 있어.

Progress

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

댓글 0

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

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