001 / 만든 이유
oah는 각자에게 맞고 AI가 발전하는 만큼 함께 바뀌는 개발 환경을 만들도록 돕습니다. 가져다 고쳐 쓸 수 있는 참고 구현이자 가이드라인입니다. 코드를 만드는 것만으로 작업이 끝나지는 않습니다. 어디까지 바꿀지 정하고, 결과를 검증하고, 다음 세션이 읽을 기록도 남겨야 합니다. oah는 이 과정들을 연결해 하나의 요청이 작업과 확인, 기록까지 이어지게 합니다.
검증·리뷰v0.3.0에서 사용 가능
게이트는 “끝났다”를 증거가 남는 검사로 바꾼다. 확인할 수 있는 결과 하나, 그것을 증명하는 명령, 그 명령이 내야 하는 출력으로 이뤄진다. oah gates check는 사용자가 승인한 뒤 unlazy로 CHECK 줄을 실행하고, 통과한 게이트에 증거와 함께 체크 표시를 붙여 입력에 묶는다. oah finish는 충족하지 못한 게이트를 거절한다.
에이전트가 “끝났다”고 말해도 아무것도 증명되지 않는다. 기록된 검사가 없으면 무엇이 통과했는지 알 수 없고, 나중의 변경이 한때 되던 결과를 조용히 깨뜨릴 수 있다.
oah gates new <task>가 템플릿으로 .oah/tasks/<task>/GATES.md를 만들고, oah gates lint <task>가 각 게이트가 실패할 수 있는지 판단한다.oah gates check <task>는 처음 실행할 때 CHECK 명령을 보여 주고 사용자의 승인(--approve)을 기다린다.gates check가 쓰는 GATES.summary.md가 경로 없이 커밋되는 기록이다. 원장 자체는 git에 들어가지 않는다.oah finish는 충족하지 못한 게이트를 거절한다(OAH_GATES_UNMET). 정말 불가능한 게이트는 ABANDON: G<n> <이유>로 적어 사용자에게 넘기고 지우지 않는다.원장에 적힌 게이트 하나(개념 문서).
- [ ] G1: `python hello.py Ada` prints `Hello, Ada!`
CHECK: python hello.py Ada
EXPECT: Hello, Ada!
EVIDENCE: pendingoah init --with-unlazy로 설치하며 Node.js 16 이상이 필요하다.cmd.exe와 sh에서 똑같이 돌아야 한다. grep이나 파이프 대신 python, node, oah check(예: oah check contains FILE TEXT)를 쓴다.OAH_UNLAZY_MISSING). oah finish --allow-structural은 체크 표시만으로 끝내며 미검증으로 기록된다.[gates] stop_agents로 범위를 좁히면 검사가 oah finish로 옮겨질 뿐 사라지지 않는다.OAH_GATES_SUMMARY_STALE이다. oah gates check <task>를 실행하고 다시 쓴 요약을 커밋한다.