Skip to content

chore(traces): Add RFC for typed internal trace data model - #25329

Merged
bruceg merged 36 commits into
masterfrom
bruceg/trace-model-rfc-2
Sep 17, 2026
Merged

bruceg merged 36 commits into
masterfrom
bruceg/trace-model-rfc-2

Conversation

@bruceg

@bruceg bruceg commented Apr 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Sets up a comprehensive RFC documenting a proposed strongly-typed trace data model for Vector, including semantically-lossless conversions to and from OLTP and Datadog APM formats.

This is a different path than #20170 which explicitly takes into account the Datadog-Vector-Datadog path rather than just adopting one format or another.

Rendered:

Vector configuration

N/A

How did you test this PR?

N/A

Change Type

  • Bug fix
  • New feature
  • Dependencies
  • Non-functional (chore, refactoring, docs)
  • Performance

Is this a breaking change?

  • Yes
  • No

Does this PR include user facing changes?

  • Yes. Please add a changelog fragment based on our guidelines.
  • No. A maintainer will apply the no-changelog label to this PR.

References

Notes

  • Please read our Vector contributor resources.
  • Do not hesitate to use @vectordotdev/vector to reach out to us regarding this PR.
  • Some CI checks run only after we manually approve them.
    • We recommend adding a pre-push hook, please see this template.
    • Alternatively, we recommend running the following locally before pushing to the remote branch:
      • make fmt
      • make check-clippy (if there are failures it's possible some of them can be fixed with make clippy-fix)
      • make test
  • After a review is requested, please avoid force pushes to help us review incrementally.
    • Feel free to push as many commits as you want. They will be squashed into one before merging.
    • For example, you can run git merge origin master and git push.
  • If this PR introduces changes Vector dependencies (modifies Cargo.lock), please
    run make build-licenses to regenerate the license inventory and commit the changes (if any). More details on the dd-rust-license-tool.

@bruceg
bruceg requested a review from a team as a code owner April 29, 2026 22:57
@bruceg bruceg added domain: internal docs Anything related to Vector's internal documentation domain: traces Anything related to Vector's trace events domain: rfc no-changelog Changes in this PR do not need user-facing explanations in the release changelog labels Apr 29, 2026
@bruceg
bruceg requested a review from graphcareful April 29, 2026 22:57
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch 2 times, most recently from 8490c1e to 492e304 Compare April 29, 2026 22:58
@bruceg bruceg changed the title chore: Add RFC for typed internal trace data model chore(docs): Add RFC for typed internal trace data model Apr 29, 2026

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check-spelling found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cdae2cc44a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
@bruceg bruceg changed the title chore(docs): Add RFC for typed internal trace data model chore(traces): Add RFC for typed internal trace data model Apr 29, 2026
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch from 492e304 to 22953b6 Compare April 29, 2026 23:22
@github-actions github-actions Bot added the domain: ci Anything related to Vector's CI environment label Apr 29, 2026
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 22953b6585

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch 2 times, most recently from aaffd17 to 1a2edc5 Compare April 29, 2026 23:28

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1a2edc5d4f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch from 1a2edc5 to 154f9c1 Compare April 30, 2026 20:11
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch 2 times, most recently from 950d6c7 to fe697cc Compare April 30, 2026 21:24
@bruceg

bruceg commented Apr 30, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fe697cc61b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch from fe697cc to 08848d0 Compare April 30, 2026 22:13
@bruceg

bruceg commented Apr 30, 2026

Copy link
Copy Markdown
Member Author

@codex review

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 08848d06b0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
@bruceg
bruceg force-pushed the bruceg/trace-model-rfc-2 branch from 08848d0 to c6d5ea1 Compare April 30, 2026 22:21
The reserved-key section specified a best-effort cross-format path that the
parent RFC explicitly excludes from the round-trip guarantee, enumerating key
names, per-member AnyValue types, presence rules, and conflict resolution. Keep
the contract -- the reserved prefix, typed state as the sole egress source of
truth, malformed-key disposition, no authority for ordinary _dd.* keys, and the
best-effort caveat -- plus the one non-derivable consequence for
datadog.chunk.priority. The key set and its mechanics are implementation.
The SpanKind2Type cases were enumerated despite the preceding paragraph
declaring that these derivations track upstream without a specification
amendment; drop the enumeration and keep the deferral. Restate
dd_value_to_string by the properties callers depend on -- total, deterministic,
and independent of JSON library non-finite handling -- rather than by the
per-variant rendering.
Replace mechanism with the property callers depend on in four places: mixed
array encoding (order and finalizer equivalence, not the maximal-run split
site), the TraceEventCompat bullets (one-to-many conversion and its metadata
contract, not the method inventory), AttrValue and agent-envelope NaN handling
(a preservation requirement for an unmodified write-back, not the
resolved-path mechanism), and duration writes (representability, not the
rounding mode).
A rule stated generally and then applied to named fields implies its
enumeration is complete, so each omission reads as a specification gap and is
answered with another paragraph. Remove the instantiations and keep only the
cases that do not follow from the general rule: the Datadog signed timing
fields, whose ingress dispositions disagree with each other; OTLP's
length-delimited ID requirement; the combined-ID evaluation for Datadog's split
trace ID; and an all-spans-rejected event, which has no dropped count of its
own. Which paths fall into each del() category now follows from the type
definitions rather than a hand-maintained list.
Reporting dropped data is an external observability constraint, not something
these documents grant, so state it once and cite the source: the
instrumentation specification's MUST-level ComponentError and
ComponentEventsDropped requirements. Note reporting thereafter only where the
disposition is not the default one -- an in-band dropped count that also
changes, an unusual drop granularity, or a normalization that looks lossless --
and say explicitly that silence is not an exemption. Both sub-RFCs point at the
rule from their Context so the removals do not read as weakening it.
Three related sources of length that constrain nothing. Cross-document
restatement: both sub-RFCs re-derived the parent's effective-equivalence
definition and closed Drawbacks with a bullet saying the parent's drawbacks also
apply, and the parent's Prior Art duplicated links the sub-RFCs own. Repeated
examples: the Datadog document demonstrated the same two attribute paths three
times, so keep the User Experience block. Considered-and-declined prose: the
OTLP absent-versus-default section quoted proto comments to reach a conclusion
the model already implements structurally, the span-event ordering rationale
concluded that no change was warranted, and the Zipkin/Jaeger/OpenTracing
glossary entry described itself as not a constraint on the design.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 82c363269c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b460748b41

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model/otlp-mapping.md
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7845d8075e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1e52d6cb78

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/otlp-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e54747060b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
Comment thread rfcs/2026-04-29-25329-trace-data-model/otlp-mapping.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c510d5bb8e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rfcs/2026-04-29-25329-trace-data-model/datadog-mapping.md Outdated
@bruceg
bruceg requested a review from pront September 15, 2026 20:59
@bruceg
bruceg added this pull request to the merge queue Sep 17, 2026
Merged via the queue into master with commit c89db6f Sep 17, 2026
105 checks passed
@bruceg
bruceg deleted the bruceg/trace-model-rfc-2 branch September 17, 2026 17:45
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

domain: internal docs Anything related to Vector's internal documentation domain: rfc domain: traces Anything related to Vector's trace events no-changelog Changes in this PR do not need user-facing explanations in the release changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants