"어떤 숫자는 계산해서 얻고, 어떤 숫자는 그냥 전해 들어. 현금은 전해 듣는 쪽이야. 그러니 믿어. 다시 계산하려 들지 말고."
모델을 정직하게 지키는 구분 하나
Keep 에서 owner 의 stored cash 잔고는 ground truth 야. 사람이 직접 입력한 권위 있는 값이고, Keep 는 그걸 그 사안의 진실로 취급해. 'seed 금액에서 포지션 총 cost 를 빼면 되잖아' 라고 슬쩍 재구성하지 않아. 그 재구성이 꽤 유혹적이긴 해. 숫자가 대개는 맞아떨어지거든. 근데 현금을 저장하는 대신 계산하는 순간, 현금은 모든 포지션 row 가 빠짐없이 정확해야만 성립하는 파생값이 돼 버려. cost 하나만 빠져도, 불완전한 과거 row 하나만 있어도, 계산된 현금은 거짓말을 시작해.
ground truth 와 파생값, 이 구분이 왜 중요한가
시스템의 모든 값은 둘 중 하나야. ground truth 는 누군가 사실이라고 선언한 값이라 선언 자체로 권위를 가져. 파생값은 다른 값들에서 계산돼 나오니까 입력이 온전할 때만 권위를 갖고. 현금은 ground truth 야. 직접 지키는 값이고, 충돌이 나면 이 값이 이겨. Family 총합은 파생값이지. owner 들한테서 계산돼 나오니까(앞 트랙에서 봤지). 실력이란 어느 값이 어느 쪽인지 아는 거야. 그리고 공식이 '대개 맞으니까' 라는 이유로 ground truth 를 슬그머니 파생값으로 강등시키지 않는 거고.
표시 붙은 fallback, 단 하나의 예외를 시끄럽게
seed 빼기 cost 가 허용되는 경우는 딱 하나야. stored cash 가 기록된 적 없는 불완전한 과거 row. 그 한 경우에만 Keep 는 계산된 추정치로 물러설 수 있는데, 그때도 추정치라는 표시가 또렷하게 붙어. 호환용 fallback 이라고 자백하지, 진짜 저장값인 척은 절대 안 해. fallback 은 조용히 숨지 않고 눈에 보여. 그래서 지금 보는 현금이 전해 들은 값인지, 옛 row 에서 추측해 낸 값인지 언제나 구분할 수 있어.