Add typed field-flight prototype and preserve native qualification failures
This commit is contained in:
@@ -79,4 +79,42 @@ class RouteEvidence(unittest.TestCase):
|
||||
self.reject(lambda d,l,p:p['motions'].append({'dx':129,'dy':0,'monotonic':10.2,'after_sample':21,'response_sample':23}))
|
||||
self.reject(lambda d,l,p:p['motions'].append({'dx':24,'dy':0,'monotonic':10.2,'after_sample':21,'response_sample':23}))
|
||||
|
||||
def test_coarse_profile_is_known_explicit_and_has_no_default_upgrade(self):
|
||||
import math
|
||||
def turn(d,l,p):
|
||||
p['profile']='coarse'
|
||||
angle=math.radians(155)
|
||||
d['snapshots'][21]['look']['direction']=[math.sin(angle),0,math.cos(angle)]
|
||||
p['motions']=[{'dx':300,'dy':0,'monotonic':10.1,'after_sample':21,'response_sample':23}]
|
||||
self.assertTrue(self.run_case(turn)['verified'])
|
||||
def fine(d,l,p):turn(d,l,p);p.pop('profile')
|
||||
self.assertFalse(self.run_case(fine)['verified'])
|
||||
for profile in ('unknown',True,None):self.reject(lambda d,l,p:p.update(profile=profile))
|
||||
def overshoot(d,l,p):
|
||||
turn(d,l,p);p['motions'][0]['response_sample']=24
|
||||
angle=math.radians(191)
|
||||
d['snapshots'][22]['look']['direction']=[math.sin(angle),0,math.cos(angle)]
|
||||
self.reject(overshoot)
|
||||
def excessive(d,l,p):turn(d,l,p);p['motions'][0]['dx']=385
|
||||
self.reject(excessive)
|
||||
|
||||
def test_actual_coarse_policy_trace_passes_independent_raw_chain(self):
|
||||
# Simulated dynamics exercise actual policy and every raw parser; no
|
||||
# native runtime/input claim and no mocked evidence verdicts.
|
||||
from test_prison_alignment_evidence import build, raw, ApproachScene
|
||||
original = ApproachScene.run
|
||||
with patch.object(ApproachScene, 'run', lambda scene: original(scene, profile='coarse')):
|
||||
frames, look, route, _ = build()
|
||||
self.assertEqual(route['profile'], 'coarse')
|
||||
self.assertTrue(any(abs(m['dx']) > 128 for m in route['motions']))
|
||||
result = v.validate_approach_evidence(raw(frames), 'test', look, route)
|
||||
self.assertTrue(result['verified'], result)
|
||||
route['profile'] = 'standard'
|
||||
self.assertFalse(v.validate_approach_evidence(raw(frames), 'test', look, route)['verified'])
|
||||
|
||||
def test_coarse_does_not_expand_clocks_or_permit_action_keys(self):
|
||||
for change in (lambda p:p.update(deadline_monotonic=100),lambda p:p['events'][1].update(monotonic=11),lambda p:p['events'][0].update(key='F')):
|
||||
def mutate(d,l,p):p['profile']='coarse';change(p)
|
||||
self.reject(mutate)
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user