
    ># j                    \   d Z ddlmZ ddlZddlZddlZddlZddlZddlmZm	Z	 ddl
mZ  ee      j                         j                  Zej                   j#                  d ee             ddlmZ dZddZ	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd	Zdd
Zedk(  r ej4                   e              yy)u  gemini_review_gate.py — Gemini App evidence-based merge gate.

Phase 3 evidence-only redesign (task-2465, 2026-05-06).
- Gemini API 호출 0건 (App evidence만 검증)
- GEMINI_API_KEY 의존 0건
- HOLD(neutral)도 GitHub check에서는 failure로 발행 — neutral은 branch protection을 통과하므로 금지.
- 평가 로직은 scripts.gemini_evidence_verify.evaluate_gate에 단일화.
    )annotationsN)datetimetimezone)Path)evaluate_gatezgemini-review-gatec                 d    t        j                  t        j                        j	                         S )N)r   nowr   utc	isoformat     K/home/jay/workspace/.worktrees/task-2537-dev4/scripts/gemini_review_gate.py_now_isor      s    <<%//11r   c           	         ||d|||dd |dd dd}t        j                  dddd	d
|  dddgt        j                  |d      ddd      }|j                  |j
                  |j                  dS )uv   GitHub check run을 gh api POST로 발행.

    conclusion: "success" | "failure"  (neutral 발행 절대 금지)
    	completedNi  )titlesummarytext)namehead_shastatus
conclusionoutputghapiz-XPOSTzrepos/z/check-runsz--input-Fensure_asciiT   )inputcapture_outputr   timeout)rcstdoutstderr)
subprocessrunjsondumps
returncoder%   r&   )reposhar   r   r   detailspayloadprocs           r   publish_check_runr1       s      vFUO

G >>	udFfTF+$>	3Ojju5D //T[[DKKPPr   c                 r   t        j                  d      } | j                  dt        dd       | j                  ddd	       | j                  d
t        j
                  j                  dd      d       | j                  dt        d       | j                  ddd       | j                         }t        |j                  |j                  |j                        }|d   }|dk(  rd}d|d    }n1|dk(  r"d}d|d    d|j                  dd      d z   d!}n
d}d"|d    }|j                  rDt        |j                  |j                  |j                  ||t!        j"                  |d#d$%             |d&   d'   }t%        d( |D              }|j                  |j                  |j                  |j                  ||d   |j                  d)d*      |j                  dd      t'        |      t'        |d&   d+         |d,|d&   d-   t)               d.}t+        t!        j"                  |d#/             |dk(  rd*S d0S )1Nu<   gemini_review_gate — Gemini App evidence 기반 merge gate)descriptionz--pr-numberTz	PR number)typerequiredhelpz--commit-shazHead commit SHA)r5   r6   z--repoGH_REPOzJonghyukJeon/dev_workspacez
OWNER/REPO)defaultr6   z--check-nameuJ   GitHub check run name (phase3 wrapper에서 'phase3-merge-gate'로 호출)z--publish-check
store_trueu   GitHub check run 발행)actionr6   statepasssuccesszPASS: reasonholdfailurezHOLD: z (pending under timeout_secondsi,  <   zmin)zBLOCK: F   )r   indentevidenceprimaryc              3  D   K   | ]  }|j                  d       sd  yw)stale   N)get).0es     r   	<genexpr>zmain.<locals>.<genexpr>r   s     ;AAEE'Na;s     elapsed_secondsr   	secondary)rF   rO   rH   high_severity_hits)r   prr-   r,   r;   r>   rN   rA   evidence_countrP   tsr   rI   )argparseArgumentParseradd_argumentintosenvironrJ   DEFAULT_CHECK_NAME
parse_argsr   	pr_number
commit_shar,   publish_checkr1   
check_namer)   r*   sumlenr   print)	apargsresultr;   r   r   rF   stale_countr   s	            r   mainrg   A   sJ   		 	 R
B OOMdOMOONT8IOJOO

y*FG  
 OO"Y  
 OO&  
 ==?D4>>4??DIIFF7OE 
6(+,-	&
6(+,,<VZZHY[^=_ce=e<ffjk
F8,-.IIOOOOJJvE!<	
 Z +G;;;K nn		"!::&7;!::&7=7|VJ/<= 

 %Z01EFjF" 
$**V%
011&Q&r   __main__)returnstr) )r,   rj   r-   rj   r   rj   r   rj   r   rj   r.   rj   ri   dict)ri   rW   )__doc__
__future__r   rT   r)   rX   r'   sysr   r   pathlibr   __file__resolveparentROOTpathinsertrj   gemini_evidence_verifyr   rZ   r   r1   rg   __name__exitr   r   r   <module>rz      s    #   	  
 '  H~&& 3t9  0) 2 Q
Q	Q Q 	Q
 Q Q 
QBF'R zCHHTV r   