"자리는 완벽하게 붙잡았어. 그리고 기다렸지. 그 기다림이 모든 게 틀어질 수 있는 자리야."
깔끔했던 붙잡기, 그 끝
Track 3 은 자리 붙잡기를 다 끝난 일처럼 보여줬지. 포커스된 요소 읽고, 긁어놓은 글 읽고, 범위 읽고, 끝. 깔끔했어. 그런데 그 붙잡기는 전부 치는 순간 에 일어나고, 그다음 Flint 는 머리가 생각하기를 기다려야 해. 추론엔 진짜 시간이 들고 흔히 몇 초씩 걸리지. 그러니까 그 깔끔한 사진은, 넣을 답을 손에 쥐었을 즈음엔 이미 지나간 순간의 사진이야. 붙잡기의 끝이 정확히 여기 있어. 뜻했을 때의 진실은 알려줬지만, 넣을 때에 대해선 아무 말도 안 해주거든.
기다리는 동안 벌어지는 일
기다림은 죽은 시간이 아니야. 그 사이에도 사용자 세상은 계속 움직여. 다른 창을 흘끗 보다 포커스가 흘러가고, 클릭하면 긁어놓은 게 풀리고, 알림이 포커스를 뺏고, 탭을 닫거나 앱을 아예 갈아타기도 하지. 긁어놨던 글이 딴 데서 고쳐지기도 하고. 이 중 뭐 하나만 일어나도 붙잡아둔 사진이 낡아버려. 붙잡았던 앱이나 요소나 글이 더는 커서 앞에 있는 게 아니게 되는 거야. 그리고 Flint 는 글을 대신할 참이라, 낡은 사진대로 움직이면 엉뚱한 데 넣는 정도가 아니라 엉뚱한 내용을 되돌릴 수 없게 덮어쓸 수도 있어.
t0 침 붙잡기 { 앱, pid, 요소, 긁은 글, 범위 }
|
| <-- 벌어진 시간: 추론이 돈다 (몇 초).
| 포커스가 흘러가거나 / 긁힌 게 바뀌거나 /
| 창이 닫히거나 / 앱이 갈아타거나.
|
t1 답 바뀐 글이 준비됨
|
v 넣기 전에: 그 사진이 아직 맞나?
맞으면 -> 붙잡아둔 그 자리를 정확히 대신한다
아니면 -> 확인 못 한 자리는 안 건드린다. 클립보드로.
사진은 사실이 아니라 주장이야
그러니까 생각을 이렇게 바꿔야 해. Flint 가 찍어둔 사진은 그대로 믿고 움직일 사실이 아니라, 한때 맞았고 다시 믿기 전에 확인해야 하는 주장 이야. 붙잡아둔 자리는 '사용자가 뜻한 것' 으로 두고, 넣을 때의 세상은 그 말에 아직 동의할 수도 아닐 수도 있는 별개의 것으로 두는 거지. 삽입이 하는 일 전부가 그 둘을 맞춰보고 맞을 때만 움직이는 거야. 그래서 붙잡기가 아니라 삽입이 제일 위험한 층인 거고. 붙잡기는 읽기만 하지만 삽입은 쓰거든. 그것도 진실이 만료될 수 있는 시간을 건너서.