"열린 페이지는 필사를 증명하지 못해. 문장이 잉크가 된 순간은 손이 말해."
사람의 일을 먼저 봐
생성 원문과 손으로 쓴 종이는 다른 자료야. 저장된 텍스트는 첫 번째를 증명해. 스크롤 위치와 화면 시간, 브라우저의 깨어 있음은 손이 아니라 기기를 설명할 뿐이야.
데이터가 약속을 지키게 해
분명한 행동으로 필사됨을 표시해. nullable transcribed_at은 전환 시점을 남기고 솔직한 되돌리기도 허용해. 지우면 현재 상태가 돌아오지만 브라우저 신호를 증거로 꾸미진 않아.
실패 경로를 의심해
‘과제 끝내기’는 의무 같고 ‘펜이 종이를 만났어’는 사건을 말해. 아름다운 글씨나 완전한 복사, 보상을 주장하지 않아. 접촉만 인정하고 품질은 내버려 둬.
없는 능력도 설계야
timestamp는 오늘 보기와 검색, 사진, 재시작 복구의 닻이 돼. 다른 자료가 전후에 생겨도 뜻을 빼앗지 않고, 내일 화면은 추측 대신 오래 남은 상태를 읽어.
정상 응답 밖까지 따라가
화면 한 장으로 이 경계를 증명할 수 없어. 검증 거절과 실패, 반복 요청, 취소, 다음 날 다시 열기까지 같은 약속을 하는지 봐. 멱등인 표시·해제 endpoint와 손글씨 증거로 인정하지 않을 기기 신호를 적어봐. API 응답과 저장 행, 버튼 문구가 다르면 가장 조용한 불일치가 결국 진짜 제품이 돼.
종이에 남길 질문
‘펜이 종이를 만났을 때’를 리뷰 질문으로 들고 가. 기능 유무보다 어떤 경로에서도 사람의 역할을 훔치지 않는지 확인해. 코드에 없는 필드와 화면에 없는 압박까지 봐야 거절이 오래 살아.
되돌리기도 사람의 말이야
잘못 눌렀다면 해제할 수 있어야 하고, 두 번 탭했다면 완료 사건이 두 개 생기면 안 돼. 사진을 붙였다는 이유로 자동 완료하거나 화면을 오래 봤다는 이유로 timestamp를 채우지도 마. 표시와 해제 모두 사람이 직접 말한 전환이어야 다음 날에도 상태가 같은 이야기를 해.
필사 상태와 사진은 다른 증거야
손글씨 사진을 붙였다고 자동으로 필사됨이 되지는 않아. 사진은 종이의 흔적이고 transcribed_at은 사람이 선언한 상태 전환이야. 둘이 같은 순간에 생길 수는 있어도 서로를 대신하지 않게 두면 사진 업로드 실패가 완료 표시를 되돌리는 이상한 일도 막을 수 있어.