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

엔진은 자기가 만든 것만 믿어

~10 min · provenance, cache-identity, fail-loud

Level 0침묵
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"엔진은 자기가 찍은 것만 서빙해. 없는 건 없다고 말하고."

공짜 상태의 유혹

오래 사는 엔진한텐 언젠가 꼭 이런 제안이 와. 다른 도구가 채워둔 캐시 디렉토리, 손으로 밀어넣은 오디오 파일, 딴 시스템 백업에서 복원한 산출물. 겉보기엔 공짜지. 소리가 이미 있는데, 그냥 읽어주면 유료요청 하나 아끼는 거 아냐? 근데 그 셈엔 빠진 게 하나 있어. 그 파일이 어떤 규칙으로 만들어졌는지, 이 엔진은 모른다는 거. 앞으로도 영영 모르고.

정직한 키가 없어

Bellows의 content-addressed 캐시는 합성에 영향 주는 설정 전부로 키를 매겨. 정규화된 텍스트, 해석된 binding, 모델, 목소리 설정, 사전 버전까지. 필드 하나하나는 트랙 4에서 해부해. 키는 약속이야. 같은 키면 같은 소리. 근데 다른 도구가 찍은 항목은 그 약속 밖에서 태어났어. 무슨 설정이었는지, 정규화를 거치긴 했는지, 사전은 몇 번째 버전이었는지, 어디에도 안 적혀 있어. 그러니까 여기선 정직한 키가 없어. 그걸 import하면 유료요청을 아끼는 게 아니라, 어떤 설정이 새 뜻을 갖는 날 엉뚱한 오디오를 뱉는 지뢰를 심는 거야.

조용한 대체 금지

이 규칙엔 서빙 쪽 짝이 있어. 캐시에 없으면, 없는 거야. 엔진은 빈자리를 남의 물건으로 안 메워. 없는 상태는 둘 중 하나로 가. 정상 유료 경로로 새로 합성하거나, 명시적 에러로 요란하게 실패하거나. 어디서 주워온 파일로 조용히 때우는 세 번째 길은 없어. 자기가 안 만든 산출물로 몰래 fallback하는 엔진은, 이름만 하나 쓴 반쪽 시스템 둘이야.

Code

영수증 없는 소리는 안 나간다·python
# The cache answers for what THIS engine built -- and for nothing else.

def serve_cached(identity_key: str) -> CacheHit | None:
    entry = cache.get(identity_key)
    if entry is None:
        return None          # absent means absent: pay once, or fail loud

    receipt = receipts.for_entry(entry)    # the synth job that minted it
    if receipt is None:
        # No receipt means this engine never built it. A hand-planted file,
        # another tool's cache, a restored artifact -- no honest key, no
        # lineage, no service. Refusing is the feature.
        raise ForeignArtifactError(identity_key)

    return entry

# There is no branch that scans other directories for "close enough" audio.
# The empty slot is an answer the engine is allowed to give.

External links

Exercise

남이 만든 산출물을 받아주는 시스템을 하나 찾아봐. 파일 떨어뜨리면 그대로 읽는 캐시 디렉토리, 미리 빌드된 바이너리를 믿는 빌드, 손으로 밀어넣은 DB row. 그 시스템이 대답 못 하는 질문을 하나 적어. '이거 정확히 어떤 설정으로 만들어졌지?' 그 침묵의 값을 따져봐. 지뢰는 심은 날 안 터져. 규칙이 바뀌는 날 터지지.
Hint
산출물마다 물어봐. 이걸 만든 규칙을 지금 이 시스템이 알고 있나? 모르면 그건 대답이 아니라 추측이야. 추측을 캐시라고 부르는 순간 버그가 계약이 돼.

Progress

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

댓글 0

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

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