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

다시 생성하는 건 재현이 아니야

~14 min · reproducibility, archives, approval, evolution

Level 0불 꺼진 작업장
0 XP0/43 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

자기 예외를 스스로 적어둔 강의

이 트랙 앞쪽에서 작업장은 에피소드가 도구 + 포인터로 재현된다고, 다시 돌려서 조금 다른 영화가 나오는 건 편차가 아니라 기능이라고, 그 사이의 전부는 버려도 된다고 주장했어. 같은 강의가 그 거래가 언제 틀리는지도 정확히 적어뒀지. 렌더가 증거일 때, 다른 것이 그 렌더에 기댈 때, 누군가 특정 버전에 값을 치렀을 때. 2026-09-05 에 마지막 조건이 모든 에피소드의 기본 상태가 됐어. 값을 돈이 아니라 승인으로 치렀다는 것만 달라. 그래서 작업장은 입장을 뒤집었어. 그 빈자리를 뭐가 채웠는지 찬찬히 볼 만해. '이제 재현성이 필요해'라고 느끼는 바로 그 순간이, 대부분의 팀이 엉뚱한 종류의 재현성을 집어 드는 때거든.

마지막 시청이 승인하는 것

이제 완성된 에피소드는 전부, 그걸 올리는 사람의 마지막 시청을 통과해. 그런데 그 시청이 승인하는 건 대본이 아니라, 실제로 나온 결과물이야. 승인된 영화엔 대본에 없는 게 실려 있어. 기준 에피소드에선 오프닝에 남아 있던 예열 단어를 측정한 무음 지점에서 0.9 초 잘라 들어냈어. 합성은 새로 한 번도 안 돌렸고. 다른 에피소드들에선 정렬이 일찍 잡힌 곳의 자막 창을 바로잡고, 여러 번 다시 뽑은 테이크 중에 고르고, 이미지를 참조 편집으로 고쳤어. 이 결정들은 하나도 대본 안에 안 살고, 새로 돌리면 하나도 안 살아남아. 음성 합성은 매번 다르게 읽어. 게다가 어떤 텍스트는 읽을 때마다 말이 빨라지거나 느려지는 상태를 불러내서, 다시 뽑는다고 쓸 만한 테이크가 나온다는 보장도 없어. 도구와 포인터로 다시 지으면, 아무도 승인한 적 없는 영화가 나와.

그래서 지켜야 할 대상이 바뀌었어. 그 강의가 지킨 건 에피소드를 만들 수 있는 능력이었어. 승인은 특정한 결과 하나를 제품으로 만들었고.

봉인하고, 재생해

에피소드를 수락하면 이제 그 제작물을 봉인해. 봉인은 파일을 전부 목록으로 만들고 크기와 해시를 적어. 작성한 대본, 소스 스냅샷, 고른 이미지와 그 프롬프트와 출처, 손 안 댄 공급자 녹음, 가공한 연기 녹음, 선언한 오디오 편집 하나하나, 모든 리뷰, 그리고 탈락한 시안들까지 전부 들어가. 그 옆에 렌더 코드와 정확한 글꼴 파일, 도구 버전도 같이 저장해.

그러면 재현은 다시 생성하기가 아니라 재생이야. 번들을 검증하고, 보관한 코드와 글꼴로 비어 있는 별도 디렉터리에 짓고, 합성 호출은 꺼둔 채로 돌려. 승인된 원본은 절대 덮어쓰지 않아. 그리고 재생은 자기 한계에 정직해. 런타임이나 인코더나 글꼴 버전이 다르면, 결과가 같다고 말하기 전에 먼저 비교해야 해.

봉인을 믿을 만하게 만드는 장치가 둘 더 있어. 오디오 편집은 선언하고 재생해. 자르기 하나도 측정 근거와 같이 기록되고, 해시로 확인한 기준본에서 적용돼. 공급자가 준 원본 오디오는 자르기나 숨소리 복원을 거치기 전에 따로 저장해두고. 그리고 판정은 전부 파일에 묶여. 검증은 측정한 길이, 스트림, 음량을 최종 영상의 해시와 입력 파일들의 해시에 묶어. 시청 기록도 같은 해시에 묶이고, 수락은 바로 그 해시로 확인되는 파일에 대한 승인으로 기록돼. 착지는 정확히 그 파일을 골라. 폴더에서 제일 새 영상도 아니고, 입력이 달랐던 예전 통과 실행도 아니야.

어디 살고, 어떻게 옮기나

보관소는 기계 하나가 소유해. 들고 다니는 노트북에서 만든 제작물은 노트북에서 끝까지 완성하고 봉인한 다음, 보관 기계의 격리된 수신 디렉터리로 올라가. 거기서 봉인된 파일을 하나하나 검증한 뒤에야 제작물이 원자적으로 설치돼. 도착지에 이미 다른 보관본이 있으면 그건 충돌이지 덮어쓰기가 아니야. 노트북이 오프라인이면, 인수인계 메모를 가리키는 포인터 말고 그 자체로 완결된 대기 요청을 적어둬. 출처, 목적지, 절차, 어디까지 하면 끝인지까지 다 담아서. 그리고 중앙 기록이 갱신된 척하지 않아. 그동안 버전 관리 저장소가 받는 건 예전 그대로야. 도구, 그리고 색인 한 줄.

누군가 결과를 승인한 순간부터, 다시 생성하는 건 재현이 아니야. 재빌드는 '이런 걸 또 만들 수 있나?'에 답해. 재생은 '이게 승인된 그거 맞나?'에 답해. 네 산출물이 어느 질문에 답해야 하는지 정해. 그리고 승인이 절차에 들어오는 순간, 그 승인이 기댄 입력을 봉인해. 다시 생성해서는 절대 안 돌아오는 입력일수록 더.

Code

'재현 가능'의 두 가지 뜻·text
                REBUILD (before 2026-09-05)      REPLAY (from 2026-09-05)
                -------------------------------  ------------------------------
inputs          tool + pointer                   sealed production bundle
synthesis       called again                     DISABLED
images          generated again                  the chosen files, by hash
edits           re-decided by whoever runs it    declared, replayed from a
                                                 hash-checked baseline
output          a similar film                   the approved film, rebuilt
                                                 in a separate directory
answers         "can we make one again?"         "is this the approved one?"
honest limit    (none needed)                    different runtime, font, or
                                                 encoder -> compare first
수락이 묶이는 대상·json
{
  "movie":        { "file": "out/<series>-<date>-01.mp4", "sha256": "<hash>" },
  "validate":     { "duration_s": 2482.0, "loudness_lufs": -14.5,
                    "streams": ["video", "audio"],
                    "inputs_sha256": ["<script>", "<takes>", "<plates>"] },
  "final_review": { "movie_sha256": "<same hash>",
                    "note": "watched at normal speed; opening residue repaired" },
  "acceptance":   { "movie_sha256": "<same hash>",
                    "note": "approved for publication" }
}

// landing selects THIS file: never the newest mp4 in the folder,
// never an earlier passing run whose inputs differed.

External links

Exercise

네 일에서 사람이 승인 도장을 찍는 산출물 하나를 골라봐. 릴리스 빌드, 발행한 보고서, 넘긴 디자인, 운영에 올라간 모형 같은 거. 승인된 버전을 만든 것 중에 소스엔 없는 걸 전부 적어봐. 손으로 한 조정, 여럿 중에 고른 후보, 한 번짜리 수정, 도구 버전, 난수 시드. 하나씩 재빌드가 그걸 되살리는지 판정해. 그다음 일 년 뒤에 누가 이 산출물이 승인된 그거라고 확인할 수 있게 해줄 제일 작은 봉인을 설계해봐.
Hint
재빌드로 안 되살아나는 항목은 대개 자동화가 끝난 뒤 손으로 내린 결정이야. 마지막 손질, 어쩌다 더 잘 나온 재실행, 누가 로컬에서 바꾼 버전 고정. 승인이 그중 하나에라도 기댔다면, 재빌드는 승인된 것과 이름만 같은 다른 산출물을 만들고 있는 거야.

Progress

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

댓글 0

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

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