build(agent): melter#14fd4b iteration

This commit is contained in:
agent-14fd4b738639d573 2026-04-25 21:18:38 +02:00
parent 6124229f74
commit 5fd6a7c781
3 changed files with 49 additions and 1 deletions

View File

@ -53,6 +53,8 @@ def map_delta_to_catopt(delta_env: DeltaEnvelope) -> Dict[str, Any]:
"Metadata": {
"protocol_version": getattr(delta_env, "protocol_version", "PulseMesh/0.1.0"),
"timestamp": delta_env.delta.timestamp if hasattr(delta_env, "delta") else None,
# Pass through optional PoeticCert provenance when present
"poetic_cert": getattr(delta_env, "poetic_cert", None),
},
}
return result

View File

@ -1,7 +1,7 @@
from __future__ import annotations
from dataclasses import dataclass, asdict
from typing import List, Dict, Any
from typing import List, Dict, Any, Optional
import json
from .delta import Delta
@ -29,12 +29,15 @@ class DeltaEnvelope:
protocol_version: str
contract: TelemetryContract
delta: Delta
# Optional provenance/certification for anomaly detectors (PoeticCert)
poetic_cert: Optional[Dict[str, Any]] = None
def to_dict(self) -> Dict[str, Any]:
return {
"protocol_version": self.protocol_version,
"contract": self.contract.to_dict(),
"delta": self.delta.to_dict(),
"poetic_cert": self.poetic_cert,
}
def to_json(self) -> str:

43
tests/test_poeticcert.py Normal file
View File

@ -0,0 +1,43 @@
import sys
import os
import time
# Ensure package source is importable during tests
SRC_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src"))
if SRC_DIR not in sys.path:
sys.path.insert(0, SRC_DIR)
from pulsemesh_open_telemetry_visualization_a.delta import Delta
from pulsemesh_open_telemetry_visualization_a.protocol import TelemetryContract, DeltaEnvelope
from pulsemesh_open_telemetry_visualization_a.catopt_bridge import map_delta_to_catopt
def test_poetic_cert_roundtrip_and_mapping():
contract = TelemetryContract(
contract_id="c1",
device_type="test_device",
metrics=["m1"],
units={"m1": "unit"},
quality_flags=["ok"],
version=1,
)
d = Delta(delta_id="d1", timestamp=time.time(), items=[{"m1": 1.0}])
poetic = {
"model_version": "v1",
"training_data_digest": "sha256:deadbeef",
"confidence": 0.95,
"signer": "edge-operator",
}
env = DeltaEnvelope(protocol_version="PulseMesh/0.1.0", contract=contract, delta=d, poetic_cert=poetic)
# Ensure envelope preserves poetic_cert
ed = env.to_dict()
assert "poetic_cert" in ed and ed["poetic_cert"]["model_version"] == "v1"
cat = map_delta_to_catopt(env)
assert isinstance(cat, dict)
assert "Metadata" in cat and cat["Metadata"].get("poetic_cert") is not None
assert cat["Metadata"]["poetic_cert"]["signer"] == "edge-operator"