Skip to content

Register CI Visibility tags on test span types (otlp - tag registry) - #12900

Draft
dougqh wants to merge 4 commits into
dougqh/tag-registry-coveragefrom
dougqh/tag-registry-civis
Draft

dougqh wants to merge 4 commits into
dougqh/tag-registry-coveragefrom
dougqh/tag-registry-civis

Conversation

@dougqh

@dougqh dougqh commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

What Does This Do

Registers the CI Visibility tags in the tag registry, on span types for test sessions, modules, suites and tests, with requirement levels that tell the slot coloring which tags are set only some of the time. With #12893, every tag constant is now registered or deliberately excluded.

  • Span types from the code. CI Visibility creates one span per test session, module, suite and test. Their span.kind values (test_session_end, test_module_end, test_suite_end, test) have no direction. Each tag's production set sites were checked for which of the four it lands on.
    • ci.span (abstract): what standard enrichment (TestDecoratorImpl.afterStart) puts on every CI span: the session name, test type, status, framework, session id, and the CI provider and commit (ci.*, git.*).
    • ci.aggregate (abstract, sessions and modules): command, coverage, ITR skipping counts, early flake detection, test management.
    • test.session, test.module, test.suite, test, sharing tags across levels by ref (test.module, test.suite, the ids, the source location). test.browser (Selenium) extends test.
    • Java overlay: test.gradle.session, test.gradle.module, test.maven.module, test.android (Robolectric), test.junit5, and junit.callback for JUnit's before and after spans.
  • Requirement levels decide the slots. A test span carries about 100 tags, more than the dense store's 63 presence bits. With Color known tags into co-occurrence slots in their ids (phase 3a - groundwork - dense tag storage) #12882, a span type that overflows shares slots among its optional tags only, so the levels say which tags matter: what standard enrichment always sets (the CI provider and commit, ci.* / git.*) and the test source range are recommended, and the tags set only some of the time stay optional: pull request and head commit info, retries, ITR, test management, configuration errors, coverage, browser and Android details.

Motivation

The id migration needs every tag registered, and the dense store gives a tag a precise presence bit only when it's placed on the span types it appears on.

Falling back to "unslotted" for the overflow would have been the easy way out, but every slotless tag shares bit 63: set on most spans, so checking any of them means a scan. A designed collision between tags that are rarely present together keeps the fast miss for the tags that matter, and deriving it from requirement levels keeps slots out of the conventions.

Additional Notes

  • The coloring is in Color known tags into co-occurrence slots in their ids (phase 3a - groundwork - dense tag storage) #12882. This branch has no coloring yet (Register APM tag constants on their span types (otlp - tag registry) #12893 is based on master). Running Color known tags into co-occurrence slots in their ids (phase 3a - groundwork - dense tag storage) #12882's coloring on these conventions fits 306 tags in 63 slots: only the ten CI test span types (73 to 104 tags) have tags sharing a slot, all of them optional, and every APM span type stays exact. 66 tags share; besides the CI ones, four optional tags inherited from base (_dd.span_links, _dd.svc_src, error.debug_info_captured, events) share on test spans only.
  • Alternatives considered: a slot: marker in the conventions (an earlier revision; slots are the generator's business, and the level already carries the information), two occupancy longs (8 bytes and a word select on every span, for CI's sake), or a group bit like trace-level (doesn't help: the overflow is within one span's tags).
  • The CI environment is stamped on every span. afterStart copies the ci.* / git.* block onto every session, module, suite and test span, though it's constant for the process. Setting it once per trace would be a CI Visibility behavior change (the intake may expect it on each event), for the CI Visibility team to decide; not changed here.
  • Ids hoisted by the intake mapper are registered. test_session_id, test_module_id, test_suite_id and itr_correlation_id are set as tags and moved to top-level fields by CiTestCycleMapperV1, so they go through setTag and need ids. The os.* / runtime.* fields are tags only when CI Visibility reports through the APM protocol, so they're shared.
  • Stacked on Register APM tag constants on their span types (otlp - tag registry) #12893. Review this PR's own commits; the first one's slot: shared marker is reverted by the later two.

🤖 Generated with Claude Code

dougqh and others added 2 commits October 15, 2026 17:14
`slot: shared` marks a tag as rarely set. When the coloring honors it
(with #12882), a shared tag still gets a slot apart from every tag that
isn't shared in its cliques, so tags that are always present keep exact
presence bits, but shared tags may share slots with each other. Rare
groups then pack into the slots the always-present tags leave free,
instead of falling back to the unslotted bit 63 that every slotless tag
shares.

The generator parses the marker (the only value is `shared`), requires a
name's declarations per direction to agree on it, records it on the
registry tag, and shows it in each generated id's comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI Visibility creates one span per test session, module, suite and test
(span.kind test_session_end, test_module_end, test_suite_end and test,
none of which has a direction). Set sites checked per tag. New shared
span types:

- ci.span (abstract): what standard enrichment
  (TestDecoratorImpl.afterStart) puts on every CI span -- the session
  name, test type, status, framework, session id, and the CI provider
  and commit (ci.*, git.*) -- plus library_version and the host's vCPU
  count.
- ci.aggregate (abstract, sessions and modules): command, coverage,
  ITR skipping counts, early flake detection, test management.
- test.session, test.module, test.suite and test, sharing tags across
  levels by ref (test.module, test.suite, the ids, the source location).
- test.browser (Selenium).
- Java overlay: test.gradle.session, test.gradle.module,
  test.maven.module, test.android (Robolectric), test.junit5, and
  junit.callback for JUnit's before/after spans.

A test span carries about 100 tags, more than the dense store's 63
slots. So tags set only some of the time (pull request and head commit
info, retry, ITR, test management, configuration errors, coverage,
browser and Android details, and the os/runtime fields the CI intake
mapper normally writes itself) are marked `slot: shared`. With
shared-aware coloring (to follow in #12882), a simulation colors the 309
tags into 56 slots, with the always-set tags on exact slots.

The old ci_visibility mixin goes: its tags are on the types. The
coverage test's CI Visibility families are now all registered, so no
family or single constant remains unregistered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dougqh dougqh added comp: core Tracer core tag: no release notes Changes to exclude from release notes type: refactoring comp: ci visibility Continuous Integration Visibility tag: ai generated Largely based on code generated by an AI or LLM labels Oct 15, 2026
@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - sbt-scalatest

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 56.33 57.69 $\color{green}{\blacktriangledown}$ -1.36 56.55 $\color{green}{\blacktriangledown}$ -0.22 60/310
agentEvpProxy 56.61 n/a n/a n/a n/a -

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@datadog-official

datadog-official Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
• Patch Coverage: 100.00%
• Overall Coverage: 59.79% (-0.01%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 8120b54 | Docs | Give us feedback!

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - nebula-release-plugin

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 36.18 37.15 $\color{green}{\blacktriangledown}$ -0.97 37.15 $\color{green}{\blacktriangledown}$ -0.97 31/169
agentless 35.53 37.15 $\color{green}{\blacktriangledown}$ -1.62 36.42 $\color{green}{\blacktriangledown}$ -0.89 31/142
agentlessCodeCoverage 44.38 45.38 $\color{green}{\blacktriangledown}$ -1.00 45.38 $\color{green}{\blacktriangledown}$ -1.00 31/141
agentlessLineCoverage 54.83 56.55 $\color{green}{\blacktriangledown}$ -1.72 56.55 $\color{green}{\blacktriangledown}$ -1.72 30/140

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - reactive-streams-jvm

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 22.94 22.54 $\color{red}{\blacktriangle}$ +0.40 22.09 $\color{red}{\blacktriangle}$ +0.85 32/169
agentless 19.41 19.59 $\color{green}{\blacktriangledown}$ -0.18 19.59 $\color{green}{\blacktriangledown}$ -0.18 31/136
agentlessCodeCoverage 20.01 20.39 $\color{green}{\blacktriangledown}$ -0.38 19.99 $\color{red}{\blacktriangle}$ +0.02 31/136
agentlessLineCoverage 27.59 27.52 $\color{red}{\blacktriangle}$ +0.07 26.98 $\color{red}{\blacktriangle}$ +0.61 20/92

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - pass4s

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 10.73 10.54 $\color{red}{\blacktriangle}$ +0.19 10.13 $\color{red}{\blacktriangle}$ +0.60 32/164
agentless 10.64 10.33 $\color{red}{\blacktriangle}$ +0.31 9.92 $\color{red}{\blacktriangle}$ +0.72 31/134
agentlessCodeCoverage 18.58 18.45 $\color{red}{\blacktriangle}$ +0.13 17.73 $\color{red}{\blacktriangle}$ +0.85 28/123

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - netflix-zuul

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 91.48 91.39 $\color{red}{\blacktriangle}$ +0.09 89.58 $\color{red}{\blacktriangle}$ +1.90 31/170
agentless 83.72 82.69 $\color{red}{\blacktriangle}$ +1.03 82.69 $\color{red}{\blacktriangle}$ +1.03 31/140
agentlessCodeCoverage 99.37 99.00 $\color{red}{\blacktriangle}$ +0.37 97.04 $\color{red}{\blacktriangle}$ +2.33 31/140
agentlessLineCoverage 114.61 113.88 $\color{red}{\blacktriangle}$ +0.73 113.88 $\color{red}{\blacktriangle}$ +0.73 31/141

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - heliboard

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 9.69 9.92 $\color{green}{\blacktriangledown}$ -0.23 9.92 $\color{green}{\blacktriangledown}$ -0.23 30/138

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@dd-octo-sts

dd-octo-sts Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 13.93 s 13.88 s [-0.5%; +1.2%] (no difference)
startup:insecure-bank:tracing:Agent 12.93 s 12.95 s [-1.0%; +0.7%] (no difference)
startup:petclinic:appsec:Agent 17.06 s 16.92 s [-0.1%; +1.8%] (no difference)
startup:petclinic:iast:Agent 16.89 s 16.90 s [-0.9%; +0.7%] (no difference)
startup:petclinic:profiling:Agent 16.62 s 16.95 s [-2.9%; -0.9%] (maybe better)
startup:petclinic:sca:Agent 17.04 s 16.82 s [+0.5%; +2.2%] (maybe worse)
startup:petclinic:tracing:Agent 16.05 s 16.06 s [-1.1%; +0.9%] (no difference)

Commit: 8120b549 · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - sonar-kotlin

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 13.08 13.67 $\color{green}{\blacktriangledown}$ -0.59 13.40 $\color{green}{\blacktriangledown}$ -0.32 31/168
agentless 12.92 12.37 $\color{red}{\blacktriangle}$ +0.55 12.12 $\color{red}{\blacktriangle}$ +0.80 31/138
agentlessCodeCoverage 15.18 15.72 $\color{green}{\blacktriangledown}$ -0.54 15.41 $\color{green}{\blacktriangledown}$ -0.23 31/138
agentlessLineCoverage 16.72 17.38 $\color{green}{\blacktriangledown}$ -0.66 17.38 $\color{green}{\blacktriangledown}$ -0.66 30/137

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - jolokia

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 95.49 95.12 $\color{red}{\blacktriangle}$ +0.37 95.12 $\color{red}{\blacktriangle}$ +0.37 32/169
agentless 90.56 91.39 $\color{green}{\blacktriangledown}$ -0.83 89.58 $\color{red}{\blacktriangle}$ +0.98 31/140
agentlessCodeCoverage 100.76 101.00 $\color{green}{\blacktriangledown}$ -0.24 99.00 $\color{red}{\blacktriangle}$ +1.76 31/140
agentlessLineCoverage 101.63 103.04 $\color{green}{\blacktriangledown}$ -1.41 101.00 $\color{red}{\blacktriangle}$ +0.63 38/150

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - okhttp

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 17.94 19.20 $\color{green}{\blacktriangledown}$ -1.26 19.99 $\color{green}{\blacktriangledown}$ -2.05 31/167
agentless 18.09 18.45 $\color{green}{\blacktriangledown}$ -0.36 19.59 $\color{green}{\blacktriangledown}$ -1.50 32/142
agentlessCodeCoverage 20.99 22.09 $\color{green}{\blacktriangledown}$ -1.10 22.99 $\color{green}{\blacktriangledown}$ -2.00 33/144
agentlessLineCoverage 37.33 37.91 $\color{green}{\blacktriangledown}$ -0.58 39.45 $\color{green}{\blacktriangledown}$ -2.12 30/139

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - spring_boot

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 16.64 16.36 $\color{red}{\blacktriangle}$ +0.28 16.36 $\color{red}{\blacktriangle}$ +0.28 31/165
agentless 9.90 9.92 $\color{green}{\blacktriangledown}$ -0.02 9.92 $\color{green}{\blacktriangledown}$ -0.02 31/137
agentlessCodeCoverage 13.72 13.67 $\color{red}{\blacktriangle}$ +0.05 13.67 $\color{red}{\blacktriangle}$ +0.05 31/139
agentlessLineCoverage 22.59 22.54 $\color{red}{\blacktriangle}$ +0.05 22.54 $\color{red}{\blacktriangle}$ +0.05 30/137

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

dougqh and others added 2 commits October 15, 2026 18:19
Reverts db7a674. #12882 now shares slots by requirement level: on a
span type with more tags than slots, its optional tags share slots with
each other, so the conventions need no slot marker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaces the `slot: shared` markers with requirement levels. The tags
TestDecoratorImpl.afterStart puts on every CI span (the CI provider and
commit) and the test source range are recommended rather than optional,
so the coloring keeps them on exact slots; the tags set only some of
the time stay optional and absorb the overflow on test spans.

With #12882's coloring, the 306 tags fit in 63 slots; only the CI test
span types, which carry 73 to 104 tags, have tags sharing a slot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

CI Visibility Test Environment - sonar-java

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 9.24 17.38 $\color{green}{\blacktriangledown}$ -8.14 15.41 $\color{green}{\blacktriangledown}$ -6.17 31/167
agentless -18.76 14.51 $\color{green}{\blacktriangledown}$ -33.27 13.94 $\color{green}{\blacktriangledown}$ -32.70 31/139
agentlessCodeCoverage 35.43 93.23 $\color{green}{\blacktriangledown}$ -57.80 79.45 $\color{green}{\blacktriangledown}$ -44.02 31/139
agentlessLineCoverage 63.90 123.36 $\color{green}{\blacktriangledown}$ -59.46 123.36 $\color{green}{\blacktriangledown}$ -59.46 30/141

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

Tests run to verify that CI Visibility behavior has not regressed in the current PR.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: ci visibility Continuous Integration Visibility comp: core Tracer core tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes type: refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant