Image: AI generated
고삐 없는 말
AI 코딩 도구가 빨라졌다. 30초 만에 로그인이 나오고, 2분이면 결제가 붙는다. 3주 만에 MVP가 출하된다.
3개월이 지나면 무너진다.
AI가 결제 로직을 “정리"하면서 할인 계산을 바꾼다. 리팩토링을 시켰더니 공개 API의 필드명이 달라진다. 새 기능을 추가했더니 인증이 깨진다. Carnegie Mellon 연구(MSR 2026)에 따르면 AI 코딩 도구 도입 후 코드 복잡도가 41% 영구 증가한다. Google DORA 보고서(2025)는 AI 도입 25% 증가마다 전달 안정성 7.2% 감소를 보고한다.
문제는 AI가 멍청해서가 아니다. 고삐가 없어서다.
하네스는 울타리다
업계는 이 문제에 “하네스 엔지니어링"으로 답했다. 린터, 포매터, CI/CD, 프로젝트 구조, 코딩 가이드라인. 에이전트가 밖으로 나가지 못하게 울타리를 친다.
울타리는 방향을 잡지 않는다. 에이전트가 울타리 안에서 무엇을 하든 — 기존 로직을 덮어쓰든, 타입을 바꾸든, 상태 전이를 생략하든 — 린터는 통과한다. 포매터도 통과한다. CI도 통과한다. 코드가 “깨끗하지만 틀린” 상태로 프로덕션에 도달한다.
안장은 있다. 사람은 탄다. 그런데 고삐가 없어서 허벅지 힘으로 버티다가 3개월 만에 떨어진다.
Reins Engineering
Reins Engineering은 AI 에이전트에게 결정론적 계약을 부여하고, 계약 위반 시 진행을 차단하는 엔지니어링 접근이다.
세 가지 요소로 구성된다:
1. 결정론적 피드백
에이전트에게 의견이 아니라 사실을 준다. “이거 좀 이상한데"가 아니라 “line 41: field name mismatch, expected ‘user_id’, got ‘userId’”. 아첨할 여지가 없는 피드백. TDAD 연구(arxiv 2026)에 따르면, “TDD를 하라"는 절차적 지시는 회귀를 악화시키고(6.08% → 9.94%), 구체적 테스트 파일을 맥락에 제공하면 회귀가 70% 감소한다(6.08% → 1.82%).
2. 계약 잠금 (Ratchet Pattern)
검증을 통과하면 잠근다. Hurl 테스트가 API 행위를 plain text로 선언하고, CI에서 매 커밋마다 실행한다. 통과한 테스트는 삭제할 수 없다. 에이전트는 자유롭게 코드를 바꿀 수 있지만, 행위를 바꿀 수 없다. 드리프트가 구조적으로 억제된다.
3. 결정과 구현의 분리
코드에 섞여 있는 세 가지 — 사용자 결정, 비즈니스 로직, 구현 세부사항 — 를 분리한다. 결정은 선언적 명세(OpenAPI, DDL, 상태 다이어그램)에 살고, 구현은 AI가 자유롭게 생성한다. AI가 결정을 세부사항으로 착각하고 덮어쓸 수 없다. 결정의 생존이 모델 크기와 무관해진다.
진화 계보
프롬프트 엔지니어링 → 말을 잘 하면 된다
컨텍스트 엔지니어링 → 맥락을 잘 주면 된다
하네스 엔지니어링 → 구조로 가두면 된다
Reins Engineering → 방향을 잡아주면 된다
각 단계가 이전 단계의 한계에서 태어났다. 프롬프트만으로는 일관성이 없었다. 컨텍스트를 줘도 에이전트가 멋대로 했다. 울타리를 쳐도 울타리 안에서 드리프트가 발생했다.
Reins Engineering은 울타리가 아니라 고삐다. 에이전트의 자유를 제한하지 않으면서, 목적지에 도달하게 한다.
더 큰 모델이 답이 아닌 이유
“GPT-6이 나오면 해결될 거야.”
해결되지 않는다. 문제는 모델의 지능이 아니라 매체다. 코드라는 매체는 결정과 구현을 구분하지 않는다. 어떤 모델이든 코드를 읽으면 결정과 세부사항이 뒤섞인 텍스트를 본다.
4.5B 로컬 모델(Gemma4)이 결정론적 피드백 + 예시 컨텍스트를 받으면 0 에러로 SSOT를 편집한다. 프론티어 모델이 raw code를 편집하면 드리프트가 발생한다. 차이는 지능이 아니라 구조다.
모델을 바꾸지 말고, 계약을 추가하라.
실증
yongol은 Reins Engineering의 구현체다. 10개 선언적 명세(SSOT)의 정합성을 287개 규칙으로 교차 검증하고, 코드를 생성한다.
ZenFlow 벤치마크 — 멀티테넌트 워크플로우 자동화 SaaS. 32 엔드포인트, 14 테이블, 47 Hurl 요청. 11/11 단계 통과. 기능을 추가할수록 속도가 느려지지 않았다. 기존 테스트가 깨지지 않았다.
로컬 4.5B 모델로도 동작하는 백엔드 코드 생성에 성공했다. 비용 $0. 오프라인. Reins가 모델의 부족을 메운다.
고삐 없는 하네스는 울타리일 뿐이다
AI는 이미 충분히 강하다. 부족한 것은 방향이다.
울타리를 높이 쌓으면 에이전트는 울타리 안에서 더 빠르게 표류한다. 고삐를 잡으면 에이전트는 목적지까지 달린다.
Reins Engineering — structured deterministic validation for AI agents.
관련 글
- yongol — AI 코딩 SaaS의 용골 — Reins Engineering의 구현체. 10개 SSOT로 풀스택 정합성을 강제한다.
- Hurl이 바이브 코딩의 드리프트를 막는다 — Hurl + 래칫으로 API 행위를 잠근다.
- Ratchet Pattern — 에이전트가 끝까지 가게 만드는 방법 — 결정론적 검증과 래칫 잠금의 이론적 배경.
- IFEval을 역이용하는 래칫 코드 — 아첨 편향을 이용한 피드백 루프.
출처
- Cursino, D. et al. (2026). “Speed at the Cost of Quality? The Impact of AI Coding on Software.” MSR 2026. arxiv.org/abs/2511.04427
- Google Cloud (2025). DORA Report 2025. cloud.google.com
- Wang, Z. et al. (2026). “TDAD: Test-Driven Agentic Development.” ACM AIWare 2026. arxiv.org/abs/2603.17973
- Karpathy, A. (2026). “From Vibe Coding to Agentic Engineering.” thenewstack.io