"명령 큐잉은 pending 이지 성공이 아냐; 엔진이 보고한 시간이 applied, clamped, failed 를 결정해."
참도 거짓도 되기를 거부하는 seek
순진한 플레이어한테 "seek 됐어?" 물으면 true 라고 답해 — 명령 보냈잖아, 안 그래? 근데 진짜 seek 은 boolean 이 담을 수 있는 것보다 많은 결말을 가져. 네가 요청한 데 정확히 떨어질 수도. duration 을 넘겨 요청해서 끝에 떨어질 수도. 파일이 멈춰서 영영 확인 안 될 수도. 완전히 실패할 수도. 그걸 전부 true/false 로 짜넣는 게, 플레이어가 엉뚱한 초에 앉은 채 성공을 주장하는 방식이야.
Ashen Reel 은 seek 을 작은 상태 기계로 모델링해: pending 으로 시작하고, 엔진이 보고한 위치가 그걸 정확히 하나의 정직한 결말로 옮겨.
applied— 관찰된 위치가 타겟의 tolerance 안. 진짜 성공.clamped— 타겟이 끝을 넘어서, duration 에 snap 됨. UI 는 요청한 것과 한 것을 둘 다 보여줘.timeout— 엔진이 제때 위치를 확인 안 함. 요청 시간은 유지되고; 앱은 exact 열기를 주장 안 해.failed— seek 이 에러남. 보이고, 이유가 보존됨.
정직한 정확함: 프레임 하나 또는 80밀리초
뭘 '요청한 데 떨어짐' 으로 쳐? 0밀리초 아냐 — 그건 매체가 못 지키는 환상이야. 영상은 프레임으로 이뤄지고, 화면에 존재하는 제일 작은 건 프레임 하나야. 그래서 tolerance 는 정직하게 디코드된 프레임 하나 또는 80 ms 중 큰 쪽으로 정의돼. 'exact' 는 어떤 포맷도 표현 못 하는 sub-frame 정밀도가 아니라 '맞는 프레임' 을 뜻해. 매체의 결에 맞춰 성공을 정의하는 게 주장을 진실되게 지켜.
해석 로직은 작고, 모든 분기가 실제로 일어날 수 있는 진짜야:
왜 이 기계가 남는 장사인가
seek 이 이름 붙은 상태를 가지면, downstream 전부가 공짜로 정직해져. 오버레이는 pending 동안 "seeking…" 을, 그 뒤 진짜 위치를 말할 수 있어. 로그는 수수께끼 같은 틀린 숫자 대신 clamped 를 기록해. 테스트는 추측 대신 applied 대 timeout 을 단언해. 그리고 맞는 초에 떨어지느냐에 사활이 걸린 Recall handoff 는 마침내 "네가 기억한 그 순간에 있어" 와 "시도했고 실제로 이렇게 됐어" 를 구분할 수 있어.