이 문서는 이 저장소에서 브랜치, 이슈, PR, 리뷰를 다룰 때 기본으로 따르는 작업 규칙을 정리한 문서입니다.
- 작업 브랜치는 가능한 한 이슈를 먼저 만든 뒤 생성합니다.
- 브랜치 이름은
타입/issue-{번호}/{작업폴더}-{짧은-설명}형식을 기본으로 사용합니다. 타입은 아래 중 하나를 우선 사용합니다.feat: 기능 추가나 사용자 동작 변화가 있는 작업bug: 버그 수정, 회귀 수정, 오동작 보정docs: 문서 수정chore: 설정, 정리, 운영성 작업
작업폴더는 실제로 가장 많이 바뀌는 폴더 이름을 넣습니다.- 예:
codex-dictation,experiments,tools,repo
- 예:
- 여러 폴더를 같이 건드려도 브랜치에는 대표 폴더 하나만 넣고, 공통 작업이면
repo를 사용합니다. - 브랜치 이름만 봐도 어떤 이슈인지, 어떤 성격의 작업인지, 주로 어디를 만지는 작업인지 바로 추적할 수 있어야 합니다.
- 예시는 아래와 같습니다.
bug/issue-29/codex-dictation-path-sanitizationdocs/issue-30/repo-branch-conventionfeat/issue-31/codex-dictation-always-listen-improvementchore/issue-32/tools-log-cleanup
- 이슈 제목은 작업 단계와 의도를 빠르게 읽을 수 있게
[분류] 제목형식을 기본으로 사용합니다. - 우선 추천하는 분류는 아래와 같습니다.
[기획]: 구현 전에 방향 정리, 설계, 아이디어 검토가 필요한 건[작업]: 바로 구현하거나 처리 가능한 일반 작업[버그]: 사용자 관점 오동작, 회귀, 수정이 필요한 문제[정리]: 문서, 규칙, 명명, 범위, 표현처럼 비교적 가벼운 정돈[리팩토링]: 기능 변화 없이 내부 구조, 책임 분리, 중복 제거를 개선하는 건[유지보수]: 안정화, 의존성 정리, 경고 제거, 테스트 보강, 운영성 개선
- 이슈 제목 분류는 사람 중심 분류입니다.
- 예: 지금 무엇을 논의하는지, 당장 구현할 건지, 먼저 설계할 건지 빠르게 구분
- 브랜치와 PR의
feat,bug,docs,chore,refactor는 기술 중심 분류입니다.- 예: 실제 변경의 종류와 구현 성격을 코드 작업 흐름에서 구분
- 즉, 이슈 제목과 브랜치/PR 타입은 서로 대체 관계가 아니라 역할이 다릅니다.
- 예시는 아래와 같습니다.
- 이슈:
[기획] always-listen 자동 감도 튜닝 - 이슈:
[작업] always-listen 분할/끝음 회귀 테스트 추가 - 이슈:
[버그] 특정 앱에서 출력 직후 입력 컨텍스트 초기화 - 이슈:
[정리] 브랜치 이름 규칙 문서화 - 이슈:
[리팩토링] always-listen 처리 책임 분리 - 이슈:
[유지보수] 로그 마스킹 옵션과 공유용 출력 정비 - 브랜치:
feat/issue-40/codex-dictation-auto-tuning - 브랜치:
bug/issue-41/codex-dictation-output-context-reset
- 이슈:
- GitHub에서는 PR 작성자가 자기 PR에
APPROVE또는REQUEST_CHANGES리뷰를 직접 남길 수 없습니다. - 다만
COMMENTED리뷰와 일반 PR 코멘트는 남길 수 있으므로, 자기 PR을 검토할 때는 기본적으로COMMENTED리뷰를 사용합니다. - 이때 리뷰 본문 첫 줄에 의도된 판정을 아래 형식으로 명시합니다.
[의도된 판정] APPROVE[의도된 판정] REQUEST_CHANGES
- 즉, GitHub의 실제 리뷰 상태는
COMMENTED로 남더라도, 본문 첫 줄을 통해 검토 의도를 명확히 기록합니다. - 통과 의도일 때는 테스트 결과, 확인 범위, 머지해도 되는 이유를 함께 적습니다.
- 수정 필요 의도일 때는 핵심 문제, 회귀 위험, 필요한 수정 방향을 함께 적습니다.
- 필요하면 별도의 일반 PR 코멘트로 부연 설명을 달 수 있지만, 판정 성격을 남기는 기본 기록은
COMMENTED리뷰 본문에 남깁니다. - 예시는 아래와 같습니다.
[의도된 판정] APPROVE검토 결과 추가 이슈는 보이지 않으며, 현재 기준으로 머지 진행이 가능합니다.[의도된 판정] REQUEST_CHANGESunknown/general 타깃에서 기존 출력 모드 회귀 가능성이 있어 수정 후 다시 확인이 필요합니다.
- 리뷰에서 사실상
REQUEST_CHANGES성격으로 막힌 PR은 아래 순서로 다시 정리합니다.- 대상 브랜치에 최신
main을 먼저 반영하고 충돌이 있으면 해결합니다. - 기존 리뷰 코멘트에서 지적된 문제를 코드와 테스트 기준으로 먼저 해결합니다.
- 관련 테스트를 다시 실행해 수정 내용과 회귀 여부를 확인합니다.
- 가능하면 처음 구현한 사람과 분리된 검토자 또는 별도 작업 단위로 다시 리뷰합니다.
- 재리뷰 결과에 따라
COMMENTED리뷰로 최종 판정을 기록합니다.
- 대상 브랜치에 최신
- 최종 판정 기록은 반드시 셀프 리뷰 규칙을 따릅니다.
- 통과면 첫 줄에
[의도된 판정] APPROVE - 미통과면 첫 줄에
[의도된 판정] REQUEST_CHANGES
- 통과면 첫 줄에
- 통과 판정일 때만 머지합니다.
- 미통과 판정이면 머지하지 않고, 핵심 이슈와 다음 수정 방향을 리뷰 본문에 남긴 채 PR을 유지하거나 보류합니다.
- 여러 PR이 동시에 막혀 있으면 가능한 한 PR별로 작업 공간과 검토 단위를 분리해 병렬로 처리합니다.
- 충돌 해결만 끝난 상태에서는 바로 머지하지 않고, 원래 리뷰에서 걸린 내용이 실제로 해소됐는지까지 확인한 뒤 판단합니다.
- 즉, 이 절차의 기준은
충돌 해결이 아니라리뷰 지적 해소 + 재검증 완료입니다.