001 / 만든 이유
oah는 각자에게 맞고 AI가 발전하는 만큼 함께 바뀌는 개발 환경을 만들도록 돕습니다. 가져다 고쳐 쓸 수 있는 참고 구현이자 가이드라인입니다. 코드를 만드는 것만으로 작업이 끝나지는 않습니다. 어디까지 바꿀지 정하고, 결과를 검증하고, 다음 세션이 읽을 기록도 남겨야 합니다. oah는 이 과정들을 연결해 하나의 요청이 작업과 확인, 기록까지 이어지게 합니다.
검증·리뷰v0.3.0에서 사용 가능
oah land --check는 리뷰한 head를 그대로 반영해도 되는지 판단하고 리스, 의도, 리뷰, 게이트, 영향, 필수 검사, fast-forward, 비밀 검사, CI마다 한 줄씩 보여 준다. oah land --merge는 모든 검사를 다시 돌리고 사용자에게 확인을 받은 뒤에만 원격 기본 브랜치를 정확히 그 head로 fast-forward한다.
수렴한 리뷰, 통과한 CI, 비밀 검사 없이 병합하는 실수는 쉽게 일어나고, 에이전트가 스스로 push하거나 병합해서는 안 된다.
oah land --check --task T가 lease, intent, review, gates, impact, required-checks, fast-forward, scan, ci 검사마다 한 줄씩 보여 준다.gh로 HEAD의 check run과 commit status를 읽는다. 최신 결과가 모두 성공이어야 하고(check run은 neutral·skipped도 허용), 설정된 필수 검사마다 결과가 있어야 한다.oah land --merge --task T는 모든 검사를 다시 돌리고 y 입력으로 확인을 받은 뒤, 원격 기본 브랜치가 방금 확인한 커밋과 여전히 같을 때만 정확히 HEAD로 fast-forward한다.gh가 없거나 결과가 없거나 필수 검사 결과가 빠지면 CI는 unverified이고 기본적으로 반영을 막는다(OAH_LAND_CI_UNVERIFIED). 두 명령에 --accept-unverified-ci "<reason>"을 붙이면 head마다 예외를 기록하지만 CI는 unverified로 남고 통과로 세지 않는다.검사한 뒤 확인을 거쳐 반영한다(따라 하기 예제 9단계).
oah land --check --task hello-name
oah land --merge --task hello-nameOAH_LAND_SCAN_REQUIRED로 실패하고 아무것도 push하지 않는다.OAH_LAND_CI_FAILED)나 진행 중·조회 불가(OAH_LAND_CI_PENDING)는 반영을 막고, 어떤 예외로도 이것과 다른 실패한 검사를 우회하지 못한다.OAH_LAND_REVIEW_REQUIRED).[land] 정책은 대상 브랜치에 커밋된 .oah/config.toml이 정한다. 작업 head에서 느슨하게 하면 OAH_LAND_POLICY_LOOSENED로 거절한다.