Adapters
ARP is a profile, not a replacement. If you already emit telemetry in another format, the field mappings below get you to ARP-conformant payloads with minimal translation.
Sentry
→ ARP §3.3 Warning + §3.6 Breadcrumbs
| Sentry | ARP |
|---|---|
Sentry event.fingerprint (string[]) | ARP Warning.fingerprint (string OR string[]) |
Sentry event.level | ARP Warning.level (identical enum) |
Sentry issue.status | ARP Warning.status |
Sentry issue.firstSeen / lastSeen | ARP Warning.first_seen / last_seen |
Sentry breadcrumbs[] | ARP Warning.breadcrumbs[] (verbatim) |
Sentry exception.mechanism.handled | ARP Warning.evidence.exception.mechanism.handled |
ARP fingerprint accepts both Sentry's array form (with {{ default }} placeholder) AND a canonical single-string form. Sentry SDK ingest pipelines need no field renames — only POST URL change.
OpenTelemetry GenAI
→ ARP §5 Telemetry + §5.2 TelemetrySpan
| OpenTelemetry GenAI | ARP |
|---|---|
gen_ai.system | Telemetry.spans[].attributes['gen_ai.system'] (verbatim) |
gen_ai.request.model | verbatim |
gen_ai.usage.input_tokens / output_tokens | verbatim |
gen_ai.tool.name / call.id / call.arguments | verbatim |
gen_ai.conversation.id | envelope.conversation_id (alias) |
span name + status | TelemetrySpan.name + status |
ARP §5 declares OTel GenAI semconv as a normative reference. No translation needed — copy the OTLP payload as-is into ARP's `telemetry` key. ARP only adds opt-in `kind` (OpenInference 10-enum) and `subtype` (OpenAI Agents 8-enum) for cross-vendor classification.
OpenInference (Arize)
→ ARP §5.1 normative reference
| OpenInference (Arize) | ARP |
|---|---|
openinference.span.kind | TelemetrySpan.kind (10-value enum, identical) |
llm.system / llm.model | verbatim under attributes |
retrieval.* / embedding.* / tool.* | verbatim under attributes |
session.id / user.id | envelope.session_id / user_id |
ARP adopts OpenInference's spec text (Apache-2.0) only — Phoenix runtime is excluded (ELv2 + US patent claims). Use the attribute names; never bundle Phoenix code into a collector.
Langfuse
→ ARP §3.5 Score + §6.3 PromptManifest
| Langfuse | ARP |
|---|---|
Langfuse Score (NUMERIC / CATEGORICAL / BOOLEAN) | ARP Score (data_type same enum) |
Langfuse Score.key | ARP Score.key |
Langfuse Score.value / comment / name | verbatim |
Langfuse Trace + Observation hierarchy | TelemetrySpan parent_span_id + dotted_order |
Langfuse Score.comparativeRunId | ARP Score.compared_to_baseline_id |
Langfuse Score is the closest external primitive. ARP Score keeps the closed 3-value data_type enum exactly; no fragmentation. ARP gains warning_fingerprints[] / pattern_fingerprints[] for richer linkage.
LangSmith
→ ARP §3.5 Score + §5.3 dotted_order + §2 envelope IDs
| LangSmith | ARP |
|---|---|
Run schema (id, run_type, start_time, end_time) | TelemetrySpan (span_id, kind, start_time, end_time) |
Feedback (score 0..1) | ARP Score (data_type=numeric) |
Threads (session_id / thread_id) | envelope.session_id / conversation_id |
dotted_order (RFC3339Z<uuid>....) | TelemetrySpan.dotted_order (verbatim) |
LangSmith's Run.run_type free string is intentionally NOT adopted (regression vs ARP's category enum). Run.error string is NOT adopted (regression vs full Warning lifecycle). Bridge maps these into structured ARP equivalents on the way in.
MCP tool calls
→ ARP §3.3 Warning + planned MCP SEP cross-site fingerprint
| MCP tool calls | ARP |
|---|---|
MCP _meta.* (vendor reverse-DNS) | ARP _meta.* (same convention) |
MCP tool result errors | ARP Warning + Warning.evidence.exception |
MCP server URL + tool name | ARP Telemetry attribute mcp.server / mcp.tool |
AgentMinds' MCP SEP draft (modelcontextprotocol/modelcontextprotocol#2659) proposes adding _meta.fingerprint and _meta.pattern_id to tool-call results. When that lands, ARP Warning.fingerprint maps directly.
Reorientation watch
If any of these upstreams adopts a primitive that overlaps ARP §4.1 (cross-site pattern lifecycle), ARP MUST defer to the upstream definition within 30 days. AgentMinds runs an internal standards-watcher bot on a weekly cron that monitors all 12 upstream repos for trigger keywords (e.g. learned_pattern, cross-environment-fingerprint, findings/list) and files issues with the reorientation-watch label on this repo when triggers fire.