Repository navigation
docs: pin README to the OpenTelemetry glossary + fix stale install version - #19
Conversation
…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>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
📝 WalkthroughSummary by CodeRabbit
WalkthroughREADME.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. ChangesDocumentation Updates
Estimated code review effort: 1 (Trivial) | ~3 minutes Docs-only diff, no code path, no diagram warranted. Version string corrected from 🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
There was a problem hiding this comment.
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
PackageReferenceexamples from0.3.0-pre.1to3.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. |
| |---|---|---| | ||
| | **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. | |
There was a problem hiding this comment.
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
📒 Files selected for processing (2)
CHANGELOG.mdREADME.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 rulesMission
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.SemanticConventionsis 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:
- Self-host (the proof). qyl instruments qyl with qyl —
QylSelfTelemetry/
SemConvConformanceProcessorare the seed; the binary observing itself is how "declared TCG ==
runtime reality" is checked.- **Compile-time-complete ...
Files:
CHANGELOG.mdREADME.md
⚙️ CodeRabbit configuration file
**: Operating principles (solo-dev, agentic SDLC — reviews are advisory, agents act on them):
- 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.- 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.)- 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.mdREADME.md
🔇 Additional comments (2)
CHANGELOG.md (1)
5-14: Same version mismatch as the README. This bullet repeats the3.1.2claim; once the install example is corrected, this note should be updated to3.0.2too.README.md (1)
10-27: LGTM!
| <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" /> |
There was a problem hiding this comment.
🎯 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/**' || trueRepository: 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'
fiRepository: 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`.
…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>
…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>
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.mdprime directive is do not overstate / never synthesize, so no aspirational/unbuilt capability is added).README
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.unsupported_nativeaot, not hidden.0.3.0-pre.1→3.1.2(latest published).CHANGELOG — synthetic
Documentationentry per repo convention.Scope guardrails honored: no
<auto-generated/>blocks ordocs/generated/*/contract/code touched (verified); the generated contract-summary block is byte-identical. Docs-only.🤖 Generated with Claude Code