
    4jY              	         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ZddlmZ ddlZ ee      j%                         j&                  j&                  j&                  Z ee      ej,                  v r!ej,                  j/                   ee             ej,                  j1                  d ee             ddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, edz  dz  d	z  Z- e	j\                   ej^                               ja                         Z1 e	j\                   ej^                               ja                         Z2d
Z3d Z4 ejj                  d      d        Z6d0dZ7ddddZ8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@ej                  j                  dd dfd dfd  d!fd" d#fd$ d%fg      d&        ZCd' ZDd( ZEd) ZFd* ZGd+ ZHd, ZId- ZJeKd.k(  r eL ej                  ed/g            y)1u  tests/regression/test_cancel_on_success_live_observation_2553plus41.py

task-2553+41 — TRACK D: +37 CANCEL-ON-SUCCESS LIVE OBSERVATION FIXTURE
regression (read-only observation only).

§3.2 6-step assertion (전건 PASS, 100% mock/fixture, +37 entrypoint 경유):
  ① normal success                      (collector PASS + durable-success)
  ② wired entrypoint                    (binding-valid, +37 표준 entrypoint)
  ③ operational_collector_wiring        (PRIMARY 경유 — +25 wiring 결과 보유)
  ④ run_operational_cancel_seam         (operational=True, seam 1회 + claim)
  ⑤ live verifier 5조건 AND PASS        (c1~c5 전부 True)
  ⑥ bound fallback cron-remove + audit  (CANCELLED + schema 정합)

부가 단언:
  • binding-invalid (missing / marker mismatch) → seam 미진입·cron-remove
    0·fallback 보존·BINDING_* cancel-audit·디커플 (+37 §2.5, read-only)
  • verifier mismatch/SKIP → remove 0·preserve (디커플 불변)
  • fallback 발화 0 (spy schedule_history, 격리)
  • exact-once O_EXCL (동시 2호출 → 1 invoke·1 no-op)
  • 디커플 (cron-remove 실패 → normal collector success 불변)
  • read-only consume 증거: +37 entrypoint / +25 wiring / frozen anchor
    byte-0 (sha 전후 동일, §5 / §7)
  • 격리 강제 self-test: subprocess 차단·실 cron API 차단·live-path 차단
  • observation-decision.json ↔ harness 매핑 정합
  • live /home/jay/workspace git tracked HEAD/branch/ref 전후 assertEqual
    (§5 — task-2553+41.* / 신규 fixture/tests = untracked, 위반 아님)

100% offline. 실 callback cron / cokacdir subprocess / 실 schedule_history /
실 4-tuple / network / git mutation 0. 실 운영 cron 실제 삭제·실 발화 0.
    )annotationsN)Path)ANU_CHAT_IDFROZEN_ANCHOR
FROZEN_SHALIVE_SCHEDULE_HISTORYPLUS25_WIRING_SRCWIRED_ENTRYPOINT_SRCFakeCronLister
SpyRemoverSpyScheduleHistoryattempt_exact_once_claimbinding_invalid_reasonsinstall_isolation_guardsmake_bindingmaterialize_scenarioobserve_binding_invalidobserve_six_stepsimulate_concurrent_double)Classificationmemoryeventsz&task-2553+41.observation-decision.jsonc119085addb0f8b7c                 R   t         dz  } | dz  j                  d      j                         }|j                  d      r|j	                  dd      d   n|}|j                  d      r| |z  nd }|r3|j                         r#| |z  j                  d      j                         n|}|||fS )Nz.gitHEADutf-8encodingzref:zref:    )	WORKSPACE	read_textstrip
startswithsplitexists)git_dirhead_txtbranchref_pathshas        Z/home/jay/workspace/tests/regression/test_cancel_on_success_live_observation_2553plus41.py_git_refr,   T   s    & G& ++W+=CCEH v& 	w"1% 
 $,#6#6v#>wDH ) 
6	$$g$6<<> 
 fc""    T)autousec               #  B  K   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  }t        j                  d      dz   d|iz  }t        t        j                  |            d x}}y w)	N==)z)%(py2)s
{%(py2)s = %(py0)s()
} == %(py4)sr,   beforepy0py2py4u.   git HEAD/branch/ref 변경 감지 (§5 위반)
>assert %(py6)spy6)
r,   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanation)r2   @py_assert1@py_assert3@py_format5@py_format7s        r+   _git_ref_invariantrF   e   s     ZF	:Q:QQQ:QQQQQQ8QQQ8QQQ:QQQQQQQQQQQQQ!QQQQQQQs   DDc                     t        | dz  fi |S )Nsandbox)r   )tmp_pathkws     r+   	_scenariorK   l   s    9 4;;;r-   removed)remover_statushistory_firedc               r    t        | d   | d         }t        |      }t        | d   |xs g       }|||fS )Nverifier_entriestarget_cron_id)drop_id_after_first)statusrH   )	fired_ids)r   r   r   )scenariorM   rN   listerremoverhistorys         r+   _fakesrY   p   sR    #$$%56F /G }':G 7G##r-   c                &    t        | d   | d         S )Ntask_idrQ   )r   )scs    r+   _valid_bindingr]   |   s    9r*:';<<r-   c                   t        ||        t        |       }t        |      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  }d}||u }	|	st        j                  d|	fd	||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  }d}||u }	|	st        j                  d|	fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                   }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}y )NbindingrV   rW   rX   Tisz<%(py2)s
{%(py2)s = %(py0)s.step1_normal_success
} is %(py5)sobsr4   r5   py5assert %(py7)spy7)z>%(py2)s
{%(py2)s = %(py0)s.step2_wired_entrypoint
} is %(py5)sz5%(py2)s
{%(py2)s = %(py0)s.binding_valid
} is %(py5)s)zJ%(py2)s
{%(py2)s = %(py0)s.step3_operational_collector_wiring
} is %(py5)s)r   rK   rY   r   r]   step1_normal_successr9   r:   r;   r<   r=   r>   r@   rA   step2_wired_entrypointbinding_valid"step3_operational_collector_wiringrI   monkeypatchr\   rV   rW   rX   rd   rB   @py_assert4rC   @py_format6@py_format8s               r+   ,test_step123_normal_success_wired_via_plus25rs      s   [(3	8	B%bzFGW

r"C ##+t+#t++++#t++++++3+++3+++#+++t+++++++%%--%----%------3---3---%----------$$$$$$$$$$$$3$$$3$$$$$$$$$$$$$119T91T99991T999999399939991999T9999999r-   c                   t        ||        t        |       }t        |      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  }d	}||k(  }	|	st        j                  d
|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}y )Nr_   Tra   )zI%(py2)s
{%(py2)s = %(py0)s.step4_run_operational_cancel_seam
} is %(py5)srd   re   rg   rh   r   r0   )z9%(py2)s
{%(py2)s = %(py0)s.seam_invoke_count
} == %(py5)s)r   rK   rY   r   r]   !step4_run_operational_cancel_seamr9   r:   r;   r<   r=   r>   r@   rA   seam_invoke_countrn   s               r+   'test_step4_operational_cancel_seam_oncerw      s*   [(3	8	B%bzFGW

r"C 008D80D88880D888888388838880888D8888888  %A% A%%%% A%%%%%%3%%%3%%% %%%A%%%%%%%r-   c                   t        ||        t        |       }t        |      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  d	   fd
d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 )Nr_   Tra   zI%(py2)s
{%(py2)s = %(py0)s.step5_live_verifier_five_and_pass
} is %(py5)srd   re   rg   rh   five_condition_resultsc              3  ,   K   | ]  }|   d u   yw)TN ).0kfives     r+   	<genexpr>z9test_step5_live_verifier_five_and_pass.<locals>.<genexpr>   s!      	 	Q4	s   )c1_task_id_matchc2_chat_id_ownedc3_role_fallbackc4_marker_id_crosscheck c5_pending_not_fired_not_removed,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}allr3   )r   rK   rY   r   r]   !step5_live_verifier_five_and_passr9   r:   r;   r<   r=   r>   r@   rA   cancel_auditr   )rI   ro   r\   rV   rW   rX   rd   rB   rp   rC   rq   rr   rD   r   s                @r+   &test_step5_live_verifier_five_and_passr      sf   [(3	8	B%bzFGW

r"C 008D80D88880D888888388838880888D888888845D	
	 	3 	 	 	 	 	 	 	   	 	   	 	 	 	 	 	 	 	 	 	 	r-   c                
   t        ||        t        |       }t        |      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  }d	}||k(  }	|	st        j                  d
|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}|j                  d   d   }|d   }	||	k(  }|slt        j                  d
|fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}}	|j                  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}}	|j                   }d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z   d|iz  }t        t        j                  |            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}}	|d    }d!}	||	k(  }|slt        j                  d
|fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}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}}	y )#Nr_   Tra   zM%(py2)s
{%(py2)s = %(py0)s.step6_bound_fallback_remove_and_audit
} is %(py5)srd   re   rg   rh   r   r0   z9%(py2)s
{%(py2)s = %(py0)s.remove_call_count
} == %(py5)sr   cron_idrQ   z%(py1)s == %(py4)spy1r6   assert %(py6)sr8   dry_runFz%(py1)s is %(py4)s)schemaevent_idrz   remove_attemptedremove_resultskip_reasonalready_removed_or_missingnormal_success_unchangedin)z%(py0)s in %(py2)sr~   ar4   r5   u#   cancel-audit 필수 필드 누락: z
>assert %(py4)sr6   r   r   	CANCELLEDr   )r   rK   rY   r   r]   %step6_bound_fallback_remove_and_auditr9   r:   r;   r<   r=   r>   r@   rA   remove_call_countcallsr   r?   )rI   ro   r\   rV   rW   rX   rd   rB   rp   rC   rq   rr   @py_assert0@py_assert2rD   rE   r   r~   @py_format3s                      r+   *test_step6_bound_fallback_remove_and_auditr      s}   [(3	8	B%bzFGW

r"C 44<<4<<<<4<<<<<<3<<<3<<<4<<<<<<<<<<  %A% A%%%% A%%%%%%3%%%3%%% %%%A%%%%%%%==I&>"-=*>>&*>>>>>&*>>>>&>>>*>>>>>>>>==I&/%/&%////&%///&///%///////A	 
A Av@@@qA@@@@@@q@@@q@@@@@@A@@@A@@@@<QC@@@@@@@
A  (D( D(((( D((( (((D(((((((_,,,,,,,,,,,,,,,,,,,'(0D0(D0000(D000(000D0000000r-   c                
   t        ||        t        |       }t        |      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
t        j                  |j                               dz   d|
iz  }t        t        j                  |            d x}x}	}|j                   }d}||u }	|	st        j                  d|	fd	||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
d
d|
iz  }t        t        j                  |            d x}x}	}d |j"                  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}}	g }|j"                  }	d}|	|k\  }|}|r|j&                  }|d   } ||      }| }|}|stt        j                  d|fd|	|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      t        j                  |      dz  }dd|iz  }|j)                  |       |rddt        j                         v st        j                  |      rt        j                  |      ndt        j                        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}x}}|j,                  }|st        j                  d      dz   dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d }y ) Nr_   Tra   )z0%(py2)s
{%(py2)s = %(py0)s.all_pass
} is %(py5)srd   re   
>assert %(py7)srh   )z1%(py2)s
{%(py2)s = %(py0)s.mock_only
} is %(py5)srg   c              3  *   K   | ]  }|d    du   yw)r   FNr|   )r}   cs     r+   r   z8test_full_six_step_all_pass_mock_only.<locals>.<genexpr>   s     <q|u$<s   r   r   r3   r   rQ   )>=)z-%(py4)s
{%(py4)s = %(py2)s.calls
} >= %(py7)srV   )r5   r6   rh   z%(py9)spy9zOnot %(py17)s
{%(py17)s = %(py13)s
{%(py13)s = %(py11)s.id_present
}(%(py15)s)
})py11py13py15py17r   zassert %(py21)spy21u6   schedule_history spy 미조회 (passive 관측 누락)z+
>assert %(py2)s
{%(py2)s = %(py0)s.reads
}rX   r   )r   rK   rY   r   r]   all_passr9   r:   r;   r<   r=   r>   r?   step_mapr@   rA   	mock_onlyr   r   
id_presentappend_format_boolopreads)rI   ro   r\   rV   rW   rX   rd   rB   rp   rC   rq   rr   rD   @py_assert6@py_assert5r   @py_assert12@py_assert14@py_assert16@py_assert18@py_format10@py_format19@py_format20@py_format22r   s                            r+   %test_full_six_step_all_pass_mock_onlyr      s   [(3	8	B%bzFGW

r"C <</4/<4///<4//////3///3///<///4//////////== D =D    =D      3   3   =   D       <gmm<<3<<<<<<<<<3<<<3<<<<<<<<<<<<<<L6<<L1L<1LV%6%6Lr:J7KL%67K%LL%L!LL!LLLL<1LLLLLL6LLL6LLL<LLL1LLLLLLLLLLVLLLVLLL%6LLL7KLLL%LLLLLLLLLLLLLLL==R=RRRRRRRRR7RRR7RRR=RRRRRRr-   c                   t        ||        t        |       }t        |      \  }}}t        |d   |d   d       }t	        ||||      }|j
                  }d}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      d	z  }d
d|iz  }t        t        j                  |            d x}x}
}	d}|j                  }	||	v }|st        j                  d|fd||	f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      dz  }d
d|iz  }t        t        j                  |            d x}x}}	|j                  }d}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      d	z  }d
d|iz  }t        t        j                  |            d x}x}
}	|j                   }d}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      d	z  }d
d|iz  }t        t        j                  |            d x}x}
}	|j"                  }d}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      d	z  }d
d|iz  }t        t        j                  |            d x}x}
}	|j$                  }g }	||	k(  }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      d	z  }d
d|iz  }t        t        j                  |            d x}x}
}	|j&                  d   }d}
||
k(  }|slt        j                  d|fd||
f      t        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}}
|j&                  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}}
|j&                  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}}
|j(                  }|j*                  }
t,        j.                  }|
|k(  }|s
t        j                  d|fd |
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |
      d!t        j                         v st        j                  t,              rt        j                  t,              nd!t        j                  |      d"z  }d#d$|iz  }t        t        j                  |            d x}x}
x}}y )%Nr[   rQ   fallback_cron_idr`   rV   rW   Fra   ri   resre   rg   rh   fallback_cron_id_missingr   )z?%(py1)s in %(py5)s
{%(py5)s = %(py3)s.binding_invalid_reasons
})r   py3rf   z4%(py2)s
{%(py2)s = %(py0)s.seam_invoked
} is %(py5)s)z;%(py2)s
{%(py2)s = %(py0)s.cron_remove_invoked
} is %(py5)sT)z:%(py2)s
{%(py2)s = %(py0)s.fallback_preserved
} is %(py5)sr0   z-%(py2)s
{%(py2)s = %(py0)s.calls
} == %(py5)srW   lookup_statusBINDING_MISSINGr   r   r   r8   r   r   r   )zv%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.collector_result
}.classification
} == %(py8)s
{%(py8)s = %(py6)s.PASS
}r   )r4   r5   r6   r8   py8zassert %(py10)spy10)r   rK   rY   r   r   rl   r9   r:   r;   r<   r=   r>   r@   rA   r   seam_invokedcron_remove_invokedfallback_preservedr   r   collector_resultclassificationr   PASS)rI   ro   r\   rV   rW   _r`   r   rB   rp   rC   rq   rr   r   r   rD   rE   @py_assert7r   @py_format9@py_format11s                        r+   0test_binding_missing_no_seam_no_remove_preservedr      s   [(3	8	BFGQ
9r*+dG "
GFGC %%%%%%%%%%%%3%%%3%%%%%%%%%%%%%%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$u$u$$$$u$$$$$$3$$$3$$$$$$u$$$$$$$""+e+"e++++"e++++++3+++3+++"+++e+++++++!!)T)!T))))!T))))))3)))3)))!)))T)))))))==B=B=B77=BO,A0AA,0AAAAA,0AAAA,AAA0AAAAAAAA./858/58888/5888/8885888888867?4?74????74???7???4???????E..E.2E2EE.2EEEEE.2EEEEEEE3EEE3EEEEEE.EEEEEE.EEE.EEE2EEEEEEEEr-   c                X
   t        ||        t        |       }t        |      \  }}}t        |d   |d   d      }t	        ||d         }d |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}}	t        ||||      }|j                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}	}d |j                  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}}	|j                   }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}	}|j"                  }g }||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}	}|j$                  d   }d}	||	k(  }|slt        j                  d|fd||	f      t        j                  |      t        j                  |	      dz  }
dd|
iz  }t        t        j                  |            d x}x}}	|j$                  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[   rQ   zFB-OTHER-41r   dispatch_fired_marker_path)r   c              3  >   K   | ]  }|j                  d         yw fallback_cron_id_marker_mismatchNr#   r}   rs     r+   r   z9test_binding_marker_mismatch_no_remove.<locals>.<genexpr>#  s     MAq||>?M   r   anyr3   r   Fra   ri   r   re   rg   rh   c              3  >   K   | ]  }|j                  d         ywr   r   r   s     r+   r   z9test_binding_marker_mismatch_no_remove.<locals>.<genexpr>(  s"       	
78r   r   r0   r   rW   r   BINDING_MISMATCHr   r   r   r8   r   Tr   )r   rK   rY   r   r   r   r;   r<   r9   r=   r>   r@   rA   r   rl   r:   r   r   r   )rI   ro   r\   rV   rW   r   r`   prerB   rC   rD   r   rp   rq   rr   r   r   rE   s                     r+   &test_binding_marker_mismatch_no_remover     sw   [(3	8	BFGQ
9r*+mG "B/K,LC NMM3MMMMMMMMM3MMM3MMMMMMMMMMMMMM
!
GFGC %%%%%%%%%%%%3%%%3%%%%%%%%%%%%%,, 3                         $u$u$$$$u$$$$$$3$$$3$$$$$$u$$$$$$$==B=B=B77=BO,B0BB,0BBBBB,0BBBB,BBB0BBBBBBBB67?4?74????74???7???4???????r-   zmutate,labelc                &    | j                  d      S )Nz
task-OTHER)r[   updatees    r+   <lambda>r   8  s    188L81 r-   ztask_id mismatchc                &    | j                  d      S )No   )chat_idr   r   s    r+   r   r   9  s    188C8( r-   zchat_id not ownedc                &    | j                  d      S )Nnormal)roler   r   s    r+   r   r   :  s    1888* r-   zrole not fallbackc                &    | j                  d      S )NT)firedr   r   s    r+   r   r   ;  s    188$8' r-   zalready firedc                &    | j                  d      S )NT)rL   r   r   s    r+   r   r   <  s    188D8) r-   zalready removedc                   t        ||        t        |       } ||d   d          t        |      \  }}}t        |t	        |      |||      }|j
                  }	d}
|	|
u }|st        j                  d|fd|	|
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      t        j                  |
      dz  }t        j                  |      d	z   d
|iz  }t        t        j                  |            d x}	x}}
|j                  }	d}
|	|
u }|st        j                  d|fd|	|
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      t        j                  |
      dz  }t        j                  |      d	z   d
|iz  }t        t        j                  |            d x}	x}}
|j                   }	d}
|	|
k(  }|st        j                  d|fd|	|
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      t        j                  |
      dz  }t        j                  | d      d	z   d
|iz  }t        t        j                  |            d x}	x}}
|j"                  }	d}
|	|
u }|st        j                  d|fd|	|
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      t        j                  |
      dz  }t        j                  |      d	z   d
|iz  }t        t        j                  |            d x}	x}}
|j$                  d   }d}||u }|st        j                  d|fd||f      t        j                  |      t        j                  |      dz  }t        j                  |      dz   d|iz  }t        t        j                  |            d x}x}}y )NrP   r   r_   Tra   ri   rd   re   r   rh   Fry   r0   r   u   : 실 remove (preserve 위반)rc   r   r   r   r7   r8   )r   rK   rY   r   r]   rl   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   r   rj   r   )rI   ro   mutatelabelr\   rV   rW   rX   rd   rB   rp   rC   rq   rr   r   r   rD   rE   s                     r+   %test_verifier_mismatch_skip_preservesr   5  s    [(3	8	B
2 !!$%%bzFGW

r"C ++$+++++++++3+++3+++++++++e+++++++00@E@0E9@@@0E@@@@@@3@@@3@@@0@@@E@@@5@@@@@@@  OAO A%OOO AOOOOOO3OOO3OOO OOOAOOO%0N'OOOOOOOO##2t2#t+222#t22222232223222#222t222U222222267F4F74?FFF74FFF7FFF4FFFFFFFFFFr-   c                   t        ||        t        |       }t        |d      \  }}}t        |t	        |      |||      }|j
                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
d	d
|
iz  }t        t        j                  |            d x}x}	}|j                  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}}	|j                  }d}||u }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
d	d
|
iz  }t        t        j                  |            d x}x}	}|j                  d   }d}	||	k7  }|slt        j                  d|fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}}	y )Nfailed)rM   r_   Tra   rc   rd   re   rg   rh   r   r   r   r   r8   Fr   r   r   )!=)z%(py1)s != %(py4)s)r   rK   rY   r   r]   rj   r9   r:   r;   r<   r=   r>   r@   rA   r   r   )rI   ro   r\   rV   rW   rX   rd   rB   rp   rC   rq   rr   r   r   rD   rE   s                   r+   test_decouple_remove_failurer  Y  s   [(3	8	B%bBFGW

r"C ##+t+#t++++#t++++++3+++3+++#+++t+++++++67?4?74????74???7???4???????44==4====4======3===3===4==========O,;;,;;;;,;;;,;;;;;;;;;;r-   c                   t        ||        | dz  dz  }t        j                  d      j                         }t	        ||      }|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}}|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}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }	t        t        j                  |	            d x}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}}|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            }
t        |
      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |
      rt        j                  |
      ndt        j                  |      t        j                  |      dz  }	dd|	iz  }t        t        j                  |            d x}x}}t!        j"                  |
d   j%                  d            }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }	t        t        j                  |	            d x}x}}|d   }||k(  }|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'        ||      }d}||u }|s7t        j                  d|fd$||f      d%t        j                         v st        j                  t&              rt        j                  t&              nd%d&t        j                         v st        j                  |      rt        j                  |      nd&d t        j                         v st        j                  |      rt        j                  |      nd t        j                  |      t        j                  |      d'z  }d(d)|iz  }t        t        j                  |            d x}x}}y )*NrH   claimss   task-2553+41-eventfirst_claimedTra   r   r   r   r8   second_claimedFrv   r   r0   r   second_is_noopexact_once_okz*.seam-claim.*.jsonz0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr4   r   r   r8   assert %(py8)sr   r   r   r   atomic_create_methodzO_CREAT|O_EXCLr   z%(py1)s == %(py3)seidr   r   assert %(py5)srf   )z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} is %(py7)sr   	claim_dir)r4   r   r5   r6   rh   assert %(py9)sr   )r   hashlibsha256	hexdigestr   r9   r:   r>   r@   rA   listglobr	  r;   r<   r=   jsonloadsr!   r   )rI   ro   r  r  r   r   rC   r   rD   rE   r  r   rp   r   payload@py_format4rq   r   rr   r   s                       r+   test_exact_once_oexclr  o  s   [(39$x/I
...
/
9
9
;C
$Y
4C'4'4''''4''''''4''''''' )E) E)))) E))) )))E)))))))"#(q(#q((((#q(((#(((q((((((( (D( D(((( D((( (((D((((((('4'4''''4''''''4''''''')..!678Fv;!;!;!33vv;!jj,,g,>?G)*>.>>*.>>>>>*.>>>>*>>>.>>>>>>>>:%#%%%%#%%%%%%%%%#%%%#%%%%%%%#Is3<u<3u<<<<3u<<<<<<#<<<#<<<<<<I<<<I<<<<<<s<<<s<<<3<<<u<<<<<<<r-   c                 R   t         j                  } t        j                  } |       } | |      }|j                  } |       }|t
        k(  }|st        j                  d|fd|t
        f      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |       dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dt        j                         v st        j                  t
              rt        j                  t
              ndd	z  }t        j                  d      dz   d	|iz  }t        t        j                  |            d x} x}x}x}x}x}}t         j                  } t        j                  } |       } | |      }|j                  } |       }|t         k(  }|st        j                  d|fd|t         f      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |       d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dt        j                         v st        j                  t               rt        j                  t               ndd	z  }t        j                  d      dz   d	|iz  }t        t        j                  |            d x} x}x}x}x}x}}t         j                  } t"        j                  } |       } | |      }|j                  } |       }|t$        k(  }|st        j                  d|fd|t$        f      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |       dt        j                         v st        j                  t"              rt        j                  t"              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dt        j                         v st        j                  t$              rt        j                  t$              ndd	z  }t        j                  d      dz   d	|iz  }t        t        j                  |            d x} x}x}x}x}x}}y )Nr0   )z%(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.sha256
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.read_bytes
}()
})
}.hexdigest
}()
} == %(py15)sr  r   r   )	r4   r5   r   rf   rh   r   r   r   r   u,   frozen anchor byte-0 변경 (§5/§7 위반)z
>assert %(py17)sr   r
   WIRED_ENTRYPOINT_SHAuT   +37 wired entrypoint 변경 감지 (callback/collector 경로 수정 — §5 위반)r	   PLUS25_WIRING_SHAu;   +25 operational_collector_wiring 변경 감지 (§5 위반))r  r  r   
read_bytesr  r   r9   r:   r;   r<   r=   r>   r?   r@   rA   r
   r  r	   r  )	rB   rp   r   @py_assert8@py_assert10r   r   @py_format16@py_format18s	            r+   %test_readonly_consume_byte0_invariantr%    sS   6$//6/161262<<6<>6>*L6 6$5$56>*6 6/5v6 655 	6 6,5I 	6 6,5I 	6 6/5v6 655 %6 6,5I %6 6,5I 06 6,5I 26 6,5I 	36 6,5I 	=6 6,5I 	?6 6/5v6 655 CM6 6,5I CM6 6$5$556 6 6"5"56 6 6 	^+66^68^89^9CC^CE^E	 ^ ^ M^L]^E^ ^ X^W]^ ^ F^E] 	^ ^ U^T] 	^ ^ U^T] 	^ ^ X^W]^ ^ F^E] ,^ ^ U^T] ,^ ^ U^T] 7^ ^ U^T] 9^ ^ U^T] 	:^ ^ U^T] 	D^ ^ U^T] 	F^ ^ X^W]^ ^ F^E]  ^ ^ U^T]  ^ ^ M^L]]^ ^ ^ K^J]^ ^ ^
 	E(33E35E56E6@@E@BEB	E E 4E3DEBE E ?EfE E -E,D 	E E <E9 	E E <E9 	E E ?EfE E -E,D )E E <E9 )E E <E9 4E E <E9 6E E <E9 	7E E <E9 	AE E <E9 	CE E ?EfE E -E,D E E <E9 E E 4E3DDE E E 2E1DE E E Er-   c                ,   t        ||        t        j                  t              5  t	        j
                  ddg       d d d        t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nechoxzecho x)r   pytestraisesr@   
subprocessrunossystem)rI   ro   s     r+    test_isolation_blocks_subprocessr/    so    [(3	~	& &}%&	~	& 
		( & & s   A>B
>B
Bc                F   t        ||        dd lm} dd lm} t        j                  t              5   |j                                 d d d        t        j                  t              5   |j                         dd       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   FB1F)r   )
r   )utils.completion_callback_fallback_cancel#completion_callback_fallback_cancelutils.live_cron_state_verifierlive_cron_state_verifierr)  r*  r@   RealCokacdirCronListerRealCokacdirCronRemover)rI   ro   fclvs       r+   #test_isolation_blocks_real_cron_apir:    s    [(3:/	~	& &#!!#%&	~	& ;$""$UE:; ;& &; ;s   B)BBB c                |   t        ||        t        j                  t              5  t	        j
                  t        t        dz        d       d d d        t        j                  t              5  t        j
                  t        t        dz        t        j                         d d d        | dz  }t	        j
                  t        |      d      5 }|j                  d       d d d        |j                  } |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                   |      rt        j"                  |      ndt        j"                  |      t        j"                  |      t        j"                  |      dz  }d	d
|iz  }	t        t        j$                  |	            d x}x}x}}t	        j
                  t        t&              d      5 }|j(                  }d} ||      }|sddt        j                         v st        j                   |      rt        j"                  |      ndt        j"                  |      t        j"                  |      t        j"                  |      dz  }
t        t        j$                  |
            d x}x}}d d d        t        j                  t              5  t	        j
                  t        t&              d       d d d        y # 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   :xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)NzFBX.logwzok.txtokr0   )zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}()
} == %(py7)sp)r4   r5   r6   rh   r  r   r   r   zFassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read
}(%(py4)s)
}f)r4   r5   r6   r8   )r   r)  r*  r@   builtinsopenstrr   r-  O_RDONLYwriter!   r9   r:   r;   r<   r=   r>   rA   r
   read)rI   ro   r>  r?  rB   rC   r   r   rr   r   rE   s              r+    test_isolation_blocks_live_pathsrF    s   [(3	~	& Cc/);<cBC	~	& E
)I56DE 	8A	s1vs	# q	;; ;= D =D    =D      1   1   ;   =   D       	s/0#	6 !vvavayyqqvay	~	& 6c./56 6C CE E  6 6s<   'K?.5LL1C L&$L2?L	LL#&L/2L;c           	        t         j                  } |       }|st        j                  d      dz   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}}t        j                  t         j                  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}}|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}}|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}}|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}}|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        |      }t!        dd      D ch c]  }d| 	 }}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d d!|iz  }t        t        j                  |            d x}x}}t#        ||        t%        |       }t'        |      \  }}}t)        |t+        |      |||"      }|j-                         j/                         D ]L  \  }}d}||u }|st        j                  d	|fd#||f      d$t	        j
                         v st        j                  |      rt        j                  |      nd$t        j                  |      d%z  }	t        j                  | d&      d'z   d|	iz  }
t        t        j                  |
            d x}}||   d(   }|s8d)d*t        j                  |      iz  }t        t        j                  |            d }||   d+   }|s8d)d*t        j                  |      iz  }t        t        j                  |            d }O t        j0                  }d,} |||-      }t2        |v}|sWt        j                  d.|fd/t2        |f      d0t	        j
                         v st        j                  t2              rt        j                  t2              nd0d1t	        j
                         v st        j                  t              rt        j                  t              nd1t        j                  |      d2t	        j
                         v st        j                  |      rt        j                  |      nd2t        j                  |      t        j                  |      d3z  }d4d5|iz  }t        t        j                  |            d x}x}x}}y c c}w )6Nu    observation-decision.json 부재zC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}DECISION_JSONr3   r   r   r   Tra   r   r   r   r8   real_ops_zero_touch"callback_collector_path_unmodifiedfuture_real_task_applicableanu_chat_idr0   r  r   r  r  rf   contract_six_step_to_harnessr      stepr  setmappingr
  r  r   r_   )z%(py0)s is %(py3)sr=  )r4   r   u)    관측 실패 — decision 정합 위반z
>assert %(py5)sharness_componentzassert %(py1)sr   mock_artifactF)ensure_ascii)not in)ze%(py0)s not in %(py9)s
{%(py9)s = %(py4)s
{%(py4)s = %(py2)s.dumps
}(%(py5)s, ensure_ascii=%(py7)s)
}ANU_KEY_SECRETr  dec)r4   r5   r6   rf   rh   r   zassert %(py11)sr   )rH  r%   r9   r?   r;   r<   r=   r>   r@   rA   r  r  r!   r:   r   rP  ranger   rK   rY   r   r]   r   itemsdumpsrV  )rI   ro   rB   rC   rD   rW  r   r   rE   r  rq   rQ  ir   rp   r   r\   rV   rW   rX   rd   rO  r=  @py_format2r   r!  r   @py_format12s                               r+   test_decision_json_consistencyr^    s   E!E!EE#EEEEEEE=EEE=EEEEEE!EEEEEE
**],,g,>
?C{#t#t####t######t#######$%--%----%---%----------34<<4<<<<4<<<4<<<<<<<<<<,-55-5555-555-5555555555},,,,,,,,,,,,,,,,,,,,,,,,01Gw<<a<1d1#J<<<<<<<<<<<<<<<<<3<<<3<<<<<<w<<<w<<<<<<<<<<<<<<<[(3	8	B%bzFGW

r"C LLN((* .bMrTzMMMrTMMMMMMrMMMrMMMTMMMdV#LMMMMMMMt}0111111111111t}_-------------.
 "&DeDCe!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DDCDDDCDDDeDDD!DDDDDDDD# =s   `
__main__z-q)rI   r   )N__doc__
__future__r   r@  r;   _pytest.assertion.rewrite	assertionrewriter9   r  r  r-  r+  syspathlibr   r)  __file__resolveparentr    rB  pathremoveinsertDtests.fixtures.cancel_on_success_live_observation_harness_2553plus41r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   (utils.anu_delegation_completion_callbackr   rH  r  r   r  r  r  rV  r,   fixturerF   rK   rY   r]   rs   rw   r   r   r   r   r   markparametrizer   r  r  r%  r/  r:  rF  r^  __name__
SystemExitmainr|   r-   r+   <module>ru     s0  < #      	  
  N""$++2299	y>SXXHHOOC	N# 3y> "    & D  //  &w~~###%)+  #GNN#?#4#?#?#ABLLN ##" R R< (1 	$=:(&$81FS,F4@: 	13EF	(*=>	*,?@	'9	)+<=	G	G4<,=*E";6*E: z
[V[[(D!12
33 r-   