A tiny OpenTelemetry-friendly sample for linking an agent runtime signal to an external evidence record with one opaque correlation id.
This repository is intentionally small. It does not define an evidence envelope, an audit packet format, a compliance framework, or a certification scheme.
Agent runtimes often need to emit lightweight telemetry, while richer evidence belongs somewhere else: a private evidence store, an audit system, or an internal case record.
The sample shows one narrow pattern:
runtime telemetry
agent.threat.detection.correlation_id = corr_...
external evidence placeholder
correlation_id = corr_...
The runtime signal stays lean. The richer evidence remains producer-owned.
- Emits a JSONL runtime event with an OTel-style attribute map.
- Adds
agent.threat.detection.correlation_idas an opaque join key. - Writes a separate external evidence placeholder with the same id.
- Verifies that sensitive payload fields are not embedded in runtime telemetry.
- It does not define an OpenTelemetry semantic convention.
- It does not define an external evidence envelope.
- It does not include prompts, tool arguments, private data, or customer data.
- It does not sign, seal, certify, or hash-chain evidence.
- It does not claim EU AI Act, ISO 42001, SOC 2, or J-SOX compliance.
python3 examples/python/agent_control_point.py --out sample-output
python3 -m unittest discover -s testsExpected files:
sample-output/agent-threat-detection-log.jsonl
sample-output/external-evidence-placeholder.jsonl
{
"name": "agent.threat.detection",
"attributes": {
"agent.threat.detection.action": "review_required",
"agent.threat.detection.correlation_id": "corr_...",
"agent.threat.detection.rule_id": "tool.write.sensitive_path",
"agent.threat.detection.severity": "medium"
}
}The correlation_id is intentionally opaque. Consumers should treat it as a
join key, not as a structured object, metric label, or evidence payload.
Runtime telemetry should answer:
- what kind of control point fired
- what action was taken
- where to find the producer-owned evidence, if the producer chooses to expose it
It should not carry the full evidence body by default.
Experimental sample for discussion. Not a specification.
MIT