docs(dev): 비-메인스트림 브랜치 커밋 표준 승인 정책 추가

비-메인스트림 브랜치(main/master·보호 브랜치 외)에서는 작업 단위마다 매번
묻지 않고 커밋하도록 표준 승인(durable authorization)을 명문화. 하니스
기본규칙('사용자 요청 시에만 커밋')과 모순 없음 — 프로젝트 지침이 사전·상시
승인을 부여하는 형태. push 는 브랜치 무관 명시 요청 한정, 메인스트림은
branch-first 유지.

- docs/development/git-workflow.md: 정본 신설. 브랜치 분류·표준 승인·push
  제외·커밋 단위·Conventional Commits + Co-Authored-By 트레일러 규약.
- CLAUDE.md 작업 원칙: 표준 승인 요지 2불릿 + 정본 링크.
- docs/development/index.md: 정본 등재.

ADR 아닌 development 규칙으로 분류(가역적 운영 절차). 부수 발견: 보고서들이
참조하는 ADR-0010 은 docs/adr/ 에 실재하지 않는 phantom 참조.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
이정수 2026-06-22 16:59:09 +09:00
parent 3593c82d78
commit 5a8080ddd3
3 changed files with 42 additions and 0 deletions

View File

@ -12,6 +12,8 @@
## 작업 원칙 ## 작업 원칙
- 사용자 변경을 보호한다. 작업 전후로 `git status --short`를 확인한다. - 사용자 변경을 보호한다. 작업 전후로 `git status --short`를 확인한다.
- 비-메인스트림 브랜치(메인스트림 = `main`/`master` 및 보호 브랜치, 그 외 `feat/*`·`fix/*`·`chore/*`·`docs/*` 등 작업 브랜치)에서는 커밋이 표준 승인된다. 작업 단위가 끝날 때마다 사용자에게 매번 묻지 않고 커밋하며, 메시지 규약·커밋 단위·트레일러는 `docs/development/git-workflow.md`를 따른다. `push`는 브랜치와 무관하게 사용자 명시 요청 시에만 수행한다.
- 메인스트림 브랜치에서는 커밋 표준 승인이 적용되지 않는다. 기본 브랜치(`main`) 위라면 먼저 작업 브랜치를 생성한 뒤 작업한다.
- 검색은 우선 `rg`를 사용한다. - 검색은 우선 `rg`를 사용한다.
- 문서-only 분석 요청에서는 `src/``pom.xml`을 수정하지 않는다. - 문서-only 분석 요청에서는 `src/``pom.xml`을 수정하지 않는다.
- 보안 발견 사항은 `docs/analysis/``file:line` 근거와 함께 기록한다. - 보안 발견 사항은 `docs/analysis/``file:line` 근거와 함께 기록한다.

View File

@ -0,0 +1,39 @@
# Git Workflow — 브랜치 / 커밋 / push 정책
반복 적용되는 git 작업 규칙의 정본(canonical)이다. CLAUDE.md '작업 원칙'의 커밋 관련 불릿은 이 문서를 가리킨다. 하니스 기본규칙("Commit or push only when the user asks. If on the default branch, branch first.")을 프로젝트 차원에서 보충·명시화한다.
## 브랜치 분류
- **메인스트림 브랜치**: `main`, `master`, 그리고 origin 상의 보호 브랜치(릴리스/배포 브랜치 등). 현재 프로젝트 default 는 `main`(`.git/config`, `origin/HEAD` 기준).
- **비-메인스트림 브랜치**: 위를 제외한 모든 작업 브랜치 — `feat/*`, `fix/*`, `chore/*`, `docs/*` 등. 현재 활성 작업 브랜치 `feat/v2` 가 여기 속한다.
## 커밋 표준 승인 (durable authorization)
- **비-메인스트림 브랜치에서 커밋은 표준 승인된 행위다.** 작업 단위가 완결될 때마다 사용자에게 매 건 묻지 않고 커밋한다. 이는 하니스 기본규칙의 '사용자 요청 시에만 커밋' 원칙을, 프로젝트 지침이 사전·상시 승인을 부여하는 형태로 만족시키는 것이다(자동 커밋 재량 위임이 아니라, 사용자가 부여한 표준 승인의 실행).
- **메인스트림 브랜치에는 표준 승인이 적용되지 않는다.** `main`/`master`/보호 브랜치 위에서는 직접 커밋하지 않고, 먼저 작업 브랜치를 생성한 뒤 비-메인스트림 규칙으로 진행한다.
- **`push` 는 브랜치와 무관하게 항상 사용자 명시 요청 시에만 수행한다.** 표준 승인은 로컬 커밋에 한정되며 원격 반영(push)·PR 생성은 포함하지 않는다.
- 작업 전후로 `git status --short` 로 사용자 변경을 보호한다(섞인 미관련 변경을 같은 커밋에 넣지 않는다).
## 커밋 단위
- 한 커밋은 하나의 논리적 변경으로 한정한다. 코드 변경과 그에 대한 문서/그래프 메타 갱신처럼 결합이 강한 산출물은 함께 묶되, 성격이 다른 변경(예: 기능 구현 vs 빌드 스크립트 vs 정책 문서)은 분리한다.
- 버그 수정 커밋은 `docs/development/verification-strategies.md` 의 회귀 테스트 의무를 따른다(재현 테스트 동반).
- `.atp/work-session/<timestamp>/` 산출물은 추적 대상이며, 해당 세션의 코드/문서 변경과 함께 또는 별도 `chore`/`docs` 커밋으로 기록한다.
## 커밋 메시지 규약
- **Conventional Commits** 형식을 사용한다: `type(scope): subject`. 사용 중인 type: `feat`, `fix`, `docs`, `chore`. scope 는 한국어 가능(예: `docs(graph)`, `chore(dev)`).
- subject 는 한국어로 변경의 핵심을 간결히 적는다(이모지 미사용).
- 본문은 '왜'가 자명하지 않을 때 추가하고, 변경 항목은 불릿으로 정리한다. 검증 결과(예: `./mvnw test N/N GREEN`)가 있으면 본문에 명시한다.
- 모든 에이전트 생성 커밋에는 트레일러를 포함한다:
```
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
```
세션 추적이 필요하면 `Claude-Session: <url>` 트레일러를 추가할 수 있다.
## 참고
- 검증 의무(L1/L2/L3, 변경 범주별): `docs/development/verification-strategies.md`
- 에이전트 출력/압축 규약: `docs/development/agent-output-conventions.md`

View File

@ -7,5 +7,6 @@
- [verification-strategies.md](./verification-strategies.md) — `verification-advisor` 가 읽는 검증 전략 레지스트리 (프로젝트별 `cmd` 를 채워 사용). 설계·테스트 단계 구조적 교훈(SSR 영향맵, fixture 전수 감사, freeze 분류 근거 확인, frontend-design fork 패턴) 포함. - [verification-strategies.md](./verification-strategies.md) — `verification-advisor` 가 읽는 검증 전략 레지스트리 (프로젝트별 `cmd` 를 채워 사용). 설계·테스트 단계 구조적 교훈(SSR 영향맵, fixture 전수 감사, freeze 분류 근거 확인, frontend-design fork 패턴) 포함.
- [document-category-classification.md](./document-category-classification.md) — 카테고리 분류 기준 (불필요한 카테고리는 프로젝트에 맞게 정리) - [document-category-classification.md](./document-category-classification.md) — 카테고리 분류 기준 (불필요한 카테고리는 프로젝트에 맞게 정리)
- [agent-output-conventions.md](./agent-output-conventions.md) — 에이전트 출력 규약. 사용자 대면 의사결정 제시문엔 압축 비적용(배경+선택지+권장 풀어쓰기), 압축은 내부 산출물 한정 - [agent-output-conventions.md](./agent-output-conventions.md) — 에이전트 출력 규약. 사용자 대면 의사결정 제시문엔 압축 비적용(배경+선택지+권장 풀어쓰기), 압축은 내부 산출물 한정
- [git-workflow.md](./git-workflow.md) — 브랜치 분류(메인스트림 vs 비-메인스트림) · 비-메인스트림 브랜치 커밋 표준 승인 · push 명시 요청 한정 · Conventional Commits + `Co-Authored-By` 트레일러 규약. CLAUDE.md '작업 원칙' 커밋 정책의 정본.
> atp 플러그인 번들 레퍼런스(`agent-team-protocol.md`, `agent-catalog.md`, `documentation-guidelines.md`, `search-tool-matrix.md`)는 플러그인 캐시에 있으며 이 프로젝트로 복사되지 않는다. 에이전트가 `${CLAUDE_PLUGIN_ROOT}/docs/...` 로 직접 참조한다. > atp 플러그인 번들 레퍼런스(`agent-team-protocol.md`, `agent-catalog.md`, `documentation-guidelines.md`, `search-tool-matrix.md`)는 플러그인 캐시에 있으며 이 프로젝트로 복사되지 않는다. 에이전트가 `${CLAUDE_PLUGIN_ROOT}/docs/...` 로 직접 참조한다.