
    4j,                    ,   d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
ZddlZddlZddlZddlmZ ddlZ ee      j'                         j(                  j(                  j(                  Zedz  Zedz  Zedz  Zedz  Zg d	Zd
 Z e       Z ej:                  ej=                  d            Zd#dZ d$dZ!d$dZ"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d  Z3e4d!k(  r% ejj                   ejl                  ed"g             yy)%u  tests/regression/test_fallback_acceptance_2553plus58.py

task-2553+58 (TRACK C) — FALLBACK_ACCEPTANCE_CRITERION_FOR_NEXT_PILOT
regression.

Spec: memory/tasks/task-2553+58.md
(sha256 976d904dbe05971fad694ca0409d0cdbcd6cdc31434ac156371770ed9ea40f71).

회장 §3 필수 regression — 실 entrypoint 직접 호출 (mock-only FAIL):

  1  criterion (a) cancel-on-success 제거 -> OPERATIONAL_PASS [a]
  2  criterion (b) NON_BLOCKING schema-valid 마크 -> OPERATIONAL_PASS [b]
  3  a·b 동시 -> OPERATIONAL_PASS [a,b]
  4  마크 없이 발화 + DUPLICATE_CALLBACK_IGNORED-only -> OPERATIONAL_QUALITY_FAIL
     (회장 §2 anti_pattern — 안전성 OK 지만 운영 품질 PASS 아님)
  5  마크 없이 발화 + NO-ACTION-only -> OPERATIONAL_QUALITY_FAIL
  6  durable-success 미선행 -> NOT_APPLICABLE
  7  bound fallback 부재 -> NOT_APPLICABLE
  8  normal_success_unchanged=false -> SAFETY_FAIL (fail-closed)
  9  schema-valid 마크지만 task_id binding 불일치 -> 기준 (b) 미충족 FAIL
  10 비-ANU owner 마크 -> schema invalid -> 기준 (b) 미충족
  11 잘못된 classification 마크 -> schema invalid -> 기준 (b) 미충족
  12 criteria <-> schema 정합 (실 산출물) coherent=true
  13 non_blocking schema 가 valid draft-07
  14 criteria JSON 이 실 schema·실 entrypoint 를 가리킴
  15 MOCK-ONLY FAIL: entrypoint 가 실 모듈/실 산출물(sha256 일치)에서 옴
  16 기존 task-2553 frozen anchor byte-0 (read-only, 실행 전후 불변)
  17 git HEAD/branch 불변

모든 테스트 100% offline — network / git mutation / cron / dispatch /
cokacdir / subprocess / 파일 write 0. evaluate_fallback_acceptance 는 실
entrypoint 직접 호출이며 fixture 가 mock 으로 치환되면 sha256 가드(test 15)
가 실패한다.
    )annotationsN)Path2scripts/validate_fallback_acceptance_2553plus58.pyz/memory/events/fallback_acceptance_criteria.json)schemas/non_blocking_fallback_schema.jsonz*memory/fixtures/task-2553plus58.cases.json)zEmemory/events/task-2553.legacy-pending-fallback-inventory_260518.jsonzJmemory/events/task-2553+37.fallback-duplicate-callback-ignored_260518.jsonz)memory/events/callback_4tuple_index.jsonlc                    t         j                  j                  dt              } g }| }| r| j                  }|}|sdddt        j                         v st        j                  |       rt        j                  |       ndiz  }|j                  |       | rlddt        j                         v st        j                  |       rt        j                  |       ndt        j                        dz  }|j                  |       t        j                  |d      i z  }dd	|iz  }t        t        j                  |            d
x}x}}t         j                  j                  |       }| j                  j                  |       |S )u   Load the REAL validator module from the workspace scripts path.

    No mock/stub substitution — the module object is loaded straight from
    SCRIPT_PATH so ``__file__`` is asserted to be the real artifact (test 15).
    'validate_fallback_acceptance_2553plus58z%(py2)spy2specz#%(py6)s
{%(py6)s = %(py4)s.loader
})py4py6r   zassert %(py9)spy9N)	importlibutilspec_from_file_locationSCRIPT_PATHloader@py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specexec_module)	r
   @py_assert1@py_assert0@py_assert5@py_format3@py_format7@py_format8@py_format10mods	            K/home/jay/workspace/tests/regression/test_fallback_acceptance_2553plus58.py_load_real_entrypoint_moduler'   ;   s     >>111;D  44DKKK444DDK
..
)
)$
/CKKC J    utf-8encodingc                d    t        j                  | j                               j                         S )N)hashlibsha256
read_bytes	hexdigest)paths    r&   _shar2   N   s!    >>$//+,6688r(   c                L    t         d   D ]  }|d   | k(  s|c S  t        |       )Nobservation_casesname)FIXKeyError)r5   cs     r&   _caser9   R   s4    $% V9H 4.r(   c                    t        |       }d|v r0t        |d         }|j                  dd      }|rt        |   |d<   |S dddddd}| d	k(  rt        d
   |d<   |S | dk(  rd|d<   d|d<   t        d
   |d<   |S )z?Resolve an observation case, expanding *_ref pointers from FIX.observationregistry_non_blocking_mark_refNregistry_non_blocking_marktask-2553+58F0683510-FBT)task_idfallback_cron_idfallback_boundnormal_callback_durable_successnormal_success_unchangedcriterion_b_nonblocking_markvalid_non_blocking_markboth_a_and_bcancel_on_success_appliedFfallback_fired)r9   dictpopr6   )r5   r8   obsrefbases        r&   _obsrO   Y   s    dA1]#$gg6=03CC,-
 ")+/$(D ---01J-K)*
 K	 
	,0()!&-01J-K)*Kr(   c                    t         j                  t        d            } | 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}}| d	   }d
g}||k(  }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )Ncriterion_a_cancel_removedverdict==z8%(py1)s == %(py5)s
{%(py5)s = %(py3)s.OPERATIONAL_PASS
}Mpy1py3py5assert %(py7)spy7satisfied_criterionaz%(py1)s == %(py4)srX   r   assert %(py6)sr   rV   evaluate_fallback_acceptancerO   OPERATIONAL_PASSr   _call_reprcomparer   r   r   r   r   r   	vr   @py_assert4@py_assert2@py_format6r#   @py_assert3@py_format5r"   s	            r&   'test_01_criterion_a_cancel_removed_passrm   t   s    	&&t,H'IJAY<-1---<-----<----<------1---1-----------"#,u,#u,,,,#u,,,#,,,u,,,,,,,r(   c                    t         j                  t        d            } | 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}}| d	   }d
g}||k(  }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )NrE   rR   rS   rU   rV   rW   r[   r\   r]   br_   r`   ra   r   rb   rf   s	            r&   )test_02_criterion_b_nonblocking_mark_passrp   z   s    	&&t,J'KLAY<-1---<-----<----<------1---1-----------"#,u,#u,,,,#u,,,#,,,u,,,,,,,r(   c                    t         j                  t        d            } | 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}}| d	   }d
dg}||k(  }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )NrG   rR   rS   rU   rV   rW   r[   r\   r]   r^   ro   r_   r`   ra   r   rb   rf   s	            r&   test_03_both_a_and_b_passrr      s    	&&tN';<AY<-1---<-----<----<------1---1-----------"#1Sz1#z1111#z111#111z1111111r(   c                    t         j                  t        d            } | 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}}| 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   }||v }|slt	        j
                  d|fd||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )Ndup_ignored_only_no_markrR   rS   z@%(py1)s == %(py5)s
{%(py5)s = %(py3)s.OPERATIONAL_QUALITY_FAIL
}rV   rW   r[   r\   reasonDUPLICATE_IGNORED_ONLY_NO_MARKr_   r`   ra   r   OKsafety)in)z%(py1)s in %(py4)srV   rc   rO   OPERATIONAL_QUALITY_FAILr   re   r   r   r   r   r   r   rf   s	            r&   0test_04_dup_ignored_only_no_mark_is_quality_failr}      s.   	&&t,F'GHAY<51555<55555<5555<5555551555155555555555X;:::;:::::;::::;:::::::::::1X;4;4;4;r(   c                    t         j                  t        d            } | 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}}| 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 )Nno_action_only_no_markrR   rS   ru   rV   rW   r[   r\   rv   rw   r_   r`   ra   r   r{   rf   s	            r&   .test_05_no_action_only_no_mark_is_quality_failr      s    	&&t,D'EFAY<51555<55555<5555<5555551555155555555555X;:::;:::::;::::;:::::::::::r(   c                    t         j                  t        d            } | 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 )	N!not_applicable_no_durable_successrR   rS   z6%(py1)s == %(py5)s
{%(py5)s = %(py3)s.NOT_APPLICABLE
}rV   rW   r[   r\   rV   rc   rO   NOT_APPLICABLEr   re   r   r   r   r   r   r   rg   r   rh   ri   rj   r#   s         r&   )test_06_not_applicable_no_durable_successr      s    	&&t,O'PQAY<+1+++<+++++<++++<++++++1+++1+++++++++++r(   c                    t         j                  t        d            } | 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 )	N not_applicable_no_bound_fallbackrR   rS   r   rV   rW   r[   r\   r   r   s         r&   (test_07_not_applicable_no_bound_fallbackr      s    	&&t,N'OPAY<+1+++<+++++<++++<++++++1+++1+++++++++++r(   c                    t         j                  t        d            } | 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}}| 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 )Nsafety_fail_decouple_violatedrR   rS   )z3%(py1)s == %(py5)s
{%(py5)s = %(py3)s.SAFETY_FAIL
}rV   rW   r[   r\   rv    NORMAL_SUCCESS_DECOUPLE_VIOLATEDr_   r`   ra   r   )rV   rc   rO   SAFETY_FAILr   re   r   r   r   r   r   r   rf   s	            r&   *test_08_safety_fail_when_decouple_violatedr      s    	&&t,K'LMAY<(1==(<=((((<=(((<((((((1(((1(((=(((((((X;<<<;<<<<<;<<<<;<<<<<<<<<<<r(   c                    t         j                  t        d            } | 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}}| 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}}y )N!mark_present_but_task_id_mismatchrR   rS   ru   rV   rW   r[   r\   criterion_bFisz%(py1)s is %(py4)sr`   ra   r   mark_binding_okr{   rf   s	            r&   -test_09_mark_task_id_mismatch_not_criterion_br      s3   	&&t,O'PQAY<51555<55555<5555<5555551555155555555555]$u$u$$$$u$$$$$$u$$$$$$$(5(5((((5((((((5(((((((r(   c            
        t         j                  t        d         \  } }g }d}| |u }|}|r|}|s$t        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  }|j                  |       |rXd	d
dt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       t        j                  |d      i z  }	dd|	iz  }
t        t        j                  |
            d x}x}x}}ddddddddt        d   d	}t         j                  |      }|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}}|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malformed_mark_non_anu_ownerFr   z%(py2)s is %(py5)sokr	   rZ   %(py7)sr\   %(py9)sr   errsr   assert %(py12)spy12r>   r?   TDUPLICATE_CALLBACK_IGNORED)	r@   rA   rB   rC   rD   rH   rI   fallback_handlingr=   rR   rS   ru   rV   rW   r[   r   r   r`   ra   r   )rV   validate_non_blocking_markr6   r   re   r   r   r   r   r   r   r   r   rc   r|   )r   r   r   rh   rk   r   rj   r#   r$   @py_format11@py_format13rL   rg   ri   rl   r"   s                   r&   )test_10_non_anu_owner_mark_schema_invalidr      s   ++C0N,OPHB2;422244 ")+/$(%*9&)*H&I
C 	
&&s+AY<51555<55555<5555<5555551555155555555555]$u$u$$$$u$$$$$$u$$$$$$$r(   c                    t         j                  t        d         \  } }g }d}| |u }|}|r|}|s$t        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  }|j                  |       |rXd	d
dt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       t        j                  |d      i z  }	dd|	iz  }
t        t        j                  |
            d x}x}x}}y )N!malformed_mark_bad_classificationFr   r   r   r   r   r\   r   r   r   r   r   r   )rV   r   r6   r   re   r   r   r   r   r   r   r   r   )r   r   r   rh   rk   r   rj   r#   r$   r   r   s              r&   .test_11_bad_classification_mark_schema_invalidr      s    ++/0HB  2;422244r(   c                 0   t         j                         } | d   }d}||u }|st        j                  d|fd||f      t        j                  |      t        j                  |      dz  }t        j
                  | d         dz   d|iz  }t        t        j                  |            d x}x}}| d   }|j                  } |       }t        |      }|sd	d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }	t        t        j                  |	            d x}x}x}}y )NcoherentTr   r   r`   checksz
>assert %(py6)sr   z_assert %(py8)s
{%(py8)s = %(py0)s(%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.values
}()
})
}allpy0r	   r   r   py8)rV   check_criteria_schema_coherencer   re   r   _format_assertmsgr   r   valuesr   r   r   r   )
r8   r   rk   ri   rl   r"   r   r    @py_assert7@py_format9s
             r&    test_12_criteria_schema_coherentr      s    	))+AZ=-D-=D ---=D---=---D---!H+-------{${!!$!#$3#$$$$$$$$3$$$3$$${$$$!$$$#$$$$$$$$$$r(   c                    ddl m}  t        j                  t        j                  d            }| 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}}|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   )Draft7Validatorr)   r*   z$idr   rS   r_   r`   ra   r   additionalPropertiesFr   r   )
jsonschemar   jsonloadsSCHEMA_PATH	read_textcheck_schemar   re   r   r   r   )r   schemar   rk   ri   rl   r"   s          r&   ,test_13_non_blocking_schema_is_valid_draft07r      s    *ZZ--w-?@F  (%=GGG=GGGGG=GGGG=GGGGGGGGGGG()2U2)U2222)U222)222U2222222r(   c                 *	   t        j                  t        j                  d            } | 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   }|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}}d}t        t        |      }|sddt        j                         v st	        j                  t              rt	        j                  t              nd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}}d}t        t        |      }|sddt        j                         v st	        j                  t              rt	        j                  t              nd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}}d}t        t        |      }|sddt        j                         v st	        j                  t              rt	        j                  t              nd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)   r*   r   
schema_refr   rS   r_   r`   ra   r   
entrypointmoduler   functionrc   z5assert %(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
}hasattrrV   )r   rX   rY   rZ   r   r   )r   r   CRITERIA_PATHr   r   re   r   r   r   r   rV   r   r   r   )	critr   rk   ri   rl   r"   eprh   rj   s	            r&   5test_14_criteria_points_to_real_schema_and_entrypointr      s   ::m--w-?@D]L)6)6	7 )6   	*   7      
l	Bh<OOO<OOOOO<OOOO<OOOOOOOOOOOj>;;;>;;;;;>;;;;>;;;;;;;;;;;457145555555575557555555155515554555555555578717888888887888788888818881888788888888882371233333333733373333331333133323333333333r(   c                    t         j                  } d }| |u}|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}}t        |       }|j                  } |       }t        j                  } |       }||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
t	        j
                         v st        j                  t              rt        j                  t              nd
t        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}x}x}	x}}t         j                  }|j                  }t         j                  }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}t         j                   }|j                  } |       }t         j                  } |       }||k(  }|s:t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      t        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}t         j"                  }|j                  } |       }t"        j                  } |       }||k(  }|s:t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      t        j                  |      dt	        j
                         v st        j                  t"              rt        j                  t"              ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}t         j$                  } |t               }t'        t               }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      dt	        j
                         v st        j                  t&              rt        j                  t&              nd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}}t         j$                  } |t"              }t'        t"              }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      dt	        j
                         v st        j                  t"              rt        j                  t"              ndt        j                  |      dt	        j
                         v st        j                  t&              rt        j                  t&              nd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}}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}}y )"N)is not)z%(py0)s is not %(py3)smod_filer   rY   assert %(py5)srZ   rS   )z%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}.resolve
}()
} == %(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s.resolve
}()
}r   r   )r   rX   rY   rZ   r\   r   py11py13zassert %(py15)spy15)z%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.evaluate_fallback_acceptance
}.__module__
} == %(py8)s
{%(py8)s = %(py6)s.__name__
}rV   r   zassert %(py10)spy10)z%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.CRITERIA_PATH
}.resolve
}()
} == %(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py8)s.resolve
}()
}r   )r   r	   r   r   r   r   r   zassert %(py14)spy14)z%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.SCHEMA_PATH
}.resolve
}()
} == %(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py8)s.resolve
}()
}r   )zo%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.sha256_of
}(%(py3)s)
} == %(py10)s
{%(py10)s = %(py7)s(%(py8)s)
}r2   )r   r	   rY   rZ   r\   r   r   r   r   r   z%(py0)s == %(py3)src)rV   __file__r   re   r   r   r   r   r   r   r   resolver   rc   
__module____name__r   r   	sha256_ofr2   main)r   ri   r   @py_format4rj   rh   @py_assert6@py_assert10@py_assert12@py_assert8@py_format14@py_format16rk   r   r    r   r   @py_assert9@py_assert11r   @py_format15r   s                         r&    test_15_real_entrypoint_not_mockr      s   zzH8484884><>!!<!#<{':':<':'<<#'<<<<<#'<<<<<<<4<<<4<<<<<<<<<<<<><<<!<<<#<<<<<<{<<<{<<<':<<<'<<<<<<<<<))B)44B

B4
BBBB4
BBBBBB1BBB1BBB)BBB4BBBBBBBBBBBB
BBBBBBB ????""?"$?(=(=?(=(??$(?????$(???????1???1???????"???$????????????(=???(?????????==;=  ; ";k&9&9;&9&;;"&;;;;;"&;;;;;;;1;;;1;;;=;;; ;;;";;;;;;k;;;k;;;&9;;;&;;;;;;;;;;;<;}%<m)<<%)<<<<<%)<<<<<<<1<<<1<<<;<<<<<<}<<<}<<<%<<<<<<<<<<<<<<<m<<<m<<<)<<<<<<<<;;8;{#8tK'88#'88888#'888888818881888;888888{888{888#888888t888t888888K888K888'88888888	
BN27NNN2NNNNNN2NNN2NNNNNNNNNNr(   c                    t         D  ci c]  } | t        t        | z         }} t        j	                  t        d             t        j                          t        j                  g        t         D  ci c]  } | t        t        | z         }} ||k(  }|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  }dd|iz  }t        t        j                  |            d }y c c} w c c} w )	Nrt   rS   )z%(py0)s == %(py2)sprepost)r   r	   zassert %(py4)sr   )FROZEN_ANCHORSr2   	WORKSPACErV   rc   rO   r   r   r   re   r   r   r   r   r   r   )r^   r   r   r   r!   rl   s         r&   &test_16_frozen_anchors_byte0_read_onlyr      s    +9
:a1d9q=!!
:C
:""4(B#CD%%'FF2J,:;qAtIM"";D;$;3$33$$ ;
 <s   E 4E%c                    t        j                  ddt        t              ddgddd      j                  j                         } t        j                  ddt        t              ddgddd      j                  j                         }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}}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}}y )Ngitz-Cz	rev-parseHEADT)capture_outputtextcheckbranchz--show-current(20456b5f83fc039f2fd6f50f4b94095c29b41bfbrS   r   headr   r   rZ   z%task/task-2553p1-f1-clean-replacement)
subprocessrunstrr   stdoutstripr   re   r   r   r   r   r   r   )r   r   ri   r   r   rj   s         r&   !test_17_git_head_branch_unchangedr     s-   >>	c)nk6:$d fUUW 	 ^^	c)nh0@A$d fUUW  >=4=====4=======4===4===========<<6<<<<<6<<<<<<<6<<<6<<<<<<<<<<<r(   __main__z-q)r1   r   returnr   )r5   r   r   rJ   )7__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r-   importlib.utilr   r   r   syspathlibr   pytestr   r   parentr   r   r   r   FIX_PATHr   r'   rV   r   r   r6   r2   r9   rO   rm   rp   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   exitr    r(   r&   <module>r     s>  !D #       
  N""$++2299	NNMMEECC !"djj##W#5696--2;,
,
=)%( %34&
= zCHH[V[[(D)*+ r(   