feat(planning): consolidate recorded-route localization and spatial scene
Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
This commit is contained in:
@@ -31,7 +31,7 @@ def test_live_ingress_keeps_modalities_separately_bounded_and_ordered() -> None:
|
||||
received_monotonic_ns=200 + sequence,
|
||||
payload=f"camera-{sequence}".encode(),
|
||||
)
|
||||
for sequence in range(9):
|
||||
for sequence in range(33):
|
||||
assert ingress.publish(
|
||||
modality="lidar",
|
||||
source_id="lixel/application/report/lio_pcl",
|
||||
@@ -40,7 +40,7 @@ def test_live_ingress_keeps_modalities_separately_bounded_and_ordered() -> None:
|
||||
received_monotonic_ns=400 + sequence,
|
||||
payload=f"lidar-{sequence}".encode(),
|
||||
)
|
||||
for sequence in range(20):
|
||||
for sequence in range(36):
|
||||
assert ingress.publish(
|
||||
modality="pose",
|
||||
source_id="lixel/application/report/lio_pose",
|
||||
@@ -53,9 +53,9 @@ def test_live_ingress_keeps_modalities_separately_bounded_and_ordered() -> None:
|
||||
snapshot = ingress.snapshot()
|
||||
assert snapshot["queues"]["camera-frame"]["depth"] == 2
|
||||
assert snapshot["queues"]["camera-frame"]["dropped_overflow"] == 3
|
||||
assert snapshot["queues"]["lidar"]["depth"] == 8
|
||||
assert snapshot["queues"]["lidar"]["depth"] == 32
|
||||
assert snapshot["queues"]["lidar"]["dropped_overflow"] == 1
|
||||
assert snapshot["queues"]["pose"]["depth"] == 16
|
||||
assert snapshot["queues"]["pose"]["depth"] == 32
|
||||
assert snapshot["queues"]["pose"]["dropped_overflow"] == 4
|
||||
|
||||
events = []
|
||||
@@ -70,10 +70,10 @@ def test_live_ingress_keeps_modalities_separately_bounded_and_ordered() -> None:
|
||||
4,
|
||||
]
|
||||
assert [event.source_sequence for event in events if event.modality == "lidar"] == list(
|
||||
range(1, 9)
|
||||
range(1, 33)
|
||||
)
|
||||
assert [event.source_sequence for event in events if event.modality == "pose"] == list(
|
||||
range(4, 20)
|
||||
range(4, 36)
|
||||
)
|
||||
|
||||
|
||||
@@ -105,6 +105,27 @@ def test_live_ingress_wire_is_self_delimiting_and_explicitly_non_authoritative()
|
||||
assert encoded[4 + header_bytes :] == b"init"
|
||||
|
||||
|
||||
def test_spatial_stop_is_identity_bound_idempotent_and_keeps_capture_active() -> None:
|
||||
ingress = LivePerceptionIngress()
|
||||
ingress.open_consumer("planning")
|
||||
ingress.begin_session("A")
|
||||
assert not ingress.request_spatial_stop("other", 1)
|
||||
assert not ingress.request_spatial_stop("A", 2)
|
||||
assert not ingress.snapshot()["spatial_stop_requested"]
|
||||
assert ingress.request_spatial_stop("A", 1)
|
||||
assert ingress.request_spatial_stop("A", 1)
|
||||
assert ingress.snapshot()["active"]
|
||||
assert ingress.snapshot()["queues"]["control"]["published"] == 2
|
||||
assert ingress.publish(modality="pose", source_id="pose", source_sequence=1,
|
||||
captured_at_epoch_ns=1, received_monotonic_ns=1, payload=b"raw")
|
||||
ingress.end_session("A")
|
||||
ingress.begin_session("A") # Same name, new generation cannot inherit STOP.
|
||||
assert not ingress.request_spatial_stop("A", 1)
|
||||
assert not ingress.snapshot()["spatial_stop_requested"]
|
||||
assert ingress.snapshot()["active"]
|
||||
ingress.close()
|
||||
|
||||
|
||||
def test_live_ingress_rejects_oversize_without_affecting_other_modalities() -> None:
|
||||
ingress = LivePerceptionIngress()
|
||||
ingress.begin_session("session-1")
|
||||
|
||||
Reference in New Issue
Block a user