Skip to content

Design(설계)

Gate: 사용자가 명세를 승인할 때까지 코드 없음.

무엇을 만들어야 할지 알 때까지 한 번에 하나씩 질문한다. 2~3가지 접근 방식과 트레이드오프를 제안하고 하나를 추천한다. 그런 다음 명세를 작성한다.

명세 = 결정 목록

명세는 이 변경에 대한 미해결 질문에 답한다. 일반적인 것들:

  • 계약 / 인터페이스?
  • 데이터 형태?
  • 실패 모드?
  • 범위 외?
  • 무엇으로 테스트할 것인가?
  • 아키텍처?

관용적으로 명세를 작성한다.

질문 없음 → 섹션 없음. Risks / Non-goals가 비어있으면 채우지 않는다.

선언을 사용하고, 서술은 사용하지 않는다:

contract:  <인터페이스>
invariant: <무엇이 성립해야 하는가>
test:      <어떻게 알 것인가>
deferred:  <지금은 결정 안 함>

코드는 경로로 참조하고, 절대 붙여넣지 않는다.

인계 전에 구현에 영향을 미치는 결정만 닫는다: 계약, 데이터, 실패, 테스트. 미해결된 Working notes는 결정, deferred, 또는 질문이 된다.

2계층, 1파일: docs/staging/specs/YYYY-MM-DD-<topic>.md

  • 상단: 결정, 계약, 불변 조건 (영구적).
  • ## Working notes: 초안, 미해결 질문 (ship 시 삭제).

Roadmap (범위가 ≥3 마일스톤에 걸치는 경우)

한 번에 전부 계획하기엔 너무 클 때 명세에 ## Roadmap 추가:

## Roadmap
- [ ] M1: <한 줄 목표>  ← 지금 상세 계획
- [ ] M2: <한 줄 목표>  ← stub
- [ ] M3: <한 줄 목표>  ← stub

마커는 필수다. 현재 마일스톤에 ← 지금 상세 계획, 나머지는 모두 ← stub. 스텁은 의도이지 약속이 아니다. 전개 전에 업데이트한다.

Gate

docs/staging/specs/YYYY-MM-DD-<topic>.md가 디스크에 존재하고 사용자가 확인한 후 plan에 인계한다.

두 가지 출구 중 하나:

  • → design: 방향이 해결해야 할 문제 → plan으로 상세 작업.
  • → archive: 방향이 지식 산출물 (역공학 발견, 프로토콜 명세), 직접 아카이브.

Released under the MIT License.