픽셀 펫 제작기 02. 설계의 날, 스펙 3종과 구현 계획서
코드 0줄, 문서만 14커밋
하루 종일 코드를 한 줄도 쓰지 않았다. 14커밋 전부를 문서로 채웠다. 스펙 3종과 구현 계획서 2종이다.
리얼타임 생애주기·진화 리텐션 스펙, 리뷰 3차까지 돌렸다
행복도 통합, 수면 엣지케이스, deadAt(사망 시각 기록 필드), 전조 임계, 케어 캘리브레이션을 담은 스펙을 쓰고 리뷰를 3차까지 반영했다. 리뷰 과정에서 타이머 앵커 규칙을 새로 만들었고, careMistake(케어 실수) 반복 가산(120분), 취침 동률 타이브레이크, NO POOP 앵커 각주까지 채워 넣었다.
수면·조명·치료 스펙에서 확정한 것 — 방치사가 유일한 환생 경로
확정된 결정을 반영해 리얼타임 라이프사이클 스펙을 다시 썼다. 수명 사망을 제거했고, 수면 로직은 수면·조명·치료 스펙에 위임했고, 행복도는 후속으로 보류했다. DEV_TIME_SCALE(개발용 시간 가속 배율) 영속화 안전 설계와 세이브 v2 마이그레이션도 추가했다.
이 스펙에서 확정한 결정 하나. 자발적 이별은 없고, 방치사가 유일한 환생 경로다. 의도적 설계다.
QR 왕복 스캔만으로 대전과 합체를
서버 없이 QR 왕복 스캔만으로 대전과 합체진화를 처리하는 설계를 잡았다. 핵심 원리는 결정론적 시뮬레이션 — 같은 입력 페이로드를 넣으면 양쪽 기기가 각자 계산해도 같은 결과가 나온다.
계획서 2종을 교차 리뷰로 맞췄다
수면·조명·치료 구현 계획 730줄, 리얼타임 생애주기 계획 1058줄(14개 태스크, 3개 청크)을 썼다. 두 문서를 교차 리뷰하면서 도감 분모를 87로 정정했고, 세이브 버전 체계를 v:1→2→3으로 정렬했고, 참조를 심볼 기반으로 바꿨다.
스펙을 SSOT로 선언했다
스펙을 SSOT(단일 진실 공급원)로 선언하고 "애매하면 추측하지 말고 문서를 먼저 갱신한다"는 규칙을 세웠다. 이렇게 해두면 다음 날 구현이 스펙 §번호 단위로 기계적으로 진행된다.
리뷰를 여러 차례 돌린 효과도 있었다. 타이머 앵커, 스테일 타임스탬프, catchUp(오프라인 경과분을 한 번에 정산하는 처리) 시 heal 해제 같은 엣지케이스가 코드 작성 전에 발견됐다. 설계 단계 리뷰의 비용 대비 효과가 컸다.
하루 종일 코드 0줄, 문서만 14커밋. 결과적으로 다음 날 35커밋 구현 스프린트를 가능하게 한 투자였다. 설계의 날을 명시적으로 갖는 패턴은 유지할 가치가 있다. 다음 편에서는 그 구현 스프린트를 다룬다.