Skip to content

Releases

v15.0.5

Choose a tag to compare

@ANcpLua ANcpLua released this 22 Oct 07:39
  • Recognize IEnumerable<T> in QYL0013 by its special type instead of its namespace spelling, so a lookalike IEnumerable<T> declared outside System is reported as a type mismatch.
  • Report QYL0700 when an OTLP exporter is added without an endpoint.
  • Report the catalog migration in QYL0009 when the obsolete constant for a key is not public.
  • Use the current constant in the QYL0003 code fix when an obsolete alias holds the replacement key, and the public constant when a private constant holds it.
  • Share one OTLP configuration name table, one argument lookup, one literal replacement and one walk over the *Attributes constants across the analyzers and code fixes, and simplify the analyzer value types, collection construction, sub-sequence search and generated-regex options without changing behavior.
  • Stop generating the two Markdown references (docs/reference/qyl-semantic-conventions.md and the OpenAI telemetry reference) and their coverage.json, with their templates, script and check. scripts/check-openai-census.mjs replaces the check and reads the resolved registry snapshot and the evidence catalogs directly, keeping every census, native field and evidence-field assertion.
  • Delete the Anthropic and browser extension Markdown notes; the vendor registries carry their sources, and AGENTS.md keeps the vendor registry spelling rule.
  • List the root files as solution items and name the test-code skill for the pipeline test project in AGENTS.md.

v15.0.4

Choose a tag to compare

@ANcpLua ANcpLua released this 22 Oct 03:39
  • Describe the OpenAI Codex conversation thread id as openai_codex.thread.id, a string UUID sent under the wire key thread.id, on codex.exec, dispatch_tool_call_with_code_mode_result, startup_prewarm and turn. The core thread.id stays an integer, with its setter, constant and catalogs unchanged.
  • Accept both a string and an integer for thread.id in QYL0013. Live checks take the declared type from the span a sample matches, so a Codex UUID under thread.id raises no type error, while text under thread.id on any other span still does. The live-check advice no longer claims the collector coerces a value to the registry type.
  • Rewrite a key under a deprecated wildcard prefix to its concrete successor in QYL0009 and its code fix: db.elasticsearch.path_parts.index becomes db.operation.parameter.index.
  • Report deprecated values of the qyl packages as QYL0007 with the live [Obsolete] message, instead of the QYL0009 catalog fallback.
  • Analyze Gauge<T>.Record tags as a metric measurement, so QYL0601 and QYL0202 apply as on Counter<T>.Add.
  • Accept a nullable value of the registry type in QYL0013, such as an int? for server.port.
  • Keep surrogate pairs whole when RecordFailure bounds the status description, so it never ends in a lone high surrogate.
  • Never suggest an [Obsolete] constant in QYL0004.
  • Stop treating XmlElement.SetAttribute and other System methods outside System.Diagnostics as telemetry tag writes in QYL0601, QYL0004, QYL0005, QYL0009 and QYL0013.
  • Accept an OTLP endpoint set in top-level statements, a constructor, an accessor or a local function, or passed as a target-typed new(...) Uri, in QYL0700.
  • Report graphql.document written through the typed SetGraphqlDocument setter in QYL0001.
  • Read short and byte attributes through SpanRecord.GetDouble and GetDoubles, as GetInt64 already does.
  • Recognize RPC spans written with rpc.system.name in QYL0002, next to rpc.method and the deprecated rpc.system.
  • Order versions numerically in the migration catalog's coverage table, so 1.40.0 sorts above 1.9.0.

v15.0.3

Choose a tag to compare

@ANcpLua ANcpLua released this 19 Oct 21:59
  • Keep registry enum attributes whose key contains a denied token. Their values are registry members, not free text, so RegistryPolicy.TokenExemptKeys now lists cicd.pipeline.result, cicd.pipeline.task.run.result and the other 17: the ASP.NET Core authentication, authorization, diagnostics, identity and rate-limiting results, aspnetcore.identity.token_purpose, aspnetcore.identity.token_verified, faas.document.operation, feature_flag.result.reason, gen_ai.token.modality, message.type, messaging.rocketmq.message.type, otel.span.sampling_result, rpc.message.type and test.case.result.status. Free-text keys such as gen_ai.tool.call.result and feature_flag.result.value stay denied.
  • Derive the enum exemptions from the resolved registry during generation, so a future enum attribute needs no policy entry; gen_ai.token.type loses its now redundant annotation.
  • Render the TypeScript package from Weaver templates in the same generation pass as C#; its contents are unchanged.

v15.0.2

Choose a tag to compare

@ANcpLua ANcpLua released this 19 Oct 10:24
  • Recognize the current Qyl.Telemetry.SemanticConventions namespaces in semantic analyzers while preserving upstream namespace support and rejecting lookalikes.
  • Verify constant diagnostics against the actual generated package assembly and distinguish telemetry-key literals from unrelated protocol fields.

v15.0.1

Choose a tag to compare

@ANcpLua ANcpLua released this 19 Oct 09:11
  • Keep bare authorization attributes denied when they are declared by a native vendor. Preserve explicitly selected HTTP-header and RPC-metadata captures.
  • Probe fresh registry indexes during release verification instead of accepting stale CDN responses.
  • Keep regeneration against committed source as the generated-file drift check; remove the duplicate version-sensitive hash snapshot and allow persistence denials to grow.

v15.0.0

Choose a tag to compare

@ANcpLua ANcpLua released this 19 Oct 06:55
  • Generate persistent Weaver v2 span matchers from the registry naming contracts, retaining native client/server distinctions and validating each matched signal's required fields.

  • Gate owned strict --future defects separately from pinned dependency warnings and Weaver's experimental definition/2 notice. Preserve fieldless native spans in definition/2 without inventing attributes.

  • Keep operation identity on spans and events without requiring a separate OpenTelemetry resource per operation.

  • Preserve nested entity association expressions and defining-registry provenance on metrics, spans and events. Carry signal collection requirements and independent span-attribute sampling relevance.

  • Use one deterministic C# wire-key symbol map for constants, typed setters, value sets and analyzer metadata. Resolve setters by declaring type and parameter signature; preserve colliding TypeScript enum constants.

  • Reject malformed required values during typed span projection, expose failed projection through TryCreate, and use reference-specific value availability consistently for starter parameters and analyzer metadata.

  • Add the pinned OpenAI Codex runtime registry, complete OpenAI evidence catalogs and a development qyl agent lifecycle profile. Preserve native keys, units, log routes, dynamic span names and distinct client/server contracts.

  • Generate both detailed Markdown references directly with Weaver 0.28.0 .j2 templates, including resolved upstream core and GenAI definitions. Remove the Python Markdown exporter and check source-census coverage in the normal gate.

  • Preserve entity identity without requirement levels, entity associations on spans and events, and reference-specific attribute phases in generated C# contracts. Retain both native spellings when TypeScript identifiers collide.

  • Upgrade Weaver to 0.28.0 and the GenAI registry to commit 547934a, retaining core 1.44.0. Keep automated Weaver and registry updates independent and regenerate the bindings.

  • Follow the upstream GenAI contract changes: rename the Mistral provider value from mistral_ai to mistral (including generated members), require an explicit nullable tool-call ID argument on execute-tool starters, and refresh token-usage and MCP session-duration attribute requirements.

  • Add native Anthropic telemetry coverage for Claude Code 2.1.302, Cowork and Claude Desktop 2.42304.0, the Claude API and TypeScript SDK 0.135.0, and Claude for Chrome 1.0.101. Include beta spans, log and span events, metrics, native attributes and documented dynamic naming paths.

  • Preserve native keys and mixed wire representations, referencing shared upstream definitions.

  • Preserve generated enum output while replacing repeated member scans with sorted grouping.

  • Resolve C# identifier collisions, retain TypeScript native-key aliases, and accept registered vendor spellings in live checks while retaining undeclared-key checks.

  • Audit ChatGPT Chrome extension 1.26.1005.11759 and document its inactive tracing hooks and separate Statsig event vocabulary.

  • Add a reproducible Markdown export for the local and vendor registries at every stability.

v14.1.0

Choose a tag to compare

@ANcpLua ANcpLua released this 17 Oct 22:53
  • Export getCapturedFieldPersistence from the TypeScript package's policy entry point, generated from the same registry-owned captured-field roots and character sets as C#.
  • Preserve valid, invalid and unrelated field classifications across both languages, including case handling and protocol-specific field-name validation.

v14.0.0

Choose a tag to compare

@ANcpLua ANcpLua released this 17 Oct 17:06
  • Preserve every valid explicitly captured HTTP-header and RPC-metadata name, including credential-like names and binary metadata names. Capture selection controls exposure; unrelated persistence rules remain unchanged.
  • Remove the captured-field name and token deny tables from the generated public policy. Keep protocol name validation and rejection of bare template roots.

SemanticConventions 13.2.0

Choose a tag to compare

@ANcpLua ANcpLua released this 17 Oct 14:14

Retain benign captured HTTP headers and textual RPC metadata using the generated canonical policy. Reject malformed names and known credential fields while preserving explicit denials and exception sanitization.

v13.1.2

Choose a tag to compare

@ANcpLua ANcpLua released this 17 Oct 04:40
  • Generate only the key-kind and metric-name facts used by the analyzer instead of embedding unused public catalog metadata.
  • Share the value-kind vocabulary, replace handwritten legacy compiler polyfills with the shared source package, and align source folders with their namespaces.
  • Correct the failure-recording documentation to describe sanitized exception persistence.