From be17536f2b48fca023cc48b0e73d52a40683456b Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Tue, 3 Nov 2026 02:35:13 -0600 Subject: [PATCH] Validate only the causal tuning pose interval --- .../starpilot/flm/live_tracking_ingress.py | 2 +- .../flm/tests/test_tracking_pose_interval.py | 18 ++++++++++++++++++ prebuilt.json | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/openpilot/starpilot/flm/live_tracking_ingress.py b/openpilot/starpilot/flm/live_tracking_ingress.py index 5b2b400b29..538008c6d4 100644 --- a/openpilot/starpilot/flm/live_tracking_ingress.py +++ b/openpilot/starpilot/flm/live_tracking_ingress.py @@ -125,7 +125,7 @@ class LiveTrackingIngress: control.controller_revision, control.native_identity, control.native_required) != lineage or control.generation != pair[0].generation): return None - self.profile(control) # Unknown consumption still fails closed. + self.profile(control) # Unknown consumption inside the original interval still fails closed. except (AttributeError, TypeError, ValueError): return None return pair diff --git a/openpilot/starpilot/flm/tests/test_tracking_pose_interval.py b/openpilot/starpilot/flm/tests/test_tracking_pose_interval.py index fb4fbbdb0d..8a779a5b83 100644 --- a/openpilot/starpilot/flm/tests/test_tracking_pose_interval.py +++ b/openpilot/starpilot/flm/tests/test_tracking_pose_interval.py @@ -43,6 +43,24 @@ class TestTrackingPoseInterval(unittest.TestCase): assert selected[0] is rows[0][0] and selected[1] is rows[0][1] assert rows[0][1].apply_ns == 1_000_000_000 + def test_unknown_older_profile_outside_causal_interval_does_not_replace_pair(self): + owner = subject() + rows = [pair(owner, stamp) for stamp in (990_000_000, 1_000_000_000, 1_010_000_000)] + rows[0][0].applied_coordinates = (0.001, 0.) + pose = SimpleNamespace(source_lower_ns=1_005_000_000, source_upper_ns=1_015_000_000) + selected = owner.original_pose_pair(rows, pose) + assert selected is not None + assert selected[0] is rows[1][0] and selected[1] is rows[1][1] + + def test_unknown_newer_profile_outside_causal_interval_does_not_replace_pair(self): + owner = subject() + rows = [pair(owner, stamp) for stamp in (1_000_000_000, 1_010_000_000, 1_020_000_000)] + rows[-1][0].applied_coordinates = (0.001, 0.) + pose = SimpleNamespace(source_lower_ns=1_005_000_000, source_upper_ns=1_015_000_000) + selected = owner.original_pose_pair(rows, pose) + assert selected is not None + assert selected[0] is rows[0][0] and selected[1] is rows[0][1] + def test_plant_model_keeps_single_emission_requirement(self): owner = subject(False) rows = [pair(owner, 1_000_000_000), pair(owner, 1_010_000_000)] diff --git a/prebuilt.json b/prebuilt.json index eddf425a15..154e1d22a2 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "c91dc5a51a37f9bea11a203ac847690732612932799ffa5b1d1abebd07fc3950", "schema_version": 1} +{"protected_inventory_sha256": "a4e57edf60b47ca5ef9240ac00554772506d95b7f05cdd5e758d86cc0c41007b", "schema_version": 1}