Remove bogus v1 payload version gates from nodejs/ruby manifests - #7447
Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit intoAug 6, 2026
Merged
Conversation
The file-level entries for tests/test_v1_payloads.py in manifests/nodejs.yml and manifests/ruby.yml declared version gates for a capability that does not exist in either tracer: - dd-trace-js: packages/dd-trace/src/encode/ contains only 0.4.js and 0.5.js on every ref, including master and tag v6.8.0 (which is also the latest release). No v1 encoder has ever been committed, so '>=6.8.0' asserted support that never shipped. - dd-trace-rb: lib/datadog/tracing/transport/http.rb declares only /v0.4/traces and /v0.3/traces on both v2.33.0 and master. There is no protocol_version setting and no DD_TRACE_AGENT_PROTOCOL_VERSION env var anywhere in the gem, so '>=2.33.0' asserted support that never shipped. Both blocks were generated by the easy-win auto-activation script, which replaced a plain `missing_feature` with a file-level version gate plus per-class missing_feature overrides (see 8c308b5 and 12b02cb, including the bot's leftover "# TODO: a lower version might be supported" comment). Because manifest declarations accumulate rather than override, those per-class overrides masked the gate for the classes they named -- but each manifest omitted exactly one class, leaving the gate live for it. The file has five classes; nodejs declared four and ruby declared a different four, so Test_V1TopLevelSpans (nodejs, 6 weblogs) and Test_V1SpanEvents (ruby, rack) were activated and expected to pass against tracers with no v1 support. Collapse both to a single missing_feature entry carrying the reason, which disables those 7 previously-activated entries. Verified with Manifest.get_declarations() across all five classes and every affected weblog: no test that was previously disabled becomes enabled. missing_feature is a non-strict xfail, so the newly disabled entries XPASS silently rather than break CI. Java and golang share the same bot-generated shape but appear to have genuine v1 support, so they are left untouched. Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
|
|
darccio
added a commit
that referenced
this pull request
Aug 4, 2026
The Test_V1TopLevelSpans deactivation added here overlapped #7447, which removes the bogus file-level version gate for tests/test_v1_payloads.py and collapses the whole block to a single `missing_feature` entry. That entry already covers Test_V1TopLevelSpans for all six nodejs weblogs, so the per-class block added here was redundant, and it attached to context lines that #7447 deletes -- so whichever PR merged second would have conflicted. Keep this PR test-only and let #7447 own all manifest deactivation. This creates a merge-order dependency: #7447 must land first, otherwise the new "Expected at least one root span" assertion turns nodejs Test_V1TopLevelSpans red, since it is still activated on main. Co-Authored-By: Claude <noreply@anthropic.com>
5 tasks
Member
Author
|
The vacuous-pass fix referenced above is now #7450 (test-only). Merge order: this PR must land first. #7450 adds an #7450 originally carried its own per-class deactivation block so it could merge in either order, but it duplicated what this PR's file-level |
darccio
marked this pull request as ready for review
August 5, 2026 16:47
Strech
approved these changes
Aug 5, 2026
BridgeAR
approved these changes
Aug 6, 2026
gh-worker-dd-mergequeue-cf854d
Bot
deleted the
dario.castane/stoic-margulis-1d62a7
branch
August 6, 2026 10:39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The file-level manifest entries for
tests/test_v1_payloads.pyinmanifests/nodejs.ymlandmanifests/ruby.ymldeclared version gates for a capability that does not exist in either tracer. Verified against tracer sources:packages/dd-trace/src/encode/contains only0.4.jsand0.5.json every ref, includingmasterand tagv6.8.0— which is also the current latest release. No v1 encoder has ever been committed, so>=6.8.0asserted support that never shipped.lib/datadog/tracing/transport/http.rbdeclares only/v0.4/tracesand/v0.3/traceson bothv2.33.0andmaster. There is noprotocol_versionsetting and noDD_TRACE_AGENT_PROTOCOL_VERSIONenv var anywhere in the gem, so>=2.33.0asserted support that never shipped.Both blocks were generated by the easy-win auto-activation script, which replaced a plain
tests/test_v1_payloads.py: missing_featurewith a file-level version gate plus per-classmissing_featureoverrides — including the bot's leftover# TODO: a lower version might be supportedcomment:Changes
Collapsed both to a single
missing_featureentry carrying the reason, removing the version gates, the per-class duplicates, and the stale# TODO. Net: 2 insertions, 57 deletions, no files outside these two manifests.The gates were not inert. Because declarations accumulate rather than override, the per-class overrides masked the gate only for the classes they named — and each manifest omitted exactly one class, leaving the gate live for it. The file has five classes; nodejs declared four and ruby declared a different four:
Test_V1TopLevelSpansTest_V1SpanEventsrack)So those tests were activated and expected to pass against tracers with no v1 support at all.
Verified with
Manifest.get_declarations()across all five classes and every affected weblog, before and after: the only semantic change is those 7 entries going from no-declaration tomissing_feature. No test that was previously disabled becomes enabled. Sincemissing_featureis a non-strict xfail, the newly disabled entries XPASS silently rather than break CI.Manifest.validate()passes.yamlfmtlint is clean on both files (scoped to the two edited files — my local yamlfmt is v0.20.0 vs the v0.16.0 pinned byformat.sh/CI, and a full sweep produces spurious diffs inmanifests/python.yml).Reviewer notes
Why the bot got this wrong.
Test_V1TopLevelSpans::test_root_span_is_top_leveliteratesinterfaces.library.get_root_spans(self.r)with no non-empty guard.get_root_spans(utils/interfaces/_library/core.py:145) is a generator that yields nothing when no root spans match, so when the tracer sends v0.4 the loop body never executes and the test passes vacuously — which is how the auto-activation script classified it as an easy win. Compareget_root_spansingular (core.py:159), which doesassert spans, "No root spans found".Test_V1PayloadByDefault::test_mainlooks to have the same flaw. Fixing that test is out of scope here and tracked separately; the manifest cleanup addresses the symptom, not the upstream cause.These entries are bot-managed, so the auto-activation script may regenerate them unless its pass-detection is fixed — flagging for #apm-shared-testing.
Java and golang left untouched. Both share the same bot-generated file-level-gate shape and both have live un-shadowed classes (java:
Test_V1Payloads/Test_V1SpanLinks/Test_V1TopLevelSpanson 4 weblogs; golang: 4 classes on both weblogs). Unlike nodejs/ruby these tracers do appear to have real v1 support (golang Test_V1Payloads: v2.7.0), so activation may be legitimate. Worth noting structurally though: a file-level version gate auto-activates any new class added to the file for those weblogs.Workflow
🚀 Once your PR is reviewed and the CI green, you can merge it!
🛟 #apm-shared-testing 🛟
Reviewer checklist
tests/ormanifests/is modified ? I have the approval from R&P team — onlymanifests/is modifiedbuild-XXX-imagelabel is present🤖 Generated with Claude Code