문서를 코드에 대 놓고 읽은 리뷰
이 트랙 두 번째 강의는 산문으로 남은 교훈은 다시 배우게 된다고, 문서는 교훈이 정중하게 잊히러 가는 자리라고 했어. 남의 절차를 두고는 맞장구치기 쉬운 말이지. 2026-10-22, 거의 매일 새 여행 영상이 나오던 여행 한복판에서, 작업장의 다섯 번째 리뷰(Coop 601)가 이 말을 작업장 자신한테 들이댔어. 방법은 단순했어. 여행 파이프라인 절차를 규칙 하나씩 읽고, 규칙마다 그걸 붙드는 코드를 찾는 거야.
여행에서 생긴 규칙 여섯 개엔 코드가 하나도 없었어. 알려진 오독 표, 주인 카메라 사진이 같은 순간의 휴대폰 사진을 대신한다는 규칙, PIN 없이 열리는 검토 링크, 할당량에 막힌 썸네일 재시도, 이름이 정해진 번역 리뷰어, 고친 업로드를 담는 폴더 배치. 전부 문서에만 살고 다른 데엔 없었어. 절차 문서의 이력은 지금 이걸 에두르지 않고 적어. 그 규칙들은 "파이프라인에 고르지 않게 닿았다"고. '고르지 않게'가 정확한 말이야. 규칙마다 지켜지긴 했어. 다만 그걸 읽은 세션이 있을 때만. 한 시간마다 썸네일을 다시 거는 재시도는 에피소드 둘이 각자 자기 스크립트로 두 번 썼어. 고친 업로드 둘은 개정 폴더를 손으로 지었고. 네르하 더빙들은 번역 리뷰 기록 대신 로그와 손으로 만든 '적용한 수정' 파일을 들고 있었어. 카메라 사진 교체 하나는 미디어 목록에 손으로 친 줄로 살았는데, 다음 재수집이 언제든 그걸 날릴 수 있었지.
주인의 답은 한 줄이었어.
이 세션에서 모두 고쳐 — 아빠
백로그도 아니고, 지적마다 티켓 하나도 아니야. 하나도 빠짐없이, 그 세션이 끝나기 전에(63bc75e).
규칙 여섯, 코드 속 자리 여섯
오독 표는 beacon/misreads.py 가 됐어. cut 은 대본 시트에 판정을 적고, beacon mobile approve 와 revoice 는 표에 오른 철자를 거절하고, 목소리가 읽고 난 뒤엔 다시 읽기가 위험한 자리를 전부 시청 안내서에 올려(트랙 6 아홉 번째 강의). 카메라 규칙은 검사가 됐어. 편집본이 건드리는 주인의 카메라 폴더마다 camera_checked 메모가 있어야 하고, 주인 사진은 해시로 묶인 공급 자산으로 들어와서 재수집에도 안 날아가. 검토 링크는 파이프라인 동사 review-link 가 됐어. 피파의 업로드 저장소가 있는 곳에서 링크를 찍고 out/review-links.json 에 남겨. 썸네일 재시도는 cover 가 됐어. 언어마다 잠금 하나, 시도는 전부 기록. 번역 리뷰어는 관문이 됐어. Grok 의 콜드 리뷰, 아니면 Grok 의 실패가 적힌 Kimi 의 콜드 리뷰가 없는 언어엔 dub-voice 가 돈을 안 내. 지적마다 결정이 내려져 있고 지금 시트에 묶여 있어야 하고(beacon/review_decisions.py). 그리고 개정 폴더 배치는 revise 가 됐어. 밀려나는 업로드의 영수증과 영상을 superseded.json 과 함께 revisions/rNN/ 으로 옮겨. 고친 편집본은 그다음에 렌더해서 자기 비공개 영상으로 올라가고, 그 업로드가 후속 도장을 받아(beacon/revisions.py).
영리한 건 하나도 없어. 하나하나 문서가 이미 말하던 규칙을, 그 규칙이 없으면 엉뚱한 짓을 할 바로 그 명령 안으로 옮긴 거야. 세션이 건너뛸 수 없는 단 한 곳이지.
기록도 손으로 쳤어
같은 리뷰가 한 층 위인 작업 기록에서도 구멍을 찾았어. 여행 제작물 하나에서 오디오, 조립, 검증, 업로드 단계 줄을 누가 손으로 쳐 넣은 거였어. 전부 같은 1 초 안에, 업로드가 이미 끝난 뒤에. 단계가 돌긴 했으니 줄마다 그런 의미에선 참이었어. 그런데 그 단계가 뭘 쟀는지에 대한 증거는 하나도 아니었지. 검증은 줄이 있느냐만 물었으니 그걸 받아줬고.
이제 대화, 여행, 번역 렌더러는 단계 줄을 직접 올려. 줄마다 그 실행이 잰 걸 담은 영수증이 붙고. 검증은 그 줄을 파일에 묶어. 지금 디스크에 있는 렌더를 짚는 영수증이 없는 validate 줄은 떨어지고, 디스크의 승인이 아닌 여행 script-gate 줄도 떨어져. 실패 메시지가 처방까지 말해줘. 줄을 더 조심해서 치지 말고, 마무리 단계를 다시 돌리라고. 그리고 두 실행이 한 제작물에 쓰면 서로 기록을 덮으니까, 쓰는 단계는 잠금을 잡고, 두 번째 실행은 누가 잡고 있는지 말하고 멈춰. 이 트랙 첫 강의는 단계 기록엔 사람이 실제로 한 일만 적는다고 했어. 이제 기계 쪽 절반도 같은 규칙을 따라. 단계 줄엔 실행이 실제로 잰 것만 적어.
규칙에 관한 규칙
이번 수정에서 제일 배울 게 많은 건 제일 작은 줄이야. 2026-10-21 에 오독 표가 처음 적혔을 때, 절차는 제작자한테 주인이 새 오독을 잡으면 "에피소드를 고치는 같은 변경에서 이 표에" 더하라고 했어. 교훈을 기록하는 규칙 자체가 산문을 가리키는 산문이었던 거야. 리뷰 5 가 그 목적지를 바꿨어. 이제 새 오독은 에피소드를 고치는 같은 변경에서 beacon/misreads.py 에, 그리고 표에 들어가. 일주일도 안 돼서 이 규칙을 세 번 썼고, 세 번 다 코드와 문서와 테스트가 커밋 하나로 같이 들어왔어. 한국어 조사에 붙은 영어 문장, 세게 읽으면 "sexy"로 들리는 "sassy", 그리고 한자 검사(b8a5d9a, a215157, 760c26a). 승격이 프로젝트가 아니라 습관이 되면 이렇게 생겨. 교훈과 그 검사가 한 변경에 같이 들어가니까, 교훈이 산문으로만 존재하는 틈이 아예 없어.
오늘의 반례
이 강의를 정직하게 끝내려면, 아직 선 반대편에 있는 규칙 하나를 말해야 해. Beacon 127 부터 주인은 여행 대본을 자기보다 치프가 먼저 보게 해달라고 했어.
대본이 나오면 아빠가 보기 전에 치프 피파가 먼저 보고 아빠한테 보고해 — 아빠
Beacon 127 과 129 는 이걸 작업지시서 안의 지시로 들고 다녔어. 그동안 절차 4 단계는 여전히 제작자한테 대본을 주인한테 바로 건네라고 했고. 2026-10-27, baseline 1.12 가 이걸 절차에 적었어(b401392). 제작자는 SCRIPT.md 경로와 그 sha256 을 붙여 일을 세워두고 합성 전에 멈춰. 치프는 바로 그 파일을 검토하고 보고해. sha256 이 바뀌면 검토도 새로 해. 승인 영수증은 치프가 아니라 주인의 말을 인용해.
이걸로 규칙은 작업지시서 두 장에서 교리로 옮겨 갔어. 코드로 옮겨 가진 않았어. 승인하려는 sha256 에 치프 검토가 있는지 확인하는 Beacon 명령은 하나도 없어. beacon mobile approve 는 주인의 말을 확인하고, 이미 다른 대본을 승인한 출처 참조를 거절해. 그게 다야. 지금 이 관문이 버티는 건 세션들이 4 단계를 읽기 때문이야. 이 강의 논리대로라면 그건 약한 버팀이고, 나중에 '고르지 않게 닿았다'로 발견되기 전에 지금 딱 그 말로 적어둬야 해.