
    jx                     8   U d dl mZ dZddddddddddd	dd
e dddde ddddZeeeeef   f   ed<   dedeeef   fdZdedefdZdede	fdZ
	 d!dedee   dedee   fdZdede	fdZ	 	 	 	 d"dededee   dz  dee   dz  dedz  dee   fd Zy)#    )Dictuh   외부 AI 호출 전 sanitize 게이트 필수: PII(주민번호/연락처/API키) 마스킹 후 전달. u/   셀프 QC: 구문 에러, 기본 기능 확인.u   즉시 머지.)g1g2g3uQ   affected_files에 명시된 파일 확인. 다른 팀과 겹침 없는지 확인.uB   팀 테스터 또는 마아트 QC 수행. 기능 테스트 필수.u   worktree finish --action pr로 PR 생성 → Gemini 리뷰 대기(5분) → High 0건 시 자동 머지. 타임아웃 시 리뷰 없이 머지.u   3문서 필수. Codex 사전 검증 PASS 필요. affected_files 교차 분석. 3 Step Why 2nd 검증: Codex 사전 리뷰 시 "이 설계의 대안은 무엇이며, 왜 이 접근이 최선인가?" 질문을 포함할 것. uJ   Gemini PR 리뷰 + 마아트 독립 검증. 두 검증 모두 PASS 필요.u   G3 독립 검증 필수: python3 scripts/g3_independent_verifier.py --task-id {task_id} 실행 → PASS 필요. worktree finish --action pr → Gemini 리뷰 + 충돌 감지 시 집중 리뷰. 시맨틱 충돌 분석. High 0건 시 자동 머지.uG   3문서 필수 + Agent 미팅 만장일치 + Codex 사전 검증 PASS. u   Gemini PR 리뷰 + 마아트 QC + 로키 레드팀 투입. 전체 PASS 필요. 3 Step Why 3rd 검증: 로키(DA) 레드팀 리뷰 시 "이 설계가 실패할 수 있는 시나리오는?" 적대적 질문을 포함할 것.u   G3 독립 검증 필수: python3 scripts/g3_independent_verifier.py --task-id {task_id} 실행 → PASS 필요. 전팀 완료 대기 + worktree finish --action pr → Gemini 리뷰 + Graduated Auto-Gate (L1→L2→L3) 통과 필수.)r               GATE_INSTRUCTIONSlevelreturnc                 <    t         j                  | t         d         S )u2   레벨에 해당하는 게이트 지시를 반환.r   )r   getr   s    J/home/jay/workspace/.worktrees/task-2723-dev2/prompts/gate_instructions.pyget_gate_instructionsr   "   s      (9!(<==    c                     t        |       }g }|d   r|j                  d|d           |d   r|j                  d|d           |d   r|j                  d|d           dj                  |      S )u   프롬프트에 삽입할 게이트 지시 문자열을 생성.

    level >= 3일 때 g1에 sanitize 게이트 지시가 자동 포함됩니다.
    (GATE_INSTRUCTIONS의 g1 값에 이미 포함되어 있으므로 별도 처리 불필요)
    r   u   [G1 설계 게이트] r   u   [G2 구현 게이트] r   u   [G3 머지 게이트] 
)r   appendjoin)r   gatesliness      r   format_for_promptr   '   s     "%(EET{-eDk];<T{-eDk];<T{-eDk];<99Ur   c                     | dk\  S )u?   해당 레벨에서 Codex 사전 검증이 필요한지 반환.r
    r   s    r   should_run_codex_checkr   8   s    A:r   	task_fileaffected_filesworkspace_rootc                     ddl }|j                  j                  |dd      }d|d| g}|r|j                  dg|z          |j                  d|g       |S )	u)   codex_gate_check.py 실행 명령 반환.r   Nscriptszcodex_gate_check.pypython3z--task-file--affected-files--workspace-rootospathr   extend)r   r    r!   r(   script_pathcmds         r   get_codex_gate_commandr-   =   s[     '',,~y:OPKk=)
<C

&'.89JJ"N34Jr   c                     | dk\  S )u[  G4 Pre-PR Gemini CLI gate를 실행해야 하는지 반환.

    회장 §명시 2026-05-12 Track C (task-2562):
    - Lv.1~2: soft (warning, gate 자체는 실행)
    - Lv.2 risk-trigger: hard (gate 내부 분기)
    - Lv.3+: hard required
    모든 Lv에서 gate를 호출하되, Lv 기반 mixed 정책은 gate 내부에서 결정한다.
    r   r   r   s    r   should_run_gemini_cli_gater/   K   s     A:r   Ntask_idexpected_files
target_dirc                     ddl }|j                  j                  |dd      }d|d| d|g}|r|j                  dg|       |r|j                  d	g|       |r|j                  d
|g       |S )u  gemini_cli_gate_check.py 실행 명령 반환 (OAuth-personal 강제).

    회장 §명시 1:1:
    - Pre-PR 단발 호출 (long polling 0)
    - GEMINI_API_KEY 거부 (gate 모듈 내부에서 즉시 abort)
    - GitHub Gemini App 호출 0 (PR open 전 단계, 본 gate가 보완)
    r   Nr#   zgemini_cli_gate_check.pyr$   z	--task-idr&   r%   z--expected-filesz--target-dirr'   )r0   r!   r    r1   r2   r(   r+   r,   s           r   get_gemini_cli_gate_commandr4   W   sz     '',,~y:TUKk;9K^
\C

&889

&889

NJ/0Jr   )/home/jay/workspace)r5   NNN)typingr   _SANITIZE_GATE_INSTRUCTIONr   intstr__annotations__r   r   boolr   listr-   r/   r4   r   r   r   <module>r=      s    H  ? ? bR ` p  qK  pL  MZ G XXrWst o y+0 4T#s(^+, :> >c3h >
S S "# $  F[$(I?B	#Y	c 	d 	 0'+'+! I$ I$	
 d
 
#Yr   