feat(perception): integrate calibrated operator pipeline
Add calibrated K1 projection, recorded and near-live perception qualification, unified Rerun operator layers, bounded replay admission, audited viewer controls, worker experiments, and lab evidence.
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from k1link.compute.live_perception import TELEMETRY_SCHEMA, WORLD_STATE_SCHEMA
|
||||
from k1link.compute.live_replay_qualification import (
|
||||
_validate_telemetry_rows,
|
||||
_validate_world_rows,
|
||||
)
|
||||
from k1link.sessions import SessionIntegrityError
|
||||
|
||||
|
||||
def _world_row() -> dict[str, object]:
|
||||
return {
|
||||
"schema_version": WORLD_STATE_SCHEMA,
|
||||
"frame_index": 3,
|
||||
"source_frame_index": 1003,
|
||||
"session_seconds": 12.3,
|
||||
"coordinate_frames": {
|
||||
"world": "k1-map",
|
||||
"sensor_relative": "k1-lidar",
|
||||
"vehicle_body": "unavailable-no-rig-to-vehicle-transform",
|
||||
},
|
||||
"fusion_state": "fused",
|
||||
"objects": [
|
||||
{
|
||||
"track_id": 7,
|
||||
"range_m": 4.0,
|
||||
"position_map_m": [1.0, 2.0, 3.0],
|
||||
"position_lidar_m": [4.0, 0.0, 0.0],
|
||||
"size_m": [4.0, 2.0, 1.5],
|
||||
"velocity_map_mps": None,
|
||||
"velocity_status": "unavailable-insufficient-history",
|
||||
"geometry": "point-supported-visible-surface-envelope",
|
||||
}
|
||||
],
|
||||
"object_count": 1,
|
||||
"clearance": {"state": "observed"},
|
||||
"delivery": {"health": "healthy", "result_age_ms": 12.0},
|
||||
}
|
||||
|
||||
|
||||
def test_world_and_telemetry_rows_preserve_exact_frame_binding(tmp_path: Path) -> None:
|
||||
world = tmp_path / "world-state.jsonl"
|
||||
telemetry = tmp_path / "telemetry.jsonl"
|
||||
world.write_text(json.dumps(_world_row()) + "\n", encoding="utf-8")
|
||||
telemetry.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"schema_version": TELEMETRY_SCHEMA,
|
||||
"frame_index": 3,
|
||||
"end_to_end_latency_ms": 12.0,
|
||||
"health": "healthy",
|
||||
}
|
||||
)
|
||||
+ "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
indices = _validate_world_rows(
|
||||
world,
|
||||
tmp_path,
|
||||
expected_count=1,
|
||||
selection_start=3,
|
||||
selection_count=1,
|
||||
)
|
||||
_validate_telemetry_rows(telemetry, tmp_path, expected_indices=indices)
|
||||
|
||||
assert indices == (3,)
|
||||
|
||||
|
||||
def test_world_row_rejects_invented_object_count(tmp_path: Path) -> None:
|
||||
world = tmp_path / "world-state.jsonl"
|
||||
value = _world_row()
|
||||
value["object_count"] = 2
|
||||
world.write_text(json.dumps(value) + "\n", encoding="utf-8")
|
||||
|
||||
with pytest.raises(SessionIntegrityError, match="world-state row"):
|
||||
_validate_world_rows(
|
||||
world,
|
||||
tmp_path,
|
||||
expected_count=1,
|
||||
selection_start=3,
|
||||
selection_count=1,
|
||||
)
|
||||
Reference in New Issue
Block a user