From 4ebf780868a5b4dd425534816cfd32bcc618237b Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Fri, 14 Aug 2026 21:10:26 +0100 Subject: [PATCH 1/2] docs(telemetry): drop the plan-folder pointer from the trace_state note The trace_state comment pointed at a planning document that is not part of the shipped tree, so the reference would dangle for any reader of the repository. State the reserved-and-inert fact on its own. --- include/xrpl/proto/xrpl.proto | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/xrpl/proto/xrpl.proto b/include/xrpl/proto/xrpl.proto index b13c3d0b16..56fb3d0056 100644 --- a/include/xrpl/proto/xrpl.proto +++ b/include/xrpl/proto/xrpl.proto @@ -95,9 +95,8 @@ message TMPublicKey { // Older peers that do not understand field 1001 will simply ignore it // per protobuf wire-format rules, preserving backwards compatibility. // -// trace_state is reserved for future use (secure tracing pipeline, -// OpenTelemetryPlan/secure-OTel.md). It is currently neither populated -// on inject nor read on extract; consumers must not rely on it. +// trace_state is reserved for future use. It is currently neither +// populated on inject nor read on extract; consumers must not rely on it. message TraceContext { optional bytes trace_id = 1; // 16-byte trace identifier optional bytes span_id = 2; // 8-byte parent span identifier From 6ac68abfb56d629367bbb3b5ae26e54d4e03186c Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Fri, 14 Aug 2026 21:11:07 +0100 Subject: [PATCH 2/2] docs(telemetry): drop plan-document pointers from consensus tracing comments These comments pointed at a planning folder and at its rollout phase numbering, neither of which is part of the shipped tree, so the references would dangle for any reader of the repository. Each comment now states the fact it was pointing at. --- include/xrpl/telemetry/TraceContextPropagator.h | 11 ++++------- src/xrpld/app/consensus/RCLConsensus.cpp | 6 +++--- src/xrpld/app/consensus/RCLConsensus.h | 6 +++--- src/xrpld/telemetry/ConsensusReceiveTracing.h | 3 ++- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/include/xrpl/telemetry/TraceContextPropagator.h b/include/xrpl/telemetry/TraceContextPropagator.h index e8d851e53e..9933e79292 100644 --- a/include/xrpl/telemetry/TraceContextPropagator.h +++ b/include/xrpl/telemetry/TraceContextPropagator.h @@ -101,13 +101,10 @@ injectToProtobuf(opentelemetry::context::Context const& ctx, protocol::TraceCont // Serialize flags proto.set_trace_flags(spanCtx.trace_flags().flags()); - // TODO(observability/secure-OTel): the protobuf TraceContext message - // also carries `trace_state` (field 4), which is currently neither - // populated here nor read by extractFromProtobuf above. The field is - // reserved for the secure tracing pipeline outlined in - // OpenTelemetryPlan/secure-OTel.md, where an authenticated token in - // tracestate will let receivers reject spoofed/poisoned trace context. - // Wire trace_state through inject/extract once the consumer lands. + // TODO: the protobuf TraceContext message also carries `trace_state` + // (field 4), which is currently neither populated here nor read by + // extractFromProtobuf above. The field is reserved for future use; + // wire it through inject/extract once a consumer lands. } } // namespace xrpl::telemetry diff --git a/src/xrpld/app/consensus/RCLConsensus.cpp b/src/xrpld/app/consensus/RCLConsensus.cpp index 35f5ed2131..5d8fb2ae5f 100644 --- a/src/xrpld/app/consensus/RCLConsensus.cpp +++ b/src/xrpld/app/consensus/RCLConsensus.cpp @@ -274,9 +274,9 @@ RCLConsensus::Adaptor::propose(RCLCxPeerPos::Proposal const& proposal) app_.getHashRouter().addSuppression(suppression); - // Inject the current thread's active span context (e.g. the - // consensus round span from Phase 4) so receiving peers can link - // their proposal.receive span as a child of this trace. + // Inject the current thread's active span context (e.g. the consensus + // round span) so receiving peers can link their proposal.receive span + // as a child of this trace. telemetry::SpanGuard::injectCurrentContextToProtobuf(*prop.mutable_trace_context()); app_.getOverlay().broadcast(prop); diff --git a/src/xrpld/app/consensus/RCLConsensus.h b/src/xrpld/app/consensus/RCLConsensus.h index 1ada9e7ee9..a7057e2f3a 100644 --- a/src/xrpld/app/consensus/RCLConsensus.h +++ b/src/xrpld/app/consensus/RCLConsensus.h @@ -127,9 +127,9 @@ class RCLConsensus * * Captured in makeAcceptSpan() and consumed by createValidationSpan() * on the jtACCEPT worker thread so the validation.send span can be - * follows-from linked to consensus.accept (matching the design doc - * and span hierarchy diagram). Reset on each startRoundTracing() - * to prevent a stale prior-round context from being linked. + * follows-from linked to consensus.accept. Reset on each + * startRoundTracing() to prevent a stale prior-round context from + * being linked. * * Thread safety: same model as roundSpanContext_. The write in * makeAcceptSpan happens on the main consensus thread under diff --git a/src/xrpld/telemetry/ConsensusReceiveTracing.h b/src/xrpld/telemetry/ConsensusReceiveTracing.h index 03974c5473..0a1a4458dc 100644 --- a/src/xrpld/telemetry/ConsensusReceiveTracing.h +++ b/src/xrpld/telemetry/ConsensusReceiveTracing.h @@ -34,7 +34,8 @@ * * @note Span names come from the canonical constants in * ConsensusSpanNames.h (consensus::span::proposalReceive / - * validationReceive) so they stay in sync with the rest of Phase 4. + * validationReceive) so they stay in sync with the rest of the + * consensus tracing surface. */ #include