Two services in two languages each invented their own request identifier header, and neither could follow a request into the other.
what was there:
PHP X-Request-Id generated per request
.NET TraceIdentifier generated per request
nginx $request_id generated per request
three ids for one request, none of them shared.
what was agreed: nginx generates it if absent, both
services read it, both log it, both forward it.
Deciding where the identifier originates is the whole conversation — a header generated at the edge means every service reads rather than creates, and the one place it is created is a configuration file rather than code. The forwarding is the part that gets missed, since a service that logs the id and does not pass it on breaks the chain at exactly the boundary you wanted to see across.