
    j                        d Z ddlmZ ddlmZ ddlmZ ddlmZ dZ	 ed	       G d
 d             Z
ddZe	d	 	 	 	 	 	 	 ddZy)u  TRUE_SILENT_DROP hard timeout gate.

ANCHOR-3 (회장 verbatim):
  fire 후 30분 hard timeout. 다음 3 예외 중 하나라도 있으면
  TRUE_SILENT_DROP 단정 금지.
    - schedule_history pending
    - result marker present (memory/events/<task_id>.*-result-*.json)
    - callback envelope present (memory/.callback_inbox/*.acked
      또는 result/report/done marker 자체)
    )annotations)	dataclass)Optional   )SourceSnapshoti  T)frozenc                  @    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   y)TimeoutDecisionboolsilent_drop_eligiblefloatelapsed_secondsinthard_timeout_secondsztuple[str, ...]blocking_exceptionsstrreasonN)__name__
__module____qualname____annotations__     0utils/anu_spawn_visibility_guard/timeout_gate.pyr
   r
      s    ((Kr   r
   c                h    | rt        | t              sy| j                         j                         dv S )NF>   firedpendingrunningstartedin_progress)
isinstancer   striplower)values    r   _is_pending_statusr%       s,    
5#.;;= $]]]r   )r   c               b   g }t        | j                        r|j                  d| j                  d       | j                  r|j                  d       | j                  r|j                  d       | j
                  r|j                  d       | j                  r|j                  d       ||k  r*t        dt        |      |t        |      d|d	d
| d      S |r4t        dt        |      |t        |      ddj                  |      z         S t        dt        |      |dd|d	d| d      S )u   TRUE_SILENT_DROP 적격성 평가.

    Returns
    -------
    TimeoutDecision.silent_drop_eligible 가 True 인 경우에만
    status_classifier 가 TRUE_SILENT_DROP 으로 분류할 수 있다.
    z&schedule_history pending (last_status=)zresult_marker presentzdone_marker presentzreport_marker presentzcallback_inbox_acked presentFzelapsed z.0fzs < hard_timeout u   s → silent drop 단정 금지)r   r   r   r   r   u9   elapsed past hard_timeout 이나 ANCHOR-3 예외 존재: z, Tr   u   s ≥ hard_timeout u1   s + ANCHOR-3 예외 0 → TRUE_SILENT_DROP 적격)r%   schedule_history_last_statusappendresult_presentdone_presentreport_presentcallback_inbox_acked_presentr
   r   tuplejoin)sourcesr   r   
exceptionss       r   evaluate_timeout_gater2   &   s_    J'>>?4W5Y5Y4\\]^	

 12/012++89--!&!/2!5 %j 1?3//@AU@V W0 0	
 		
 !&!/2!5 %j 1K))J'(	
 		
 !o.1s++>?S>T U> >	 	r   N)r$   zOptional[str]returnr   )r0   r   r   r   r   r   r3   r
   )__doc__
__future__r   dataclassesr   typingr   source_collectorr   HARD_TIMEOUT_SECONDSr
   r%   r2   r   r   r   <module>r:      sw   	 # !  ,   $  ^ !5	@@@ 	@
 @r   