ó
    ™Ï™j77  ã            	      óp  • S r SSKJr  SSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKJr  \" \5      R                  5       R                  S   r\S-  S-  S-  S	-  r\S
-  S-  r\S
-  S-  r\R(                  R+                  S\5      r\(       a  \R.                  (       d   e\R(                  R1                  \5      r\R.                  R5                  \5        \R                  " SSSSS\R6                  R8                  S9rSrSrSS jr SS jr! " S S\
RD                  5      r#\$S:X  a  \
RJ                  " SS9  gg)z6Hostile tests for the PStack causal-evidence contract.é    )ÚannotationsN)ÚPathé   ÚscriptsÚopsÚpstackzpstack_evidence.pyÚconfigzpstack-evidence-contract.jsonzpstack-program-workgraph.jsonÚpstack_evidenceéê  é	   é   é   ©Útzinfoz2026-09-04T05:00:00Zz2026-09-04T05:20:00Zc                 ó   • SSSSS/S.$ )Nú'Biji-Biji-Initiative/bbi-infrastructureé5-  Ú(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazPolicy Guardszpolicy-admission (shadow))Ú
repositoryÚprÚheadÚsurfaces© r   ó    ÚD/mnt/data/pstack-tranche/scripts/qa/test-pstack-evidence-contract.pyÚselectorr      s   € à?ØØØ$Ð&AÐBñ	ð r   c                 óÀ  • [        5       n SSSSSSSSS	S
S.S.SSSS.[        SSS.U [        R                  U 5      SSSS/S.SSSSSSS.SSSS S!S"S#S$S%S&S
S
S'S(S).S*.S+SSS S,S"S#S-S.S&S/S/S0.S*.SSSS S1S"S2S3S.S&S
S
S0.S*./S4S5S6S7S8S9S:S// S S [        / S;.S<S5S6S7S=SS>S+/S/S S [        / S;.S?S@SASBSCSSDSS+// SESF[        / S;./SGSASHSISJ/SKSLSMSSNSOSP/SQ./ SR./SSSKSTSU/SV/ SWQSX.SYSZ.$ )[Nzbbi.process-truth/v1z(mode-s-pr-11573-generation-33772003659.1zmode-sÚworkflow_transactionr   r   r   Ú(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbl   Kaï9 é   )r   r   r   ÚbaseÚrun_idÚrun_attempt©ÚkindÚidentityzgithub-admission-adapterz1.0.0Ú(cccccccccccccccccccccccccccccccccccccccc)ÚnameÚversionÚgit_shaiÍ[i0u  )Úobserved_atÚmonotonic_nsÚdeadline_msé   Úprovider_pagination_endzcontrol.known-shadow-positive)r   Úselector_sha256Úexpected_countÚobserved_countÚterminated_byÚcoverage_evidenceÚboundedé   é   i   )Úsurface_capÚ	claim_capÚunknown_capÚstdout_byte_capÚstderr_byte_capzprovider.policy-guardszprovider.api.check-runsÚproviderÚokéŽ   iˆ  zgithub://check-runs/exact-headÚ@1111111111111111111111111111111111111111111111111111111111111111i   FÚsuccessz33772003659.1)Úsame_name_countÚtrusted_countÚ
conclusionÚ
generation)ÚidÚsourceÚ	authorityÚstatusÚduration_msr-   ÚartifactÚdigestÚbytesÚ	truncatedÚfactszprovider.shadow-rowéq   Ú@2222222222222222222222222222222222222222222222222222222222222222i   r   )rB   rC   ée   z*github://check-runs/known-positive-controlÚ@3333333333333333333333333333333333333333333333333333333333333333zfact.policy-guards-successÚfactÚobservedÚdirect_observationÚpresenceÚexactzHThe exact PR head has one canonical successful Policy Guards generation.)rF   r%   ÚstateÚmethodÚpolarityÚscopeÚ	statementÚevidenceÚnegative_control_evidenceÚ
confidenceÚ	falsifierÚ
expires_atÚ
supersedeszfact.shadow-absentÚabsencezCNo trusted shadow row was present in the bounded exact-head census.zhypothesis.publisher-raceÚ
hypothesisÚopenÚcausal_inferencerY   zBThe publisher lost the open-PR race after Policy Guards completed.gffffffæ?zoA provider-bound publisher run reached its write step while the PR was open and emitted another typed terminal.z unknown.first-missing-transitionzNWhich publisher or reconciler transition was first absent for this generation?ÚPUBLISH_SHADOWÚPUBLISH_APP_ONLY_ADMISSIONzconveyor-02z github-workflow-generation-tracezSEnumerate trusted publisher and reconciler jobs for this exact head and generation.zIOne edge among wake, bind, decide, write, or read-back is absent or held.zprovider census incompletezhead identity changed)ÚadapterÚactionr-   Úexpected_discriminatorÚabort_conditions)rF   rY   ÚquestionÚblocksÚownerÚprobeÚresolution_evidenceÚDISCRIMINATEzexact head remains resolvablez&provider census is complete within capÚ#FIRST_MISSING_TRANSITION_CLASSIFIED)zprovider ambiguityzidentity racezcensus truncation)Útyperp   ÚpreconditionsÚsuccess_receiptrm   Ú )ÚschemaÚ	bundle_idÚprogramÚsubjectÚ	collectorÚclockÚuniverseÚcompletenessÚboundsr   ÚclaimsÚunknownsÚnext_transitionÚbundle_digest)r   ÚOBSERVEDr   Ú_selector_digestÚEXPIRES)Ú	selections    r   Úvalid_bundlerŠ   %   s*  € Ü“
€Ià(Ø?Øà*àGØØ Ø Ø%Ø ññ

ð 9ÀWÐYaÑbÜ!)¸9ÐUZÑ[à!Ü%×6Ñ6°yÓAØØØ6Ø"AÐ!Bñ
ð "àØØØ$Ø$ñ
ð /Ø3Ø'ØØ"Ø#Ø<Ø"ØØ"Ø-.ÀÐR[ÐkzÑ{ñð ,Ø3Ø'ØØ"Ø#Ø<Ø"ØØ"Ø-.ÀÑCñð 6Ø3Ø'ØØ"Ø#ØHØ"ØØ"Ø-.ÀÑCñð7(
ðV 3ØØ#Ø.Ø&Ø ØgØ5Ð6Ø-/Ø"Ø!Ü%Ø ñð  +ØØ#Ø.Ø%Ø"ØbØ2Ð3Ø.MÐ-NØ"Ø!Ü%Ø ñð  2Ø$ØØ,Ø#Ø"ØaØ5Ð7LÐMØ-/Ø!ð OÜ%Ø ñð?.
ðb 9ØØlØ+Ð-IÐJØ&àAØsØ#(Ø.yØ)EÐG^Ð(_ñð (*ñð
ð$ #Ø"Ø=Ð?gÐhØDÚ \ñ
ð ñcRð Rr   c                  ó  • \ rS rSr\SS j5       rSSS jjrS S jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg)!ÚContractTesté¼   c                ó@   • [         R                  [        5      U l        g ©N)r   Úload_contractÚCONTRACT_PATHÚcontract)Úclss    r   Ú
setUpClassÚContractTest.setUpClass½   s   € ä×+Ñ+¬MÓ:ˆ�r   Nc                ój   • [         R                  U=(       d
    [        5       U R                  [        S9$ ©N©Únow)r   Úseal_bundlerŠ   r’   ÚNOW©ÚselfÚbundles     r   ÚsealedÚContractTest.sealedÁ   s%   € Ü×!Ñ! &×":¬L«N¸D¿M¹MÌsÐ!ÐSÐSr   c                ó  • U R                  [        R                  5       n[        R                  XR                  [
        S9  S S S 5        U R                  U[        WR                  5      5        g ! , (       d  f       N4= fr—   )	ÚassertRaisesr   ÚContractErrorrš   r’   r›   ÚassertInÚstrÚ	exception)r�   rž   ÚfragmentÚcaughts       r   ÚrejectedÚContractTest.rejectedÄ   sV   € Ø×Ñœv×3Ñ3Ô4¸Ü×Ñ˜v§}¡}¼#ÐÑ>÷ 5à�‰�h¤ F×$4Ñ$4Ó 5Õ6÷ 5Õ4ús    #A1Á1
A?c                óæ   • U R                  5       n[        R                  XR                  [        S9nU R                  US   S5        U R                  US   S5        U R                  US   S5        g )Nr˜   ÚverdictÚPASSÚopen_unknownsr    r…   z^[0-9a-f]{64}$)rŸ   r   Úvalidate_bundler’   r›   ÚassertEqualÚassertRegex)r�   rŸ   Úsummarys      r   Ú$test_valid_bundle_seals_and_verifiesÚ1ContractTest.test_valid_bundle_seals_and_verifiesÉ   sf   € Ø—‘“ˆÜ×(Ñ(¨·±ÄCÐ(ÐHˆØ×Ñ˜ Ñ+¨VÔ4Ø×Ñ˜ Ñ1°1Ô5Ø×Ñ˜ Ñ0Ð2CÕDr   c                ó  • U R                  5       nUS   S   S==   S-  ss'   U R                  [        R                  S5         [        R	                  XR
                  [        S9  S S S 5        g ! , (       d  f       g = f)Nr‚   r   r]   z mutatedzbundle_digest:mismatchr˜   )rŸ   ÚassertRaisesRegexr   r£   r¯   r’   r›   )r�   rŸ   s     r   Ú test_digest_mutation_is_detectedÚ-ContractTest.test_digest_mutation_is_detectedÐ   sb   € Ø—‘“ˆØˆxÑ˜Ñ˜KÓ(¨JÑ6Ó(Ø×#Ñ#¤F×$8Ñ$8Ð:RÕSÜ×"Ñ" 6¯=©=¼cÐ"ÑB÷ T×SÖSús   Á#A0Á0
A>c                óV   • [        5       nSSSSSS.S.US'   U R                  US	5        g )
NÚprocesszwk-01z$aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeé{   iè  )ÚhostÚboot_idÚpidÚuidr$   r|   zbundle.subject.identity:shape©rŠ   r©   rœ   s     r   Ú*test_process_identity_requires_start_ticksÚ7ContractTest.test_process_identity_requires_start_ticksÖ   s:   € Ü“ˆààØAØØñ	ñ
ˆˆyÑð 	�‰�fÐ=Õ>r   c                óR   • [        5       nSUS   S   S'   U R                  US5        g )NiŸ† r   r   r   zselector_sha256:mismatchrÀ   rœ   s     r   Ú$test_selector_digest_is_load_bearingÚ1ContractTest.test_selector_digest_is_load_bearingã   s,   € Ü“ˆØ/4ˆˆzÑ˜:Ñ& tÑ,Ø�‰�fÐ8Õ9r   c                óV   • [        5       nSUS'   SUS   S'   U R                  US5        g )NÚcompleter€   r   r   r1   Úcount_mismatchrÀ   rœ   s     r   Ú0test_complete_bundle_requires_count_and_coverageÚ=ContractTest.test_complete_bundle_requires_count_and_coverageè   s2   € Ü“ˆØ!+ˆˆ~ÑØ/0ˆˆzÑÐ+Ñ,Ø�‰�fÐ.Õ/r   c                óh   • [        5       nSUS   S   S'   S US   S   S'   U R                  US5        g )Núprocfs.stackr   r   rG   r-   Úrequired_for_blocking_surfacerÀ   rœ   s     r   Ú'test_blocking_surface_requires_deadlineÚ4ContractTest.test_blocking_surface_requires_deadlineî   s@   € Ü“ˆØ*8ˆˆzÑ˜1Ñ˜hÑ'Ø/3ˆˆzÑ˜1Ñ˜mÑ,Ø�‰�fÐ=Õ>r   c                ó\   • [        5       nSUS'   SUS   S   S'   U R                  US5        g )NrÇ   r€   Útimeoutr   r   rI   Ú!complete_with_incomplete_surfacesrÀ   rœ   s     r   Ú$test_complete_bundle_rejects_timeoutÚ1ContractTest.test_complete_bundle_rejects_timeoutô   s6   € Ü“ˆØ!+ˆˆ~ÑØ*3ˆˆzÑ˜1Ñ˜hÑ'Ø�‰�fÐAÕBr   c                óR   • [        5       nSUS   S   S'   U R                  US5        g )NÚ	universalr‚   r   r\   Ú"universal_requires_complete_bundlerÀ   rœ   s     r   Ú-test_universal_claim_requires_complete_bundleÚ:ContractTest.test_universal_claim_requires_complete_bundleú   s,   € Ü“ˆØ'2ˆˆxÑ˜Ñ˜GÑ$Ø�‰�fÐBÕCr   c                óR   • [        5       n/ US   S   S'   U R                  US5        g )Nr‚   r    r_   Ú!absence_requires_negative_controlrÀ   rœ   s     r   Ú&test_absence_requires_negative_controlÚ3ContractTest.test_absence_requires_negative_controlÿ   s-   € Ü“ˆØ;=ˆˆxÑ˜ÑÐ7Ñ8Ø�‰�fÐAÕBr   c                óR   • [        5       nS US   S   S'   U R                  US5        g )Nr‚   r   ra   Úinvalid_stringrÀ   rœ   s     r   Ú"test_hypothesis_requires_falsifierÚ/ContractTest.test_hypothesis_requires_falsifier  s,   € Ü“ˆØ+/ˆˆxÑ˜Ñ˜KÑ(Ø�‰�fÐ.Õ/r   c                óR   • [        5       nSUS   S   S'   U R                  US5        g )Ng®Gáz®ï?r‚   r   r`   Úfact_must_be_nullrÀ   rœ   s     r   Ú#test_fact_cannot_smuggle_confidenceÚ0ContractTest.test_fact_cannot_smuggle_confidence	  s,   € Ü“ˆØ,0ˆˆxÑ˜Ñ˜LÑ)Ø�‰�fÐ1Õ2r   c                óT   • [        5       nS/US   S   S'   U R                  US5        g )Nzmissing.surfacer‚   r   r^   zevidence:unresolvedrÀ   rœ   s     r   Ú$test_evidence_reference_must_resolveÚ1ContractTest.test_evidence_reference_must_resolve  s/   € Ü“ˆØ+<Ð*=ˆˆxÑ˜Ñ˜JÑ'Ø�‰�fÐ3Õ4r   c                ó˜   • [        5       nUS   R                  [        R                  " US   S   5      5        U R	                  US5        g )Nr   r   Úduplicate_id)rŠ   ÚappendÚcopyÚdeepcopyr©   rœ   s     r   Ú&test_duplicate_surface_ids_fail_closedÚ3ContractTest.test_duplicate_surface_ids_fail_closed  s=   € Ü“ˆØˆzÑ×!Ñ!¤$§-¢-°°zÑ0BÀ1Ñ0EÓ"FÔGØ�‰�f˜nÕ-r   c                ó¸   • [        5       nUS   S   nSUS'   SUS'   SSS	S
.US'   SUS   S   S'   U R                  U R                  U5      S   S   S   S5        g )Nr   r   rÌ   rG   Útimeout_unreaped_helperrI   i”&  ÚSIGKILLF)Ú
helper_pidÚsignal_sentÚreapedrO   z>The procfs helper exceeded its deadline and remained unreaped.r‚   r]   )rŠ   r°   rŸ   )r�   rž   Úsurfaces      r   Ú)test_timeout_unreaped_helper_is_preservedÚ6ContractTest.test_timeout_unreaped_helper_is_preserved  s{   € Ü“ˆØ˜Ñ$ QÑ'ˆØ*ˆ�ÑØ5ˆ�ÑØ*.¸yÐTYÑZˆ�ÑØ+kˆˆxÑ˜Ñ˜KÑ(Ø×Ñ˜Ÿ™ VÓ,¨ZÑ8¸Ñ;¸HÑEÐG`Õar   c                óR   • [        5       nS US   S   S'   U R                  US5        g )Nrƒ   r   rq   zprobe:not_objectrÀ   rœ   s     r   Ú test_open_unknown_requires_probeÚ-ContractTest.test_open_unknown_requires_probe!  s,   € Ü“ˆØ)-ˆˆzÑ˜1Ñ˜gÑ&Ø�‰�fÐ0Õ1r   c                ó$  • U R                  [        R                  S5         [        R                  [	        5       U R
                  [        R                  " SSSSS[        R                  R                  S9S9  S S S 5        g ! , (       d  f       g = f)	Nzobserved_at:staler   r   r   é   r   r   r˜   )
r¶   r   r£   rš   rŠ   r’   ÚdtÚdatetimeÚtimezoneÚutc)r�   s    r   Útest_stale_bundle_is_rejectedÚ*ContractTest.test_stale_bundle_is_rejected&  sc   € Ø×#Ñ#¤F×$8Ñ$8Ð:MÕNÜ×ÑÜ“Ø—‘Ü—K’K  a¨¨A¨q¼¿¹¿¹ÑIð ñ ÷ O×NÖNús   ¡ABÂ
Bc                ó  • U R                  5       n[        5       nSUS   S   S'   U R                  U5      nU R                  [        R                  S5         [        R                  X5        S S S 5        g ! , (       d  f       g = f)NÚ(ddddddddddddddddddddddddddddddddddddddddr|   r&   r   Úsubject_identity_changed)rŸ   rŠ   r¶   r   r£   Údiff_bundles)r�   ÚbeforeÚrawÚafters       r   Ú!test_diff_refuses_identity_changeÚ.ContractTest.test_diff_refuses_identity_change.  sg   € Ø—‘“ˆÜ‹nˆØ-5ˆˆI‰�zÑ" 6Ñ*Ø—‘˜CÓ ˆØ×#Ñ#¤F×$8Ñ$8Ð:TÕUÜ×Ñ Ô.÷ V×UÖUús   ÁA6Á6
Bc                óÔ   • [         R                  U R                  5       5      nU R                  US   S5        U R                  [	        US   5      S5        U R                  SU5        g )Nry   zbbi.agent-handoff/v1rO   r   r   )r   Úhandoff_viewrŸ   r°   ÚlenÚassertNotIn)r�   Úhandoffs     r   Ú%test_handoff_is_frontier_not_raw_dumpÚ2ContractTest.test_handoff_is_frontier_not_raw_dump6  sX   € Ü×%Ñ% d§k¡k£mÓ4ˆØ×Ñ˜ Ñ*Ð,BÔCØ×Ñœ˜W WÑ-Ó.°Ô2Ø×Ñ˜ WÕ-r   c                ó<  • [         R                  " 5        n[        U5      S-  nUR                  SSS9  U R	                  [
        R                  S5         [
        R                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzduplicate.jsonz{"schema":"a","schema":"b"}zutf-8)Úencodingzduplicate_json_key:schema)ÚtempfileÚTemporaryDirectoryr   Ú
write_textr¶   r   r£   Ú
_load_json)r�   Ú	directoryÚpaths      r   Ú test_duplicate_json_key_rejectedÚ-ContractTest.test_duplicate_json_key_rejected<  sv   € Ü×(Ò(Ô*¨iÜ˜	“?Ð%5Ñ5ˆDØ�O‰OÐ9ÀGˆOÑLØ×'Ñ'¬×(<Ñ(<Ð>YÕZÜ×!Ñ! $Ô'÷ [÷ +Ð*÷ [ÕZú÷ +Õ*ús#   –?BÁA<Á+BÁ<
B
	ÂBÂ
Bc                ó�   • [         R                  [        5      u  p[         R                  U5      nU R	                  US   S/5        g )NÚfrontierz
PSTACK-000)r   r  ÚWORKGRAPH_PATHÚvalidate_workgraphr°   )r�   ÚgraphÚ_r²   s       r   Ú%test_workgraph_has_one_legal_frontierÚ2ContractTest.test_workgraph_has_one_legal_frontierC  s;   € Ü×$Ñ$¤^Ó4‰ˆÜ×+Ñ+¨EÓ2ˆØ×Ñ˜ Ñ,¨|¨nÕ=r   c                óð   • [         R                  [        5      u  pS/US   S   S'   U R                  [         R                  S5         [         R                  U5        S S S 5        g ! , (       d  f       g = f)Nz
PSTACK-110Útranchesr   ÚdependenciesÚdependency_cycle©r   r  r   r¶   r£   r!  ©r�   r"  r#  s      r   Ú'test_workgraph_rejects_dependency_cycleÚ4ContractTest.test_workgraph_rejects_dependency_cycleH  s\   € Ü×$Ñ$¤^Ó4‰ˆØ0<¨~ˆˆjÑ˜!Ñ˜^Ñ,Ø×#Ñ#¤F×$8Ñ$8Ð:LÕMÜ×%Ñ% eÔ,÷ N×MÖMús   ÁA'Á'
A5c                óî   • [         R                  [        5      u  pSUS   S   S'   U R                  [         R                  S5         [         R                  U5        S S S 5        g ! , (       d  f       g = f)NÚREADYr'  r    rI   Ú#ready_with_unsatisfied_dependenciesr*  r+  s      r   Ú9test_workgraph_rejects_ready_task_with_blocked_dependencyÚFContractTest.test_workgraph_rejects_ready_task_with_blocked_dependencyN  sZ   € Ü×$Ñ$¤^Ó4‰ˆØ)0ˆˆjÑ˜!Ñ˜XÑ&Ø×#Ñ#¤F×$8Ñ$8Ð:_Õ`Ü×%Ñ% eÔ,÷ a×`Ö`ús   ÁA&Á&
A4r   )ÚreturnÚNoner�   )rž   zdict | Noner3  Údict)rž   r5  r§   r¥   r3  r4  )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr”   rŸ   r©   r³   r·   rÁ   rÄ   rÉ   rÎ   rÓ   rØ   rÜ   rà   rä   rç   rî   r÷   rú   r  r  r  r  r$  r,  r1  Ú__static_attributes__r   r   r   rŒ   rŒ   ¼   s“   † Øó;ó ð;öTô7ô
EôCô?ô:ô
0ô?ôCôDô
Cô
0ô
3ô
5ô
.ô
bô2ô
ô/ô.ô(ô>ô
-÷-r   rŒ   Ú__main__)Ú	verbosity)r3  r5  )&Ú__doc__Ú
__future__r   rì   rÿ   rþ   Úimportlib.utilÚ	importlibÚjsonr  ÚunittestÚpathlibr   Ú__file__ÚresolveÚparentsÚROOTÚMODULE_PATHr‘   r   ÚutilÚspec_from_file_locationÚSPECÚloaderÚmodule_from_specr   Úexec_moduler   r  r›   r†   rˆ   r   rŠ   ÚTestCaserŒ   r6  Úmainr   r   r   Ú<module>rR     s'  ðá <å "ã Û Û Û Û Û Ý áˆHƒ~×ÑÓ×'Ñ'¨Ñ*€Ø�YÑ Ñ&¨Ñ1Ð4HÑH€Ø�x‘Ð"AÑA€Ø˜‘Ð#BÑB€Ø‡~�~×-Ñ-Ð.?ÀÓM€Þ�——Ð ÐØ	�‰×	(Ñ	(¨Ó	.€Ø ‡�× Ñ ˜Ô à‡k‚k�$˜˜1˜a ¨2¯;©;¯?©?Ñ;€Ø!€Ø
 €ôôTônV-�8×$Ñ$ô V-ðr ˆzÓØ‡M‚M˜AÓð r   