Skip to content

docs: pin README to the OpenTelemetry glossary + fix stale install version - #19

Merged
ANcpLua merged 3 commits into
mainfrom
claude/otel-terminology
Jul 1, 2026
Merged

ANcpLua merged 3 commits into
mainfrom
claude/otel-terminology

Conversation

@ANcpLua

@ANcpLua ANcpLua commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Aligns the docs to the canonical OpenTelemetry vocabulary and fixes a stale fact — the honest, repo-respecting version of "docs lead the implementation" (this repo's AGENTS.md prime directive is do not overstate / never synthesize, so no aspirational/unbuilt capability is added).

README

  • New OpenTelemetry terminology section mapping the repo onto the official glossary: Instrumented Library (the 60-item contract surface), Instrumentation Library (this package family), Instrumentation Scope (QylActivitySource/QylActivityNames, name+version), Automatic Instrumentation (framed as the NativeAOT-safe form: compile-time [InterceptsLocation] interceptors + DiagnosticListener + [ModuleInitializer], explicitly not profiler/IL-rewrite), Semantic Conventions.
  • States plainly that all three signals (traces/metrics/logs via ILogger/log4net/NLog) are contract-covered, and that AOT-structural items are marked unsupported_nativeaot, not hidden.
  • Fixes the stale install example version 0.3.0-pre.1 → 3.1.2 (latest published).

CHANGELOG — synthetic Documentation entry per repo convention.

Scope guardrails honored: no <auto-generated/> blocks or docs/generated/*/contract/code touched (verified); the generated contract-summary block is byte-identical. Docs-only.

🤖 Generated with Claude Code

…sion

Map the repo onto the official OTel terms (Instrumented Library / Instrumentation
Library / Instrumentation Scope / Automatic Instrumentation / Semantic Conventions),
framing the AOT source-interceptor + DiagnosticListener mechanism as OTel Automatic
Instrumentation. Note all three signals (traces/metrics/logs) are contract-covered and
AOT-structural gaps are marked, not hidden. Correct the install example version
0.3.0-pre.1 -> 3.1.2 (latest published).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 1, 2026 05:41
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Jul 1, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Added a new section clarifying OpenTelemetry terminology and how key concepts map to this project’s instrumentation approach.
    • Expanded guidance around automatic instrumentation with a NativeAOT-safe explanation.
    • Updated install examples to use the current 3.1.2 package versions.
    • Corrected a stale version reference in the changelog.

Walkthrough

README.md adds an "OpenTelemetry terminology" glossary section mapping OpenTelemetry concepts to repository terms, and updates install-example package version references to 3.1.2. CHANGELOG.md records both documentation changes under the "Documentation" heading.

Changes

Documentation Updates

Layer / File(s) Summary
OpenTelemetry terminology section
README.md
Adds a glossary table mapping OpenTelemetry terms (instrumented library, instrumentation library, scope, automatic instrumentation, semantic conventions) to repository implementation, including a NativeAOT-safe automatic instrumentation description.
Install example version fix and changelog
README.md, CHANGELOG.md
Updates Qyl.OpenTelemetry.AutoInstrumentation.Hosting, .EntityFrameworkCore, and .SqlClient package reference examples to 3.1.2 (replacing stale 0.3.0-pre.1), and logs both README changes as Documentation bullets in CHANGELOG.md.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Docs-only diff, no code path, no diagram warranted. Version string corrected from 0.3.0-pre.1 to 3.1.2 — fine, it's what the README says now. Nothing else to check.

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the docs-only README glossary alignment and stale install-version fix.
Description check ✅ Passed The description directly matches the README terminology update, version fix, and changelog entry.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/otel-terminology
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch claude/otel-terminology

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

Copilot 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.

Pull request overview

Updates documentation to align repository terminology with the canonical OpenTelemetry glossary and refreshes the README install examples to a current released package version.

Changes:

  • Added an “OpenTelemetry terminology” section to map glossary terms to this repository’s concepts and artifacts.
  • Updated README NuGet PackageReference examples from 0.3.0-pre.1 to 3.1.2.
  • Added a synthetic Documentation entry to the Unreleased section of the changelog.

Reviewed changes

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

File Description
README.md Adds glossary-aligned terminology mapping section and updates install snippet versions.
CHANGELOG.md Records the documentation updates under an Unreleased “Documentation” section.

Comment thread README.md
|---|---|---|
| **Instrumented Library** | The library for which telemetry (traces, metrics, logs) is gathered. | The libraries in the 60-item contract: HttpClient, ASP.NET Core, EF Core, `Microsoft.Data.SqlClient`, `Grpc.Net.Client`, Confluent.Kafka, RabbitMQ.Client, MongoDB.Driver, StackExchange.Redis, Quartz, MassTransit, NServiceBus, MySqlConnector/MySql.Data, Npgsql, SQLite, Oracle MDA, Elasticsearch, GraphQL, Azure SDK. See [`docs/coverage-matrix.md`](docs/coverage-matrix.md). |
| **Instrumentation Library** *(a.k.a. Instrumenting Library)* | The library that provides instrumentation for an Instrumented Library. | **This package family** — `Qyl.OpenTelemetry.AutoInstrumentation` (+ `.Hosting`/`.EntityFrameworkCore`/`.SqlClient`). It emits the OpenTelemetry API calls on the Instrumented Libraries' behalf. |
| **Instrumentation Scope** | The `name` (+ optional `version`) given when obtaining a Tracer / Meter / Logger; identifies the scope emitting telemetry. | The `ActivitySource` / `Meter` names carried by the generated semantic registry (`QylActivitySource` / `QylActivityNames`), qualified with the package version. |

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 50-59: The README and changelog examples are hardcoding the wrong
package version; update the version strings in the documented package references
to match the repo’s current version. Change the
`Qyl.OpenTelemetry.AutoInstrumentation.Hosting`, `EntityFrameworkCore`, and
`SqlClient` references in the README snippet, and the matching version mention
in `CHANGELOG.md`, so they all use `3.0.2` instead of `3.1.2`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 1210d6b9-00c7-4aa5-9fad-b5e4f831d921

📥 Commits

Reviewing files that changed from the base of the PR and between 5ceee81 and a8cbf3e.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • README.md
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
  • GitHub Check: copilot-pull-request-reviewer
  • GitHub Check: smoke (qyl-macos)
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

AGENTS.md

**: # Qyl.OpenTelemetry.AutoInstrumentation agent rules

Mission

This repository is the runtime AOT auto-instrumentation lane for qyl, evolving into a
self-describing observability substrate. The foundation is unchanged: .NET 10
NativeAOT-compatible zero-code instrumentation through managed build assets, source generation,
DiagnosticListener consumption, and module-initializer boot. The direction is the North Star
below.

Keep this repository separate from:

  • semantic-convention package generation (Qyl.OpenTelemetry.SemanticConventions is a referenced
    vocabulary package, not generated here),
  • the old CLR-profiler/OpenTelemetry auto-instrumentation substrate.

North Star — declare and prove the whole stack

Every observability tool today is pull-by-observation: a backend learns what a service emits
by receiving samples over time, and never knows whether it has seen the whole surface. qyl has a
capability none of them have — because instrumentation is source-generated interceptors + a static
contract + a referenced semconv registry + (incrementally) DTO inference, the complete set of
telemetry a binary can ever produce is a compile-time-derivable fact, with provenance.

The substrate goal: every qyl binary ships a complete, machine-readable Telemetry Capability
Graph (TCG)
— the full possible OpenTelemetry surface for that exact binary, each capability
tagged compile-time-owned vs runtime-valued — and proves it by self-hosting (instrumenting its
own pipeline with its own mechanism, zero extra code). Any external entity consumes the TCG to know
the entire stack before a span is sampled. The contract becomes the shared semantic graph; an OTLP
backend is just one consumer.

Three pillars:

  1. Self-host (the proof). qyl instruments qyl with qyl — QylSelfTelemetry /
    SemConvConformanceProcessor are the seed; the binary observing itself is how "declared TCG ==
    runtime reality" is checked.
  2. **Compile-time-complete ...

Files:

  • CHANGELOG.md
  • README.md

⚙️ CodeRabbit configuration file

**: Operating principles (solo-dev, agentic SDLC — reviews are advisory, agents act on them):

  1. LAZY: one self-contained, correct review beats ten partial ones. Every finding is
    definitive — concrete evidence with file:line, a concrete fix, no "consider maybe",
    no open or ambiguous questions back to the author. If you cannot decide a point
    from the diff plus repo context, stay silent on it. Never cite a source, API, or
    version you have not verified; an unverifiable claim is a dropped claim.
  2. IMPATIENT: never stall a PR. There are no compatibility obligations here — internal
    and dogfooding code has NO public-API contract; removing shims, breaking signatures,
    and deleting dead paths are normal, desirable changes. Do not flag backward
    compatibility, deprecation ceremony, or migration paths. (SemVer applies only to
    commercially sold libraries — this repo has none.)
  3. EGO: hold the bar of the best reviewer on the market — flag real correctness,
    security, data-loss, and structural problems precisely; produce zero noise.

Files:

  • CHANGELOG.md
  • README.md
🔇 Additional comments (2)
CHANGELOG.md (1)

5-14: Same version mismatch as the README. This bullet repeats the 3.1.2 claim; once the install example is corrected, this note should be updated to 3.0.2 too.

README.md (1)

10-27: LGTM!

Comment thread README.md Outdated
Comment on lines +50 to +59
<PackageReference Include="Qyl.OpenTelemetry.AutoInstrumentation.Hosting" Version="3.1.2" />
</ItemGroup>
```

Add package-specific references only when the app uses those libraries:

```xml
<ItemGroup>
<PackageReference Include="Qyl.OpenTelemetry.AutoInstrumentation.EntityFrameworkCore" Version="0.3.0-pre.1" />
<PackageReference Include="Qyl.OpenTelemetry.AutoInstrumentation.SqlClient" Version="0.3.0-pre.1" />
<PackageReference Include="Qyl.OpenTelemetry.AutoInstrumentation.EntityFrameworkCore" Version="3.1.2" />
<PackageReference Include="Qyl.OpenTelemetry.AutoInstrumentation.SqlClient" Version="3.1.2" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Directory.Build.props ==\n'
if [ -f Directory.Build.props ]; then
  cat -n Directory.Build.props | sed -n '1,220p'
else
  echo "Directory.Build.props not found"
fi

printf '\n== README.md lines 40-80 ==\n'
cat -n README.md | sed -n '40,80p'

printf '\n== changelog/version mentions ==\n'
rg -n "3\.1\.2|3\.0\.2|PackageReference Include=\"Qyl\.OpenTelemetry\.AutoInstrumentation\.(Hosting|EntityFrameworkCore|SqlClient)\"" README.md CHANGELOG.md docs . -g '!**/bin/**' -g '!**/obj/**' || true

Repository: ANcpLua/Qyl.OpenTelemetry.AutoInstrumentation

Length of output: 10742


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo 'Directory.Build.props:'
if [ -f Directory.Build.props ]; then
  rg -n 'Version|PackageVersion|VersionPrefix' Directory.Build.props
else
  echo 'missing'
fi

echo
echo 'README.md:'
rg -n 'Qyl.OpenTelemetry.AutoInstrumentation\.(Hosting|EntityFrameworkCore|SqlClient)|3\.1\.2|3\.0\.2' README.md

echo
echo 'CHANGELOG.md:'
if [ -f CHANGELOG.md ]; then
  rg -n '3\.1\.2|3\.0\.2|Qyl.OpenTelemetry.AutoInstrumentation\.(Hosting|EntityFrameworkCore|SqlClient)' CHANGELOG.md
else
  echo 'missing'
fi

Repository: ANcpLua/Qyl.OpenTelemetry.AutoInstrumentation

Length of output: 1252


Update the package version in the docs. README.md:50-59 and CHANGELOG.md:13 still hardcode 3.1.2, but the repo version is 3.0.2 in Directory.Build.props. Switch both snippets to 3.0.2.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 50 - 59, The README and changelog examples are
hardcoding the wrong package version; update the version strings in the
documented package references to match the repo’s current version. Change the
`Qyl.OpenTelemetry.AutoInstrumentation.Hosting`, `EntityFrameworkCore`, and
`SqlClient` references in the README snippet, and the matching version mention
in `CHANGELOG.md`, so they all use `3.0.2` instead of `3.1.2`.

@ANcpLua
ANcpLua merged commit 37ccfde into main Jul 1, 2026
3 of 8 checks passed
@ANcpLua
ANcpLua deleted the claude/otel-terminology branch July 1, 2026 16:54
ANcpLua added a commit that referenced this pull request Jul 1, 2026
…sion (#24)

PR #21 (v4.0.0 sync) merged just before PR #19 (docs), so #19's
`### Documentation` block landed under the `[3.0.2]` initial-release
heading and still claimed the README install example was corrected to
`3.1.2` — which #21 had already advanced to `4.0.0`.

Relocate the two doc bullets into `[Unreleased]`, alongside #21's
version-bake entry (both were post-4.0.0 same-day merges), and correct
the stale `0.3.0-pre.1 -> 3.1.2` note to `-> 4.0.0` to match the actual
README. CHANGELOG prose only; no source, README, or props change, so
the verify-version-sync gate is unaffected.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ANcpLua added a commit that referenced this pull request Jul 13, 2026
…ckfill v4.0.1-v4.0.3, version floor sync

- SemanticConventions(+Incubating) 3.0.2 -> 3.4.0: six db.system.name
  well-known values repointed to the Incubating assembly (3.3.0 removed
  non-registry-stable enum members from the stable assembly). Wire-neutral,
  proven by the OTLP verified fixture: the only diff is the
  instrumentation-scope version stamp.
- Version floor 4.0.0 -> 4.1.0 (+3 README examples) — verify-version-sync
  had been red since v4.0.1 was tagged without bumping the floor.
- CHANGELOG: backfilled the missing v4.0.1/v4.0.2/v4.0.3 sections; the old
  [Unreleased] content (#19/#21) moved into v4.0.3 where it shipped.
- Full no-Docker validation floor green incl. both OTLP fixture gates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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