commitgate-diagnosing-bugslisted
Install: claude install-skill sol5288/commitgate
# CommitGate — 버그 진단
어려운 버그를 위한 규율. **정당한 이유 없이 단계를 건너뛰지 않는다.**
## 전제
버그·회귀·성능 문제일 때만 쓴다. 일반 기능 구현이면 `commitgate-tdd`다.
REQ 안에서 쓴다면 `req:next`가 `AGENT`일 때다. **끝나면 반드시 `req:next`로 돌아간다.**
진단 결과가 요구·설계를 바꾼다면 `00-requirement.md`/`01-design.md`/`02-plan.md`에 반영해야 하고, 설계가 바뀌면 **재승인**이 필요하다.
## 방법
### Phase 1 — 피드백 루프를 만든다
**이게 이 스킬의 전부다.** 나머지는 기계적이다. *이 버그*에 빨간불이 켜지는 **팽팽한** pass/fail 신호가 있으면 원인은 찾아진다.
없으면 코드를 아무리 노려봐도 소용없다. **여기에 불균형하게 많이 투자한다.**
만드는 법 — 대략 이 순서로 시도한다:
1. **실패하는 테스트** — 버그에 닿는 seam이면 unit·integration·e2e 아무거나.
2. **CLI 호출** — 픽스처 입력으로 돌리고 stdout을 known-good과 diff.
3. **스크립트 재현** — 실제 입력/이벤트를 디스크에 저장해 해당 코드 경로에 격리 재생.
4. **일회용 하네스** — 최소 부분만 띄워 함수 하나로 버그 경로를 때린다.
5. **속성/퍼즈 루프** — "가끔 틀림"이면 랜덤 입력 1000개를 돌려 실패 양상을 찾는다.
6. **차등 루프** — 같은 입력을 구/신 버전에 넣고 출력을 diff.
🔴 **활성 REQ worktree에서 HEAD를 움직이지 마라** — 이분 탐색(bisect)·`reset`·`checkout`으로 과거 상태를 오가는 조사는 이 워크트리에서 **금지**한다. REQ 상태와 staged 승인 바인딩이 깨지고, 승인된 tree가 사라지면 커밋이 막힌다.
🔴 **진단·조사를 위한 커밋은 금지**다 — 진단은 커밋 사유가 **아니다**. 미승인 변경을 커밋하면 리뷰 게이트를 우회하는 것이라, 사람이 승인해도 허용되지 않는다.
**그래서 이분해야 하면 이렇게 한다 — 대개 물어볼 필요가 없다:**
- **이미 커밋되어 있고 깨끗한 승인 baseline**이 있으면, 그것을 활성 worktree **밖의** 버릴 clone/사본으로 복제해 거기서 bisect한다. **사람 승인 없이 진행한다** — 이건 Phase 1 사다리의 일회용 하네스와 같은 급의 **진단 기법**이지 범위 변경이 아니다.
- 활성 worktree의 HEAD·인덱스·작업물은 건드리지 않는다. **결과(원인 커밋·증상 경계)만** 가져오고 clone은 버린다.
- 복제할 **깨끗한 승인 baseline이 없다면** 멈추고 사람에게 보고한다 — 미승인 변경을 커밋해서 baseline을 만드는 것은 위 금지에 걸린다.
- 진단 결과가 **설계·계획·비목표를 바꿔야** 하면 보고해 재승인을 받는다 — 이미 계약의 보고 사유다.
> 멈추는 기준