[STK8-02] pre-push 훅 Codex fallback 추가
작업 내용 (설계 의도)
변경 사항
.githooks/pre-push의 code-reviewer(Claude) 호출 이후에 Codex fallback 로직을 추가한다.
Claude 실패 조건:
- exit non-zero
- 출력이 비어있음
- 출력에
context length/token limit/rate limit/maximum context포함
실패 시 동일 diff를 Codex로 재리뷰한다. Codex도 실패하면 경고를 출력하고 push를 허용한다(AI 인프라 장애가 push를 막으면 안 됨).
REQUEST_CHANGES 감지는 Claude/Codex 동일하게 적용한다.
다이어그램
처리 흐름
sequenceDiagram participant D as Developer participant PP as pre-push participant CL as Claude code-reviewer participant CO as Codex CLI D->>PP: git push PP->>PP: main 차단, 테스트 실행 PP->>CL: code-reviewer 호출 alt Claude 성공 CL-->>PP: 리뷰 결과 alt REQUEST_CHANGES 포함 PP-->>D: exit 1 (push 거부) else PP-->>D: exit 0 (push 허용) end else Claude 실패 (토큰/오류) PP->>CO: Codex fallback 호출 alt Codex 성공 CO-->>PP: 리뷰 결과 alt REQUEST_CHANGES 포함 PP-->>D: exit 1 (push 거부) else PP-->>D: exit 0 (push 허용) end else Codex 실패 PP-->>D: exit 0 (경고 출력 후 허용) end end
테스트 케이스
- Claude 성공 + APPROVED → push 허용
- Claude 성공 + REQUEST_CHANGES → push 거부
- Claude 실패(빈 출력) → Codex 호출됨
- Claude 토큰 한도 감지 → Codex fallback 호출됨
- Codex fallback + REQUEST_CHANGES → push 거부
- Claude·Codex 둘 다 실패 → 경고 출력 후 push 허용