Acceptance Gate
개요
AI 작업에서 done은 선언으로 충분하지 않다.
완료는 말이 아니라 gate로 닫혀야 한다.
그래서 acceptance gate의 핵심은 단순하다.
이 작업이 정말 끝났는지를 기계가 같은 방식으로 반복 확인할 수 있는가
이 문서는 transition처럼 왜 AI 코딩이 흔들리는지를 다시 설명하지 않는다.
harness/ai 적용 레이어에서 완료 조건을 어떤 gate로 닫을지 바로 다룬다.
acceptance gate란 무엇인가
acceptance gate는 task contract의 done condition을 실제 검증 가능한 형태로 만든 것이다.
예를 들면 다음이 acceptance gate가 된다.
- 특정 lint / analyzer 통과
- changed scope 기준 test subset 통과
- 금지된 import나 direct access 없음
- required artifact drift 없음
- 지정된 snapshot이나 golden output 일치
핵심은 설명이 아니라 반복 가능성이다.
왜 필요한가
acceptance gate가 없으면 AI는 다음 상태를 자주 혼동한다.
- 에러가 줄었으니 끝난 것 같다
- 테스트 하나만 통과했으니 충분한 것 같다
- 출력이 그럴듯하니 이제 멈춰도 될 것 같다
하지만 이런 종료는 구조와 무관한 착시일 수 있다. 그래서 완료 조건은 기계가 다시 확인할 수 있어야 한다.
좋은 acceptance gate의 조건
narrow하다
현재 task와 직접 관련된 gate여야 한다. 너무 큰 gate는 feedback를 흐리고 loop를 느리게 만든다.
deterministic하다
같은 상태에서 같은 결과가 나와야 한다. flaky한 gate는 AI에게 잘못된 학습 표면을 만든다.
canonical path를 강화한다
단순 pass/fail보다, 어떤 규칙을 만족해야 하는지가 드러나야 한다.
task contract와 정렬된다
범위 밖 문제를 gate에 섞으면 AI는 unrelated change를 하게 된다.
나쁜 acceptance gate 패턴
- 전체 시스템 빌드만 적어두고 종료 조건을 뭉갠다
- 사람이 눈으로 보면 안다고 말한다
- flaky한 통합 테스트를 단일 종료 조건으로 둔다
- task 범위와 무관한 실패를 한 버킷으로 섞는다
- 구조 위반보다 cosmetic issue가 더 앞에 온다
이런 gate는 완료를 보장하기보다, 종료 조건을 더 모호하게 만든다.
acceptance gate와 feedback loop의 관계
gate는 마지막에만 쓰는 것이 아니다. 좋은 gate는 loop 안으로 들어와야 한다.
- task 시작 시 어떤 gate를 통과해야 하는지 명시하고
- 작업 중 같은 gate를 좁은 범위에서 반복 확인하고
- 끝날 때 같은 gate로 종료를 닫는다
즉 acceptance gate는 finish line이면서, 동시에 loop를 정렬하는 기준점이다.
pre-commit과 auto-correction에 주는 영향
- pre-commit hook은 가장 현실적인 local acceptance gate 중 하나다
- auto-correction loop는 acceptance gate가 좁고 명확할수록 안정적이다
- machine-readable failure가 있어야 gate 결과가 바로 수정 입력이 된다
그래서 acceptance gate는 다른 문서들의 보조 개념이 아니라 중심 연결점에 가깝다.
AI 코딩에서 왜 더 중요해지는가
AI는 종료 기준이 약하면 멈춰야 할 때 계속 시도하거나, 반대로 아직 안 끝났는데 일찍 멈춘다.
acceptance gate가 분명하면
AI는 적어도 무엇을 통과해야 끝나는지를 같은 방식으로 배운다.
실무 질문
- 완료 조건이 말이 아니라 command나 rule로 표현되는가
- gate가 task 범위와 직접 정렬되는가
- flaky하거나 너무 큰 gate가 종료 조건을 흐리지 않는가
- 같은 gate를 loop 안에서 반복 확인할 수 있는가
- gate failure가 바로 수정 입력으로 바뀌는가
요약
좋은 acceptance gate는 다음을 만족한다.
- narrow하고
- deterministic하며
- task contract와 정렬되고
- loop 안에서 반복 가능하다
하네스의 AI 적용에서 acceptance gate는 사후 확인이 아니라, 완료와 중간 교정을 같은 기준으로 묶는 종료 계약이다.