One Record per Request: How BareProxy Tracing Works
Every request BareProxy handles gets a random ID, sent to the backend and back to the client in a BareProxy-Id header, and shown on every error page BareProxy writes. When someone reports a problem, they can quote it.
Every request also leaves exactly one record: one JSON line with the rule that matched, the config version that handled it, every backend tried or passed over and why, and the timings. Records go to the trace log and stay in memory for quick lookups.

why turns a record back into a story, showing each rule as it was written in the config version that handled the request, even if the config has changed since. tail follows records as they happen, with filters such as status>=500 or pool=api.
If a request carries a W3C traceparent header, BareProxy joins that trace, so its records line up with the application’s own. With the Export module, records also go to OpenTelemetry and log stores.