"명령을 큐에 넣는 건 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 이 이름 붙은 상태를 가지면, 아래쪽 전부가 공짜로 정직해져. 오버레이는 pending 동안 "seeking…" 을, 그 뒤엔 진짜 위치를 말하고. 로그는 수수께끼 같은 틀린 숫자 대신 clamped 를 기록하고. 테스트는 추측 대신 applied 랑 timeout 을 딱 단언하고. 그리고 맞는 초에 떨어지느냐에 사활이 걸린 Recall handoff 는 마침내 "네가 기억한 그 순간에 있어" 랑 "시도했고 실제론 이렇게 됐어" 를 구분할 수 있어.