"identity 열 개, 그리고 각각이 정확히 특정 실수 하나를 막으려고 존재해."
사다리 전체를, 한 단씩
Recall 의 파이프라인엔 대략 10개 identity 계층이 있고, 유혹은 그걸 과잉 설계로 보는 거야. 아냐. 각각은 그게 막는 구체적이고 진짜인 혼동이 있어서 존재해 — 그 계층이 위 계층으로 무너지면 파이프라인이 잘못된 걸 할 특정 방식. 사다리를 일어날-수-없는-실수의 목록으로 읽어:
- Video (video_id) — 같은 슬롯의 중복 논리 아카이브 행을 막아.
- 관찰 미디어 (cheap_fingerprint) — 바뀐 바이트를 옛 파일로 취급하는 걸 막아.
- 아카이브 execution (execution hash) — 같은 트랜스코드/전사 execution 을 두 번 큐잉하는 걸 막아.
- source 콘텐츠 (source_sha256) — '같은 경로' 를 '같은 바이트' 로 혼동하는 걸 막아.
- 오디오 proxy (source hash + proxy config) — 동일 오디오 chunk 를 다시 빌드하는 걸 막아.
- 유료 provider 호출 (chunk hash + provider config) — 동일 증거에 두 번 결제하는 걸 막아.
- transcript run (video + source + provider config + proxy config) — 받아들인 raw 증거를 중복하는 걸 막아.
- release (run id + content hash) — 같은 투영된 transcript 를 중복하는 걸 막아.
- summary (release + type + provider + model) — 동일 요약 산물을 반복하는 걸 막아.
- title (영상의 summary id) — stale 요약 증거에서 파생된 제목을 보여주는 걸 막아.
각 계층이 자기 자리를 버는 이유
계층들이 한 hash 의 중복 사본이 아니라는 걸 봐 — 다른 granularity 에서 다른 질문에 답해. 유료 호출 identity 랑 transcript-run identity 는 비슷해 보이지만, 하나는 단일 오디오 chunk 로 범위 잡히고(그 chunk 를 두 번 결제 안 하게), 다른 하나는 영상 전체 증거로(받아들인 run 을 중복 안 하게). 그걸 무너뜨리면 chunk 단위 의도인데 영상 단위로 결제하거나, 영상 단위 의도인데 chunk 단위로 dedupe 해. 각 계층은 특정 종류의 동일성이 인식돼야 하는 정확한 granularity 야.
이건 Merkle-tree 모양 아이디어야: 다른 레벨의 identity 가 각각 아래 걸 요약해서, 어디의 변화든 전부 재확인 없이 맞는 계층에서 감지돼. 데이터 중복제거 시스템도 똑같이 해 — chunk 경계에서 hash 해서 안 바뀐 영역은 싸게 인식되고 바뀐 건 정확히 격리돼. Recall 의 10계층은 그 원리를 전사 파이프라인에 적용한 거야: '같음' 의 모든 다른 개념이 자기 granularity 에서 자기 identity 를 가져.
옮겨 쓸 규칙
정확히 10계층이 필요한 경우는 거의 없을 거야. 근데 밑의 결정은 끊임없이 마주할 거고, 가져갈 규칙이 여기 있어: 'done' 이나 '이미 존재' 체크에 손 뻗을 때마다, '어느 레벨에서 같아?' 를 물어. 같은 논리 entity? 같은 관찰 버전? 같은 정확한 바이트? 같은 설정 아래 같은 파생 출력? 그 물음의 각 '응, 근데' 는 또 다른 identity 계층이 필요하다는 힌트야. 계층 수는 그냥 네 시스템이 실제로 구별해야 하는 서로 다른 종류의 동일성 개수야 — 더도 말고, 절대 덜도 말고.