"앱은 듣는 동안엔 잊을 수 없어야 하고, 멈추는 순간 스스로 잊어야 해."
한 약속의 두 반쪽
신뢰 계약엔 관련 없어 보이지만 같은 생각인 두 반쪽이 있어. 들을 땐 보이게: 마이크가 살아있을 때마다, 놓칠 수 없는 표시가 있어 — 움직이는 파형이 있는 알약 오버레이. 미묘한 메뉴바 색조가 아니라; 눈에 걸리는 것. 끝나면 잊게: 받아쓰기가 끝나면, 오디오가 기본으로 버려져. 둘이 함께 말해: 언제 널 듣는지 늘 알고, 들은 걸 안 쥐고 있어.
파형이 중요한 이유
라이브 파형은 장식이 아냐. 정적인 '녹음 중' 라벨은 거짓말일 수 있어 — 아무것도 녹음 안 하는데 떠 있거나, (더 나쁘게) 뭔가 녹음 중인데 안 뜰 수도. 네 목소리에 맞춰 움직이는 파형은 증거야: 실제 캡처 탭에서 파생되니, 오디오가 진짜 흐를 때만 애니메이션될 수 있어. 표시기가 표시하는 것에 결합돼 있어. 그게 주장을 시연으로 바꾸는 작은 설계 선택이야.
긴장: 잊기 대 잃기
'전부 버리기' 는 진짜 필요와 충돌해: STT 나 정리가 실패하면, 오디오를 버리는 건 유저 단어가 영원히 사라진단 뜻이야. Firekeeper 는 한쪽을 고르는 대신 이걸 의도적으로 해결해:
성공한 받아쓰기 -> 오디오 버림 (기본)
STT 실패 -> 오디오를 recovery-audio/ 로 옮김, 10개로 정리
정리 실패 -> 원시 전사가 이미 상태에 있음; 단어 절대 안 잃음
디스크 히스토리 -> 옵트인만
# 기본은 잊기. 실패 시에만, 짧게, 제한적으로 보존.
원시 전사가 정리가 돌기 전에 상태에 들어가, 그래서 정리 실패가 네 문장을 절대 못 먹어. 복구 오디오는 실패 케이스에만 존재하고, 작은 수로 상한선이 있고, 회전해. 보존은 이유 있는 예외지, 변명 있는 기본값이 절대 아냐.
표시기를 메커니즘에 결합해. 별도 플래그로 설정되는 프라이버시 표시기는 누락으로 거짓말할 수 있어 — 누가 설정을 잊어. 메커니즘 자체에서 파생된 표시기(캡처 탭이 먹이는 파형)는 구조적으로 솔직해: 그게 참이 아니면 못 뜨고, 참인 동안 못 숨어. '언제 X 가 벌어지는지 알 거야' 를 약속하는 곳마다, 신호를 알리라는 알림이 아니라 X 의 부산물로 만들어.
허용하는 모든 보존을 제한해. 예외를 인정하는 순간('STT 실패하면 오디오 유지'), 즉시 천장과 회전을 줘. 무제한 예외는 조용히 아카이브가 돼 — 실패 녹음 열 개는 안전망이고; 일 년치는 안 짓겠다고 약속한 그 쌓아둠이야.