Add typed field-flight prototype and preserve native qualification failures

This commit is contained in:
2026-09-19 21:01:20 +02:00
parent 83ea247e62
commit 61e165ef5b
91 changed files with 40570 additions and 85 deletions
+38
View File
@@ -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()