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:
@@ -566,6 +566,60 @@ def test_interrupted_capture_is_recovered_from_aligned_raw_and_metadata_prefix(
|
||||
assert store.prepare_replay(session.name).primary_artifact.path.name == "mqtt.raw.k1mqtt"
|
||||
|
||||
|
||||
def test_interrupted_capture_streams_metadata_beyond_legacy_total_limit(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
repository = tmp_path / "repo"
|
||||
sessions = repository / "sessions"
|
||||
session = make_legacy_session(sessions, "20260716T205632Z_viewer_live")
|
||||
capture = session / "captures" / "mqtt_live"
|
||||
raw = bytearray(RAW_MAGIC)
|
||||
records: list[bytes] = []
|
||||
topic = "lixel/application/report/lio_pose"
|
||||
topic_bytes = topic.encode()
|
||||
padding = "x" * (60 * 1024)
|
||||
for sequence in range(1, 1_101):
|
||||
payload = b"p"
|
||||
frame_offset = len(raw)
|
||||
raw.extend(FRAME_HEADER.pack(len(topic_bytes), len(payload)))
|
||||
raw.extend(topic_bytes)
|
||||
raw.extend(payload)
|
||||
record = {
|
||||
"schema_version": 1,
|
||||
"record_type": "message",
|
||||
"sequence": sequence,
|
||||
"received_at_utc": "2026-07-16T20:56:32.699Z",
|
||||
"received_at_epoch_ns": 1_784_235_391_699_000_000 + sequence,
|
||||
"received_monotonic_ns": 9_000_000_000 + sequence,
|
||||
"topic": topic,
|
||||
"payload_bytes": len(payload),
|
||||
"raw_frame_offset": frame_offset,
|
||||
"raw_payload_offset": frame_offset + FRAME_HEADER.size + len(topic_bytes),
|
||||
"raw_frame_bytes": FRAME_HEADER.size + len(topic_bytes) + len(payload),
|
||||
"padding": padding,
|
||||
}
|
||||
records.append((json.dumps(record, separators=(",", ":")) + "\n").encode())
|
||||
(capture / "mqtt.raw.k1mqtt").write_bytes(raw)
|
||||
metadata_path = capture / "mqtt.metadata.jsonl"
|
||||
metadata_path.write_bytes(b"".join(records))
|
||||
assert metadata_path.stat().st_size > 64 * 1024 * 1024
|
||||
(capture / "mqtt.summary.json").write_text("{corrupt", encoding="utf-8")
|
||||
store = SessionStore(repository, data_dir=tmp_path / "data")
|
||||
|
||||
store.reconcile_archive(xgrids_k1_archive_source(sessions))
|
||||
|
||||
detail = store.get_session(session.name)
|
||||
assert detail.summary.status == "interrupted"
|
||||
assert detail.summary.replayable is True
|
||||
command = store.prepare_replay(session.name)
|
||||
assert command.primary_artifact.replay_byte_length == len(raw)
|
||||
assert next(
|
||||
artifact.replay_byte_length
|
||||
for artifact in command.artifacts
|
||||
if artifact.artifact_id == "raw-transport-index"
|
||||
) == metadata_path.stat().st_size
|
||||
|
||||
|
||||
def test_catalog_upsert_promotes_recovered_session_after_summary_is_completed(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user