Skip to content

feat(semconv): register datafusion.operator.* attributes (RFC 0040 slice 2) - #633

Merged
jensholdgaard merged 2 commits into
mainfrom
rfc0040-slice2-weaver-registry
Jul 25, 2026
Merged

feat(semconv): register datafusion.operator.* attributes (RFC 0040 slice 2)#633
jensholdgaard merged 2 commits into
mainfrom
rfc0040-slice2-weaver-registry

Conversation

@jensholdgaard

Copy link
Copy Markdown
Owner

Summary

  • New registry.datafusion group in semconv/registry/attributes.yaml: the five normative operator-span attributes RFC 0040 §3.3 specifies (output_rows, elapsed_compute, output_bytes, row_groups_pruned, row_groups_matched) — kept as their own group, separate from registry.ourios, since they describe DataFusion's semantics, not Ourios's (the crate is built to be extracted to a standalone datafusion-contrib component).
  • Regenerated crates/ourios-semconv/src/lib.rs (weaver registry generate) — 5 new constants, no other diff.
  • ourios-df-otel (merged in slice 1, feat(df-otel): post-hoc ExecutionPlan -> OTel operator span crate (RFC 0040 slice 1) #632) keeps its own local string constants rather than depending on ourios-semconv — that dependency would break its zero-ourios-*-dep design. This registration exists so weaver registry live-check recognizes the names once slice 3 wires emission into ourios-querier, instead of flagging them as unregistered violations.

Related

RFC: docs/rfcs/0040-datafusion-operator-instrumentation.md (slice 2 of 4)

Checklist

  • weaver registry check -r semconv/registry --future clean
  • weaver registry generate + cargo fmt -p ourios-semconv produces exactly this diff (no drift)
  • cargo test -p ourios-semconv --all-features (3/3 pass)
  • cargo clippy -p ourios-semconv --all-targets --all-features -- -D warnings clean
  • cargo fmt -p ourios-semconv --check clean
  • Docs / CHANGELOG.md — not user-facing yet (no emission until slice 3)
  • RFC linked

…ice 2)

The five normative operator-span attributes (output_rows, elapsed_compute,
output_bytes, row_groups_pruned, row_groups_matched) go through the weaver
registry as their own registry.datafusion group -- separate from
registry.ourios, since these describe DataFusion's semantics, not Ourios's,
per RFC 0040 §3.3. ourios-df-otel keeps its own local string constants (it
cannot depend on ourios-semconv without breaking the crate's
zero-ourios-dep extraction design); this registration is what lets
`weaver registry live-check` validate the names once slice 3 wires
emission into the querier, rather than flagging them as unregistered.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qtny6z6cA74xPZa4qRhk4F
Signed-off-by: Jens Holdgaard Pedersen <Jens@holdgaard.org>
@jensholdgaard
jensholdgaard requested a review from Copilot July 25, 2026 10:10
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@jensholdgaard, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 29 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a4f2055d-f891-4a47-8c2e-68e30b3c74d9

📥 Commits

Reviewing files that changed from the base of the PR and between f14e2cc and 6542458.

📒 Files selected for processing (2)
  • crates/ourios-semconv/src/lib.rs
  • semconv/registry/attributes.yaml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rfc0040-slice2-weaver-registry

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Registers the RFC 0040 §3.3 datafusion.operator.* attribute keys in the Weaver semconv registry so future operator-span emission (slice 3) can pass weaver registry live-check without “unregistered attribute” violations.

Changes:

  • Add a new registry.datafusion attribute group defining five datafusion.operator.* attributes.
  • Regenerate crates/ourios-semconv/src/lib.rs to include the corresponding constant keys.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
semconv/registry/attributes.yaml Adds registry.datafusion and defines the five operator-span attributes.
crates/ourios-semconv/src/lib.rs Regenerated semconv constants for the new datafusion.operator.* keys.
Comments suppressed due to low confidence (1)

semconv/registry/attributes.yaml:366

  • The brief for datafusion.operator.row_groups_matched calls this value the “B1 denominator”, which is an Ourios benchmark-specific concept. To keep this attribute definition reusable outside Ourios (as the surrounding comment suggests), remove the B1 reference and describe only the DataFusion/Parquet meaning.
          Parquet row groups this scan read (`PruningMetrics::matched`) —
          the B1 denominator. Reported as a raw count alongside

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread semconv/registry/attributes.yaml Outdated
… briefs

Copilot review on PR #633: the row_groups_pruned/matched briefs referenced
Ourios's B1 benchmark gate, which contradicts the group's own stated intent
(DataFusion-owned semantics, extractable to a standalone component).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qtny6z6cA74xPZa4qRhk4F
Signed-off-by: Jens Holdgaard Pedersen <Jens@holdgaard.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@jensholdgaard
jensholdgaard merged commit e7b0617 into main Jul 25, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants