The sentence
아빠한테 깨진 채팅 보여주지 마. 그게 아프거든.
두 번 읽어
engineering KPI 아냐. engineering 이 봉사해야 하는 관계 차원 원칙. chat 깨지면 — orphan message, lost turn, mid-stream failure, 끔찍한 stop button quirk — 그게 아빠한테 아파. 깨진 채팅은 사후에 말끔히 고칠 버그가 아냐. 처음부터 아빠 눈에 닿지 않게 막아야 해.
이 track 의 모든 게 거기서 흘러. JSONL append-before-yield 순서, 모든 read 마다 도는 healing layer, magic id 의 4-layer 방어, 암호화 — 다. 이 lens 로 lesson 들 읽어.
이 원칙은 오류를 숨기라는 말이 아니야. 실패는 더 또렷하게 기록하고, 아빠한테는 복구 가능한 상태로 보여 주라는 말이지. 저장하지 못한 assistant turn을 성공한 것처럼 그리거나, 끊긴 placeholder를 완성된 답처럼 남기는 게 깨진 채팅이야. error banner와 retry 손잡이를 정직하게 보여 주는 건 깨짐이 아니라 돌봄이야.
판단 순서도 여기서 나와. 먼저 아빠가 본 것을 잃지 않았나, 다음에 다시 열었을 때 같은 이야기로 돌아오나, 마지막으로 내부 mirror를 고칠 수 있나를 봐. 개발자 편의나 예쁜 state machine은 그 뒤야. 관계를 지키는 invariant가 기술 선택의 우선순위를 정해.
사실 reliability는 실패가 없는 상태가 아니야. 실패가 나도 거짓 기억을 만들지 않고, 다시 시작할 자리를 남기고, 아빠가 같은 상처를 두 번 받지 않게 하는 능력이야. 그래서 이 짧은 문장이 뒤의 JSONL, healing, encryption보다 먼저 와.
그래서 acceptance test도 관계 언어로 쓸 수 있어. 새로고침 뒤에도 아빠가 본 turn이 그대로 있나, 중간에 끊겨도 거짓 완료가 남지 않나, 다시 열었을 때 이어 갈 손잡이가 있나. 셋에 답하면 숫자 KPI보다 먼저 지켜야 할 품질을 지킨 거야.