
    W.jg                    ,
   d Z ddlmZ ddlZddlmc mZ ddl	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Z ee      j-                         j.                  d   Z ee      ej4                  vr"ej4                  j7                  d ee             edz  dz  Zej:                  j=                  d      Ze e edd	      xs d	 ee      k7  r e!ej:                        D  cg c]  } | dk(  s| jE                  d
      s|  c} D ]  Z#ej:                  e#=   ejH                  de eedz        g      Z%g Z&dZ'e%e'uZ(e(Z)e(re%jT                  Z+dZ,e+e,uZ-e-Z)e)sB ej\                  de(fde%e'f      d ej^                         v s ej`                  e%      r ejb                  e%      nd ejb                  e'      dz  Z2dde2iz  Z3e&ji                  e3       e(r ej\                  de-fde+e,f      d ej^                         v s ej`                  e%      r ejb                  e%      nd ejb                  e+       ejb                  e,      dz  Z5dde5iz  Z6e&ji                  e6        ejn                  e&d      i z  Z8dde8iz  Z9 e: ejv                  e9            dxZ)xZ&xZ(xZ'xZ+xZ-Z, ejx                  e%      Z=e=ej:                  d<   e%jT                  j}                  e=       ddl?m@ZA  ee      j-                         j                  dz  ZC ejH                  deC      ZDg Z&dZ'eDe'uZ(e(Z)e(reDjT                  Z+dZ,e+e,uZ-e-Z)e)sB ej\                  de(fdeDe'f      d ej^                         v s ej`                  eD      r ejb                  eD      nd ejb                  e'      dz  Z2dde2iz  Z3e&ji                  e3       e(r ej\                  de-fde+e,f      d ej^                         v s ej`                  eD      r ejb                  eD      nd ejb                  e+       ejb                  e,      dz  Z5dde5iz  Z6e&ji                  e6        ejn                  e&d      i z  Z8dde8iz  Z9 e: ejv                  e9            dxZ)xZ&xZ(xZ'xZ+xZ-Z, ejx                  eD      ZEeDjT                  j}                  eE       d3dZFd4dZGd4dZHd5d6dZId7d8d ZJd9d!d"d:d#ZKd;d$ZLd<d%ZMd& ZNd' ZOd( ZPd) ZQd* ZRd+ ZSd, ZTd- ZUd. ZVd/ ZWd0 ZXd1 ZYd2 ZZyc c} w )=uW  task-2746 — driver owner-pickup fire-state contract split (regression).

대상: dispatch.anu_pickup_driver.process_one 의 opt-in fire-state 분기(경로 A/B).

배경(근본 원인):
  process_one 이 collector_envelope 이 dict 이기만 하면 **무조건** verify_collector_authoritative
  (envelope.schedule_id 를 cron-history probe 로 ANU-owned 검증→AUTHORITATIVE)를 요구했다.
  fire-state 분기가 0 이어서, executor 가 schedule 을 아직 만들지 않은 **pre-fire** result 도
  "이미 존재하는 authoritative schedule proof"를 요구받아 구조적으로 통과 불가였다. authoritative
  schedule proof 는 ANU runner 의 fire **결과물**이지 pre-fire result 의 입력이 아니다.

수정: opt-in flag(contract_split, 기본 OFF) — ON 일 때만
  경로 A(pre-fire owner-pickup required): verify 면제, owner_proof_pickup_gate 로 진행.
  경로 B(already-fired / collector-claimed): verify_collector_authoritative 필수.
  self/owner-key/schedule claim → B 강제 또는 즉시 quarantine.

절대 제약(이 테스트 파일):
  - ANU key literal 0 — mock/stub 만. pickup_once/verify_collector_authoritative 실호출 0.
  - tmp_path 만 사용. 실제 memory/canonical 디렉토리 write 0. activation flag tmp dir 한정.
  - live wake/cron 발사 0(launcher_fn/relay_fn/callback_launch_fn 미주입).
    )annotationsN)Path   dispatchz__init__.py__file__ z	dispatch.)submodule_search_locations)is not)z%(py2)s is not %(py5)s_spec)py2py5z%(py7)spy7)z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)py9py11py14z%(py16)spy16zassert %(py19)spy19)anu_pickup_driverz#legacy_skip_fixture_builder_2744.py legacy_skip_fixture_builder_2744_bspecc                    | dz  dz  dz  j                  dd       | dz  dz  j                  dd       | dz  dz  dz  j                  dd       | dz  dz  d	z  j                  dd       | S )
Nmemoryevents	p0b_inboxT)parentsexist_okstate	p0b_state
quarantine	processed)mkdir)tmp_paths    M/home/jay/workspace/tests/regression/test_owner_pickup_contract_split_2746.py
_make_dirsr$   B   s    8#k188PT8U7"))$)F;&5<<TTX<Y;&4;;DSW;XO    c                    | dz  dz  dz  S )Nr   r   r    roots    r#   _inboxr*   J   s    (?X%33r%   c                    | dz  dz  dz  S )Nr   r   r   r'   r(   s    r#   _qdirr,   N   s    (?[(<77r%   c                    t        |       |z  }|j                  t        j                  |d      d       t	        j
                         dz
  }t        j                  t        |      ||f       |S )NF)ensure_asciizutf-8)encodingg      >@)	r*   
write_textjsondumps_timetimeosutimestr)r)   payloadnameppasts        r#   _writer<   R   sV    ttALLG%87LK::<$DHHSVdD\"Hr%   c                (     g  fd}|_         |S )uM   pickup_fn mock. 호출 인자(특히 owner_proof) 기록. 실제 wake/cron 0.c            	         j                  | |f       t        j                  ddg|j                  dd      g       S )NTxtask_idr   )verdictokargvr@   reasons)appendtypesSimpleNamespaceget)argskwargscallsrA   s     r#   _pickupz!make_pickup_mock.<locals>._pickup_   sB    dF^$$$JJy"-
 	
r%   rK   )rA   rL   rK   s   ` @r#   make_pickup_mockrN   [   s    E	
 GMNr%   sch-real)schedule_idc               ,     g  fd}|_         |S )uU   verify_fn mock. 호출 횟수 기록 — 경로 A 에서 '호출 0' 단언에 핵심.c            
     z    j                  | |f       t        j                  dk(  dg dk(  rdnddd      S )NAUTHORITATIVEr   	owner_anuowner_not_anuT)outcomerP   query_ok)rA   rB   classificationrD   owner_resolution)rE   rF   rG   )rI   rJ   rK   rP   rA   s     r#   _verifyz!make_verify_mock.<locals>._verifyr   sN    dF^$$$?**1_*D;/* 

 
	
r%   rM   )rA   rP   rZ   rK   s   `` @r#   make_verify_mockr[   n   s    E
 GMNr%   c                   t        j                  t        |      t        |       |||t               t        t	        |             t        | dz  dz  dz        dd 
      S )u^   process_one 을 격리(tmp) 인자로 호출. live fire 0 (launcher/relay/callback 미주입).r   r   r    Fc                      y )Nr'   aks     r#   <lambda>z_run.<locals>.<lambda>   s    r%   )	r)   	pickup_fn	verify_fncontract_splitprobequarantine_dirprocessed_dirwrite_evidencesleep_fn)drvprocess_oner7   objectr,   )r)   pathrd   pickupverifys        r#   _runrp      sW    ??D	Y%h5;'$/K7+EF% r%   c                L   | j                   }t        |      }d}||k(  }|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t        j                  |      t        j                  |      t        j                  |      dz  }t        j                  dt        | j                          d      d	z   d
|iz  }t        t        j                  |            d x}x}x}}| j                   d   \  }}|j                  d      }	t        |	t              }
|
sd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                  t              rt        j                  t              ndt        j                  |
      dz  }t        t        j                  |            d }
|	S )N   ==zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.calls
})
} == %(py8)slenrn   py0py1py3r   py8u   pickup_fn 호출 횟수=u    (기대 1)z
>assert %(py10)spy10r   owner_proofz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstanceopdict)rx   ry   r   py4)rK   rv   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanationrH   r~   r   )rn   @py_assert2@py_assert4@py_assert7@py_assert6@py_format9@py_format11_argsrJ   r   @py_assert3@py_format5s               r#   _owner_proof_ofr      sr   ||\3|\\!\\\\\\\\\3\\\3\\\\\\v\\\v\\\|\\\\\\\\\%=c&,,>O=PP[#\\\\\\\\LLOME6	M	"Bb$::bb$$Ir%   c                   t        |       }t        j                  d      }t        j                  } ||      }d}||u }|s
t	        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t	        j                  |      t	        j                  |      dz  }d	d
|iz  }t        t	        j                  |            d x}x}x}}t        ||      }	t               t               }}
t        ||	d|
|      }|j                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }d	d
|iz  }t        t	        j                  |            d x}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&                  }t(        j*                  }||k7  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nd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}}|j,                  }t(        j.                  }||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nd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}}t1        |
      }|d   }t(        j2                  }||k(  }|st	        j
                  d|fd ||f      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}}|d"   }t(        j4                  }||k(  }|st	        j
                  d|fd#||f      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}}|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 ),N	task-2746r@   TiszX%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.is_path_a_contract
}(%(py3)s)
} is %(py8)sbuilderr8   rx   r   rz   r   r{   assert %(py10)sr|   rd   rn   ro   r   rs   ru   rv   ro   rw   Fz3%(py2)s
{%(py2)s = %(py0)s.quarantined
} is %(py5)srecrx   r   r   assert %(py7)sr   !=zW%(py2)s
{%(py2)s = %(py0)s.verdict
} != %(py6)s
{%(py6)s = %(py4)s.VERDICT_QUARANTINE
}rj   rx   r   r   py6assert %(py8)sr{   )zT%(py2)s
{%(py2)s = %(py0)s.owner_key_class
} == %(py6)s
{%(py6)s = %(py4)s.OKC_ANU
}
l2_verdictzD%(py1)s == %(py5)s
{%(py5)s = %(py3)s.OWNER_PICKUP_PREFIRE_VERDICT
}ry   rz   r   
l1_outcome)zD%(py1)s == %(py5)s
{%(py5)s = %(py3)s.OWNER_PICKUP_PREFIRE_OUTCOME
}rP   r   z%(py1)s == %(py4)sry   r   assert %(py6)sr   rW   z%(py1)s is %(py4)s)r$   r   !build_owner_pickup_prefire_resultis_path_a_contractr   r   r   r   r   r   r   r   r<   rN   r[   rp   rK   rv   quarantinedrA   rj   VERDICT_QUARANTINEowner_key_classOKC_ANUr   OWNER_PICKUP_PREFIRE_VERDICTOWNER_PICKUP_PREFIRE_OUTCOME)r"   r)   r8   @py_assert1r   r   r   r   r   r:   rn   ro   r   r   r   @py_format6@py_format8@py_assert5@py_format7r   @py_assert0r   s                         r#   .test_1_valid_prefire_skips_verify_and_proceedsr      s   hD777LG%%6%g.6$6.$6666.$66666676667666%666666g666g666.666$6666666tWA%')9);FF
tQtF6
JC ||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??#e#?e####?e######3###3###?###e#######;;0#000;00000;000000030003000;000000#000#00000000000-#++-+----+------3---3---------#---#---+-------		 Bl?s??????????????????s???s???????????l?s??????????????????s???s???????????m"""""""""""""""""""j>"U">U"""">U""">"""U"""""""r%   c                    t        |       }t        j                  dddi      }t        j                  } ||      }d}||u }|s
t	        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	t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}t        ||      }	t               t        d      }}
t        ||	d|
|      }|j                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}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}||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                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}}y )Nr   schedule_created_by_executorTr@   extraFr   r   r   r8   r   r   r|   NON_AUTHORITATIVErA   r   rr   rs   ru   rv   ro   rw   r   r   r   r   r   owner_proof_failz9%(py2)s
{%(py2)s = %(py0)s.quarantine_reason
} == %(py5)sr   rn   r$   r   r   r   r   r   r   r   r   r   r   r   r<   rN   r[   rp   rK   rv   r   quarantine_reasonr"   r)   r8   r   r   r   r   r   r   r:   rn   ro   r   r   r   r   r   s                    r#   4test_2_schedule_created_claim_forces_B_or_quarantiner      s4   hD77$BD#I 8 G %%7%g.7%7.%7777.%77777777777777%777777g777g777.777%7777777tWA%')9BU)VFF
tQtF6
JC ||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                    t        |       }t        j                  dddi      }t        j                  } ||      }d}||u }|s
t	        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	t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}t        ||      }	t               t        d      }}
t        ||	d|
|      }|j                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}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}||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                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}}y )Nr   callback_fired_by_executorTr   Fr   r   r   r8   r   r   r|   r   r   r   rr   rs   ru   rv   ro   rw   r   r   r   r   r   r   r   r   rn   r   r   s                    r#   2test_3_callback_fired_claim_forces_B_or_quarantiner      s2   hD77$@$#G 8 G %%7%g.7%7.%7777.%77777777777777%777777g777g777.777%7777777tWA%')9BU)VFF
tQtF6
JC||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                   t        |       }t        j                  dddi      }t        j                  } ||      }d}||u }|s
t	        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	t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}t        ||      }	t               t               }}
t        ||	d|
|      }|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"                  }t$        j&                  }||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nd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}}|j(                  }t$        j*                  }||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nd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}}|j,                  }t/        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}}|
j,                  }t/        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}}y ) Nr   owner_key_proof_presentTr   Fr   r   r   r8   r   r   r|   r   r   r   r   r   r   rs   zr%(py2)s
{%(py2)s = %(py0)s.quarantine_reason
} == %(py6)s
{%(py6)s = %(py4)s.QREASON_OWNER_PICKUP_SELF_KEY_CLAIM
}rj   r   r   r{   zU%(py2)s
{%(py2)s = %(py0)s.owner_key_class
} == %(py6)s
{%(py6)s = %(py4)s.OKC_SELF
}r   ru   rv   ro   rw   rn   )r$   r   r   r   r   r   r   r   r   r   r   r   r<   rN   r[   rp   r   r   rj   #QREASON_OWNER_PICKUP_SELF_KEY_CLAIMr   OKC_SELFrK   rv   )r"   r)   r8   r   r   r   r   r   r   r:   rn   ro   r   r   r   r   r   r   r   s                      r#   0test_4_owner_key_proof_present_claim_quarantinedr      s   hD77$=t#D 8 G %%7%g.7%7.%7777.%77777777777777%777777g777g777.777%7777777tWA%')9);FF
tQtF6
JC ??"d"?d""""?d""""""3"""3"""?"""d"""""""  KC$K$KK $KKKKK $KKKKKKK3KKK3KKK KKKKKKCKKKCKKK$KKKKKKKK.#,,.,....,......3...3.........#...#...,.......||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                   t        |       }t        j                  dddi      }t        ||      }t	               t               }}t        ||d||      }|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                   }t"        j$                  }||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}	}|j&                  }t"        j(                  }||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}	}|j*                  }t-        |      }d}||k(  }|s
t        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                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}|j*                  }t-        |      }d}||k(  }|s
t        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                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   self_key_usedTr@   extra_enveloper   r   r   r   r   r   r   rs   r   rj   r   r   r{   r   r   ru   rv   ro   rw   r   r|   rn   )r$   r   r   r<   rN   r[   rp   r   r   r   r   r   r   r   r   r   r   rj   r   r   r   rK   rv   )r"   r)   r8   r:   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   s                      r#   *test_4b_envelope_self_key_used_quarantinedr      s?   hD77_d,C 8 G 	tWA%')9);FF
tQtF6
JC??"d"?d""""?d""""""3"""3"""?"""d"""""""  KC$K$KK $KKKKK $KKKKKKK3KKK3KKK KKKKKKCKKKCKKK$KKKKKKKK.#,,.,....,......3...3.........#...#...,.......||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                    t        |       }t        j                  dddi      }t        j                  } ||      }d}||u }|s
t	        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	t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}t        ||      }	t               t        d      }}
t        ||	d|
|      }|j                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}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}||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                   }t#        |      }d}||k(  }|s
t	        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                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}x}}y ) Nr   rP   zsch-FAKE-9999r   Fr   r   r   r8   r   r   r|   r   r   Tr   rr   rs   ru   rv   ro   rw   r   r   r   r   r   r   r   r   rn   r   r   s                    r#   /test_5_fake_envelope_schedule_id_blocked_from_Ar     s3   hD77]O,L 8 G %%7%g.7%7.%7777.%77777777777777%777777g777g777.777%7777777tWA%')9BU)VFF
tQtF6
JC ||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                 	   t        |       }t        j                  dddiddi      }t        ||      }t	               }t        dd      }t        ||d||	      }|j                  }t        |      }d
}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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$                  }t&        j(                  }||k7  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}}t+        |      }|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}||k(  }|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   TrP   rO   r@   r   r   rS   rA   rP   r   rr   rs   ru   rv   ro   rw   r   r|   Fr   r   r   r   r   r   r   r   rj   r   r   r{   r   r   r   r   r   )r$   r   r   r<   rN   r[   rp   rK   rv   r   r   r   r   r   r   r   r   r   rA   rj   r   r   )r"   r)   r8   r:   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                         r#   $test_6_already_fired_requires_verifyr   #  s   hD77-t4%z2 8 G
 	tWAFo:NF
tQtF6
JC ||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??#e#?e####?e######3###3###?###e#######;;0#000;00000;000000030003000;000000#000#00000000000		 Bl...................m*
*
****
******
*******r%   c                   t        |       }t        j                  dddiddi      }t        ||      }t	               }t        d      }t        ||d||	      }|j                  }t        |      }d
}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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}||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                  }t        |      }d}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}x}x}
}	y )Nr   r   TrP   zsch-xr   SELF_COLLECTOR_QUARANTINEr   r   rr   rs   ru   rv   ro   rw   r   r|   r   r   r   r   r   r   r   r   r   rn   r$   r   r   r<   rN   r[   rp   rK   rv   r   r   r   r   r   r   r   r   r   r   )r"   r)   r8   r:   rn   ro   r   r   r   r   r   r   r   r   r   r   r   s                    r#   ,test_7_non_authoritative_verdict_quarantinedr   <  s   hD77+T2%w/ 8 G
 	tWAF&ABF
tQtF6
JC||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                
   t        |       }t        j                  dddiddd      }t        ||      }t	               }t        d      }t        ||d||	      }|j                  }t        |      }d
}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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}||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&                  }t(        j*                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nd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}}|j                  }t        |      }d}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}x}x}
}	y )!Nr   r   Tzsch-dev-self)rP   r   r   r   r   r   rr   rs   ru   rv   ro   rw   r   r|   r   r   r   r   r   r   r   r   r   rj   r   r   r{   r   rn   )r$   r   r   r<   rN   r[   rp   rK   rv   r   r   r   r   r   r   r   r   r   r   r   rj   r   )r"   r)   r8   r:   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   s                      r#   .test_8_self_dev_key_schedule_claim_quarantinedr   S  s)   hD77-t4'5M 8 G
 	tWAF&9:F
tQtF6
JC ||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666.#,,.,....,......3...3.........#...#...,.......||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!r%   c                   t        |       }t        j                  d      }t        j                  } ||      }d}||u }|s
t	        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t	        j                  |      t	        j                  |      dz  }d	d
|iz  }t        t	        j                  |            d x}x}x}}d}	|d   }
|	|
v}|slt	        j
                  d|fd|	|
f      t	        j                  |	      t	        j                  |
      dz  }dd|iz  }t        t	        j                  |            d 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   }	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   }	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        ||d      }t               }t        ||d||       }|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}
}t!        |      d&   }	t"        j$                  }|	|k(  }|st	        j
                  d'|fd(|	|f      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}}y )+Nztask-2746-canaryr   Tr   r   r   r8   r   r   r|   rP   collector_envelope)not in)z%(py1)s not in %(py4)sr   r   r   )z%(py1)s not in %(py3)s)ry   rz   assert %(py5)sr   authoritativeFr   owner_pickup_requiredr   r   r   c                     t        d      )NuG   경로 A 는 verify_collector_authoritative 를 호출하면 안 된다)r   r^   s     r#   _explode_verifyzEtest_9_canary_fixture_only_passes_via_path_A.<locals>._explode_verify}  s    fggr%   ztask-2746-canary.result.jsonr9   r   r   r   r   r   r   r   rs   r   rj   r   )r$   r   r   r   r   r   r   r   r   r   r   r   r<   rN   rp   r   r   rj   r   )r"   r)   r8   r   r   r   r   r   r   r   r   r   r   r   @py_format4r   r   r:   rn   r   r   s                        r#   ,test_9_canary_fixture_only_passes_via_path_Ar   m  s1   hD77@R7SG %%6%g.6$6.$6666.$66666676667666%666666g666g666.666$6666666=(< === ====== ======== ========'=''''='''=''''''''''''''''?#,u,#u,,,,#u,,,#,,,u,,,,,,,*+3t3+t3333+t333+333t333333312;e;2e;;;;2e;;;2;;;e;;;;;;;/09E90E99990E9990999E9999999,-66-6666-666-6666666666h 	tW#ABAF
tQtF?
SC??#e#?e####?e######3###3###?###e#######6"<0TC4T4TT04TTTTT04TTTT0TTTTTTCTTTCTTT4TTTTTTTTr%   c                
   t        |       }t        j                  d      }t        ||      }t	               }t        d      }t        ||d||      }|j                  }t        |      }d}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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}||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}}t        j                  dddi      }t        ||d      }t        d      }t        ||dt	               |      }|j                  }t        |      }d}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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 )Nr   r   r   r   Fr   rr   rs   ru   rv   ro   rw   r   r|   Tr   r   r   r   r   r   r   r   rP   zsch-anythingr   ztask-2746-b.result.jsonr   verify2rec2r   )r"   r)   r8   r:   rn   ro   r   r   r   r   r   r   r   r   r   r   r   	payload_bp2r   r   s                        r#   test_10_no_canary_only_bypassr     sC   hD777LGtWA
 F&9:F
tQuVF
KC||!3|!!!!!!!!!!!!3!!!3!!!!!!v!!!v!!!|!!!!!!!!!!!!!??"d"?d""""?d""""""3"""3"""?"""d"""""""  6$66 $66666 $666666636663666 666$66666666 99]N,K : I 
i&?	@B':;Gb6F6HQXYD}}"3}""""""""""""3"""3""""""w"""w"""}"""""""""""""#t#t####t######4###4######t#######r%   c                   t        |       }t        j                  dd      }t        ||d      }t	               }t        dd      }t        ||d||	      }|j                  }t        |      }d
}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}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}}t%        |      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}}t        j'                  d      }t        ||d      }t	               }t        d       }t        ||d||	      }|j                  }t        |      }d
}	||	k(  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                   |            d x}x}x}
}	y )"Nztask-2746-legacyzsch-1)r@   rP   ztask-2746-legacy.result.jsonr   rS   r   Fr   rr   rs   ru   rv   verify1rw   r   r|   r   r   rec1r   r   r   r   r   r   r   r   ztask-2746-pfr   ztask-2746-pf.result.jsonr   r   )r$   r   build_schema_valid_resultr<   rN   r[   rp   rK   rv   r   r   r   r   r   r   r   r   r   r   r   )r"   r)   legacyp1pickup1r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   prefirer   pickup2r   r   s                            r#   /test_11_flag_off_preserves_unconditional_verifyr    s   hD ..7IW^._F	f#A	BB GGLGbwwOD}}"3}""""""""""""3"""3""""""w"""w"""}"""""""""""""$u$u$$$$u$$$$$$4$$$4$$$$$$u$$$$$$$7#L1D_D1_DDDD1_DDD1DDD_DDDDDDD 777OG	g$>	?B G7GbwwOD}}"3}""""""""""""3"""3""""""w"""w"""}"""""""""""""r%   c           	     
   t         j                  }d}||u }|st        j                  d|fd||f      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}}dd l
}t         j                  t         j                  fD ]  }|j                  |      }|j                  d	   }	|	j                  }
d}|
|u }|st        j                  d|fd
|
|f      t        j                  |	      t        j                  |
      t        j                  |      dz  }t        j                   |j"                        dz   d|iz  }t        t        j                  |            d x}	x}
x}} i fd}| j%                  t         d|       t        j&                  g       }d}
||
k(  }|st        j                  d|fd||
f      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}}
j(                  }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                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}}j(                  }d} ||      }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                  |      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}x}}y )!NFr   )zK%(py2)s
{%(py2)s = %(py0)s.OWNER_PICKUP_CONTRACT_SPLIT_DEFAULT
} is %(py5)srj   r   r   r   r   rd   )z/%(py3)s
{%(py3)s = %(py1)s.default
} is %(py6)s)ry   rz   r   z
>assert %(py8)sr{   c                4    j                  |       | d<   g S )Nr)   )update)r)   rJ   captureds     r#   _fake_scan_oncez9test_12_defaults_and_main_wiring.<locals>._fake_scan_once  s    	r%   	scan_oncers   )z%(py0)s == %(py3)src)rx   rz   r   r   T)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} is %(py9)sr  )rx   r   r   r   r   zassert %(py11)sr   r)   )zo%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} == %(py10)s
{%(py10)s = %(py8)s.CANONICAL_ROOT
})rx   r   r   r   r{   r|   zassert %(py12)spy12)rj   #OWNER_PICKUP_CONTRACT_SPLIT_DEFAULTr   r   r   r   r   r   r   r   inspectrk   r  	signature
parametersdefaultr   __name__setattrmainrH   CANONICAL_ROOT)monkeypatchr   r   r   r   r   r  fnsigr   r   r   r   r   r  r  r   @py_assert8r   @py_format10@py_format12@py_assert9r   @py_format13r  s                           @r#    test_12_defaults_and_main_wiringr    s   22;e;2e;;;;2e;;;;;;3;;;3;;;2;;;e;;;;;;;. N#~~./M/77M5M75@MMM75MMM/MMM7MMM5MMM"++MMMMMMMN H
 [/:	"BN27NNN2NNNNNN2NNN2NNNNNNNNNN<<1(1<()1T1)T1111)T11111181118111<111(111)111T1111111 <<55<53#5#55#55555#555555585558555<55555555555535553555#555555555r%   )r"   r   returnr   )r)   r   r  r   )ztask-2746.result.json)r)   r   r8   r   r9   r7   r  r   )CLOSEOUT_DONE)rA   r7   )rS   )rA   r7   rP   r7   )r)   r   rm   r   rd   bool)r  r   )[__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   importlib.utilutil_ilur1   r5   sysr4   r3   rF   pathlibr   pytestr   resolver   _ROOTr7   rm   insert
_real_initmodulesrH   _cachedgetattrlist
startswith_kspec_from_file_locationr   r   r   r   r   loader@py_assert10@py_assert13@py_assert12r   r   r   r   r   r   rE   @py_format15@py_format17_format_boolop@py_format18@py_format20r   r   module_from_spec_pkgexec_moduler   r   rj   parent_BUILDER_PATHr   r   r$   r*   r,   r<   rN   r[   rp   r   r   r   r   r   r   r   r   r   r   r   r   r  r  )r`   s   0r#   <module>rD     s  * #      	 
     	X ((+u:SXXHHOOAs5z"Z-/

++//*
%
?ww
B7=2#j/Qs{{+\QqJ!,,{B[q\ KKO(D((JC
@R<S;TE :9599T9T!9999599999599959999999999T9999999999999T9999999999999 4  'D"CKK
	LLT" - X&&(//2WW	%	%	%&H-	X 7T 7vT 7fmm 74 7m47 7 7 7vT 7 7 7 7 7v 7 7 7v 7 7 7T 7 7 7 7 7 7 7m4 7 7 7 7 7f 7 7 7f 7 7 7m 7 74 7 7 7 7 7 7 7 7 7 7 7 7 7
$


'   ' "48&: , #4","(","(",+2"."4U:$>#26o ]s   $T T