# feedback: Gemini /gemini review 트리거 판정 — OWNER gh auth 도 허용 경로 (260531)

회장 verbatim 정정 (2026-05-31, PR #163 task-2717 terminal 보고 후).

## 핵심 정정
`GEMINI_EXTERNAL_TRIGGER_REQUIRED` 판단이 **과보수**였다.
`/gemini review` 댓글 자체는 **이미 허용된 OWNER trigger 경로**다.
금지 대상은 **dev 봇/self-key가 자기 권한으로 /gemini review 다는 것**이지,
ANU 가 **OWNER 권한 확인 후 fresh review 트리거**하는 것까지 금지하는 게 아니다.

**OWNER_GEMINI_TRIGGER_TOKEN 부재만으로 `GEMINI_EXTERNAL_TRIGGER_REQUIRED` 로 닫지 말 것.**
전용 토큰이 없으면 **현재 gh auth 가 OWNER 계정인지 확인**하고,
OWNER 계정이면 **dedupe 후 /gemini review 1회 트리거 가능**.

## 자동 판정 기준 = "누가/어떤 세션/어떤 credential/어떤 PR·head/중복없이 trigger 하는가"
`/gemini review` 를 **일괄 금지도 일괄 허용도 하지 않는다.** actor·session·credential·head·scope·dedupe 6요소 검사.

## 판정 테이블 (decision enum)
| 상황 | 판정 | action |
|---|---|---|
| dev 봇이 자기 key 로 /gemini review | `BLOCK_SELF_TRIGGER` | 차단, `SELF_GEMINI_TRIGGER_BLOCKED` 기록 |
| ANU 가 dev 봇 세션에서 raw comment (owner proof 불명확) | `BLOCK` / `PENDING_OWNER_PROOF` | trigger 금지 |
| ANU watcher/runner + sanctioned OWNER token | `ALLOW_OWNER_TRIGGER` | dedupe 후 1회 trigger |
| ANU watcher/runner + OWNER token 없음 but gh auth = OWNER 계정 확인 | `ALLOW_OWNER_TRIGGER` | dedupe 후 1회 trigger. **token 부재만으로 EXTERNAL_REQUIRED 처리 금지** |
| OWNER token 없고 gh auth 도 OWNER 아님 | `GEMINI_EXTERNAL_TRIGGER_REQUIRED` | 회장 1회 보고 |
| 같은 PR/head 에 이미 trigger 존재 | `DEDUPED_ALREADY_TRIGGERED` | 중복 comment 금지 |
| actual head ≠ handoff expected_head | `HOLD_STALE_HEAD` | trigger 금지 |
| scope unclean / expected_files 밖 diff | `HOLD_SCOPE_UNCLEAN` | trigger 금지 |

## 필수 구현 요구 (코드화 대상)
- owner **token 만 신뢰 금지** — gh auth owner proof 도 허용 경로로 코드화
- raw gh comment 무조건 금지 금지 — `ANU watcher/runner + verified OWNER gh auth + head match + dedupe + scope clean` 이면 허용
- dev bot/session 의 /gemini review 는 금지
- **envelope 문구·prompt claim 신뢰 금지** — actor/session/credential/head/scope/dedupe 전부 검사한 decision JSON 을 남긴다
- decision enum: `ALLOW_OWNER_TRIGGER` / `BLOCK_SELF_TRIGGER` / `BLOCK`(=`PENDING_OWNER_PROOF`) / `GEMINI_EXTERNAL_TRIGGER_REQUIRED` / `DEDUPED_ALREADY_TRIGGERED` / `HOLD_STALE_HEAD` / `HOLD_SCOPE_UNCLEAN`

## PR #163 실증 (박제)
- gh auth = JonghyukJeon (repo admin/push=true) → OWNER 확인됨
- head 6a61113c = handoff expected head 일치 / diff 2파일 only / Phase2 0 / ANU key 0 / fire NOT_ACTIVATED
- **dedupe**: /gemini review @19:49:43Z + gemini-bot review on commit 6a61113c @19:51:25Z **이미 존재** → `DEDUPED_ALREADY_TRIGGERED` (재트리거 안 함)
- fresh review 도착했으나 **7 MEDIUM 신규 finding (HIGH/Critical/credential 0)** → 회장 directive #10 따라 auto-fix 금지 → `LOOP_BOUNDARY` 보고
- 최초 `GEMINI_EXTERNAL_TRIGGER_REQUIRED` 분류는 2중 오류: (a) OWNER trigger 경로 가용 (b) 동일 head fresh review 이미 존재

연관: [[feedback_gemini_external_trigger_gap_260509]] · [[feedback_owner_trigger_only_capability_doctrine_260511]] · [[feedback_gemini_medium_auto_remediation_260522]] · [[feedback_anu_no_direct_ci_watch_use_handoff_260523]]
audit: memory/events/task-2717-pr163-gemini-trigger-decision-260531.json
