Skip to content

[release/13.5] Pin C# API surface - #19866

Merged
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
sebros/pin-csharp-api-surface-13-5
Sep 2, 2026
Merged

Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
sebros/pin-csharp-api-surface-13-5

Conversation

@sebastienros

Copy link
Copy Markdown
Contributor

Description

Pins the shipped C# API surface for the 13.5 release so that merging release/13.5 back into main preserves the correct baseline for the scheduled API delta workflow.

Generated the reference assembly source files with the build loop from .github/workflows/generate-api-diffs.yml. The loop processed 114 projects: 110 succeeded, while the two netstandard2.0 analyzer projects and two net10.0 non-shippable host projects did not support the workflow's forced net8.0 target, matching the workflow's non-blocking failure behavior. The resulting diff contains only generated */api/*.cs files.

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19866

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19866"

@github-actions github-actions Bot added the area-integrations Issues pertaining to Aspire Integrations packages label Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Tests selector (audit mode)

The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement.

51 / 100 test projects · 6 jobs, from 17 changed files.

Selected test projects (51 / 100)

Aspire.Cli.EndToEnd.Tests, Aspire.Cli.Tests, Aspire.EndToEnd.Tests, Aspire.Hosting.Analyzers.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Kusto.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.CodeGeneration.Go.Tests, Aspire.Hosting.CodeGeneration.Java.Tests, Aspire.Hosting.CodeGeneration.Python.Tests, Aspire.Hosting.CodeGeneration.Rust.Tests, Aspire.Hosting.CodeGeneration.TypeScript.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.DevTunnels.Tests, Aspire.Hosting.Docker.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.EntityFrameworkCore.Tests, Aspire.Hosting.Foundry.Tests, Aspire.Hosting.Garnet.Tests, Aspire.Hosting.GitHub.Models.Tests, Aspire.Hosting.Go.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Kafka.Tests, Aspire.Hosting.Keycloak.Tests, Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests, Aspire.Hosting.MongoDB.Tests, Aspire.Hosting.MySql.Tests, Aspire.Hosting.Nats.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Oracle.Tests, Aspire.Hosting.Orleans.Tests, Aspire.Hosting.PostgreSQL.Tests, Aspire.Hosting.Python.Tests, Aspire.Hosting.Qdrant.Tests, Aspire.Hosting.RabbitMQ.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Redis.Tests, Aspire.Hosting.RemoteHost.Tests, Aspire.Hosting.Seq.Tests, Aspire.Hosting.SqlServer.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Hosting.Valkey.Tests, Aspire.Hosting.Yarp.Tests, Aspire.Managed.Tests, Aspire.Playground.Tests

Selected jobs (6)

cli-starter, deployment-e2e, extension-e2e, polyglot, typescript-api-compat, typescript-sdk


How these were chosen — grouped by what changed

⚠️ 27 of the 51 selected test projects come from a single change — src/Aspire.Hosting/api/Aspire.Hosting.cs.

🔧 src/Aspire.Hosting/api/Aspire.Hosting.cs (changed source)
27 via the project graph

show 27

Aspire.Hosting.Analyzers.Tests (2 hops), Aspire.Hosting.Browsers.Tests (2 hops), Aspire.Hosting.CodeGeneration.Go.Tests, Aspire.Hosting.CodeGeneration.Java.Tests, Aspire.Hosting.CodeGeneration.Python.Tests, Aspire.Hosting.CodeGeneration.Rust.Tests, Aspire.Hosting.Containers.Tests (2 hops), Aspire.Hosting.DotnetTool.Tests (2 hops), Aspire.Hosting.Garnet.Tests (2 hops), Aspire.Hosting.JavaScript.Tests (2 hops), Aspire.Hosting.Kafka.Tests (2 hops), Aspire.Hosting.Keycloak.Tests (2 hops), Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests (2 hops), Aspire.Hosting.MongoDB.Tests (2 hops), Aspire.Hosting.MySql.Tests (2 hops), Aspire.Hosting.Nats.Tests (2 hops), Aspire.Hosting.OpenAI.Tests (2 hops), Aspire.Hosting.Oracle.Tests (2 hops), Aspire.Hosting.PostgreSQL.Tests (2 hops), Aspire.Hosting.Python.Tests (2 hops), Aspire.Hosting.Qdrant.Tests (2 hops), Aspire.Hosting.RabbitMQ.Tests (2 hops), Aspire.Hosting.RemoteHost.Tests, Aspire.Hosting.Seq.Tests (2 hops), Aspire.Hosting.SqlServer.Tests (2 hops), Aspire.Hosting.Valkey.Tests (2 hops)

🔧 src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs (changed source)
1 directly: Aspire.Hosting.Azure.Tests
2 via the project graph: Aspire.Hosting.CodeGeneration.TypeScript.Tests, Aspire.Hosting.Tests

🔧 src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs (changed source)
1 directly: Aspire.Hosting.Docker.Tests
2 via the project graph: Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Yarp.Tests

🔧 src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs (changed source)
1 directly: Aspire.Hosting.Redis.Tests
2 via the project graph: Aspire.Hosting.EntityFrameworkCore.Tests (2 hops), Aspire.Hosting.Testing.Tests (2 hops)

🔧 src/Aspire.Hosting.Azure.Kubernetes/api/Aspire.Hosting.Azure.Kubernetes.cs (changed source)
2 directly: Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Tests

🔧 src/Aspire.Hosting.Azure/api/Aspire.Hosting.Azure.cs (changed source)
1 directly: Aspire.Hosting.Azure.Tests
1 via the project graph: Aspire.Hosting.Azure.Kusto.Tests (2 hops)

🔧 src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs (changed source)
1 directly: Aspire.Hosting.Blazor.Tests
1 via the project graph: Aspire.Playground.Tests

🔧 src/Aspire.TypeSystem/api/Aspire.TypeSystem.cs (changed source)
2 via the project graph: Aspire.Cli.Tests (2 hops), Aspire.Managed.Tests (3 hops)

📦 affected project Aspire.Hosting.Redis
1 test: Aspire.EndToEnd.Tests

📦 affected project Aspire.TypeSystem
1 test: Aspire.Cli.EndToEnd.Tests

🔧 src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs (changed source)
1 directly: Aspire.Hosting.Azure.Tests

🔧 src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs (changed source)
1 directly: Aspire.Hosting.DevTunnels.Tests

🔧 src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs (changed source)
1 directly: Aspire.Hosting.Dotnet.Tests

🔧 src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs (changed source)
1 directly: Aspire.Hosting.Foundry.Tests

🔧 src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs (changed source)
1 directly: Aspire.Hosting.GitHub.Models.Tests

🔧 src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs (changed source)
1 directly: Aspire.Hosting.Go.Tests

🔧 src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs (changed source)
1 directly: Aspire.Hosting.Kubernetes.Tests

🔧 src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs (changed source)
1 directly: Aspire.Hosting.Orleans.Tests

🔧 src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs (changed source)
1 directly: Aspire.Hosting.Radius.Tests

Job reasons

Job Triggered by
cli-starter • affected project Aspire.TypeSystem
• selected test Aspire.Cli.Tests
deployment-e2e affected project Aspire.Hosting.Azure.AppContainers
extension-e2e src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs, src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs, src/Aspire.Hosting.Azure.Kubernetes/api/Aspire.Hosting.Azure.Kubernetes.cs, src/Aspire.Hosting.Azure/api/Aspire.Hosting.Azure.cs, src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs, src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs, src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs, src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs, src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs, src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs, src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs, src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs, src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs, src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs, src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs, src/Aspire.Hosting/api/Aspire.Hosting.cs
• affected project Aspire.Hosting.Azure.AppContainers
polyglot affected project Aspire.Hosting.Go
typescript-api-compat affected project Aspire.Hosting.Azure.AppContainers
typescript-sdk affected project Aspire.Hosting.CodeGeneration.TypeScript

Selection computed for commit 5fb59c9.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Radius cloud-provider callback interfaces lack the experimental marker applied to their entry-point APIs.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Pins the generated C# API baselines for the Aspire 13.5 release.

Changes:

  • Captures Hosting and TypeSystem API additions and stabilization.
  • Adds baselines for the new Radius and .NET hosting packages.
  • Refreshes integration, Azure, Kubernetes, and Foundry surfaces.
File summaries
File Description
src/Aspire.TypeSystem/api/Aspire.TypeSystem.cs Adds certificate-bundle metadata.
src/Aspire.Hosting/api/Aspire.Hosting.cs Updates core hosting APIs.
src/Aspire.Hosting.Redis/api/Aspire.Hosting.Redis.cs Adds Redis module APIs.
src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs Adds the Radius package baseline.
src/Aspire.Hosting.Orleans/api/Aspire.Hosting.Orleans.cs Adds provider-type configuration.
src/Aspire.Hosting.Kubernetes/api/Aspire.Hosting.Kubernetes.cs Adds persistent volumes and Kubernetes models.
src/Aspire.Hosting.Go/api/Aspire.Hosting.Go.cs Adds configurable Delve options.
src/Aspire.Hosting.GitHub.Models/api/Aspire.Hosting.GitHub.Models.cs Records integration deprecation.
src/Aspire.Hosting.Foundry/api/Aspire.Hosting.Foundry.cs Refreshes hosted agents and model catalog.
src/Aspire.Hosting.Dotnet/api/Aspire.Hosting.Dotnet.cs Adds the .NET hosting baseline.
src/Aspire.Hosting.Docker/api/Aspire.Hosting.Docker.cs Normalizes generated output.
src/Aspire.Hosting.DevTunnels/api/Aspire.Hosting.DevTunnels.cs Adds tunnel region selection.
src/Aspire.Hosting.Blazor/api/Aspire.Hosting.Blazor.cs Adds .NET-project gateway overloads.
src/Aspire.Hosting.Azure/api/Aspire.Hosting.Azure.cs Adds expanded existing-resource scopes.
src/Aspire.Hosting.Azure.Kubernetes/api/Aspire.Hosting.Azure.Kubernetes.cs Adds volumes and VM SKUs.
src/Aspire.Hosting.Azure.AppService/api/Aspire.Hosting.Azure.AppService.cs Adds delegated-subnet support.
src/Aspire.Hosting.Azure.AppContainers/api/Aspire.Hosting.Azure.AppContainers.cs Adds unique naming and stabilizes domains.
Review details

Suppressed comments (1)

src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs:66

  • IAzureRadiusProviderBuilder is exposed only through the WithAzureProvider callback, which is marked Experimental("ASPIRERADIUS003"), but the callback interface itself lacks that attribute. Mark the source interface with the same diagnostic and regenerate the API file so consumers do not receive an unintended stable contract for this experimental feature.
    public partial interface IAzureRadiusProviderBuilder
  • Files reviewed: 16/17 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread src/Aspire.Hosting.Radius/api/Aspire.Hosting.Radius.cs
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@joperezr
Jose Perez Rodriguez (joperezr) merged commit 71bdce3 into release/13.5 Sep 2, 2026
1686 of 1703 checks passed
@joperezr
Jose Perez Rodriguez (joperezr) deleted the sebros/pin-csharp-api-surface-13-5 branch September 2, 2026 23:10
@github-actions github-actions Bot added this to the 13.5.x milestone Sep 2, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

✅ No documentation update needed.

Step 5 branch taken: excluded → base_branch_is_release, title_release_prefix

This PR is a backport-style release-pinning PR and is out of scope for docs generation, regardless of recommendation (docs_optional) or triggered_signals.

  • Exclusion reasons (from .pr-docs-check/signals.json): base_branch_is_release (base ref is release/13.5) and title_release_prefix (title is [release/13.5] Pin C# API surface). The is_backport meta signal is also true.
  • Nature of the change: The PR body confirms this only regenerates the */api/*.cs reference-assembly files to pin the shipped C# API surface for the 13.5 release baseline (via .github/workflows/generate-api-diffs.yml), so release/13.5 merging back into main preserves the correct baseline for the scheduled API delta workflow. No new user-facing behavior, feature, or API was authored in this PR — the diffs are generated snapshots of already-shipped APIs.
  • Triggered signals (breaking_api_removal, new_public_type, public_api_surface_file_changed) are artifacts of the generated API-surface diff regeneration, not newly introduced user-facing functionality requiring documentation.

No docs PR drafted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-integrations Issues pertaining to Aspire Integrations packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants