# task-2562 — Context Notes

## Pre-PR Gemini CLI gate의 본질

GitHub Gemini App = 공식 CI merge gate (PR open 후 자동 호출). 그러나 PR open 전 단계에서는 GitHub Gemini App을 트리거할 수 없다. 본 G4 gate는 그 공백을 메우는 사전 차단 단계로, finish-task.sh가 PR을 열기 전 마지막 자동 검증 지점이다.

## OAuth-personal 강제 사유

- API key 기반 호출은 키 노출 + 권한 분리 부재로 회장 §명시 금지.
- OAuth-personal token (`~/.config/gemini/oauth_token.json`)은 auto-refresh 가능하며, 회장 권한 하에서만 발급된다.
- gate 진입점에서 `GEMINI_API_KEY` env var 검출 시 즉시 `FORBIDDEN_CAPABILITY_USE` 예외 → ESCALATED.

## Lv 기반 mixed 정책 사유

- Lv.1~2 작업까지 hard gate를 강제하면 개발 마찰이 커진다 → soft (warning 기록 후 PR open 허용).
- 단, Lv.2여도 보안 민감 파일·affected_files>5·danger keyword 충족 시 위험이 증폭되므로 hard로 승격.
- Lv.3+ 작업은 control-plane 영향이 크므로 무조건 hard.

## fix_loop_count max=2 사유

- 1회: 단순 미스를 자동 수정할 여유.
- 2회: 동일 issue 반복 시도 → 자동 수정 불가, 회장 결정 필요로 ESCALATED.
- 3회 이상은 무한 루프 위험 + 자원 낭비.

## scope_violation 우선 차단 사유

- expected_files 외 파일이 변경되면 dispatch 의도 일탈 (out-of-scope mutate).
- fix_loop 진입 자체를 차단하여 자원 낭비 + 의도되지 않은 cascade 방지.

## codex_gate_check.py 60% 재사용

- `_read_file_safe`, `_extract_json_from_output`, `_normalize_affected_item`, `_detect_workspace_root` 등 헬퍼 import.
- 외부 호출 패턴 (subprocess + temp file + JSON 파싱 + fallback) 모방.
- 호출 대상만 codex companion → gemini binary로 교체.

## G4 self-apply 0

본 task는 G4 자체 구현이므로 G4 self-apply 시 무한루프 발생. 회장 §명시 일관으로 G4 미적용.

## 통합 위치 정확 검증

- `scripts/finish-task.sh` line 826 = `[G3-GATE] PASS`
- line 829 = G3 if/else 종료 `fi`
- line 830 = blank slot (G4 hook 신규 삽입)
- line 831 이후 = `# 2.9. Lv.4 보안 감사 검증`
- 신규 block은 line 830~852 (약 22 LOC 추가), Lv.4 audit는 신규 block 종료 직후로 밀린다.

## 외부 systems와 분리

- GitHub Gemini App = 공식 merge gate (별도)
- task-2548 G4 Task A (Gemini CLI binary 운영 가능 확인) DONE PASS
- task-2562 G4 Task B (Pre-PR gate 통합) = 본 task

## 금지 9건 재박제

1. task-2559 번호 사용 금지 (dashboard 신호등 task)
2. task-2562에 task-2560/2561 후속 수정 섞기 금지
3. G4 Task B를 공식 merge gate로 오인 금지
4. finish-task.sh 수정 시 regression 없이 push 금지
5. 회장 수동 `/gemini review` 요청 금지
6. long polling 금지 (max wait < 60s)
7. force push / rebase / admin override 금지
8. BOT 계정 `/gemini review` 금지
9. task-2558/2559/2560/2561 영역 mutate 금지
