본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

격리

~11 min · quarantine, default-deny, promotion, trust-boundary

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"파이프라인이 끝난 건 파이프라인에 대한 사실이야. 나온 것의 진실에 대한 주장이 아니고."

절대 자동이면 안 되는 승격

Recall 의 transcript 는 솔깃해. 수천 개나 있고, 검색도 되고, 아빠가 실제로 한 생각으로 가득하거든. 지식 시스템이 검색해서 가져오고 싶어할 딱 그런 원재료야. 게다가 파이프라인이 방금 깨끗한 구조 점수와 함께 완료를 선언했고. 그럼 corpus 로 보내면 되는 거 아냐?

아니. 그리고 이 거부는 조심스러운 손사래가 아니라 아키텍처야. 새로 만들었거나 import 한 release 는 전부 status 는 candidate, corpus eligibility 는 excluded 로 착지해. 기본값이 거부인 거지. corpus 자격을 얻으려면 release 가 excluded → candidate → approved 라는 명시적인 길을 걸어야 하고, 그 한 걸음 한 걸음이 전부 사람의 결정이야. 전사가 끝난 것도, 품질 감사가 깨끗하게 나온 것도 그 승격을 대신 해줄 수 없어. 기계는 구조적으로 자기 출력을 신뢰 영역으로 승격시킬 능력이 없는 거야.

왜 기본-거부고 기본-허용이 아냐

그 transcript 안에 실제로 뭐가 들어 있는지를 보면 알아. 레거시 corpus 는 침묵 구간의 hallucination, model 이 아무것도 안 들릴 때 뱉는 boilerplate 상투구, 한국어와 영어 뒤섞임으로 가득해. 그 오염이 Recall 자신의 검색에는 괜찮아. 검색하고, hit 을 받고, 영상을 열어서 직접 보니까. 사람이 loop 안에 있고 소스에서 검증하잖아. 근데 지식 corpus 는 아무도 영상을 확인하지 않은 채로 하류에서 사실로 인용돼. 검색 결과에서는 그냥 좀 시끄러운 정도였던 같은 텍스트가, 지식 시스템에서는 자신만만하게 틀린 인용이 되는 거야.

그래서 기본값이 거부여야 해. 보안 설계의 fail-safe defaults 원리를 데이터 신뢰에 적용한 거야. '이걸 믿어도 되나' 를 정하는 자리에서 안전한 실패 모드는 '아니오' 니까. 리뷰가 영영 안 일어나도 나쁜 게 하나도 안 나가. transcript 는 검색에는 쓸모 있고 corpus 에는 안 보이는 채로 남을 뿐이지. 기본값을 뒤집으면 실패 모드도 뒤집혀. 리뷰를 잊으면 오염된 텍스트가 조용히 인용되는 지식이 되거든. 한쪽 실패 모드는 지루하고, 다른 쪽은 아카이브 규모의 garbage-in, garbage-out 이야.

격리는 아무 비용도 안 들고, 그게 핵심이야

이 설계가 그냥 엄격한 게 아니라 정직한 이유는 이거야. Recall 은 corpus 통합이 아예 없어도 완결된 제품이야. 런타임 의존성이 없거든. 승인된 transcript 가 하나도 없어도 검색이 되고, 편집 handoff 가 되고, 엔진 전체가 돌아. 그러니까 격리는 제품의 발목을 잡는 병목이 아냐. 제품이 쓸모 있으려고 굳이 넘어야 할 필요가 없는 벽이지. 아카이브가 품질 기준을 영영 못 넘어도 통합이 그냥 없는 채로 남을 뿐, 아무것도 약해지지 않아. 잘 놓인 신뢰 경계의 신호가 이거야. 안전한 쪽이 혼자서도 완전히 굴러가니까, 출시하겠다고 gate 를 무르게 만들 압박이 아예 안 생겨.

Code

기본값은 거부, 승격은 사람이 명시적으로 밟는 걸음으로만·python
# 모든 새롭거나 import 된 release 가 여기 착지. 예외 없음.
release.status = 'candidate'
release.corpus_eligibility = 'excluded'      # 기본값 거부

# 나가는 유일한 경로는 명시적이고 사람이:
#   excluded -> candidate -> approved
#
# 이 둘 중 어느 것도 그 전이를 수행 못 함:
#   - 전사 완료
#   - 깨끗한 구조 품질 감사

# export guard 는 경로를 안 걸은 건 뭐든 거부한다:
def serialize_for_corpus(release):
    if release.status not in ('reviewed', 'published'):
        raise NotApproved
    if release.corpus_eligibility != 'approved':
        raise NotApproved
    return export(release)

# 리뷰를 잊음 -> 아무것도 안 나감. 그게 안전한 실패.

External links

Exercise

네 일에서 파이프라인이 만든 데이터를 진실로 취급해서 소비하는 데를 찾아봐. 리포트, 대시보드, model 학습 셋, 검색 시스템 같은 거. 그리고 물어봐. 뭐가 그걸 믿을 만하다고 표시해? 그리고 그걸 만드는 파이프라인이 그 표시를 스스로 할 수 있어? 완료가 자동으로 신뢰를 뜻한다면 격리를 설계해. 기본값이 거부인 플래그, 사람이 명시적으로 하는 전이, 그리고 승격 안 된 건 거부하는 소비 경계의 guard.
Hint
확인 두 개면 진짜 신뢰 경계가 있는지 드러나. 하나, 데이터를 만드는 쪽이 그게 믿을 만하다고 선언까지 할 수 있어? 그렇다면 경계가 없는 거야. 이름만 바꿔 붙인 거지. 둘, 아무도 아무것도 리뷰 안 하면 어떻게 돼? 안전한 답은 '아무것도 안 나가고 나머지 시스템은 그대로 돈다' 야. 답이 '어차피 다 나간다' 거나 '제품이 깨진다' 면, 그 gate 는 장식이거나 언젠가 우회될 거고.

Progress

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

댓글 0

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

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