RFC-015: Unified Observability Protocol (UOP) — 6. Request Tracing
AIGP Specification › RFC-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-1714800000000This 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: PASS12000ms ALP_EXECUTE: SUCCESS