Skip to content

🤓 Content for release: 13.6 - #1599

Merged
David Negstad (danegsta) merged 178 commits into
mainfrom
release/13.6
Sep 29, 2026
Merged

David Negstad (danegsta) merged 178 commits into
mainfrom
release/13.6

Conversation

@IEvangelist

@IEvangelist David Pine (IEvangelist) commented Sep 1, 2026 •

Copy link
Copy Markdown
Member

aspire.dev vnext (13.6)

Summary

Prepare the Aspire 13.6 documentation release. The release article is reconciled against microsoft/aspire release/13.6 at a11eca9611073f7cf66fa87faac63c2119e87713, compared with v13.5.0. The inventory contains 402 first-parent history entries, including maintenance, merges, and reversions—not 402 distinct shipped features.

Highlights cover dashboard persistence/run history and terminals; Java, Rust, Connector Namespace and Sandboxes; coordinated .NET builds; CLI and VS Code workflows; deployment and integration improvements; emulator images; and migration guidance for Cosmos DB, Front Door, connection-string aliases, and terminal namespaces.

Published documentation and ingestion work

  • 94b5f0c19: migrate Java guides from Toolkit to first-party hosting, document typed Azure provisioning customization and VS Code agent lifecycle tools, and refresh 34 container-image records from the pinned release source. Default tag changes: App Configuration 1.0.2 → 1.2.0, Cosmos DB stable → vnext-latest.
  • 27e2db77a: exact release-version selection, ATS-only package metadata, union and canonical SDK enum handling, empty C# navigation filtering, and fail-closed handling of SDK dump errors.
  • 0b64558c1: reconcile all 29 contributors against the pinned release snapshot.
  • 2696e2207: recognize const-object enum declarations, retain colliding enum-name literals in the shared Twoslash bundle while preserving exact package-specific JSON, and increase the full example-audit time budget for the larger dataset.
  • 7ab5f74bd: include the exact Dotnet package as supporting scan context for Radius's generic .NET program export; subtract core/supporting modules without dropping Radius's real IDs or receiver targets.
  • 44b9819bb: publish the complete, validated 13.6 catalog, mappings, C#/TypeScript API data, and Twoslash bundle together.
  • Concurrent release updates are preserved, including the environment badge and Document Aspire agent lifecycle options #1745's agent lifecycle options. Isolation/launch-profile inputs were confirmed in the pinned 13.6 source.
  • Related product changes: Add Java hosting integration aspire#18033, Add polyglot Azure provisioning proxy SDKs aspire#19675, and Let agents start and stop AppHosts through VS Code aspire#19134.

The maintainer-set planned release date remains September 29, 2026 (#1690). Published package constants remain separate from prerelease ingestion. Release membership comes from product source, not merely a docs PR's target; #1740 documents microsoft/aspire#20231 (14.0), not a 13.6 feature.

Generated data and provenance

The published snapshot contains 217 catalog entries, 161 documentation mappings (including the 26 new mappings), 210 C# records, 146 TypeScript modules, and the rebuilt Twoslash bundle. There are 132 official packages at exact version 13.6.0-preview.1.26473.12, with no 14.x imports. Independently versioned packages retain their selected catalog versions.

Generation used genuine pinned packages from the public dotnet9 feed and an isolated, locally built 13.6 CLI/RemoteHost. Package provenance remains a11eca9611073f7cf66fa87faac63c2119e87713; the scanner fixes are separate development-build provenance, not a claim that an official corrected CLI has shipped.

  • Full TypeScript ingestion with the inherited-method fix (320eed42f85a7d4b090a9429b98c7a6a8547a4b8) produced 146 modules, 0 failures, and 7 explicit skips.
  • Core/Radius regeneration with the additional target-specificity fix (435fd4eb7d06ef99702ae5106cf01c10f5c6a780) succeeded. The real compound Radius + exact Dotnet SDK dump has no diagnostics and retains both withContainerImage and withDotnetProgramContainerImage capability IDs.
  • ProjectResource/CSharpAppResource use the concrete Radius export; DotnetProjectResource uses the generic export. Dotnet's APIs are not attributed to Radius. No source-package attributes, capability identities, or missing-export checks were altered to force validation through.

Third-party links and affiliations

  • Radius documentation — no material affiliation.
  • Source/specification links remain within microsoft/aspire; Java debugger links point to the corresponding Visual Studio Marketplace extensions. No new material affiliation claims.

Validation

  • All 25 authored TypeScript guide/release examples pass against the final declaration bundle; guide samples were also compiled with the genuine generated SDK.
  • The complete annotated-site Twoslash audit passes, with no diagnostic suppression.
  • Final semantic validation passes: 217 package identities, 146 module-provenance matches, 74 DTO shapes, and 2,873 handle inheritance chains.
  • 82 structured-data tests, 75 API-reference/declaration-generator/API-route tests, and 17 ATS transformer tests pass. The final API-reference gate resolves the Radius exports without exceptions or aliases.
  • Earlier compile-only C# validation covered 24 guide methods and one type declaration without warnings or errors. Browser checks covered Java, Azure customization, VS Code and AI-agent routes and language tabs.
  • Source scanner/dispatcher/context-filter/API-export regressions: 215 pass on each product branch, including exact-package dispatch and generated-SDK compilation checks.
  • No local production site build, cloud deployment, destructive cleanup scenario, CLI self-update, or release workflow was run. Current-head CI must still complete after the latest pushes.

Remaining release gates

aspire-repo-bot Bot and others added 30 commits August 14, 2026 17:22
Co-authored-by: David Pine <david.pine@microsoft.com>
…limits (#1554)

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: James Newton-King <james@newtonking.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
aspire-repo-bot Bot and others added 3 commits September 29, 2026 12:45
Documents changes from microsoft/aspire#20528

Author: ``@mitchdenny``

Targeting `release/13.6` — the latest release branch on
`microsoft/aspire.dev` — because `release/14.0` (from the source PR
milestone `14.0`) does not exist there (`target_resolution`:
`latest_release_fallback`).

**Why:** The source PR removed the dashboard's top-right Terminals
button and the mobile Terminal menu entry. The backtick shortcut is now
the only manual way to open the terminal dock. Triggered signal:
`pr_body_has_user_facing_section`.

**Changes:** Updated the existing page
`src/frontend/src/content/docs/dashboard/explore.mdx` (Interactive
terminals section) to describe the backtick shortcut, the absence of
header or mobile menu entries, and F6 focus behavior.

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/36478835539) for
#20528 · copilot · auto · 29.5 AIC · ⌖ 13.9 AIC · ⊞ 20.2K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 36478835539, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/36478835539 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

---------

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maddyleger1@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Documents changes from microsoft/aspire#20477 by ``@davidfowl-unknown``

Targeting `release/13.6` — the latest release branch on
`microsoft/aspire.dev` — because `release/14.0` (from the source PR
milestone `14.0`) does not exist there.

## Why
The source PR changes the CLI/SDK skew warning: it now appears only when
the CLI is older than the SDK, build metadata is ignored, `aspire
update` compares against the target SDK, and the message text was
reworded (`CodegenVersionSkewWarning`). Triggered signals:
`cli_resource_strings_changed`, `pr_body_has_cli_flag_mention`.

## Changes (updated pages)
- `src/frontend/src/content/docs/get-started/troubleshooting.mdx`
- `src/frontend/src/content/docs/app-host/typescript-apphost.mdx`

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/36487180665) for
#20477 · copilot · auto · 33.9 AIC · ⌖ 17 AIC · ⊞ 20.2K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 36487180665, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/36487180665 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
## Summary

<!-- Describe what this pull request changes and why. -->

Onboards the first-party Java (`Aspire.Hosting.Java`) and Rust
(`Aspire.Hosting.Rust`) hosting integrations that ship in Aspire 13.6.
The Community Toolkit–based articles are replaced by the official
three-article integration format that other official integrations use:

| Integration | Get started | Set up in the AppHost | Connect |
| --- | --- | --- | --- |
| Java | `java-get-started` (rewritten) | `java-host` (rewritten) |
`java-connect` (new) |
| Rust | `rust-get-started` (rewritten) | `rust-host` (rewritten) |
`rust-connect` (new) |

- **Get started:** why to use the integration, prerequisites, an
architecture diagram, and steps that lead to the other two articles.
- **Set up … apps in the AppHost:**
  - Installation.
- Java: Spring Boot, Quarkus, and Java apps (a Maven or Gradle task, or
a prebuilt JAR), builds, JVM options, the OpenTelemetry Java agent, and
Java containers.
- Rust: Cargo and program arguments, binary selection, and environment
variables.
- Certificate trust, debugging, and publishing, including generated
Dockerfiles.
- A concise **Migrate from the Community Toolkit** section. Rust keeps
the Toolkit-only Bacon note.
- **Connect to … apps:**
  - The connection properties that consumers receive.
  - Connecting from the AppHost and from apps in other languages.
- How the Java or Rust app reads what Aspire injects: its port,
references, connection strings, OTLP telemetry settings, and
development-certificate trust.
- Every API mention uses the new `<ApiReference />` component. Every
TypeScript AppHost sample is `twoslash`-checked, and the TypeScript tab
comes first.
- Adds **Connect to Java apps** and **Connect to Rust apps** to the
integrations sidebar.
- Updates the Java pivot of the AppHost overview
(`get-started/app-host`) to use `Aspire.Hosting.Java` and
`AddSpringBootApp`. The `ja` copy is updated too, because it shares the
`SimpleAppHostCode` sample and its highlight ranges moved.
- A separate commit changes "App Host" to "AppHost" in the EF Core
architecture diagram.

Facts were verified against the microsoft/aspire `release/13.6` sources,
READMEs, and playgrounds. The migration mappings were verified against
the Community Toolkit v13.5.0 APIs.

Notes for reviewers:

- The 📦 `Aspire.Hosting.Java` and `Aspire.Hosting.Rust` NuGet links
resolve once 13.6 ships.
- This branch is rebased on #1787, which regenerated the API data from
the 13.6.0 staging build. The `twoslash` and `ApiReference` tests pass
against the regenerated data.

## Third-party links and affiliations

<!--
List any third-party links added or changed by this pull request and
disclose any
material affiliation with the linked organizations, such as employment,
sponsorship, or ownership. Write "None" if this pull request doesn't add
or
change third-party links.
-->

This PR adds links to project documentation:

- **Java:** dev.java, spring.io, docs.spring.io, quarkus.io,
maven.apache.org, gradle.org, and docs.gradle.org.
- **Rust:** rust-lang.org, doc.rust-lang.org, docs.rs (`axum`,
`opentelemetry-otlp`, `reqwest`, and `sqlx`), and opentelemetry.io.
- **Microsoft:** nuget.org (`CommunityToolkit.Aspire.Hosting.Rust`) and
the Rust playground in github.com/microsoft/aspire. The author is a
Microsoft employee.

There is no material affiliation with the other linked organizations.

## Validation

<!-- List the checks you ran or explain why validation isn't needed. -->

- `pnpm test:unit` (after rebasing on #1787): 977 passed and 1 skipped.
This includes the `twoslash-blocks`, `api-reference`, SEO-length,
redirect, and Dev Hub catalog tests.
- `pnpm build:skip-search`, the production build without the Pagefind
index, completed before the rebase. `starlight-links-validator`
reported: "All internal links are valid."
- ESLint on the changed TypeScript files, the forbidden-words rules on
all added lines, and `git diff --check`.
- Every internal link and anchor resolves: 126 outbound links from the
changed pages and 51 inbound links to the Java and Rust pages. External
URLs were checked too.
- The Rust samples compile with `cargo check`, using
`opentelemetry-otlp` 0.33.
- All six pages were checked visually on the dev server, including the
diagrams, `ApiReference` labels, and tab sync.
- Two independent accuracy reviews against the 13.6 sources. All of
their findings were applied.

---------

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

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.

Copilot review overview

🔵 Needs a closer look

The large generated snapshot has unresolved version/provenance discrepancies, and upstream packaging and current-head CI gates remain incomplete.

Review effort: Balanced
Findings: 2 Medium severity · 2 Low severity

Open (4)
What changed in this PR

Prepares Aspire 13.6 documentation and API-reference data while extending ingestion and validation for the release’s expanded API surface.

Changes:

  • Adds 13.6 release notes, guides, Dev Hub pages, and migration guidance.
  • Regenerates integration, C#, TypeScript, and Twoslash data.
  • Updates generators, routes, workflows, and validation tests.
File Description
.github/​workflows/​* Updates release-data validation automation.
src/​tools/​AtsJsonGenerator/​* Supports diagnostics, unions, canonical enums, and stricter failures.
src/​tools/​PackageJsonGenerator/​* Records generated-export packages and provenance.
src/​statichost/​StaticHost/​Live/​README.md Documents live-client 404 behavior.
src/​frontend/​scripts/​* Updates integration, API, and Twoslash generation.
src/​frontend/​src/​content/​docs/​** Adds and refreshes 13.6 documentation and banners.
src/​frontend/​src/​content/​glossary/​** Expands glossary content.
src/​frontend/​src/​pages/​hub/​** Adds resource and glossary browsing routes.
src/​frontend/​src/​components/​dev-center/​** Implements Dev Hub browsing interfaces.
src/​frontend/​src/​utils/​** Updates API routing, search, package filtering, and Hub utilities.
src/​frontend/​src/​data/​aspire-integrations.json Publishes the updated package catalog.
src/​frontend/​src/​data/​integration-docs.json Adds package documentation mappings.
src/​frontend/​src/​data/​pkgs/​** Regenerates C# API-reference records.
src/​frontend/​src/​data/​ts-modules/​** Regenerates TypeScript API modules.
src/​frontend/​src/​data/​twoslash/​aspire.d.ts Rebuilds shared TypeScript declarations.
src/​frontend/​tests/​unit/​** Expands generator and semantic validation.
src/​frontend/​tests/​e2e/​** Updates metadata and navigation expectations.
src/​frontend/​vitest.structured-data.config.ts Includes new validation suites.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
<strong>✨ Aspire 13.5 is available!</strong> — <a href="/whats-new/aspire-13-5/">Explore the latest features and improvements</a>
<strong>✨ Aspire 13.6 is available!</strong> — <a href="/whats-new/aspire-13-6/">Explore the latest features and improvements</a>
"downloads": 148236,
"version": "13.5.4-preview.1.26464.4"
"downloads": 154677,
"version": "13.6.0-preview.1.26478.8"
Comment on lines +2 to +4
import HubLayout from '../../../components/dev-center/HubLayout.astro';
import ResourceBrowser from '../../../components/dev-center/ResourceBrowser.astro';
import { getResourceCatalog } from '../../../utils/dev-center/catalog';
Comment on lines +3 to +4
import HubLayout from '../../../components/dev-center/HubLayout.astro';
import GlossaryBrowser from '../../../components/dev-center/GlossaryBrowser.astro';
aspire-repo-bot Bot and others added 5 commits September 29, 2026 17:27
…ease notes (#1664)

Documents changes from microsoft/aspire#20011

`@maddymontaquila`

Targeting `release/13.6` based on the source PR milestone `13.6`.

## Why

microsoft/aspire#20011 assigns the Fluent UI `CloudCube` icon to the
`azure-environment` control resource so it no longer shows the
dashboard's generic cog fallback icon. The PR body explicitly calls this
out under a "User-facing usage" heading: "The Resources page now
displays a filled cloud-and-cube icon next to the `azure-environment`
resource instead of the generic cog." This is a dashboard-visible change
with no existing docs coverage of the `azure-environment` resource's
icon, so it needs a release-note mention.

## What changed

- Added a bullet to the existing "Other dashboard improvements" list in
the 13.6 release notes (`whats-new/aspire-13-6.mdx`), which is the page
already tracking the 13.6 milestone this PR targets.

## Files modified

- `src/frontend/src/content/docs/whats-new/aspire-13-6.mdx`

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/34941223887) for
#20011 · auto · 52.5 AIC · ⌖ 6.64 AIC · ⊞ 18.5K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 34941223887, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/34941223887 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maddyleger1@gmail.com>
Documents changes from microsoft/aspire#20490 and the planned removal of
the same diagnostic from `Aspire.Hosting.Blazor`.

``@eerhardt``

## Target branch

`release/13.6`

## Summary

- Document the removal of `ASPIREDOTNETPROJECT001` in Aspire 13.6 from
`AddDotnetProject`, `DotnetProjectResource`, the related
`WithBuildEnvironment` overloads, and the Blazor
`AddDotnetProjectBlazorGateway` and matching `WithBlazorClientApp`
overload.
- Explain in the diagnostic reference and release notes that the
additional experimental designation was unnecessary because
`Aspire.Hosting.Dotnet` and `Aspire.Hosting.Blazor` are already
prerelease packages. Their APIs remain unstable and may change in future
releases.
- Keep the integration guides focused on the packages' prerelease status
and removing existing `ASPIREDOTNETPROJECT001` suppressions after
upgrading to 13.6.
- Remove `ASPIREDOTNETPROJECT001` from the Blazor gateway example while
retaining the separate `ASPIREBLAZOR001` suppression and guidance for
experimental Blazor hosting types.
- Retain the diagnostic page and suppression guidance for earlier
releases, and update the diagnostics overview and Aspire 13.6 release
notes consistently.

The Aspire 13.5 release notes and versioned API metadata remain
unchanged. No new pages were created.

## Files modified

- `src/frontend/src/content/docs/diagnostics/aspiredotnetproject001.mdx`
- `src/frontend/src/content/docs/diagnostics/overview.mdx`
- `src/frontend/src/content/docs/integrations/dotnet/blazor-hosting.mdx`
-
`src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-get-started.mdx`
-
`src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-host.mdx`
- `src/frontend/src/content/docs/whats-new/aspire-13-6.mdx`

> Originally generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/36189171025) for
microsoft/aspire#20490; updated following review.

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 36189171025, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/36189171025 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

---------

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
…1623)

Documents changes from microsoft/aspire#19810 by `@mitchdenny`.

Targeting `release/13.6` based on the source PR milestone `13.6`.

### Why

PR #19810 changes `PublishAsAzureSandbox`/`publishAsAzureSandbox` to no
longer take a sandbox-group parameter, removes
`PublicEndpointReadyTimeout` from `AzureSandboxGroupOptions`, and makes
sandbox groups work as compute environments that automatically assign
and deploy projects (kept private unless an endpoint is explicitly
external). This is a breaking change (label `breaking-change`) and the
PR body includes a dedicated "User-facing usage" section, so the What's
new in Aspire 13.6 page (which already documents the experimental Azure
Container Apps Sandboxes integration and its breaking-changes section)
needed an update to describe the new default behavior and migration
path.

### What changed

- `src/frontend/src/content/docs/whats-new/aspire-13-6.mdx`:
- Updated the release summary bullet to note **two** breaking changes
(Cosmos DB emulator default, and the new `PublishAsAzureSandbox`
signature).
- Updated the *Azure Container Apps Sandboxes* section under **New
integrations** to describe automatic compute-environment inference and
link to the new breaking-change entry.
- Added a new **Breaking changes** entry, "Azure Container Apps
Sandboxes now infer their compute environment", with C#/TypeScript
before/after code samples for `WithComputeEnvironment` +
`PublishAsAzureSandbox`, a description of the paired HTTP/HTTPS endpoint
translation behavior, and a note about the removed
`PublicEndpointReadyTimeout` option.

No new pages were created; only the existing what's-new page was
updated.

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/33952610938) for
#19810 · auto · 97.6 AIC · ⌖ 6.75 AIC · ⊞ 19.6K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 33952610938, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/33952610938 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

---------

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
…utes (#1574)

Documents changes from microsoft/aspire#19430

`@mitchdenny`

Targeting `release/13.6` based on the source PR milestone `13.6`.

## Why

microsoft/aspire#19430 fixes Kubernetes hostname publishing and routing:
`WithHostname(...)` on an `AddIngress`/`AddGateway` now applies to
hostless `WithPath`/`WithRoute` calls instead of leaving them as
catch-all rules, while `WithDefaultBackend(endpoint)` keeps generating a
catch-all rule as before. The PR body's "User-facing usage" section
shows this new scoping behavior in both C# and TypeScript AppHost
samples, which triggered the `pr_body_has_user_facing_section` signal —
the existing docs describe
`WithHostname`/`WithPath`/`WithDefaultBackend` but didn't previously
explain this inheritance rule.

## What changed

- `src/frontend/src/content/docs/deployment/kubernetes-ingress.mdx`:
added a new "Hostname inheritance for paths and routes" section after
the path-routing example, explaining that `WithHostname(...)` now scopes
hostless paths/routes, that explicit per-path/route hostnames still take
precedence, and that `WithDefaultBackend(...)` remains an unscoped
catch-all (including its TLS compatibility rule). Includes a version
note that this inheritance behavior applies from Aspire 13.6 onward.

No new pages were created; this is a targeted addition to the existing
Ingress/Gateway walkthrough page since the behavior applies to both
`AddIngress` and `AddGateway` (the Gateway-specific AKS walkthrough
already links back to this page for the shared concepts).

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/32791545936) for
#19430 · auto · 79.6 AIC · ⌖ 8.28 AIC · ⊞ 19.6K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 32791545936, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/32791545936 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

---------

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maddyleger1@gmail.com>
Co-authored-by: Alistair Matthews <alistairwebdojo@live.com>
Co-authored-by: Maddy Montaquila <maleger@microsoft.com>
…bernetes (#1565)

Documents changes from microsoft/aspire#19429

`@mitchdenny`

## Why this is needed

The source PR fixes how Aspire generates Helm values for parameters that
are embedded inside a larger environment-variable expression (e.g.
interpolated into a URL). Previously, Kubernetes publishing could emit
incomplete Helm output (e.g. `(redacted) because the embedded parameter
was not declared as its own values entry. The fix declares embedded
config/secret parameters directly in `values.yaml`, resolves
composite/conditional expressions at deploy time, and rejects
values-path conflicts instead of silently overwriting them. This is a
user-facing behavior change to the generated Helm chart output, so the
docs need to describe the new values.yaml shape.

## What changed

- `src/frontend/src/content/docs/deployment/kubernetes/clusters.mdx`:
Added a new subsection under "Environment-specific configuration" that
documents how Aspire now declares embedded parameters as their own
`values.yaml` entries (with a C#/TypeScript example matching the source
PR's reproduction), shows the generated YAML shape, and notes the
values-path conflict rejection behavior.

No new pages were created; this is an update to an existing page.

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/32689590583) for
#19429 · auto · 79 AIC · ⌖ 12.6 AIC · ⊞ 19.6K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 32689590583, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/32689590583 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maleger@microsoft.com>
@danegsta
David Negstad (danegsta) merged commit aba4d4d into main Sep 29, 2026
34 checks passed
David Pine (IEvangelist) added a commit that referenced this pull request Oct 5, 2026
)

## Summary

<!-- Describe what this pull request changes and why. -->

Fixes the failing scheduled [Integration Data Updater
run](https://github.com/microsoft/aspire.dev/actions/runs/36928288291/job/110590941798),
and makes API regeneration faster and more resilient.

**Root cause.** The TypeScript API phase failed with `144 succeeded, 2
failed, 7 skipped`. The two failures were
`Aspire.Hosting.Azure.Provisioning.Kusto` and
`Aspire.Hosting.Azure.Provisioning.Network`
(`13.6.0-preview.1.26479.8`).

The shipped Aspire CLI (`13.6.0+56f3e9c0d`) exports an inherited `AddTo`
once per derived proxy type, all under the base type's capability ID. It
reports every collision as a `Duplicate capability` error and exits 1,
although it still writes the dump. Since #1599 the generator fails
closed on any dump error, so the whole run aborted. The scanner fix is
microsoft/aspire#20443.

### Changes

- **Narrow tolerance (AtsJsonGenerator).** The new
`--tolerate-known-scanner-diagnostics` flag accepts only the inherited
duplicate-capability diagnostic. Both definitions must be in the
capability's namespace, on different types, with the same member name,
and that name must match the capability method. Each defining type must
also be a handle type in the dump that is the type owning the capability
ID or lists it in `HandleTypes.BaseTypeHierarchy`, so unrelated types
that share a capability ID still fail. Each tolerated message is
printed, and any other error diagnostic still fails.
- **Fail-closed script wiring.** `generate-ts-api-json.ps1` passes the
flag only when the CLI exits nonzero without timing out and still writes
a dump. The package fails if nothing was actually tolerated.
- **Reporting (orchestrator).** `update-integration-data.ps1` emits a
`::warning` annotation for tolerated diagnostics. It also adds a
**Tolerated ATS scanner diagnostics** section and a review checklist
item to the PR body it generates. The section lists the packages and has
a collapsible list of diagnostics.
- **Faster, more resilient TypeScript generation.**
`generate-ts-api-json.ps1` processes packages concurrently in dependency
waves:
  1. core
  2. independent packages
  3. packages that need a supporting scan context

Up to `min(cores, 8)` packages run at a time. Set
`ASPIRE_TS_API_PARALLELISM` to override this; `-AspireRepoPath` runs
stay sequential. Each Aspire CLI `dump` and `export` call has a
10-minute timeout and gets up to 3 attempts. The transformer and the
enum supplement each have a 5-minute timeout. Each package's log is
printed as a block when that package finishes, so logs stay readable.
- **Faster C# generation.** `generate-package-json.ps1` restores package
graphs concurrently and retries each restore up to 3 times. It honors
`-Parallelism` and `-Sequential`, and its output and summary format are
unchanged.
- **Docs.** Updated the `update-integrations` skill and both generator
READMEs.

### Reviewer notes

- Remove the tolerance once the CLI that the workflow installs includes
microsoft/aspire#20443. `KnownScannerDiagnostics.cs` says this too.
- nuget.org replaced `13.6.0-preview.1.26478.8` with
`13.6.0-preview.1.26479.8`. The first bot PR will bump the 50 catalog
entries that are pinned to `26478.8`; this PR doesn't include that bump.
- The next bot PR will remove an export from the `Aspire.Hosting.Radius`
module. This isn't caused by this PR.
- With the stable CLI, the regenerated module drops
`withDotnetProgramContainerImage`, the `IDotnetProgramResource` overload
of `withContainerImage`. This happens even with the
`Aspire.Hosting.Dotnet` scan context, and the script on `main` drops it
too.
- The semantic validator doesn't check whether every export is present,
so it won't flag this.
- After merging, run `gh workflow run update-integration-data.yml --repo
microsoft/aspire.dev` instead of waiting for the next scheduled run.

## Third-party links and affiliations

<!--
List any third-party links added or changed by this pull request and
disclose any
material affiliation with the linked organizations, such as employment,
sponsorship, or ownership. Write "None" if this pull request doesn't add
or
change third-party links.
-->

None

## Validation

<!-- List the checks you ran or explain why validation isn't needed. -->

All runs used the same Aspire CLI as CI (`13.6.0+56f3e9c0d`, set via
`ASPIRE_CLI_PATH`) on a 20-core Windows machine. The default parallelism
there was 8; CI's 4-vCPU runner will use 4.

- `dotnet test tests/AtsJsonGenerator.Tests`: passed (37/37). This
includes new tests that accept and report matching diagnostics. They
also reject look-alike and unrelated errors, unrelated types that share
a capability ID, and defining types missing from the dump's
`HandleTypes`.
- After the review fix, I re-dumped Kusto and Network with the stable
CLI and ran the transformer with `--tolerate-known-scanner-diagnostics`.
Both exited 0, with 5 and 2 diagnostics tolerated. Without the flag,
both still fail.
- Upstream runners were backed up, so I also ran the PR checks that
support `workflow_dispatch` on my fork at `eca5c048`. All passed: [Tools
Tests](https://github.com/IEvangelist/aspire.dev/actions/runs/37017188918)
(41 PackageJsonGenerator and 37 AtsJsonGenerator tests), [Forbidden
Words](https://github.com/IEvangelist/aspire.dev/actions/runs/37017241429)
over `96fb149d..eca5c04`, and
[CodeQL](https://github.com/IEvangelist/aspire.dev/actions/runs/37017691344)
(no C# alerts; the only JS/TS alert is in existing code this PR doesn't
touch). Upstream Frontend Build and Frontend validation passed on the
first commit, and the review fix doesn't touch `src/frontend`.
- `pnpm exec vitest run --config vitest.config.ts
tests/unit/update-integrations.vitest.test.ts` (in `src/frontend`):
passed (42/42).
- **End-to-end replay of the regeneration phases.** I temporarily bumped
the catalog to `26479.8`, used a cold NuGet cache, and pointed
`ASPIRE_API_*` at a staging directory.
- `pwsh src/tools/PackageJsonGenerator/generate-package-json.ps1
-OutputDir <stage>/pkgs`: `Done! Success: 210 | Failed: 0 | Skipped: 7`
in 3:21.
  - `pnpm run normalize:api-data -- --pkgs`: passed.
- `pnpm run update:ts-api`: `Complete: 146 succeeded, 0 failed, 7
skipped` in 4:05 (3:47 of it generation). It tolerated 5 Kusto and 2
Network diagnostics.
- `pnpm run validate:api-data`: passed. It reconciled 217 package
identities, matched 146 modules to C# provenance, checked 74 DTO shapes
and 2,873 inheritance chains, and checked attribute payloads against
HEAD.
- Run against the real `update:ts-api` log, the orchestrator's parsing
and PR-body code rendered both packages, all 7 diagnostics, and the
`::warning` annotation.
- **Comparison with the scripts on `main`, using the same inputs:**
- TypeScript: 3:48 in parallel vs 13:46 sequentially. All 122 modules
that both runs produced are byte-identical. Both runs had the same
failures for packages pinned to the deleted `26478.8` builds.
- C#: 3:21 in parallel with a cold cache vs 8:28 sequentially with a
warm cache. Both runs reported `Success: 210 | Failed: 0 | Skipped: 7`,
and 208 of 210 files are byte-identical. The other 2 (`Aspire.Hosting`
and `Aspire.Hosting.JavaScript` 13.6.0) differ only in `sourceCommit`,
because my warm cache held a pre-release build of those packages.
- For reference, the failed CI job spent 8m02s in C# generation and
12m46s in TypeScript generation before it failed.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.