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는 사후 확인이 아니라, 완료와 중간 교정을 같은 기준으로 묶는 종료 계약이다.