← 전체 기능

작업 정의v0.3.0에서 사용 가능

의도, 범위와 패킷

패킷에는 작업 하나에 관한 모든 것이 들어 있다. 의도, 범위, 계획, 완료 게이트, 보고 형식이다. 의도는 문제, 원하는 결과, 확인할 수 있는 성공 조건을 적고, 승인해야 리스에 묶이며, 모든 단계와 워커, 리뷰어에게 바이트 그대로 간다. 모든 보고는 성공 조건마다 AC 줄 하나로 끝난다.

필요한 상황

목표가 대화 안에만 있으면 단계와 리뷰어마다 조금씩 다른 목표로 일하고, “끝났다”는 실제로 요청한 것에서 멀어진다.

동작 방식

  1. oah packet new <task>가 템플릿으로 .oah/tasks/<task>/PACKET.md를 만들고 단계별 경로를 점수 매겨 ## Plan에 쓴다. oah packet check <task>가 무엇이 빠졌는지 알려 준다.
  2. 의도는 Problem, Desired outcome, Success conditions(AC1, AC2, …)로 이뤄진다. 성공 조건은 확인할 수 있는 결과여야 하고 과정 단계여서는 안 된다.
  3. Status: draft는 리스에 묶을 수 없다(OAH_INTENT_NOT_ACCEPTED). Intent-ID는 바뀌지 않고, 목표가 바뀌면 Revision을 올려 다시 승인하고 다시 묶는다.
  4. oah intent show <task>가 결속 상태를 current, stale, missing, unbound 가운데 하나로 보여 준다.
  5. 모든 보고는 INTENT <id>@r<n> <digest> 한 줄과 성공 조건마다 AC<n>: met|unmet|deferred — <근거> 한 줄로 끝나고, oah finish --return과 리뷰 라운드마다 대조한다.
  6. 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.

요구 사항

  • 경로가 하나 이상 있는 Scope, 또는 저장소 전체를 뜻하는 - 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)은 먼저 고쳐야 한다.

원문 문서

관련 기능