Skip to content

build: split the 30-demo matrix into Demos.slnx - #36

Merged
ANcpLua merged 1 commit into
mainfrom
feat/demos-slnx-split
Jul 6, 2026
Merged

build: split the 30-demo matrix into Demos.slnx#36
ANcpLua merged 1 commit into
mainfrom
feat/demos-slnx-split

Conversation

@ANcpLua

@ANcpLua ANcpLua commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Status: complete-and-verified

Why: the main slnx carried 39 projects, 30 of them Qyl.Real*Demo apps that each load the source-interceptor generator as an analyzer. Opening that solution runs 30 generator pipelines in the IDE on every edit — the remaining structural IDE-load source after the artifacts/publish cleanup (#35).

Change:

  • Main slnx → src + tests + benchmarks (9 projects), the day-to-day IDE solution.
  • New Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx → the 30-demo matrix.
  • Goal orchestrator gains a demos release build step right after release build — demo compile coverage is unchanged.
  • CLAUDE.md documents both solutions and the rationale.

Not affected: nuget-publish.yml packs individual csprojs (never the slnx) and is dispatch-only — no release needed. Per-demo verifiers and the AOT gate build individual projects and are untouched.

Verification: both solutions build Release green; gate subset passes (contract invariants, release build, demos release build, package layout).

🤖 Generated with Claude Code

The main slnx carried 39 projects, 30 of them Qyl.Real*Demo apps that each wire
the source-interceptor generator as an analyzer — opening the solution in an IDE
runs 30 generator pipelines on every edit, which is the remaining structural
IDE-load source after the artifacts/publish cleanup (#35).

Main slnx now carries src + tests + benchmarks (9 projects); the demo matrix
lives in Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx. The goal orchestrator
gains a 'demos release build' step directly after 'release build', so compile
coverage of the demos is unchanged. nuget-publish packs individual projects and
is unaffected. CLAUDE.md documents the split.

Verified: both solutions build Release green; gate subset (contract invariants,
release build, demos release build, package layout) passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 6, 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: 01acee81-7c52-47d4-bf2e-dc02b054b937

📥 Commits

Reviewing files that changed from the base of the PR and between 5bb3587 and a6defd8.

📒 Files selected for processing (4)
  • CLAUDE.md
  • Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx
  • Qyl.OpenTelemetry.AutoInstrumentation.slnx
  • tools/verify-aot-autoinstrumentation-goal.py
💤 Files with no reviewable changes (1)
  • Qyl.OpenTelemetry.AutoInstrumentation.slnx
📜 Recent review details
⏰ Context from checks skipped due to timeout. (6)
  • GitHub Check: webapi-aot-demo (macos-latest)
  • GitHub Check: webapi-aot-demo (ubuntu-24.04-arm)
  • GitHub Check: verify (macos-latest)
  • GitHub Check: verify (ubuntu-24.04-arm)
  • GitHub Check: smoke (macos-latest)
  • GitHub Check: smoke (ubuntu-24.04-arm)
🧰 Additional context used
📓 Path-based instructions (2)
CLAUDE.md

📄 CodeRabbit inference engine (CLAUDE.md)

CLAUDE.md is the single agent-rules file for this repository.

Files:

  • CLAUDE.md
**

⚙️ CodeRabbit configuration file

**: # 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 TCG (the ar...

Files:

  • CLAUDE.md
  • Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx
  • tools/verify-aot-autoinstrumentation-goal.py

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

  • CLAUDE.md
  • Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx
  • tools/verify-aot-autoinstrumentation-goal.py
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: ANcpLua/Qyl.OpenTelemetry.AutoInstrumentation

Timestamp: 2026-07-06T04:09:51.177Z
Learning: Keep this repository separate from semantic-convention package generation (`Qyl.OpenTelemetry.SemanticConventions` is a referenced vocabulary package, not generated here) and from the old CLR-profiler/OpenTelemetry auto-instrumentation substrate.
Learnt from: CR
Repo: ANcpLua/Qyl.OpenTelemetry.AutoInstrumentation

Timestamp: 2026-07-06T04:09:51.177Z
Learning: Do not overstate the current state of the North Star; documentation must clearly distinguish shipped capabilities from future work and may not describe a future pillar as already existing.
Learnt from: CR
Repo: ANcpLua/Qyl.OpenTelemetry.AutoInstrumentation

Timestamp: 2026-07-06T04:09:51.177Z
Learning: Before implementation work, confirm repository cleanliness with `git worktree list`, `git branch --show-current`, `git diff --cached --name-only`, `git stash list`, and `git status --short`, and return the tree clean.
🔇 Additional comments (3)
Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx (1)

1-33: LGTM!

tools/verify-aot-autoinstrumentation-goal.py (1)

20-20: LGTM!

CLAUDE.md (1)

79-83: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added a separate demo solution for building and verifying the sample projects.
    • Expanded verification to include a dedicated Release build check for the demo solution.
  • Documentation

    • Updated build guidance to use two explicit solution builds: the main instrumentation solution and the demo matrix.
    • Clarified the recommended verification flow for day-to-day development.

Walkthrough

Demo projects were extracted from the main .slnx solution into a new Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx file; the main solution gained a benchmarks project entry. The verifier script adds a "demos release build" command, and CLAUDE.md documents building both solutions separately.

Changes

Solution Restructuring

Layer / File(s) Summary
Split demo projects into a dedicated solution
Qyl.OpenTelemetry.AutoInstrumentation.slnx, Qyl.OpenTelemetry.AutoInstrumentation.Demos.slnx
Main solution drops demo entries and adds the benchmarks project; new Demos.slnx enumerates all demo .csproj paths.
Verifier and docs updated for two-solution build
tools/verify-aot-autoinstrumentation-goal.py, CLAUDE.md
Verifier script adds a "demos release build" command for Demos.slnx in Release config; CLAUDE.md documents separate build commands for the main and demo solutions.

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

Possibly related PRs

Poem

A rabbit split the .slnx in two,
Demos here, benchmarks anew,
The verifier hums one more command,
CLAUDE.md notes it, close at hand,
Two builds, one gate, all clean and true. 🐇

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed It clearly states the core change: splitting the demo matrix into a new Demos.slnx file.
Description check ✅ Passed It directly describes the solution split, the new demos solution, the orchestrator update, and the CLAUDE.md note.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/demos-slnx-split
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feat/demos-slnx-split

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

@ANcpLua
ANcpLua merged commit 083979d into main Jul 6, 2026
9 checks passed
@ANcpLua
ANcpLua deleted the feat/demos-slnx-split branch July 6, 2026 04:14
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