Skip to content

Add core.slnf — solution filter without demo projects - #18

Merged
ANcpLua merged 1 commit into
mainfrom
claude/core-slnx-no-demos
Jun 30, 2026
Merged

Add core.slnf — solution filter without demo projects#18
ANcpLua merged 1 commit into
mainfrom
claude/core-slnx-no-demos

Conversation

@ANcpLua

@ANcpLua ANcpLua commented Jun 30, 2026

Copy link
Copy Markdown
Owner

Why

Opening the full .slnx loads all 39 projects (30 demos/), making Rider perma-lag/freeze (thread dumps show AWT-EventQueue stalls).

What

Qyl.OpenTelemetry.AutoInstrumentation-core.slnf — a solution filter over the .slnx that loads only the 9 core projects (7 src/ + benchmark + test fixture). Zero demos. It's a view over the real solution, so it never drifts.

  • Daily work: open core.slnf → 9 projects, no lag.
  • Demo work: open the full .slnx (all 39).

Additive only.

🤖 Generated with Claude Code

Opening the full slnx loads all 39 projects (30 demos) -> Rider perma-lags.
core.slnf is a solution filter over the canonical .slnx that loads only the
9 core projects (src + benchmark + test fixture). Same pattern as MAF's
agent-framework-release.slnf. No demos, no duplicated solution.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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 Jun 30, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a03ac289-8ef2-4005-b599-209d1971f240

📥 Commits

Reviewing files that changed from the base of the PR and between 770a897 and 0784f23.

📒 Files selected for processing (1)
  • Qyl.OpenTelemetry.AutoInstrumentation-core.slnf
📜 Recent review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: verify (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:

  • Qyl.OpenTelemetry.AutoInstrumentation-core.slnf

⚙️ 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:

  • Qyl.OpenTelemetry.AutoInstrumentation-core.slnf
🔇 Additional comments (1)
Qyl.OpenTelemetry.AutoInstrumentation-core.slnf (1)

1-16: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Added a solution filter for the project, making it easier to open and work with a focused set of projects in the solution.
    • Included the main source projects, benchmarks, and a snapshot fixture project in the filtered view.

Walkthrough

A new solution-filter file Qyl.OpenTelemetry.AutoInstrumentation-core.slnf is added. It references the main .slnx solution and enumerates a subset of projects: multiple src/ core projects, one benchmarks project, and one source-generator snapshot fixture.

Changes

Core Solution Filter

Layer / File(s) Summary
Solution-filter definition
Qyl.OpenTelemetry.AutoInstrumentation-core.slnf
New JSON solution-filter pointing to the main .slnx file and listing the included core src/ projects, benchmarks, and source-generator snapshot fixture.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the new core solution filter and its exclusion of demo projects.
Description check ✅ Passed The description matches the change, explaining the core .slnf filter, its purpose, and the additive scope.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/core-slnx-no-demos
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch claude/core-slnx-no-demos

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

@ANcpLua
ANcpLua merged commit 5ceee81 into main Jun 30, 2026
7 of 9 checks passed
@ANcpLua
ANcpLua deleted the claude/core-slnx-no-demos branch June 30, 2026 11:56
ANcpLua added a commit that referenced this pull request Jul 1, 2026
…ft, sync to v4.0.0

QylInstrumentation.Version was a hardcoded const "0.3.0-pre.1" stamped onto every emitted
span/metric via QylActivitySource, while the package now ships as v4.0.0. Props floor said
3.0.2, README said 0.3.0-pre.1, and the OTLP verified fixture said 3.0.2 — four version
stories, none matching what the runtime actually emitted.

Root fix (single source of truth; reflection-free, per the contract-invariants gate):
- New GenerateQylVersionInfo MSBuild target bakes <Version> into a generated internal const
  (QylVersionInfo.Version) that QylInstrumentation.Version references. No System.Reflection
  (banned in product code by verify-contract-invariants.py). Always regenerates, so a CI
  -p:Version override is honoured. const -> static readonly; PublicAPI baseline updated.
- Directory.Build.props <Version> floor -> 4.0.0 (matches the released v4.0.0 tag); CI-owned.
- README install examples -> 4.0.0.
- CHANGELOG: added [4.0.0] (IStartupFilter refactor #20 + core.slnf #18); the version-
  derivation change sits under [Unreleased].
- Regenerated the OTLP verified fixture to 4.0.0 — it now matches the runtime scope version,
  which it never did before (fixture rendered 3.0.2 while the runtime const emitted 0.3.0-pre.1).

Drift-proofing:
- tools/verify-version-sync.py (in the no-Docker floor) asserts props floor >= latest v* tag,
  README examples == floor, and the version stays generated-const-derived (no literal).
  Negative-tested.

Verified: the FULL no-Docker validation floor passes locally (contract invariants, release
build, public API, version sync, generator snapshots, source interceptor, otlp verified
fixtures, nativeaot consumer verified — all green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ANcpLua added a commit that referenced this pull request Jul 1, 2026
…ft, sync to v4.0.0 (#21)

QylInstrumentation.Version was a hardcoded const "0.3.0-pre.1" stamped onto every emitted
span/metric via QylActivitySource, while the package now ships as v4.0.0. Props floor said
3.0.2, README said 0.3.0-pre.1, and the OTLP verified fixture said 3.0.2 — four version
stories, none matching what the runtime actually emitted.

Root fix (single source of truth; reflection-free, per the contract-invariants gate):
- New GenerateQylVersionInfo MSBuild target bakes <Version> into a generated internal const
  (QylVersionInfo.Version) that QylInstrumentation.Version references. No System.Reflection
  (banned in product code by verify-contract-invariants.py). Always regenerates, so a CI
  -p:Version override is honoured. const -> static readonly; PublicAPI baseline updated.
- Directory.Build.props <Version> floor -> 4.0.0 (matches the released v4.0.0 tag); CI-owned.
- README install examples -> 4.0.0.
- CHANGELOG: added [4.0.0] (IStartupFilter refactor #20 + core.slnf #18); the version-
  derivation change sits under [Unreleased].
- Regenerated the OTLP verified fixture to 4.0.0 — it now matches the runtime scope version,
  which it never did before (fixture rendered 3.0.2 while the runtime const emitted 0.3.0-pre.1).

Drift-proofing:
- tools/verify-version-sync.py (in the no-Docker floor) asserts props floor >= latest v* tag,
  README examples == floor, and the version stays generated-const-derived (no literal).
  Negative-tested.

Verified: the FULL no-Docker validation floor passes locally (contract invariants, release
build, public API, version sync, generator snapshots, source interceptor, otlp verified
fixtures, nativeaot consumer verified — all green).

Co-authored-by: Claude Opus 4.8 (1M context) <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.

1 participant