
    <j@                        U d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 dZded<   e
d	 	 	 	 	 	 	 	 	 dd	Zdd
ZddZg dZy)u  anu_v3.goal_boundary_validator — goal contract boundary validation (task-2553+7).

회장 §3 명시 Condition 3 기계 구현 (순수, 부작용 0):
  (a) planned_effective_actions ⊆ allowed_actions
  (b) planned_effective_actions ∩ forbidden_actions == ∅
  (c) effective_diff_files ⊆ expected 6 (TASK_2553P1_EFFECTIVE_DIFF_6)
  (d) forbidden_write_targets ∩ effective_diff_files == ∅

success_condition / hold_conditions 파서도 포함 (pure 해석기).
    )annotations)AnyFinalMappingSequence)TASK_2553P1_EFFECTIVE_DIFF_6#TASK_2553P6_FORBIDDEN_WRITE_TARGETSzanu_v3.goal_boundary_validatorz
Final[str]VALIDATOR_MODULE)forbidden_write_targetsc                  g }t        | j                  d      xs g       }t        | j                  d      xs g       }t        |      }t        |      }t        |      }	t        t              }
||z
  }|r|j                  dt	        |              ||z  }|r|j                  dt	        |              ||
z
  }|r|j                  dt	        |              ||	z  }|r|j                  dt	        |              |S )u  goal contract 경계 검증. 빈 list = PASS. 비어있지 않으면 각 위반 사유.

    검증 항목:
      (a) every planned_effective_action ∈ allowed_actions
      (b) no planned_effective_action ∈ forbidden_actions
      (c) effective_diff_files ⊆ TASK_2553P1_EFFECTIVE_DIFF_6
      (d) no forbidden_write_target in effective_diff_files

    부작용 0 (순수 함수).
    allowed_actionsforbidden_actionsu)   planned actions 이 allowed_actions 밖: u2   planned actions 이 forbidden_actions 와 충돌: u*   effective_diff 가 expected 6 파일 밖: u<   forbidden_write_target 파일이 effective_diff 에 포함: )setgetr   appendsorted)goal_contractplanned_effective_actionseffective_diff_filesr   
violationsallowed	forbiddenplanned
diff_filesforbidden_targets
expected_6outside_allowedforbidden_hitoutside_expected
target_hits                  !anu_v3/goal_boundary_validator.pyvalidate_boundaryr"      s,   " JM--.?@FBGGm//0CDJKI56G34J"%&=">;<J 'O78O7PQ	

 i'M@AV@WX	

 "J.8@P9Q8RS	

 //JJ6R\K]J^_	
     c                    | j                  dd      }|j                  d      D cg c]#  }|j                         s|j                         % }}||t        |      dS c c}w )u   goal contract 의 success_condition 문자열 → 구조 dict (순수).

    현재 구현: 원문 보존 + 체크리스트 예비 분해.
    success_condition ,)rawparts
part_count)r   splitstriplen)gcr(   sr)   s       r!   parse_success_conditionr0   Q   sZ    
 vv)2.C #		#<1!'')QWWY<E<%j  =s
   AAc                    | j                  d      }t        |t        t        f      sg S |D cg c]  }|st	        |       c}S c c}w )uB   goal contract 의 hold_conditions list 반환 (순수, 정규화).hold_conditions)r   
isinstancelisttuplestr)r.   condscs      r!   parse_hold_conditionsr9   _   s>    FF$%EedE]+	!'qQCF'''s
   AA)r
   r"   r0   r9   N)
r   Mapping[str, Any]r   Sequence[str]r   r;   r   r;   return	list[str])r.   r:   r<   zdict[str, Any])r.   r:   r<   r=   )__doc__
__future__r   typingr   r   r   r   -anu_v3.pre_authorized_evidence_bundle_builderr   r	   r
   __annotations__r"   r0   r9   __all__ r#   r!   <module>rE      su   	 # 0 0
  @ * ? .Q6$6  -6 (	6
 +6 6r(r#   