
확률적 생성기에는 규범을 맡길 수 없다 — Loop의 결과물 측면에 검역을 구축하기
요약
확률적 생성기(LLM)의 특성상 프롬프트만으로는 규범 준수를 보장할 수 없음을 지적합니다. 규범의 준수 여부를 생성기에게 맡기는 대신, 결과물 측면에 검역(Quarantine)과 검증 메커니즘을 구축하여 상태를 관리해야 한다고 주장합니다.
핵심 포인트
- 확률적 생성기는 호출 간 동일성과 상태 유지 능력이 결여됨
- 프롬프트(SPEC)는 규범을 전달할 뿐 보증을 운반하지 못함
- 규범의 준수 여부는 생성기가 아닌 결과물의 수락 조건에서 관리해야 함
- 결과물 간의 관계와 검증 가능한 기록을 통해 규범을 재대상화해야 함
출발점: 왜 「AI에 대한 지시」를 강화해도 구멍이 메워지지 않는가
전편의 구멍(자기 조건부(Self-conditioning)에 의한 계통 오차, 검증기의 드리프트(Drift))에 대한 소박한 대책은 AI에 대한 지시를 강화하는 것이다. "계약을 일탈하지 마라", "테스트의 의도를 바꾸지 마라"라고 계약에 써넣는다. 하지만 이는, 작성된 규범이 지켜졌는지 여부를 판정할 수 있는 형태로 만들지 않는 한, 효과가 없다. 추상론에 앞서 구체적인 예시를 하나 두겠다.
계약: 「인증 판단은 TokenVerifier만 수행한다」
조항 3(인증)을 근거로 하는 변경 허가 경로: src/auth/token_verifier.*
4회차 주회(Iteration)에서 발생한 일:
...
주의해야 할 점은, 대책 2가 모든 위반을 기계적으로 막는 것은 아니라는 점이다. 기계적 대조가 가능한 클래스(신고 여부, 경로의 정합성, 후술하는 수량·부정)는 수락(Acceptance) 시점에 차단되며, 그 외의 것은 「판정할 수 없는 위반」에서 「검증 가능한 기록」으로 바뀐다. 대책 1과의 차이는 차단 여부가 아니라, 위반이 기록 위에서 판정 가능한지 여부에 있다.
대책 1과 대책 2의 차이는 규범의 **맡길 대상(Depositary)**이다. 대책 1은 생성기(Generator)의 준수에 맡겼다. 대책 2는 결과물의 수락 조건에 맡겼다. 본고의 주장은 이 한 점에 귀결된다:
규범은 생성기에게 전달된다. 하지만 그 준수를 생성기 자신의 약속에 맡길 수는 없다.
📐 도출
왜 맡길 수 없는가. 결정론적(Deterministic) 공학에서는 규범이 에이전트(Agent)에게 맡겨진다. "이 컴파일러는 의미를 보존한다" —— 버전과 실행 조건을 고정하고, 변환 법칙이 검증된 변환기(Transformer)에서는 보증을 변환기의 성질로서 가져갈 수 있으므로, 맡길 대상으로 기능한다.
확률적 생성기(Probabilistic Generator)에는 이러한 맡길 대상으로서의 성질을 지탱하는 세 가지 요소가 모두 결여되어 있다:
호출 간의 동일성이 없다. 각 생성은 분포(Distribution)로부터의 샘플링이며, 이전의 출력은 이번 생성을 구속하지 않는다. "일관성을 유지하라"는 규범을 전달해도, 동일 입력에 동일 출력이 보장되지 않으며, 이전의 자기 신고가 다음 출력을 구속하는 상태가 되지 않는다.
약속을 유지할 수 없다. "앞으로 scope를 지키겠습니다"라고 출력한 생성기는 다음 호출에서 그 출력을 기억하지 못한다(전편의 /clear 논의 그 자체). 커밋먼트(Commitment)는 상태(State)이며, 모델 호출 단체는 상태를 갖지 않는다. 에이전트(Agent) 시스템 전체는 파일·이력·DB에 상태를 가질 수 있지만, 그 상태는 생성기의 약속이 아니라 결과물이다 —— 상태에 규범을 적용하고 싶다면, 맡길 대상은 생성기가 아니라 결과물 측이 되어야 한다. 바로 본고의 주장으로 돌아온다.
보증이 변환에 실리지 않는다. 검증된 결정론적 변환기에서는 올바름을 변환기의 성질로서 다룰 수 있어 생성물을 매번 검사할 필요가 없다. 확률적 변환은 규범 준수를 「생성 변환의 검증된 성질」로서 갖지 않는다 —— 따라서 보증은 생성물 측의 검사로 담당할 수밖에 없다.
즉 「AI를 구속하는 SPEC」은 전달은 할 수 있지만 보증을 운반하지는 못한다. 프롬프트(Prompt)나 SPEC이 출력 분포를 좋은 방향으로 움직인다는 점은 부정하지 않는다 —— 분포는 움직인다. 문제는, 움직인 분포의 꼬리(Tail)가 영속 상태(Persistent State)에 새긴 것을 아무도 점검하지 않는 구조에 있다.
재대상화(Re-addressing): 불변 조건은 생성물 간의 관계 속에 거할 수밖에 없다
📐 도출
그렇다면 규범은 어디로 다시 맡겨야 하는가. 결과물의 올바름에 관한 규범의 맡길 대상은 생성물과 생성물 사이의 관계, 그리고 그 수락 조건이다(피해의 유계화에 관한 규범 —— 권한, 예산, 격리 —— 는 별도의 맡길 대상을 가진다. 별도의 논문 C에서 다룬다).
"구현은 계약을 정교화하고 있는가", "이 변경은 어느 조항에 근거를 두는가", "의미가 5회 주회에 걸쳐 표류하고 있지는 않은가" —— 이것들은 생성기에게 물을 수 없으므로, 결과물의 그래프(Graph)에 물을 수밖에 없다. 그리고 여기서 핵심은, 관계에 묻기 위해서는 관계가 제1급 대상(First-class object)으로서 존재해야 한다는 것이다. 추적성(Traceability)이 없는 결과물 군에 "정교화가 보존되었는가"라고 물어도, 어떤 것이 어떤 것의 정교화인지 정의되어 있지 않은 이상, 질문의 피연산자가 존재하지 않는다.
따라서 결과물의 유향 그래프(계약 조항 → 주회 → 변경 → 검증 결과)는 검증 기구이기 이전에, 검증이라는 행위를 well-posed하게 만들기 위한 존재론이다. 구속되는 것은 생성이 아니라 **수락(Acceptance)**이다: 생성기는 자유롭게 샘플링한다. 하지만 샘플이 영속 상태로 새겨지는 순간, 출처·타입·근거의 명시가 요구되며, 요구를 충족하지 못하는 새기기는 수락되지 않는다.
에이전트의 준수에 맡기는 규범(보증을 운반하지 않음)에서, 구조에 맡기는 규범(이 그래프는 이 제약을 만족하라)으로의 재대상화 —— 본고의 대책은 모두 이 한 수의 전개이다.
원칙: 측정기는 학습해서는 안 된다
📐 도출(구현은 기존)
규범의 모든 무게가 생성물 간의 관계로 이동했다면, 관계를 측정하는 척도가 변동한다는 것은 규범 그 자체가 변동함을 의미한다. 생성기가 비정상성(non-stationary)을 띤다는 것을 받아들인 순간, 측정기의 정상성(stationarity)은 선택 사항이 아니라 논리적 요청이 된다.
정확히 말하자면, 금지되는 것은 측정기의 개선 일반이 아니라, 기준이 운용 중에 무기명으로 변하는 것이다. 측정기를 개선하거나 재교정(re-calibration)해도 좋다. 단, 그것은 별개의 척도로써 버전을 나누고, 구버전과의 대응 관계를 기록한 뒤에 수행해야 한다. 동일한 버전 명칭의 척도가 어제와 오늘 서로 다른 값을 반환하는 상황만은 결코 허용하지 않는다.
구현 측면에서는: 의미의 거리를 측정하는 임베딩 모델(embedding model)을 동결한다(ONNX 형식으로 고정하고, 모델 파일의 해시(hash)·실행 환경의 버전·최적화 수준까지 포함한 복합 키로 버전을 식별한다). 동일한 고정 실행 프로필(execution profile) 내부에서, 동일한 입력에 대해 재현 가능한 측정값이 반환될 것—프로필이 바뀌면 별개의 척도로 식별될 것. 생성기가 어떻게 표류하더라도, 척도는 표류하지 않는다.
나는 이 원칙을 트레이서빌리티(traceability) 기반인 legixy(Apache-2.0으로 공개됨)에 구현했다. 이하에서는 legixy를 구현 사례로 사용하지만, 원칙 자체는 구현에 의존하지 않는다.
단축(single-axis)의 맹점과, 이종 다축(heterogeneous multi-axis)이라는 해답
🧪 실측
동결된 임베딩의 코사인 유사도(cosine distance)만으로 의미의 일탈을 감시하면 명확한 맹점이 존재한다. legixy의 교정 데이터(CALIBRATION.md)를 통한 실측 결과:
| 편집 종류 | cosine drift | 판정 |
|---|---|---|
| 말바꾸기(수치 불변) | 0.031 | 올바르게 무반응 |
| 조건문 삭제 | 0.076 | 임계값 미달로 간과 |
| 수치 개변(5→50, 15→1) | 0.009 | 거의 무반응 |
방지하고자 하는 최악의 케이스(수치의 조용한 개변)에서, 정확히 cosine의 감도가 사라진다. 이는 임베딩의 차원 수를 늘리는 것만으로는 해결될 보장이 없다. 동일한 관측 원리의 정밀도를 높인다 해도, 방식 고유의 맹점이 사라진다는 뜻은 아니기 때문이다.
해답은 관측 원리가 다른 이종 축(heterogeneous axis)의 추가이다:
-
수량·부정의 결정론적 대조(이산·자구): 텍스트에서 (수치)(단위)를 추출하여 다중집합(multiset)으로 만들고, 상류(계약)와 하류(결과물)의 차분을 구한다. 부정·금지 마커의 출현 횟수도 세어 극성 반전(polarity reversal)을 검출한다. 수치 개변 클래스에 대한 검출률은 프로토타입 38개 케이스에서 100%·위양성(false positive) 0%를 기록했다. 사례 수는 적지만, 이는 통계적 추정이 아니라 다중집합 차분이라는 구조에서 기인하는 성질이다. 단, 구조적으로 성립하는 것은 추출 규칙이 대상으로 정의한 변환 클래스의 내부에 한한다. 출현 횟수 기반의 대조는 총수가 변하지 않는 부정 절(clause)의 위치 이동을 대상에서 제외하며, 수치의 다중집합은 동일한 값이 다른 책무로 이동했을 경우의 문맥을 가지지 못한다. 보증의 언어를 사용할 수 있는 곳은 이 정의된 클래스 내부뿐이다. 🧪 실측(n=38)
-
순차적 드리프트 통계(시계열·누적): 편집마다 경로 길이 $L(t)=\sum[1-\text{cos}(v_k, v_{k-1})]$와 동결된 기준점으로부터의 변위 $d_{\text{base}}(t)$를 기록하고, Page–Hinkley 통계로 '임계값 미만의 일방향 편집 누적'을 경보한다. 전편의 구멍 3(국소 평가의 gate가 침묵하는 계통 오차)은 국소 차분만을 보는 계기에는 보이지 않지만, 동결된 기준점과의 비교 또는 주회 횡단(cycle-wide)의 누적 통계에는 나타난다. 📐 도출
-
합성 파괴 코퍼스(synthetic corruption corpus)를 통한 교정: 대상으로부터 규칙 기반·시드 고정 방식으로 변이체(수치 섭동, 조건 삭제, 부정 반전)와 양성 변이체(공백 흔들림, 절 순서 변경)를 생성하여, 각 계기의 클래스별 분포와 ROC를 측정한다. 경보선은 양성 교정 집합의 $(1-\alpha)$ 분위수에 배치하며, '오경보율 $\le \alpha$'와 '검출률(실측값·보증 없음)'을 분리하여 제시한다. 단, 이 $\alpha$의 제어가 성립하는 것은 교정 분포상에서의 이야기이며(교환 가능성의 조건부), 합성 변이의 분포와 실제 운용의 고장 분포가 반드시 같지는 않다. 실제 분포로의 전이 가능성(transferability)은 별도의 검증 사항이다. 📐 도출(split conformal prediction) / ⬜ 실제 분포로의 전이는 미검증
삼축(연속·의미 / 이산·자구 / 시계열·통계)은 관측 원리를 달리하며, 한쪽이 침묵하는 고장 클래스에서 다른 쪽이 울리도록 선택되었다('직교'라고 부르고 싶지만, 축 간 독립성에 대한 실측은 아직 없다). 기존의 그물을 촘촘하게 만드는 것이 아니라, 그물이 쳐져 있지 않았던 다른 평면에 그물을 추가하는 것—이것이 다축화의 의미이다.
Loop로의 통합: 4개의 후크 포인트(hook points)
⬜ 미검증(설계만 완료. 제1단계 구현에서 검증 예정)
측정 계통은 'loop 안에서 상주하는 무언가'가 아니다. 호출 위치는 동기 3곳 + 비동기 1곳으로 한정된다. 그 외의 시간 동안 측정 계통은 단순한 DB일 뿐이다.
훅 1: 계약 확정 시 (loop 시작 전, 1회). 계약의 각 조항(목적, scope, 평가 조건, 예외)을 개별 노드로 등록하고, 조항 텍스트를 Frozen Embedding (동결 임베딩)으로 벡터화하여 저장한다. 이후 모든 측정의 원점(기준 벡터)이 여기서 동결된다.
훅 2: 각 회차의 종단 (gate 직후, 동기). Orchestrator (결정론적인 일반 코드)가 diff와 worker의 근거 신고(변경 사항 $\rightarrow$ 조항 ID 매핑)를 받아 그래프에 기록하고, 수리 검사 (Acceptance Inspection)를 동기 호출한다:
- 모든 diff가 근거 엣지(edge)를 가지고 있는가 (근거가 없는 변경은 수리 거부 — 「수리의 구속」 구현 지점)
- scope 경로 대조 (변경 파일이 계약의 scope 내에 있는가. 조항별로 허용 경로를 정의해 두면, 근거 조항과 경로의 대응까지 조항 단위로 대조 가능 — 서두의 예시 메커니즘)
- 수량·부정의 결정론적 대조 (계약의 수치·금지 사항이 결과물 측의 기술로 인해 변질되거나 소실되지 않았는가)
모두 결정론적이며 LLM이 필요하지 않으므로 빠르며, 회차의 레이턴시 (Latency) 내에 포함된다. 테스트가 '동작의 합격'을, 수리 검사가 '기록과 근거의 합격'을 판정하며, 양쪽을 모두 통과해야 비로소 회차가 수리된다.
훅 3: 정체 감지 시 (진단 입력 생성). 전진이 규정된 횟수만큼 지속되면 그래프에 쿼리를 던진다: 회차 1..N의 변경 시퀀스, 근거 엣지의 분포 (어느 조항에 변경이 집중되어 있는가), gate 결과와의 대응. 생로그(Raw Log)가 아닌 이 구조화된 시도 이력을, worker로부터 역할과 문맥이 분리된 진단자 — 가능하다면 다른 모델 계열 — 에 대한 입력으로 사용한다. 모델의 강함과 진단의 독립성은 별개의 축이며, 강력한 모델이라도 동일 계열이라면 맹점을 공유할 수 있다 (별고 C의 선언 2).
훅 4: 배치의 드리프트 (Drift) 모니터링 (비동기). 임베딩 계산은 여기에 집약한다. 측정하는 거리는 4개 계통이다:
| 계통 | A와 B | 포착하는 일탈 |
|---|---|---|
| a: 세로 | 조항의 기준 벡터 vs 해당 조항에 근거한 결과물 파편 | 계약으로부터의 침범 (단조 증가가 징후) |
| ... |
드리프트는 정의에 따라 단일 회차에서는 보이지 않으므로, 동기 경로에 넣을 이유가 없다. 추세 검사는 추세의 주기에 맞춰 실행한다.
신고와 재결의 분리: 주장과 사실을 그래프의 타입으로 구분하기
📐 도출
훅 2의 근거 엣지에는 설계상의 급소가 있다. "이 변경은 조항 3의 구현입니다"라는 근거 신고는 worker의 주장이지 사실이 아니다. 그럴듯한 오신고가 그래프에 사실의 얼굴로 새겨지면, 트레이서빌리티 (Traceability, 추적 가능성) 기반 자체가 오염된다. 그렇다고 의미의 정합성(조항 3의 올바른 구현인가)을 모든 변경에 대해 기계적으로 판정할 수는 없다.
해답은 3단계의 분리이다:
- worker는 근거 엣지를 「주장 (claimed)」으로 생성한다 (신고 비용 최소화: 변경 ID $\rightarrow$ 조항 ID + 한 줄 근거)
- 결정론적 계층이 기계적 검증이 가능한 부분을 재결(Arbitration)한다 (scope 대조, 엣지 타입의 합법성, 수량·부정 대조)
- 독립된 평가기가 샘플링을 통해 의미 정합성을 재결한다 (전수 검사가 아닌 공정 관리. 계통 c의 거리가 큰 엣지를 우선 샘플로 선정)
그리고 엣지에는 검증 상태를 타입으로 갖게 한다: claimed (신고만 됨) / mechanically-checked (결정론적 검증 완료) / semantically-sampled (의미론적 샘플링 완료). 그래프를 읽는 자는 어떤 엣지가 어느 강도로 검증되었는지를 항상 구분할 수 있다. 자신의 작업이 옳다는 신고를 본인에게 독점시키지 않는다 — 검사의 독립성이라는 오래된 규율을 엣지 생성에 적용한 것이다.
이상 판정: 절대 임계치는 존재하지 않는다, 오직 일탈만이 있을 뿐
📐 도출 / ⬜ 일부 미검증
임베딩 거리의 절대값은 태스크와 문맥에 의존하므로, 사전에 "0.1을 넘으면 이상"이라고 정할 수 없다. 판정은 두 가지 방식이다:
- 자기 이력으로부터의 일탈 (SPC 방식): 각 계통의 거리 분포를 이력에서 가져와, 관리도 (Control Chart)의 판정 규칙 (3$\sigma$ 초과, 연속 단조 경향 등)을 적용한다. 판정 규칙 자체는 결정론적이므로, 학습하지 않는 계층에 둘 수 있다.
- 합성 파괴를 통한 사전 교정: 앞서 언급한 Conformal 교정을 통해, loop 시작 전에 경보선을 긋는다. 이력을 쌓을 때까지 모니터링이 무력해지는 콜드 스타트 (Cold Start) 문제를 회피할 수 있다.
각 계통의 경보가 의미하는 상황과 조치의 대응 (설계):
- 계통 a의 단조 증가 → 침출 (Seepage). 조치: 해당 조항의 전수 의미 판정 + 계약의 의미 조건을 보다 기계 검증 가능한 형태로 재고정 (re-FIX) -
계통 b의 지속적인 고점 + gate 전원 통과 → 전진하는 것처럼 보이나 실질적으로는 정체. 조치: 정체로 간주하여 진단 가동 -
계통 c의 이상치(Outlier)가 특정 조항에 집중 → 해당 조항이 모호하여 신고가 추측에 의존하고 있다는 신호. 조치: 조항의 재고정 (re-FIX) -
계통 d의 점진적 증가 → 검증기 드리프트 (Verifier Drift). 가장 심각함. 조치: 즉시 중단 + 테스트 변경의 전 주기 소급 적용 + 테스트를 인간 승인이 필수적인 보호 범위 (protection scope)로 옮기는 계약 개정
⬜ 주의: 계통 b에 「방황 (Wandering)」이라는 이름을 부여했으나, 이 통계량(경로 길이/변위 비)이 「수정해야 할 실제 과정」을 정말로 가리키는지에 대한 타당성 검증은 미완료 상태이다. 검증 수단은 합성 파괴 교정 (Synthetic Destruction Calibration)의 통계량 버전(의도적으로 왕복 재작성을 시킨 이력에서는 신호가 울리고, 건전한 정교화 이력에서는 울리지 않음을 확인하는 것)이다. 타당성이 확인될 때까지, 운용 로그에는 이름이 아닌 생(raw)의 수치로 기록한다 ("셀 그룹 X에서 change/move의 왕복이 N회 지속, 경로 길이/변위 비 Y"). 이는 읽기 값과 해석을 결합시키지 않기 위함이다.
요약 — 이 장치군이 제공하는 것과 제공하지 않는 것
전편의 구멍(Gap)과의 대응을 닫으며:
| 전편의 구멍 | 대책 | 원리 |
|---|---|---|
| 계통 오차의 누적 (구멍 3) | 순차적 드리프트 통계 (계통 a/b) | 단일 회차에는 보이지 않는 편향이 시간축의 누적 통계에 나타남 |
| ... |
여기까지를 한 문장으로 압축하면: loop의 편향을, loop 외부의, loop와는 다른 원리를 가진, 표류하지 않는 척도로, 투영되는 범위만큼만 측정한다——투영되지 않는 범위를 명시한 상태에서.
참고로, 제안 측의 harness에 이미 배치되어 있는 제동 장치(worktree를 통한 격리, 상태의 외부화, 생성과 검사의 분리, 예산 제한)는 주로 기지의 실패를 국소화하고 회복 가능하게 만들기 위한 **방호 (Protection)**이다. 본고에서 추가한 것은 그 위의 측정 (Measurement)——수락된 결과물에 발생하는 장기적인 의미 드리프트(Semantic Drift)와 검사기 자체의 표류를 관측 가능하게 하는 계층——이며, 방호와 측정은 대체 관계가 아니다. 어느 한쪽만으로는 전편의 구멍을 메울 수 없다.
마지막 한정구는 수식이 아니다. 이 장치군은 왼쪽 끝의 「예지 센서」가 아니며, 이것으로 계(System)가 「안전해지는」 것도 아니다. 임베딩에 투영되지 않는 의미 변화, 차분에 투영되지 않는 가중치의 고유한 맹점, 감시 체계의 중심에 계속 남는 확률적인 의미 판정——구조적으로 메울 수 없는 구멍이 남는다. 그 선언은 별도의 글(C)에서 수행한다. 메우는 방법에 관한 글을, 메울 수 없는 것에 관한 글과 함께 읽어주길 바란다. 방호를 측정으로 대체하려는 유혹은, 안전 공학이 반복해서 밟아온 가장 유서 깊은 왼쪽 끝이기 때문이다.
참고 문헌
- Addy Osmani, "Loop Engineering" (2026-06-07). https://addyosmani.com/blog/loop-engineering/
- legixy (Apache-2.0). https://github.com/Layer2-Architect/legixy
- E. S. Page, "Continuous Inspection Schemes" (1954) / D. V. Hinkley (1971) — Page–Hinkley 검정
- Kryscinski et al., "Evaluating the Factual Consistency of Abstractive Text Summarization" (FactCC, EMNLP 2020) — 규칙적 오염에 의한 교정의 선행 사례
- Vovk et al., "Algorithmic Learning in a Random World" (2005) — split conformal prediction
(전편 A · 별도의 글 C로의 링크는 공개 후 추가 예정)
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기