Skip to content

RFC-015: Unified Observability Protocol (UOP) — 6. Request Tracing

AIGP SpecificationRFC-015: Unified Observability Protocol (UOP) › 6. Request Tracing

← 5. Alerting Rules · Section index · 7. Storage →

6. Request Tracing

UOP enables end-to-end tracing of a single user request across all four amigos via request ID propagation.

6.1 Request ID Propagation

Every operation begins with a request_id generated at the entry point. This ID is propagated through every protocol message AIGP, ACP, and ALP.

User Action: "Remediate Prisma policy gaps for user X"
Entry Point (identity-service or runbook-service):
request_id = "req-1714800000000"
Propagation:
1. runbook-service governance-server: AIGP REQUEST (request_id: req-1714800000000)
2. governance-server runbook-service: AIGP DECISION (request_id: req-1714800000000)
3. runbook-service identity-service: ACP FETCH (request_id: req-1714800000000)
4. runbook-service analytics-service: ACP FETCH (request_id: req-1714800000000)
5. runbook-service governance-server: ACP FETCH (request_id: req-1714800000000)
6. runbook-service governance-server: AIGP RECORD (request_id: req-1714800000000)
7. runbook-service: ALP CREATE (request_id: req-1714800000000)
8. runbook-service: ALP EXECUTE (request_id: req-1714800000000)

6.2 Trace Header

All protocol messages carry the request ID in headers:

X-UOP-Request-Id: req-1714800000000

This header is set by the originating application and MUST be forwarded by every participant in the chain. If a message arrives without X-UOP-Request-Id, the receiver generates one and logs a TRACE_ORPHAN warning.

6.3 Trace Assembly

governance-server assembles a complete trace by querying all signals with a given request_id:

{
"request_id": "req-1714800000000",
"origin_app": "runbook-service",
"started_at": "2026-05-04T10:00:00Z",
"completed_at": "2026-05-04T10:00:12Z",
"total_duration_ms": 12000,
"signals": [
{"signal_type": "AIGP_REQUEST", "app_id": "runbook-service", "ts": "10:00:00.000Z"},
{"signal_type": "AIGP_DECISION", "app_id": "governance-server", "ts": "10:00:00.150Z", "decision": "ALLOW"},
{"signal_type": "ACP_FETCH", "app_id": "runbook-service", "provider": "identity-service", "ts": "10:00:00.200Z"},
{"signal_type": "ACP_FETCH", "app_id": "runbook-service", "provider": "analytics-service", "ts": "10:00:00.200Z"},
{"signal_type": "ACP_FETCH", "app_id": "runbook-service", "provider": "governance-server", "ts": "10:00:00.210Z"},
{"signal_type": "ACP_DELIVER", "app_id": "runbook-service", "ts": "10:00:00.500Z"},
{"signal_type": "AIGP_RECORD", "app_id": "runbook-service", "ts": "10:00:04.200Z", "tokens": 2470},
{"signal_type": "ALP_CREATE", "app_id": "runbook-service", "ts": "10:00:04.300Z", "artifact_id": "art-001"},
{"signal_type": "ALP_VALIDATE", "app_id": "runbook-service", "ts": "10:00:05.000Z", "status": "PASS"},
{"signal_type": "ALP_EXECUTE", "app_id": "runbook-service", "ts": "10:00:12.000Z", "status": "SUCCESS"}
],
"amigos_touched": ["runbook-service", "governance-server", "identity-service", "analytics-service"]
}

6.4 Trace View in Dashboard

The governance-server UI provides a trace timeline view:

req-1714800000000 [runbook-service governance-server identity-service analytics-service runbook-service]
0ms AIGP_REQUEST (runbook-service)
150ms AIGP_DECISION: ALLOW (governance-server)
200ms ACP_FETCH: user_entitlements (identity-service)
200ms ACP_FETCH: conversion_state (analytics-service) parallel
210ms ACP_FETCH: governance_posture (governance-server)
500ms ACP_DELIVER: context assembled
4200ms AIGP_RECORD: 2470 tokens, 3200ms
4300ms ALP_CREATE: art-001
5000ms ALP_VALIDATE: PASS
12000ms ALP_EXECUTE: SUCCESS

← 5. Alerting Rules · Section index · 7. Storage →