feat(telemetry): add bounded native pipeline lifecycle

This commit is contained in:
DCCONSTRUCTIONS
2026-07-29 12:32:52 +03:00
parent d8ccc9345a
commit 636db089ae
13 changed files with 830 additions and 13 deletions
+81
View File
@@ -371,6 +371,46 @@ def test_persistent_worker_request_is_single_run_d_backed_and_token_bounded(
)
def test_persistent_worker_derives_native_telemetry_from_accepted_runtime() -> None:
module = _module()
common = {
"live": {"source": {"source_id": "sensor.camera.right"}},
"stability": {"profile_id": "lab-e23-warm-worker-inline-temporal-v1"},
"worker_package": {"package_id": "e15-worker-package-example"},
}
request = {
"request_id": "physical-k1-shadow-001",
"telemetry": {
"contour_id": "worker-006",
"agent_id": "worker-006",
"node_id": "DESKTOP-OPJ8J04",
},
}
identity = module._persistent_run_telemetry_identity(common, request)
assert identity is not None
assert identity.lab_id == "lab-e23-warm-worker-inline-temporal-v1"
assert identity.run_id == "physical-k1-shadow-001"
assert identity.request_id == "physical-k1-shadow-001"
assert identity.source_id == "sensor.camera.right"
assert identity.source_package_id == "e15-worker-package-example"
assert identity.method_id == "warm-worker-inline-bounded-temporal-2d-3d-semantic/v1"
assert module._persistent_run_telemetry_identity(
common,
{"request_id": "legacy-request"},
) is None
with pytest.raises(RuntimeError, match="telemetry identity"):
module._persistent_run_telemetry_identity(
common,
{
"request_id": "invalid-telemetry",
"telemetry": {"contour_id": "worker-006"},
},
)
def test_runtime_telemetry_captures_bounded_queue_snapshots() -> None:
module = _module()
stream = io.StringIO()
@@ -422,3 +462,44 @@ def test_stage_execution_telemetry_measures_named_spans_without_process_claims()
telemetry.measure("unregistered"),
):
pass
def test_stage_execution_telemetry_writes_native_frame_lifecycle() -> None:
module = _module()
published: list[dict[str, object]] = []
class Sink:
def publish(self, _topic: str, payload: bytes) -> None:
published.append(json.loads(payload))
identity = module.PipelineTelemetryIdentity(
contour_id="worker-006",
agent_id="worker-006",
node_id="DESKTOP-OPJ8J04",
lab_id="lab-e23-warm-worker-inline-temporal-v1",
run_id="run-001",
request_id="run-001",
source_id="sensor.camera.right",
source_package_id="e15-worker-package-example",
method_id="warm-worker-inline-bounded-temporal-2d-3d-semantic/v1",
)
telemetry = module._StageExecutionTelemetry(
("detector",),
identity=identity,
sink=module._FailureIsolatingPipelineTelemetrySink(Sink()),
)
with telemetry.measure("detector", frame_index=42):
pass
with telemetry.measure("detector", frame_index=43):
pass
assert telemetry.native_events_enabled is True
assert [row["stage_state"] for row in published] == ["started"]
telemetry.finalize_native()
assert [row["stage_state"] for row in published] == ["started", "completed"]
assert [row["frame_index"] for row in published] == [42, 43]
assert published[-1]["payload"]["event"]["activation_count"] == 2
telemetry.finalize_native()
assert len(published) == 2