001 / 만든 이유
oah는 각자에게 맞고 AI가 발전하는 만큼 함께 바뀌는 개발 환경을 만들도록 돕습니다. 가져다 고쳐 쓸 수 있는 참고 구현이자 가이드라인입니다. 코드를 만드는 것만으로 작업이 끝나지는 않습니다. 어디까지 바꿀지 정하고, 결과를 검증하고, 다음 세션이 읽을 기록도 남겨야 합니다. oah는 이 과정들을 연결해 하나의 요청이 작업과 확인, 기록까지 이어지게 합니다.
작업 정의v0.3.0에서 사용 가능
패킷에는 작업 하나에 관한 모든 것이 들어 있다. 의도, 범위, 계획, 완료 게이트, 보고 형식이다. 의도는 문제, 원하는 결과, 확인할 수 있는 성공 조건을 적고, 승인해야 리스에 묶이며, 모든 단계와 워커, 리뷰어에게 바이트 그대로 간다. 모든 보고는 성공 조건마다 AC 줄 하나로 끝난다.
목표가 대화 안에만 있으면 단계와 리뷰어마다 조금씩 다른 목표로 일하고, “끝났다”는 실제로 요청한 것에서 멀어진다.
oah packet new <task>가 템플릿으로 .oah/tasks/<task>/PACKET.md를 만들고 단계별 경로를 점수 매겨 ## Plan에 쓴다. oah packet check <task>가 무엇이 빠졌는지 알려 준다.AC1, AC2, …)로 이뤄진다. 성공 조건은 확인할 수 있는 결과여야 하고 과정 단계여서는 안 된다.Status: draft는 리스에 묶을 수 없다(OAH_INTENT_NOT_ACCEPTED). Intent-ID는 바뀌지 않고, 목표가 바뀌면 Revision을 올려 다시 승인하고 다시 묶는다.oah intent show <task>가 결속 상태를 current, stale, missing, unbound 가운데 하나로 보여 준다.INTENT <id>@r<n> <digest> 한 줄과 성공 조건마다 AC<n>: met|unmet|deferred — <근거> 한 줄로 끝나고, oah finish --return과 리뷰 라운드마다 대조한다.oah preflight --task T는 브랜치가 뒤처졌거나 다른 리스가 경로를 잡고 있으면 멈추고, 작업 트리가 더럽거나 범위를 건드린 새 커밋이 있으면 경고하며, 무엇을 증명하지 않았는지 밝힌다.따라 하기 예제 작업에 채운 의도.
Status: accepted
### Problem
`python hello.py` always prints `Hello, world!`; it cannot greet a person by name.
### Desired outcome
`python hello.py Ada` prints `Hello, Ada!`, and without a name it still prints `Hello, world!`.
### Success conditions
- AC1: `python hello.py Ada` prints `Hello, Ada!`.
- AC2: the unit tests pass, including a test for a name.- repo. oah packet new <task> --scope <path>가 채워 준다.## Scope가 비어 있으면 OAH_SCOPE_EMPTY로 경고하고 oah start --packet이 거절한다.OAH_PACKET_PLACEHOLDER로 거절한다.OAH_INTENT_NOT_CURRENT). 되돌리거나, Revision을 올려 승인하고 다시 묶는다.OAH_INTENT_RETURN_INVALID로 거절한다.ABORT 판정(종료 코드 2)은 먼저 고쳐야 한다.