@@ -109,6 +109,7 @@ def test_structural_lower_boundary_requires_observation_coverage(self):
109109
110110 def test_provider_structure_ignores_pinned_boundary_and_proves_ordered_normal_boundary (self ):
111111 from app .phase3_recovery import _provider_page
112+ from app .completeness_provider_proof import _timeline_structure
112113
113114 payload = {
114115 "data" : {
@@ -152,10 +153,11 @@ async def stream(*args, **kwargs):
152153 finally :
153154 active_evidence .reset (token )
154155
156+ _ , ordered_ids , pinned_ids , _ = _timeline_structure (payload )
155157 self .assertTrue (page .valid_response )
156158 self .assertFalse (page .exhausted )
157- self .assertEqual (page . ordered_tweet_ids , ( "30" , "20" ) )
158- self .assertEqual (page . pinned_tweet_ids , frozenset ( {"10" }) )
159+ self .assertEqual (ordered_ids , [ "30" , "20" ] )
160+ self .assertEqual (pinned_ids , {"10" })
159161 self .assertTrue (evidence .lower_boundary_proven )
160162 self .assertEqual (evidence .expected_window_ids , {"30" })
161163
@@ -263,6 +265,7 @@ def test_provider_error_or_missing_response_is_not_terminal_proof(self):
263265 (None , False ),
264266 ({"errors" : [{"message" : "unavailable" }]}, False ),
265267 ({"data" : {}}, False ),
268+ ({"data" : {"timeline" : {"instructions" : [{"type" : "TimelinePinEntry" , "entry" : {"entryId" : "tweet-1" }}]}}}, False ),
266269 ({"data" : {"timeline" : {"instructions" : [{"type" : "TimelineAddEntries" , "entries" : []}]}}}, True ),
267270 ({"data" : {"timeline" : {"instructions" : [{"type" : "TimelineTerminateTimeline" , "direction" : "Bottom" }]}}}, True ),
268271 ]:
0 commit comments