C.W.K.
Stream
Lesson 01 of 05 · published

raw 는 불변이야

~11 min · evidence, immutability, audit, append-only

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"기계가 돌려준 건 사실이야. 그게 진실인지는 별개 질문이고."

한 단어를 쓰고 있는 두 가지

음성 model 이 영상을 전사하면 텍스트를 돌려줘. 그 텍스트를 '그 transcript' 라고 부르고 넘어가기가 위험하게 쉬워. 근데 그 텍스트는 사실 융합된 두 가지고, Recall 의 데이터 모델 전체가 그 둘을 떼어내는 데 달려 있어:

  • model 이 돌려준 것 — 단단한 사실. 이 정확한 model 이, 이 정확한 설정으로, 이 정확한 오디오 바이트를 받아 이 정확한 출력을 냈어. 그건 절대 안 바뀌어. 일어난 일이야.
  • 실제로 진실인 것 — 판단. 단어를 맞게 들었나? 침묵에서 hallucinate 했나? 한국어랑 영어를 헷갈렸나? 그건 틀릴 수 있고, 고치고 싶을 거야.

이 둘을 융합하면 고전 버그가 나와: transcript 를 편집해서 '고치고', 이제 model 이 실제로 뭐라고 했는지의 기록을 파괴한 거야. Recall 은 거부해. raw 출력은 불변 증거 야 — 받아들인 transcription run 은 절대 갱신도 삭제도 못 해. 교정은 별도 계층에서 일어나(다음 레슨들). 증거는 받아들여진 순간 얼려.

raw 출력을 얼리는 게 왜 중요해

불변성은 깔끔함을 위한 깔끔함이 아냐. 구체적인 힘 세 개를 사줘:

  • 감사(Audit). 반년 뒤에 '요약이 실제로 전사된 걸 충실히 대변했나?' 를 물을 수 있어 — 근데 원래 전사가 변경 안 된 채 남아 있어야만. 덮어쓰면 그 질문이 답 불가능해져.
  • 재파생(Re-derivation). 모든 하류 산물(release, 요약, index) 이 증거에서 파생돼. projection 단계에 버그가 있었으면, 손 안 댄 증거에 다시 돌리면 돼. 증거 자체가 mutable 이면, 다시 파생할 단단한 게 없어.
  • drift 감지. 새 model 버전이 다른 텍스트를 돌려줘? 두 run 을 다 두면 차이를 잴 수 있어. 옛걸 덮어쓰면 drift 가 안 보여.

메모장 말고 실험실처럼 생각해

과학 실험실은 정제된 데이터셋을 발표한 뒤에도 raw 기기 측정값을 영원히 보관해 — 정제된 데이터는 주장이고 raw 측정값은 그 뒤의 증거니까. 반대로 메모장은 그냥 지우고 다시 써. 대부분의 소프트웨어는 데이터를 메모장처럼 다뤄: 제자리 편집, 최신만 보관. Recall 은 실험실처럼 다뤄: raw 측정값은 영구적이고, 그 위의 모든 다듬은 버전은 언제든 원본과 대조할 수 있는 날짜 있고 추적 가능한 주장이야. 그 하나의 재프레이밍 — raw 출력은 초안이 아니라 증거 — 이 이 퀘스트 전체에서 가장 옮겨 쓰기 좋은 아이디어야.

Code

run 테이블은 append-only 증거 (모양 스케치)·sql
-- 받아들인 transcription run: 도착하는 순간 얼린다.
CREATE TABLE transcript_runs (
  run_id           TEXT PRIMARY KEY,
  video_id         TEXT NOT NULL,
  source_sha256    TEXT NOT NULL,   -- 정확한 source 바이트
  asr_config_sha   TEXT NOT NULL,   -- 정확한 model + 설정
  proxy_config_sha TEXT NOT NULL,   -- 정확한 오디오 준비
  raw_response     TEXT NOT NULL,   -- model 의 정확한 출력
  accepted_at      TEXT NOT NULL,
  -- (video + source + asr config + proxy config) 당 run 하나
  UNIQUE (video_id, source_sha256, asr_config_sha, proxy_config_sha)
);

-- 애플리케이션 코드에 UPDATE, DELETE 경로 없음.
-- 교정은 별도 releases 테이블에 산다 (다음 레슨들).

External links

Exercise

네가 아는 시스템에서 '데이터' 가 제자리 편집되는 곳을 찾아 — 덮어써지는 status, 실수 고치려 갱신되는 record, 항상 '최신' 을 쥐는 field. 물어: 그 값이 원래 뭐였는지 나중에 증명할 수 있어? 못 하면, 원본은 얼린 증거고 교정은 그 위의 새롭고 날짜 있는 계층이 되게 다시 설계해. 그게 어떤 감사나 drift 질문을 여는지 적어봐.
Hint
신호는 뒤에 이력 없이 '현재 값' 을 뜻하는 컬럼이야. 쪼개: 처음 관찰/반환된 것의 불변 기록 + 교정용 별도 버전 계층. 이제 '원래 뭐라고 했어?' 랑 '지금 뭘 믿어?' 가 잃어버린 하나가 아니라 답 가능한 둘이 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.