지금 무엇이 돌고, 누가 판단하고, 무엇이 막는가

4달 동안 자동화를 하나씩 붙였고, 스터디 3주 동안 그것들을 정리하고 · 빈자리를 새로 구축하고 · 있던 것을 확장했습니다. 그리고 이번에 처음으로 전부 한 장에 겹쳐 놓아봤습니다. 파이프라인 12개, 스킬 41개, 게이트 11개.

배경 — 왜 지도를 그렸나

지금까지 쓴 사례글은 전부 이 파이프라인의 부분들에 대한 글이었습니다. 알림이 시스템 안에 있어서 같이 죽은 이야기, 침묵을 성공으로 읽은 이야기, "다 했습니다" 대신 영수증을 받기로 한 이야기. 각각은 그 자리에서 맞는 이야기였고, 지금도 각각은 맞습니다.

다만 그것들을 전부 한 장에 겹쳐놓고 본 적은 없었습니다. 업무 하나를 스킬로 굳히고(1주차), 쪼개서 묶고(2주차), 하나의 흐름으로 잇고(3주차), 과정에서 흩어져 있던 것들이 한 줄로 꿰였습니다. 이 글은 그 3주치를 한 장으로 세운 결과입니다.

계획과 후보는 빼고 지금 실제로 도는 것만 그렸습니다. 세 층으로 나눴습니다.

무엇인가

개수

파이프라인

사람 없이 도는 것

12

스킬

판단이 필요할 때 불려오는 문서

41 (내가 만든 것 15)

게이트

통과시킬지 말지를 정하는 것

11

세 층은 겹치지 않습니다. 파이프라인이 돌다 판단이 필요하면 스킬을 부르고, 스킬이 무언가를 내보내려 하면 게이트가 막습니다.

1. 파이프라인 — 맥미니가 밤새 모으고, 노트북이 판단한다

기계를 두 대 씁니다. 맥미니는 24시간 켜져 있으니 기다리는 일을 맡습니다 — 메일 오면 받기, 정해진 날 초안 만들기, 밤새 돌리기. 노트북은 제가 앉아 있을 때만 도니까 판단하는 일을 맡습니다 — 조립, 교차검증, 글쓰기.

일의 종류는 네 줄입니다. 돈(지출 증빙), 대본(평가 기준과 그 시험), 정보(아침에 읽을 것), 글(스터디 산출물).

그림에서 초록 막대가 붙은 자리에만 워든 명세가 있습니다 — 열둘 중 넷입니다(넷째는 그림에 칸이 없는 「작업 계약」 자체). 워든은 "살아 있나"가 아니라 "정해둔 원본과 어긋나지 않았나"를 묻는 감시입니다. 나머지 여덟에는 그게 없습니다. 죽으면 알림이 오지만, 멀쩡히 돌면서 딴 데를 보고 있으면 아무도 모릅니다.

이게 그냥 이론이 아니라는 걸 이번 달에 확인했습니다. 증빙 채널 일곱 개 중 전기료 하나는 받아오는 손 자체가 없었고, 제가 매달 손으로 메꿔서 두 사이클 동안 결손이 안 보였습니다. 그 자리가 정확히 초록 막대가 없는 자리였습니다.

2. 스킬 41개가 물리는 모양은 네 가지다

한국어 텍스트가 있는 검은 화면

스킬이 41개인데 평평하게 41개가 아닙니다. 네 가지 모양으로 물려 있고, 가르는 기준은 하나입니다 — 사고가 났을 때 내가 여는 곳과 하는 행동이 다른가. 다르면 딴 스킬, 같으면 한 스킬에 표 한 장.

모양

무엇인가

엄브렐러

접수하고 갈래로 보낸다

"맥미니 이상해" 한 마디 → 원인 다섯 갈래로 분기

체인

만들고 · 막고 · 내보낸다

사례글 쓰기 → 게이트 → 발행

분리

여는 곳이 다르면 딴 스킬

금액이 틀리면 엑셀, 증빙이 안 오면 메일함

3역 분업

기준을 만들고 · 쓰고 · 시험한다

기준 만들기 / 대본 평가 / 재생산

앞의 글에서 저는 "스킬 비중은 코드량이 아니라 판단의 양"이라고 썼습니다. 지도를 그리고 보니 기준이 하나 더 있었습니다. 실패의 크기입니다. 평가가 틀리면 그 작품 하나가 틀리고, 기준이 틀리면 이후 모든 평가가 같이 틀립니다. 그래서 기준을 고치는 창구를 따로 뒀고, 기준 정본을 고치는 건 그 창구 하나만 할 수 있게 했습니다.

체인 모양도 사고에서 나왔습니다. 만드는 쪽이 자기를 검사하면 건너뛰어도 산출물이 똑같아서 아무도 모릅니다. 실제로 도식 각주에 서비스 이름이 박힌 채로 한 편이 나간 적이 있는데, 규칙은 그때도 있었고 없던 건 지켰다는 증거였습니다. 그래서 검사를 떼어내 별도 단계로 만들고 점검 로그 파일을 남기게 했습니다.

3. 게이트는 네 층에 흩어져 있고, 아래로 갈수록 세다

강제력이 네 층입니다. 이건 제가 첫 글에 쓴 「적어두기 → 스킬 → 코드 → 훅」 그대로입니다.

성격

개수

1층 · 적어두기

문서에 적어둔 금지. 안 읽고 넘어갈 수 있다

3

2층 · 스킬·물증

건너뛰면 남을 파일이 없어서 티가 난다

6

3층 · 코드

통과 못 하면 진행 자체가 안 된다

9

4층 · 훅

에이전트 의사와 무관하게 명령을 차단한다

1

요점은 개수가 아니라 같은 층에 있으면 세기가 같다는 겁니다. 프롬프트에 금지를 열 개 적어도 그건 여전히 1층입니다.

2층에 별표가 붙은 「계약 기준 지문」은 스터디장(지아코모)님 자료를 보고 신설한 칸입니다. 저는 그때까지 작업 시작 전에 합격 기준을 적어두기만 했는데, 적어둔 기준을 나중에 내가 슬쩍 고치면 아무도 모른다는 대목에서 걸렸습니다. 그래서 기준을 적을 때 그 문장의 지문(해시)을 같이 박아두고, 끝날 때 지문이 달라졌으면 통과를 못 시키게 했습니다. 같이 들어온 칸이 셋 더 있습니다 — 이번엔 안 하는 것(무시 조건), 애매하면 무엇으로 판정하는가, 고치는 데 쓸 예산의 상한. 셋 다 "빈칸으로 두면 나중에 내가 유리한 쪽으로 채우게 되는 자리"였습니다.

4. 다 그리고 나서야 보인 것

지도를 그린 다음, 게이트 열하나를 전수로 다시 조사했습니다. 질문은 하나였습니다 — 에이전트가 그 게이트 파일을 고칠 수 있는가, 고치면 잡히는가. 게이트 내용이 옳은지는 안 봤습니다.

셋이 나왔습니다.

하나. 쓰기 권한이 사실상 전부 열려 있습니다. 차단층은 명령어 패턴을 보는 훅 하나뿐이고, 파일을 직접 고치는 도구는 검사 대상에 아예 안 들어 있습니다. 게이트 스크립트도, 훅 설정 파일도 편집할 수 있는 자리에 있습니다. (이 자리는 그날 저녁에 메웠습니다 — 5절.)

둘. 탐지가 전부 사후·수동입니다. 게이트 파일이 바뀌었는지 주기적으로 대조하는 자동 감시가 0곳입니다. 바뀌면 기록에는 남지만, 제가 열어보기 전까지는 아무도 안 봅니다.

셋. 프롬프트 금지가 마지막 방어인 곳이 세 곳입니다. 야간 무인 작업의 금지 조항, 발행 게이트의 "스스로 점검 금지", 에이전트 여섯에 심은 파괴 금지 다섯 규칙. 전부 말로 막은 자리입니다.

부분만 볼 때는 이게 안 보였습니다. 게이트를 하나씩 만들 때마다 저는 "이제 이건 막혔다"고 생각했고, 그 판단은 그 게이트 안에서는 맞았습니다. 열한 개를 한 표에 올려놓고서야 막는 층이 한 칸에 몰려 있다는 게 보였습니다.

5. 지도를 그린 날 저녁 — 사고 없이 빈칸이 세 개 더 나왔다

지도를 스터디 커리큘럼의 주차별 결과물 체크박스 28항과 한 칸씩 대조해 봤습니다. 지금까지 빈칸은 전부 사고가 나야 드러났는데, 이번엔 남이 만든 체크리스트가 사고보다 먼저 도착했습니다. 세 개가 나왔고, 셋 다 같은 병이었습니다 — 만들어놓고 판정·차단까지 안 간 자리.

하나. 겹침을 재기만 하고 판정하지 않았습니다. 스킬 741쌍의 유사도를 재는 도구는 있는데, "이 쌍은 형식별 변형인가, 합칠 중복인가, 밀어낼 대체인가"라는 이름은 아무 데도 없었습니다. 숫자가 나왔다는 것과 판정이 됐다는 것은 다릅니다 — 제가 검사기들한테 하던 말을 제 측정 도구가 그대로 돌려받은 겁니다. 그래서 상위 겹침 쌍 전부에 관계 이름을 붙인 판정 파일을 만들고, 판정 없는 상위 쌍이 생기면 검사가 실패하게 했습니다. 하나 빼고 돌려서 실제로 잡히는 것까지 확인했습니다.

둘. "빠진 근거를 적어라"는 있는데 "빠졌을 때 어떻게 하라"가 없었습니다. 작업 계약의 근거 칸에 「못 본 것을 명시하라」는 이미 있었습니다. 그래서 커리큘럼의 "근거가 없을 때 멈출지 정해뒀는가"를 대조할 때 채워진 칸으로 보였습니다. 그런데 그 둘은 다른 문장입니다. 적는 것과 행동을 정하는 것. 계약 양식에 한 줄을 넣었습니다 — 빠진 근거를 만나면 멈추고 묻거나, 가정을 명시하고 진행한다. 그럴듯하게 메우는 선택지는 없다.

셋. §4의 첫 빨간 칸 — 파일 편집 도구가 훅 범위 밖. 이건 이미 알던 자리라, 이번에 메웠습니다. 게이트 파일(검사기·훅·계약 양식·판정 데이터)을 편집 도구로 고치려 들면 차단하는 훅을 새로 달았고, 셸로 우회해 덮어쓰는 경로도 기존 훅에 패턴을 추가해 막았습니다. 고쳐야 할 때는 승인 후 1회용 열쇠를 만들어야 하고, 그 열쇠를 만드는 행위 자체가 기록에 남습니다. 달고 나서 훅 덮어쓰기를 일부러 시도해 차단되는 것까지 확인했습니다. 이걸로 게이트는 열둘이 됐고, §4의 셋 중 하나가 지워졌습니다. 남은 둘(지문 정기 대조, 말이 마지막 방어인 세 곳)은 ver2 몫입니다.

무엇이 달라졌나

"몇 개 돌아?"

목록 여러 개에 흩어져 있음

12 / 41 / 11, 한 장에서 실측

새로 만들 때

비슷한 게 있는지 그때그때 확인

네 모양 중 어디에 붙는지로 판정

빈칸

터진 자리에서만 드러남

워든 없는 8개 · 마지막 방어가 말인 3곳 · 자동 감시 0곳

게이트

만들면 막힌 걸로 봄

그 게이트를 지키는 게 뭔지 칸을 따로 둠

다음(ver2)에 할 것은 정해져 있습니다. ①남은 빨간 칸 — 게이트 파일의 지문을 목록으로 박아 정기 대조하게 하고(편집 도구 차단은 위에서 메웠지만, 스크립트가 코드 안에서 파일을 쓰는 우회는 훅 두 층 다 못 봅니다 — 지문 대조가 그 자리의 처방입니다), 말이 마지막 방어인 세 곳에 아래층을 깝니다. ②그 사이 새로 만든 것들을 지도에 올립니다. 같은 그림을 다시 그려서 빨간 칸이 줄었는지로 판정할 생각입니다.

배운 점

만든 것을 세어보는 것과 지도를 그리는 것은 다르다. 목록은 전에도 있었습니다. 그런데 목록은 "무엇이 있나"만 알려주지 "무엇이 없나"는 안 알려줍니다. 세 층으로 나눠 자리를 만들어놓고 채우니까 그제야 빈 칸이 칸으로 보였습니다.

부분에서 옳은 판단이 전체에서 틀릴 수 있다. 게이트를 하나 만들 때마다의 판단은 다 맞았습니다. 열한 개를 겹쳐놓고 보니 강제력이 한 층에 몰려 있다는 다른 그림이 나왔습니다. 한 건씩 볼 때는 층이라는 축 자체가 안 보입니다.

감시에는 두 종류가 있고, 저는 한쪽만 열두 겹 쌓았습니다. "살아 있나"는 열둘 다 봅니다. "맞게 가고 있나"는 넷만 봅니다. 이 구분은 다른 글에서 따로 다뤘는데, 지도를 그리고서야 비율이 보였습니다 — 4 대 8입니다.

1
2개의 답글
밀어주고 끌어주는

온·오프라인 AI 스터디

AI로 어디까지 할 수 있는지
직접 확인하실 분만 신청하세요.