Skip to content

feat: support array targeting and evaluation diagnostics - #12

Merged
roncohen merged 3 commits into
mainfrom
feat/array-targeting-diagnostics
Sep 15, 2026
Merged

roncohen merged 3 commits into
mainfrom
feat/array-targeting-diagnostics

Conversation

@roncohen

Copy link
Copy Markdown
Contributor

Summary

Port the relevant array-targeting and diagnostic changes from the Node SDK (JavaScript PRs #711, #714, and #724):

  • Preserve native arrays as evaluation leaves, with membership, singleton equality, intersection, and empty-array semantics; retain scalar behavior and legacy FlattenJson behavior.
  • Fail entire invalid rules closed, including under negation and otherwise-matching OR groups, while allowing subsequent rules to match.
  • Produce deduplicated missing-field and unsupported-array diagnostics; rate-limit warnings independently of user context.
  • Send evalErrors in check telemetry and evaluationErrors in bootstrap JSON, retaining legacy missing-field metadata.
  • Match JavaScript's Unicode/HTML-sensitive escaping for composite-array comparisons. An inline comment explains why the relaxed encoder is appropriate for internal comparison strings and notes remaining number-formatting/key-ordering parity limits.
  • Add regression coverage and document array semantics, diagnostics, and application-owned shutdown.

Canonical context deduplication is intentionally a separate, independent PR. This SDK has no remote evaluation/config-check API; the Node signal-interception fix requires no .NET lifecycle change.

Release prerequisite

Do not release until the ingest service supports evalErrors, matching the rollout prerequisite in JavaScript PR #724. Invalid rules that previously matched through negation/OR now fail closed; this behavior change is documented.

Validation

  • dotnet build dotnet-sdk.sln -c Release: zero warnings/errors; library builds for .NET 10 and .NET Standard 2.0.
  • dotnet test dotnet-sdk.sln -c Release --no-build: 332 passed (161 SDK + 5 example tests on each of .NET 8 and .NET 10).
  • Regression coverage includes serialized bootstrap diagnostic field names, telemetry compatibility, warning deduplication, and composite-array escaping.
  • git diff --check passed.

Copilot AI lite review requested due to automatic review settings September 15, 2026 06:03

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings September 15, 2026 12:04

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@roncohen
roncohen enabled auto-merge (squash) September 15, 2026 12:08
Copilot AI review requested due to automatic review settings September 15, 2026 12:08

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@roncohen
roncohen merged commit 515706d into main Sep 15, 2026
2 of 3 checks passed
@roncohen
roncohen deleted the feat/array-targeting-diagnostics branch September 15, 2026 12:10
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