
    &Rj!                        d Z ddlmZ ddlmZmZmZmZ ddlm	Z
 dZdZdZdZdd	Zdd
ZddZddZddZddZddZddZg dZy)u  utils.callback_adjudicator_v2 — terminal_state / policy / Critical7 판정기 (v2).

task-2644+1 ANU_CALLBACK_COLLECTOR_CONTROL_PLANE_CLEAN_REPLACEMENT
task md: memory/tasks/task-2644+1.md
spec (read-only): memory/specs/system_anu_callback_collector_control_plane_spec_260524.md

v2 변경:
- schema name suffix v2
- callback_collector_helper_integration 가용성 명시 (필수)
- helper integration unavailable → policy=HOLD_FOR_CHAIR fail-closed
- replacement_verdict 필드 추가 (회장 16 필드 확장)
    )annotations)AnyDictListOptional)%callback_collector_helper_integrationzutils.callback_adjudicator.v2zutils.callback_adjudicator.v1)critical7_hitcritical_blockblocking_secret_detectedadmin_override_requiredpermission_expansioncredential_expansionforbidden_target_modified)r	   r   r   "live_settings_modification_attemptgithub_destructive_writer   c                    t        | t              r| S t        | t        t        f      r| dk7  S t        | t              r | j                         j                         dv S t        |       S )Nr   >   1hityestruedetected)
isinstanceboolintfloatstrstriplower)values    4/home/jay/workspace/utils/callback_adjudicator_v2.py_truthyr!   .   sX    %%#u&z%{{}""$(OOO;    c                    t         fdt        D              ry j                  d      xs i t        t              rt        fdt        D              ry j                  d      xs dj                         }|dv ryy)	Nc              3  R   K   | ]  }t        j                  |               y wNr!   get).0fenvelopes     r    	<genexpr>z#detect_critical7.<locals>.<genexpr>9   s     
>78<<?#
>   $'Tflagsc              3  R   K   | ]  }t        j                  |               y wr%   r&   )r(   r)   r-   s     r    r+   z#detect_critical7.<locals>.<genexpr><   s     &Wwuyy|'<&Wr,   severity >   CRITICAL	CRITICAL7CRITICAL_BLOCKF)anyCRITICAL7_FIELDSr'   r   dictupper)r*   sevr-   s   ` @r    detect_critical7r9   8   sn    

>-=
>>LL!'RE%3&WFV&W#W<<
#)r
0
0
2C
99r"   c                    t         D ]   }t        | j                  |            s|c S  | j                  d      xs i }t        |t              r)t         D ]   }t        |j                  |            s|c S  y )Nr-   )CHAIR_REPORT_TRIGGERSr!   r'   r   r6   )r*   trigr-   s      r    detect_chair_report_requiredr=   D   so    % 8<<%&K LL!'RE%) 	Duyy'	 r"   c                j   | j                  d      du r| j                  d      ry| j                  d      dv ryt        |       ryt        | j                  d	            ry
t        | j                  d            ry| j                  d      xs i }t        |t              r|r|j                  d      }|du ry|du ry| j                  d      xs dj                         }|dk(  st        | j                  d            ry|dv ry|dv st        | j                  d            ry|dv ry|dv ry|dv ry y )!Ncontrol_plane_compliantFschedule_history_chain_okNOT_CONTROL_PLANE_COMPLIANTstate_freshness_status>   STALEMISSINGMISMATCHSTATE_STALE_OR_MISMATCHCRITICAL7_HITr   PERMISSION_EXPANSIONr   CREDENTIAL_EXPANSIONbatchall_settledSIBLING_INCOMPLETETSIBLING_FINALstatusr0   MERGE_READYmerge_ready>   OWNER_GEMINI_NUDGEOWNER_GEMINI_TRIGGERrR   >   PHASE3_TIMING_RACEAUTO_REMEDIATION_CANDIDATEauto_remediation_candidaterT   >   OKPASSTERMINAL_PASSrX   >   FAILFAILEDTERMINAL_FAILr[   >   RUNNINGIN_PROGRESSr]   )r'   r9   r!   r   r6   r7   )r*   rJ   rK   rN   s       r    classify_terminal_stater^   P   sB   ||-.%7HLL#= -||,-1QQ(!x||234%x||234%LL!'RE%5ii.%'$"ll8$*113F'(,,}*E"F??%EE12J ,0044++r"   c                D   |dk(  ry|dk(  ry|dv ry|dk(  rt        | j                  dd	            ry
y|dk(  ry|dk(  ry|dk(  ry|dv rKt        | j                  d            ry| j                  d      dv ryt        | j                  d            ryy|dk(  ry|dk(  ryy)NrO   MERGE_POLICY_LOCKrG   CRITICAL7_REPORT>   rI   rH   "PERMISSION_OR_CREDENTIAL_EXPANSIONrT   inside_expected_filesT&AUTO_REMEDIATION_INSIDE_EXPECTED_FILESHOLD_FOR_CHAIRrR   OWNER_GEMINI_TRIGGER_NUDGErL   
BATCH_WAITrM   BATCH_ADJUDICATE>   r[   rX   followup_requiredFOLLOWUP_TASK_SPECrerun_reason>   rS   rS   regression_rerun_neededREGRESSION_RERUNLEDGER_ONLY_NOOPrF   SAFE_DEGRADED_MODErA   r&   )r*   terminal_states     r    classify_policyrq   {   s    &"(!II3558<< 7>?;//+--(!;;8<< 345'<<'+AA'8<< 9:;%!22#66r"   c                8    t        | j                  dd            S )Nrc   Tr&   )r*   s    r    is_inside_expected_filesrs      s    8<< 7>??r"   c                   t        j                         }|j                  sst        d| j	                  d      | j	                  d      dddddt        |       | j	                  d	d
      t        | j	                  d            dd|j                         dS t        |       }t        | |      }t        |       }t        |       }t        d| j	                  d      | j	                  d      |d|||t        |       | j	                  d	d      t        | j	                  d            |dk(  | j	                  d      |j                         dS )zPv2 adjudication: terminal_state + policy + critical7 + helper integration probe.REPLACEMENT_FAILcallback_idtask_idrA   Tre   FHELPER_INTEGRATION_BYPASSrB   rD   rJ   )schemareplacement_verdictrv   rw   rp   terminal_state_classifiedpolicy_classr	   chair_report_triggerrc   rB   batch_presentrP   control_plane_compliant_hinthelper_integration_statusAUTHORITATIVE_CLEAN_REPLACEMENTFRESHrO   r?   )_integrationintegration_status	availableSCHEMAr'   rs   r   to_jsonr^   rq   r9   r=   )r*   rN   rp   r|   	critical7chair_triggers         r    
adjudicater      s2   ,,.F#5#<<6||I.;)-,"$?%=h%G&.ll3KY&W!(,,w"78 ,1)/)9
 	
$ -X6N"8^<L *I0:M@||M2<<	*(%)$" -!9(!C"*,,/G"Qhll734%6(05N(O%+^^%5 r"   c                   g }| j                  d      s|j                  d       | j                  d      s|j                  d       | j                  d      s|j                  d       | j                  d      r%| j                  d      dk7  r|j                  d	       | j                  d
      dvr|j                  d       |S )Nr{   !MISSING_TERMINAL_STATE_CLASSIFIEDrp   MISSING_TERMINAL_STATEr|   MISSING_POLICY_CLASSrP   r`   MERGE_READY_WITHOUT_POLICY_LOCKrz   >   ru   r    NON_AUTHORITATIVE_SELF_COLLECTOR&MISSING_OR_INVALID_REPLACEMENT_VERDICT)r'   append)adjfailuress     r    validate_adjudicationr      s    H77./;<77#$0177>"./
ww}#''."9=P"P9:
ww$% . 
 	@AOr"   )r   REPLACEMENT_OFr5   r;   r9   r=   r^   rq   rs   r   r   N)r   r   returnr   )r*   Dict[str, Any]r   r   )r*   r   r   zOptional[str])r*   r   r   r   )r*   r   rp   r   r   r   )r*   r   r   r   )r   r   r   z	List[str])__doc__
__future__r   typingr   r   r   r   utilsr   r   r   r   r5   r;   r!   r9   r=   r^   rq   rs   r   r   __all__ r"   r    <module>r      sg    # , , G 
)0  		(V@@*Z&r"   