Skip to content

Mark the COLLECT search API as [Experimental] (NRS003); SE.Redis 3.0.25 - #536

Merged
mgravell merged 1 commit into
masterfrom
marc/collect-experimental
Jul 30, 2026
Merged

Mark the COLLECT search API as [Experimental] (NRS003); SE.Redis 3.0.25#536
mgravell merged 1 commit into
masterfrom
marc/collect-experimental

Conversation

@mgravell

@mgravell mgravell commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

REDUCE COLLECT is still gated behind the server's search-enable-unstable-features flag, so its wire format can move under us. It shipped as stable public API in v1.7.0 by oversight; this re-flags it as experimental for 1.7.1.

Follows the established NRS ritual (cf. bed9558 for NRS002):

  • Experiments.SearchCollect const, reusing id NRS003. That id briefly existed on marc/8_10 for server 8.10 but was removed before any release - confirmed absent from every v* tag - so it is free to reuse under the 'ids that reached users are never reused' rule, and gets no retired-id breadcrumb.
  • [Experimental] on CollectReducer and Reducers.Collect().
  • [NRS003] prefix on all 10 COLLECT entries in PublicAPI.Shipped.txt. The analyzer requires the prefix on every member of an experimental type, not just the type.
  • docs/exp/NRS003.md, and NRS003 added to Directory.Build.props NoWarn.

Also bumps StackExchange.Redis 3.0.17 -> 3.0.25.


Note

Low Risk
No runtime logic changes to COLLECT—only experimental API metadata, docs, and a patch-level Redis client dependency bump; consumers may see new NRS003 compile warnings.

Overview
Reclassifies the REDUCE COLLECT aggregation API from stable public surface to experimental under diagnostic NRS003, because Redis still gates COLLECT behind search-enable-unstable-features.

CollectReducer and Reducers.Collect() are annotated with [Experimental], Experiments.SearchCollect is registered, all COLLECT members in PublicAPI.Shipped.txt are prefixed with [NRS003], and docs/exp/NRS003.md documents server requirements and suppression options. The repo adds NRS003 to global NoWarn in Directory.Build.props so the library build stays clean.

StackExchange.Redis is bumped from 3.0.17 to 3.0.25 in central package management.

Reviewed by Cursor Bugbot for commit 0f3235b. Bugbot is set up for automated code reviews on this repo. Configure here.

REDUCE COLLECT is still gated behind the server's search-enable-unstable-features
flag, so its wire format can move under us. It shipped as stable public API in
v1.7.0 by oversight; this re-flags it as experimental for 1.7.1.

Follows the established NRS ritual (cf. bed9558 for NRS002):
- Experiments.SearchCollect const, reusing id NRS003. That id briefly existed on
  marc/8_10 for server 8.10 but was removed before any release - confirmed absent
  from every v* tag - so it is free to reuse under the 'ids that reached users are
  never reused' rule, and gets no retired-id breadcrumb.
- [Experimental] on CollectReducer and Reducers.Collect().
- [NRS003] prefix on all 10 COLLECT entries in PublicAPI.Shipped.txt. The analyzer
  requires the prefix on every member of an experimental type, not just the type.
- docs/exp/NRS003.md, and NRS003 added to Directory.Build.props NoWarn.

Also bumps StackExchange.Redis 3.0.17 -> 3.0.25.

Verified from outside the repo (where NoWarn does not apply) that a consumer gets
'error NRS003' with the correct exp/NRS003 url, on both net8.0 (BCL attribute) and
netstandard2.0 (the internal polyfill). Full 'dotnet build -t:Rebuild' clean.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0f3235bfcd

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Directory.Packages.props
@mgravell
mgravell merged commit 25f01e4 into master Jul 30, 2026
40 of 41 checks passed
@mgravell
mgravell deleted the marc/collect-experimental branch July 30, 2026 07:30
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