
    4jB                       d Z ddlmZ ddlZddlmc 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 ddlmZ ddlZ ee      j)                         j*                  d   Z ee      ej0                  vr"ej0                  j3                  d ee             ddlmZmZmZmZ ddlm Z  dd	l!m"Z"m#Z# dd
l$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ edz  dz  Z,e,dz  Z-e,dz  Z.e,dz  Z/edz  dz  Z0edz  dz  Z1d3dZ2d4dZ3 ejh                  d      d5d       Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d  Z=d! Z>d" Z?d# Z@d$ ZAd% ZBd& ZCd' ZDd( ZEd) ZFd* ZGd+ ZHd, ZId- ZJd. ZKd/ ZLd0 ZMd1 ZNd2 ZOy)6u  test_isolated_worktree_evidence_2553plus8.py — task-2553+8 regression.

ISOLATED-WORKTREE EVIDENCE SOURCE REFINEMENT — §8 필수 15 + 9-R.3 추가 9
(총 24) + fixture 3종 시나리오.

전부 부작용 0: isolated worktree 는 self-cleaning(git worktree remove 만,
live workspace·타 worktree 무영향 — 정적 grep + 런타임 전후 불변 검증).
실 GitHub write/PR open 0.
    )annotationsN)Path)Any   )SOURCE_WORKSPACE_TYPE_ISOLATEDSOURCE_WORKSPACE_TYPE_LIVEbuild_isolated_evidence_bundle_sanitized_env)derive)DECISION_ALLOWevaluate)STATUS_DRY_RUN_PLANbind)STATUS_ACTIVATED_PR_OPENSTATUS_DRY_RUN_VERIFIEDSTATUS_HOLDrun_activationmemoryfixturesz8task-2553+1.f1solo.isolated-clean-worktree.contract.jsonz5task-2553+1.live-workspace-contaminated.contract.jsonz9task-2553+1.isolated-7th-file-contamination.contract.jsonanu_v3z$isolated_worktree_evidence_source.pyz#pre_authorized_activation_runner.pyc                L    t        j                  | j                  d            S )Nutf-8encoding)jsonloads	read_text)ps    Q/home/jay/workspace/tests/regression/test_isolated_worktree_evidence_2553plus8.py_jr    ;   s    ::akk7k344    c                     t        j                  ddt        t              ddgdddt	                     j
                  j                         S )Ngitz-Cz	rev-parseHEADT)capture_outputtextcheckenv)
subprocessrunstr	WORKSPACEr
   stdoutstrip r!   r   
_live_headr0   ?   s>    >>	c)nk6:$d8H fUUWr!   module)scopec                      t        t              S )N)r    	ISO_CLEANr/   r!   r   	iso_cleanr5   F   s    i=r!   c                    g } t         j                  } |       }|}|r4t        j                  } |       }|}|rt        j                  } |       }|}|sddt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }| j                  |       |rddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                        t        j                        dz  }	| j                  |	       |rddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                        t        j                        d	z  }
| j                  |
       t        j                  | d
      i z  }dd|iz  }t        t        j                  |            d x}x} x}x}x}x}x}}y )Nz:%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.exists
}()
}r4   )py2py4py6z>%(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py8)s.exists
}()
}LIVE_CONTAM)py8py10py12z?%(py18)s
{%(py18)s = %(py16)s
{%(py16)s = %(py14)s.exists
}()
}ISO_7TH)py14py16py18r   zassert %(py21)spy21)r4   existsr:   r>   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanation)@py_assert1@py_assert3@py_assert5@py_assert0@py_assert9@py_assert11@py_assert15@py_assert17@py_format7@py_format13@py_format19@py_format20@py_format22s                r   test_fixtures_three_existrZ   L   s9   K9KKK+"4"4K"4"6K"6K"67>>K>;KK;KKKKKKK9KKK9KKKKKKKKKKKKKKK+KKK+KKK"4KKK"6KKKK"6KKKKK7KKK7KKK>KKK;KKKKKKKKKKKKKKKr!   c                    t        t        t                    } | d   }|t        k(  }|st	        j
                  d|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd|iz  }t        t	        j                  |            d x}}y Nstatus==z%(py1)s == %(py3)sr   py1py3assert %(py5)spy5)r   r    r:   r   rF   _call_reprcomparerH   rD   rE   rG   rK   rL   )drP   @py_assert2@py_format4@py_format6s        r   (test_01_live_workspace_contaminated_holdrk   Q   sm    r+AX;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%r!   c                H   t        |       }|d   }d}||k(  }|st        j                  d|fd||f      t        j                  |      t        j                  |      dz  }t        j                  |j                  d            dz   d|iz  }t        t        j                  |            d x}x}}t        |d	         }|d
   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }	t        t        j                  |	            d x}}| d   }
|
d   }t        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}| d   d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }	t        t        j                  |	            d x}}y )Nr]   DERIVEDr^   )z%(py1)s == %(py4)srb   r8   hold_reasonsz
>assert %(py6)sr9   contractdecisionr`   r   ra   rd   re   _isolated_worktree_evidenceisolated_effective_files   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slen)py0r7   r8   py7zassert %(py9)spy9_provenancesource_workspace_typer   )r   rF   rf   rH   _format_assertmsggetrK   rL   r   r   rD   rE   rG   ru   r   )r5   rg   rP   rN   rh   @py_format5rU   decri   rj   isorM   @py_assert6rO   @py_format8@py_format10s                   r   %test_02_isolated_clean_six_file_allowr   W   s   yAX;:):;)#:::;):::;:::):::QUU>%::::::::
1Z=
!Cz?,?n,,,,?n,,,?,,,,,,n,,,n,,,,,,,
1
2C-.43./414/14444/144444434443444.444/44414444444- !899)	* 9)   	:     *   *     r!   c                    t        t        t                    d   } | t        k(  }|st	        j
                  d|fd| t        f      t	        j                  |       dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd|iz  }t        t	        j                  |            d x} }y r\   )r   r    r>   r   rF   rf   rH   rD   rE   rG   rK   rL   )rP   rh   ri   rj   s       r   "test_03_isolated_seventh_file_holdr   e   sl    "W+x(7(K7777(K777(777777K777K7777777r!   c           	     ,   t        j                  |       }|d   j                  dd        t        t	        t
              |d      }|d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}|j                  }d}d}	 |||	      }
d}|
|u }|st        j                  d|fd|
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}	x}
x}}y )Nry   rz   T	repo_pathevidence_bundleactivater]   r^   r`   r   ra   rd   re   github_mutation_performedFiszS%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s, %(py6)s)
} is %(py11)srrv   r7   r8   r9   r;   py11assert %(py13)spy13)copydeepcopypopr   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   r|   r5   br   rP   rh   ri   rj   rM   rN   rO   @py_assert7@py_assert10rQ   @py_format12@py_format14s                  r   2test_04_source_workspace_type_missing_hold_pr_openr   j   sG   i Am0$7i.!d	A X;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%55=,=e=5,e4==4====4======1===1===5===,===e===4===========r!   c           	        t        j                  |       }t        |d   d<   t        t	        t
              |d      }|d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}|j                  }d}d}	 |||	      }
d}|
|u }|st        j                  d|fd|
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}	x}
x}}y )Nry   rz   Tr   r]   r^   r`   r   ra   rd   re   real_write_performedFr   r   r   r   r   r   )r   r   r   r   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   r|   r   s                  r   /test_05_source_workspace_type_live_hold_pr_openr   u   sA   i A0JAm,-i.!d	A X;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%558'885'/858/58888/5888888188818885888'888888/888588888888r!   c                *   t        j                  |       }t        |      d   }t        |      }t        j                  |      }d|d   d<   t	        |||d      }|d   }|t
        k7  }|st        j                  d|fd	|t
        f      t        j                  |      d
t        j                         v st        j                  t
              rt        j                  t
              nd
dz  }dd|iz  }	t        t        j                  |	            d x}}y )Nrp   @0000000000000000000000000000000000000000000000000000000000000000ry   evidence_bundle_sha256T)rq   rp   r   dry_runr]   !=z%(py1)s != %(py3)sr   ra   rd   re   )r   r   r   r   r   r   rF   rf   rH   rD   rE   rG   rK   rL   )
r5   r   cr~   forgedpfrP   rh   ri   rj   s
             r    test_06_provenance_mismatch_holdr      s    i Aq	*A
1+C]]1F6>F=23	sVQ	MBh<.<.....<....<..................r!   c                ,   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }dg|d   d   d   d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   zanu_v2/owner_trigger_pat.pyevidenceexpected_filesobserved_valuefilesr]   r^   r`   r   ra   rd   re   r   r   itemsr   r   rF   rf   rH   rD   rE   rG   rK   rL   r5   kvr   rP   rh   ri   rj   s           r   $test_07_expected_files_mismatch_holdr      s    #//+B$!QqM/AAB	A 	&BAjM"#$45g> !9X-+----+---------+---+------- 	Cs
   D
D
c                `   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }|d   d   d   }t        t	        |d         dhz        |d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   r   git_effective_diffr   r   zanu_v2/owner_trigger_pat_f2.pyr]   r^   r`   r   ra   rd   re   r   r   r   sortedsetr   r   rF   rf   rH   rD   rE   rG   rK   rL   	r5   r   r   r   evrP   rh   ri   rj   s	            r   test_08_f2_changed_holdr          #//+B$!QqM/AAB	A 
:+	,-=	>BR[)-M,NNOBwK!9X-+----+---------+---+-------	 	C
   D*
D*
c                `   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }|d   d   d   }t        t	        |d         dhz        |d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   r   r   r   r   zanu_v2/merge_queue_executor.pyr]   r^   r`   r   ra   rd   re   r   r   s	            r   test_09_phase3_mqe_changed_holdr      r   r   c                *   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }d|d   d   d   d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry      r   same_branch_push_zeror   source_branch_push_countr]   r^   r`   r   ra   rd   re   r   r   s           r   "test_10_same_branch_push_true_holdr      s    #//+B$!QqM/AAB	A
 	
 jM)*+;<" !9X-+----+---------+---+------- 	C
   D
D
c                *   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }d|d   d   d   d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   (ffffffffffffffffffffffffffffffffffffffffr   source_pr_preservationr   recomputed_head_shar]   r^   r`   r   ra   rd   re   r   r   s           r   $test_11_source_pr_not_preserved_holdr      s    #//+B$!QqM/AAB	A
 	 jM*+,<= !9X-+----+---------+---+------- 	Cr   c                   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }d|d   d   d   d<   t        |      }|d   dk(  rt	        |d	         d
   }|t
        k7  }|st        j                  d|fd|t
        f      t        j                  |      dt        j                         v st        j                  t
              rt        j                  t
              nddz  }dd|iz  }t        t        j                  |            d x}}y |d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   Tr   scope_declarationr   requires_merger]   rm   rp   rq   r   r   r   ra   rd   re   r^   r`   r   )r   r   r   r   r   r   rF   rf   rH   rD   rE   rG   rK   rL   r   )	r5   r   r   r   rg   rP   rh   ri   rj   s	            r    test_12_merge_required_true_holdr      s:   #//+B$!QqM/AAB	A
 	 jM%&'78 	q	A{i*&z2D2nDDDD2nDDD2DDDDDDnDDDnDDDDDDD{){k)))){k))){))))))k)))k))))))) 	Cs
   G
G
c                *   t        j                  | j                         D ci c]  \  }}|dk7  s|| c}}      }d|d   d   d   d<   t        |      d   }|t        k(  }|st        j                  d|fd	|t        f      t        j                  |      d
t        j                         v st        j                  t              rt        j                  t              nd
dz  }dd|iz  }t        t        j                  |            d x}}y c c}}w )Nry   broadr   callback_policy_markerr   	authorityr]   r^   r`   r   ra   rd   re   r   r   s           r   test_13_callback_missing_holdr      s    #//+B$!QqM/AAB	A
 	 jM*+,<= !9X-+----+---------+---+------- 	Cr   c                X   t        j                  |       }d|d   d<   t        t        t              |d      }|d   }|t
        k(  }|st        j                  d|fd|t
        f      t        j                  |      d	t        j                         v st        j                  t
              rt        j                  t
              nd	d
z  }dd|iz  }t        t        j                  |            d x}}|d   }|t        k7  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd
z  }dd|iz  }t        t        j                  |            d x}}y )Nlive_workspacery   rz   Tr   r]   r^   r`   r   ra   rd   re   r   r   r   )r   r   r   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   r   )r5   r   r   rP   rh   ri   rj   s          r   )test_14_pr_open_only_after_isolated_allowr      s     	i A0@Am,-i.!d	A X;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%X;2;22222;2222;222222222222222222r!   c                 v   t         j                  d      } t        j                  |       }g }t        j                  |      D ]  }t        |t        j                        st        j                  | |      xs dj                         j                  dd      }d|v rd|v r|j                  |       d|v sd|v sx|j                  |        | }|sed	d
dt        j                         v st        j                  |      rt        j                  |      ndiz  }t!        t        j"                  |            d }y )Nr   r     ghprmergepr_mergez--autozassert not %(py0)srv   bad)
MODULE_SRCr   astparsewalk
isinstanceCallget_source_segmentlowerreplacerI   rD   rE   rF   rG   rH   rK   rL   )srctreer   nodesegrM   @py_format2s          r   %test_15_merge_path_unreachable_staticr      s    




0C99S>D
C  dCHH%))#t4:AACKKRC }C

3S HO

3  7N7NNNNNsNNNsNNNNNNr!   c            	     \   t        t        t              d d      d   } | t        k(  }|st	        j
                  d|fd| t        f      t	        j                  |       dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd	|iz  }t        t	        j                  |            d x} }j                  }d
}d} |||      }d}||u }	|	st	        j
                  d|	fd||f      dt        j                         v st	        j                        rt	        j                        ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }
dd|
iz  }t        t	        j                  |            d x}x}x}x}x}	}fdj                  dg       D        }t        |      }|sddt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x}}y )NTr   r]   r^   r`   r   ra   rd   re   r   Fr   r   r   r   r   r   c              3  p   K   | ]-  }d |v xs# d|v xs dt        j                  dd            v  / yw)SEALu   live build 봉인live_fallbackstager   N)r+   r|   ).0xr   s     r   	<genexpr>zAtest_16_none_evidence_activate_structural_hold.<locals>.<genexpr>   sS        	! 	
*a/ 	
?cEE'2G
 4
 	
s   36ro   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyrv   r7   r8   )r   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   r|   r   )rP   rh   ri   rj   rM   rN   rO   r   r   rQ   r   r   r}   r   s                @r   .test_16_none_evidence_activate_structural_holdr      s   i.$	A X;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%558'885'/858/58888/5888888188818885888'888888/888588888888 ~r*	 3     
  
    
    
   
    
  r!   c                   d d fD ]  }t        j                  |       } ||       t        t        t              |d      }|d   }|t
        k(  }|st        j                  d|fd|t
        f      t        j                  |      dt        j                         v st        j                  t
              rt        j                  t
              ndd	z  }d
d|iz  }t        t        j                  |            d x}} y )Nc                ,    | d   j                  dd       S )Nry   rz   )r   r   s    r   <lambda>z2test_17_swt_missing_or_live_hold.<locals>.<lambda>
  s    !M"&&'>E r!   c                ,    | d   j                  dd      S )Nry   rz   r   )__setitem__r   s    r   r   z2test_17_swt_missing_or_live_hold.<locals>.<lambda>  s    !M"..#%5
 r!   Tr   r]   r^   r`   r   ra   rd   re   )r   r   r   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   )r5   mutater   r   rP   rh   ri   rj   s           r    test_17_swt_missing_or_live_holdr    s    E	
 * MM)$q	)na$
 {){k)))){k))){))))))k)))k)))))))*r!   c                D   t               }| j                  dd       | j                  dd       | j                  dd       t               }g }d}||v}|}|rd}||v}|}|sXt        j                  d|fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	d
z  }	dd|	iz  }
|j                  |
       |rt        j                  dfd|f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}g }d}||v}|}|rd}||v}|}|sXt        j                  d|fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	d
z  }	dd|	iz  }
|j                  |
       |rt        j                  d|fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}t        t        t                    }|j                   }d} ||      }d}||k7  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      t        j
                  |      t        j
                  |      dz  }t        j"                  |      dz   d|iz  }t        t        j                  |            d x}x}x}x}}|d   d   }|t$        k(  }|st        j                  d |fd!|t$        f      t        j
                  |      d"t        j                         v st        j                  t$              rt        j
                  t$              nd"d#z  }d$d%|iz  }	t        t        j                  |	            d x}}t               }||k(  }|st        j                  d |fd&||f      d't        j                         v st        j                  t               rt        j
                  t               nd't        j
                  |      d(t        j                         v st        j                  |      rt        j
                  |      nd(d)z  }d*d+|iz  }t        t        j                  |            d x}}y ),NGIT_DIRz/tmp/__poison_gitdir__GIT_WORK_TREEz/tmp/__poison_worktree__GIT_INDEX_FILEz/tmp/__poison_index__not inz%(py3)s not in %(py5)sserc   re   %(py7)srw   z%(py10)s not in %(py12)sr<   r=   %(py14)sr?   r   assert %(py17)spy17GIT_COMMON_DIRr   r]   HOLD_FOR_CHAIRr   zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} != %(py9)sr   rv   r7   r8   r9   rx   z
>assert %(py11)sr   ry   rz   r^   r`   r   ra   rd   re   z)%(py2)s
{%(py2)s = %(py0)s()
} == %(py4)sr0   beforer   assert %(py6)sr9   )r0   setenvr
   rF   rf   rH   rD   rE   rG   rI   rJ   rK   rL   r	   r+   r,   r|   r{   r   )monkeypatchr  r
  rM   rh   @py_assert4rP   rQ   rR   rj   r   rV   @py_format15@py_format16@py_format18r   rN   rO   @py_assert8r   r   r   ri   r}   rU   s                            r   -test_18_git_env_pollution_isolation_preservedr!    s   \Fy":;(BC')@A		B<9<9B<?<?"#<<<<<9B<<<9<<<<<<B<<<B<<<<<<<?"<<<?<<<<<<"<<<"<<<<<<<<<<<<<<DD2%D*:D*:"*DDDDD2DDDDDDDDD2DDD2DDDDDDD*:"DDD*:DDDDDD"DDD"DDDDDDDDDDDDDD&Y@A55115?1.1?..111?.111111111111115111111?111.1111111111	-011)	* 1)   	2     *   *      <!<6!!!!<6!!!!!!:!!!:!!!<!!!!!!6!!!6!!!!!!!r!   c            
     v   t         j                  d      } t        j                  |       }d}d}t        j                  |      D ]  }t        |t        j                        st        j                  | |      xs d}|j                         }|D ]  }||v}|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndd	t        j                         v st        j                  |      rt        j                  |      nd	d
z  }	t        j                  d|d d        dz   d|	iz  }
t!        t        j"                  |
            d } d|v r	d|v sd|v r	 |D ]  }g }d| d}||v}|}|rd| d}||v}|}|swt        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }|j%                  |       |rt        j                  dfd|f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }|j%                  |       t        j&                  |d      i z  }t        j                  d| d|d d        d z   d!|iz  }t!        t        j"                  |            d x}x}x}x}x}}  y )"Nr   r   )rmtreeunlinkz	os.removezshutil.rmtree)resetcleanstashr   r  )z%(py0)s not in %(py2)sflow)rv   r7   u   파괴적 호출 발견: P   z
>assert %(py4)sr8   r#   z"-c"git_destructive"'r	  r   r  r  rw   r  r  r  r?   r   zgit u	    발견: z
>assert %(py17)sr  )r   r   r   r   r   r   r   r   r   rF   rf   rD   rE   rG   rH   r{   rK   rL   rI   rJ   )r   r   	forbiddenr+  r   r   r)  r(  rM   @py_format3r}   grh   r  rP   rQ   rR   rj   r   rV   r  r  r  s                          r   )test_19_no_destructive_ops_on_live_staticr1  *  s   




0C99S>DBI1O 1dCHH%))#t4:C))+C L|KKKqKKKKKKqKKKqKKKKKKKKKKKKK'@Sb
%KKKKKKKL|32Cs2J$ 11s!H1C'1./s!H1,4C,?1 1001C1 1'0y 1 1*0&1 100 %(1 1'0y %(1 1 1*0&1*01001,4C1 1'0y -51 1*0&1 100 =@1 1'0y =@1 1 1*0&1*01"0.1 100T!Ic#2hZ01 1 1001 1 111r!   c                 X   t        t              } t        |       }|d   }|t        k(  }|st	        j
                  d|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd|iz  }t        t	        j                  |            d x}}|j                  d      rt        |d         d	   }|t        k7  }|st	        j
                  d
|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd|iz  }t        t	        j                  |            d x}}y y )Nr]   r^   r`   r   ra   rd   re   rp   rq   r   r   r   )r    r>   r   r   rF   rf   rH   rD   rE   rG   rK   rL   r|   r   r   )r   rg   rP   rh   ri   rj   s         r   2test_20_seventh_file_propagates_hold_through_chainr3  ?  s    
7Aq	AX;%;+%%%%;+%%%;%%%%%%+%%%+%%%%%%%uuZ*&z2D2nDDDD2nDDD2DDDDDDnDDDnDDDDDDD r!   c                 :   t         j                  d      } g }d}|| v}|}|rd}|| v}|}|sXt        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }d	d
|iz  }|j                  |       |rt        j                  dfd| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }	dd|	iz  }
|j                  |
       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}d}|| v}|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            d x}}d}|| v}|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            d x}}d}|| v }|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            d x}}t        t        t                    }|d   d   }d}||u }|slt        j                  d|fd ||f      t        j                  |      t        j                  |      d!z  }d"d#|iz  }t        t        j                  |            d x}x}}y )$Nr   r   getmtimest_mtimer  r	  r   r  r  rw   r  r  r  r?   r   r  r  z/home/jay/workspace/anu_v2)z%(py1)s not in %(py3)sra   rd   re   zcwd=z_sanitized_env()inz%(py1)s in %(py3)sr  rr   live_workspace_referencedFr   z%(py1)s is %(py4)srn   r  r9   )r   r   rF   rf   rH   rD   rE   rG   rI   rJ   rK   rL   r	   r+   r,   )r   rM   rh   r  rP   rQ   rR   rj   r   rV   r  r  r  ri   r   rN   r}   rU   s                     r   .test_21_no_live_path_or_mtime_reference_staticr<  I  sR   




0C::::S :Z:Zs%::::::S::::::::::S:::S:::::::Zs:::Z::::::s:::s::::::::::::::'2's2222's222'222222s222s2222222666$$$$$$$$$$$$$$$$$$$$$$$$
(3y>
BC,-.IJSeSJeSSSSJeSSSJSSSeSSSSSSSr!   c            	        t               } t        t        t                    }t        t        t                    }t               }|| k(  }|st	        j
                  d|fd|| f      dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |      dt        j                         v st	        j                  |       rt	        j                  |       nddz  }dd|iz  }t        t	        j                  |            d x}}|d	   d
   }|d	   d
   }||k(  }	|t        k(  }|	r|st	        j
                  d|	|fd||t        f      t	        j                  |      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd|iz  }
t        t	        j                  |
            d x}x}	x}}|d   d   }t        |      }|d   d   }t        |      }||k(  }|s&t	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}}y )Nr  r^   r  r0   r  r   r  r9   ry   rz   )r_   r_   )z%(py1)s == %(py5)sz%(py5)s == %(py6)sr   )rb   re   r9   zassert %(py8)sr;   rr   rs   )zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   )rv   r7   r8   r9   r;   r<   zassert %(py12)sr=   )r0   r	   r+   r,   rF   rf   rD   rE   rG   rH   rK   rL   r   r   )r  b1b2rM   rN   r}   rU   rP   r  rh   @py_format9r   rQ   rO   @py_format11rV   s                   r   ,test_22_duplicate_idempotency_no_side_effectrB  U  s   \F	'#i.	AB	'#i.	AB<!<6!!!!<6!!!!!!:!!!:!!!<!!!!!!6!!!6!!!!!!!
=12m4525	*5)	*  	25)   	3   6  	   *   *    	   	()*DEO6E O012LMO	M	NO 	NO O O=N=NO 	NO OHNO O6N6N  O OENY  O OENY 	FO OENY O OHNO O6N6NO OENYO OENYMO OENY	NO O O O;N;NO O Or!   c            	        t               } t        t        t              d      }	 t               }|| k(  }|st	        j
                  d|fd|| f      dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |      dt        j                         v st	        j                  |       rt	        j                  |       nddz  }dd	|iz  }t        t	        j                  |            d x}}|j                  }d
} ||      }d}||k7  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }	dd|	iz  }
t        t	        j                  |
            d x}x}x}x}}ddlm} |j                  di       }|j                  d      }|r |t        |       t               }|| k(  }|st	        j
                  d|fd|| f      dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |      dt        j                         v st	        j                  |       rt	        j                  |       nddz  }dd	|iz  }t        t	        j                  |            d x}}y # ddlm} |j                  di       }|j                  d      }|r |t        |       t               }|| k(  }|st	        j
                  d|fd|| f      dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |      dt        j                         v st	        j                  |       rt	        j                  |       nddz  }dd	|iz  }t        t	        j                  |            d x}}w xY w)NF)r   cleanupr^   r  r0   r  r   r  r9   r]   r  r   r  r   r  zassert %(py11)sr   r   )remove_isolated_worktreerr   isolated_worktree_path)r0   r	   r+   r,   rF   rf   rD   rE   rG   rH   rK   rL   r|   (anu_v3.isolated_worktree_evidence_sourcerE  )r  r   rM   rN   r}   rU   rO   r   r   r   r   rE  r   wt_paths                 r   4test_23_live_integrity_even_if_worktree_remove_failsrI  f  s   \F&i.%	A&|%|v%%%%|v%%%%%%z%%%z%%%|%%%%%%v%%%v%%%%%%%uu2X2uX2"22"22222"2222222q222q222u222X222222"22222222	
 ee126''23$Y8|%|v%%%%|v%%%%%%z%%%z%%%|%%%%%%v%%%v%%%%%%%	
 ee126''23$Y8|%|v%%%%|v%%%%%%z%%%z%%%|%%%%%%v%%%v%%%%%%%s   G5M D1Q<c           	     	   t        t        t              | d      }|d   }|t        k(  }|st	        j
                  d|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd	|iz  }t        t	        j                  |            d x}}|d
   }|t        k(  }|st	        j
                  d|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd	|iz  }t        t	        j                  |            d x}}|d   }|t        k(  }|st	        j
                  d|fd|t        f      t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              nddz  }dd	|iz  }t        t	        j                  |            d x}}|d   }d}||u }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}t        j                  |       }	d |	d   d<   t        t        t              |	d      }
|
d   }|t         k(  }|st	        j
                  d|fd|t         f      t	        j                  |      dt        j                         v st	        j                  t               rt	        j                  t               nddz  }dd	|iz  }t        t	        j                  |            d x}}|
j"                  }d}d} |||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |
      rt	        j                  |
      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}x}x}}y )NFr   r]   r^   r`   r   ra   rd   re   gate_decisionr   binding_preflight_statusr   r   r   r;  rn   r  r9   ry   rz   Tr   r   r   r_blkr   r   r   )r   r+   r,   r   rF   rf   rH   rD   rE   rG   rK   rL   r   r   r   r   r   r|   )r5   r_dryrP   rh   ri   rj   rN   r}   rU   r   rM  rM   rO   r   r   rQ   r   r   s                     r   8test_24_isolated_clean_allow_reaches_real_path_else_holdrO  }  s   i.)eE ?5?55555?5555?555555555555555555!3!^3333!^333!333333^333^3333333+,C,0CCCCC,0CCCC,CCCCCC0CCCC0CCCCCCCC'(1E1(E1111(E111(111E1111111i A04Am,-i.!dE ?)?k))))?k)))?))))))k)))k)))))))99A0A%A90%8AEA8EAAAA8EAAAAAA5AAA5AAA9AAA0AAA%AAA8AAAEAAAAAAAAr!   c                    t         j                  d      } g }d}|| v }|}|rd}|| v }|}|sXt        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }d	d
|iz  }|j                  |       |rt        j                  dfd| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }	dd|	iz  }
|j                  |
       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}d}|| v }|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            d x}}d}|| v }|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            d x}}y )Nr   r   u   SEAL ①u   SEAL ②r7  )z%(py3)s in %(py5)sr   r  r  rw   )z%(py10)s in %(py12)sr  r  r?   r   r  r  isolated_clean_worktreer9  ra   rd   re   "source_workspace_type_precondition)
RUNNER_SRCr   rF   rf   rH   rD   rE   rG   rI   rJ   rK   rL   )r   rM   rh   r  rP   rQ   rR   rj   r   rV   r  r  r  ri   s                 r   test_runner_seal_static_presentrT    s   




0C2:2:22s!22222:222:2222222222222222s222222222s222s22222222222222$+$++++$+++$++++++++++++++++/6/36666/3666/666666366636666666r!   )r   r   returndict[str, Any])rU  r+   )rU  rV  )P__doc__
__future__r   builtinsrD   _pytest.assertion.rewrite	assertionrewriterF   r   r   r   r)   syspathlibr   typingr   pytest__file__resolveparentsr,   r+   pathinsertrG  r   r   r	   r
   &anu_v3.pre_authorized_contract_deriverr   !anu_v3.pre_authorized_action_gater   r   &anu_v3.pre_authorized_executor_bindingr   r   'anu_v3.pre_authorized_activation_runnerr   r   r   r   FXr4   r:   r>   r   rS  r    r0   fixturer5   rZ   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r!  r1  r3  r<  rB  rI  rO  rT  r/   r!   r   <module>rl     s   #   
    
   N""$,,Q/	y>!HHOOAs9~&   J&KK	JJ
J
J!$JJ
!$II
5 h  
L
&
8
>9/.....*.	3"* "$1*ETO"&.B(7r!   