Skip to content

[release/13.5] Fix mixed-quality staging package discovery - #19427

Merged
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
mitchdenny-backport-19426-release-13-5
Aug 17, 2026
Merged

[release/13.5] Fix mixed-quality staging package discovery#19427
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.5from
mitchdenny-backport-19426-release-13-5

Conversation

@mitchdenny

Copy link
Copy Markdown
Member

Backport of #19426 to release/13.5

/cc Mitch Denny (@mitchdenny)

Customer Impact

With stable-shaped 13.5 staging builds, TypeScript AppHosts cannot discover build-matched prerelease-only integrations from the SHA-specific staging feed. For example, Azure Kubernetes 13.5.0-preview.1.26415.2 is available to C# AppHosts but omitted for TypeScript, leaving users with unrelated daily/PR-hive versions instead.

Testing

On release/13.5, restore succeeded and 30 focused Aspire.Cli.Tests passed covering PackagingService, PackageChannel, AddCommand, and PrebuiltAppHostServer; parser checks also passed for the changed Bash and PowerShell debug scripts. The source PR additionally passed the full CLI test project and C#/TypeScript runtime matrices across PR, daily, staging, and released identities, including aspire new, aspire init, Redis, and Azure Kubernetes.

Risk

Low. The production change is scoped to official staging identities and their SHA-specific feed. Released Stable and Daily remain strict, feature-flag-only staging remains Stable, and existing exact-package fallback is unchanged. The release conflict was test-only and preserves the release test set plus the source PR's quality-contract regressions.

Regression?

Yes — #17452 caused generated polyglot AppHosts to persist their CLI channel, activating the latent stable-only narrowing behavior. #17728 restored prerelease discovery for packages already on NuGet.org; this backport fixes the remaining packages available only from the current SHA-specific staging feed.

* Fix mixed-quality staging package discovery

Official staging feeds can contain stable packages alongside integrations that deliberately remain prerelease. Discover both qualities for staging identities while preserving strict stable and daily channel filtering.

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

Copilot-Session: 2b95dfd3-c558-45ae-8d8e-d798fbd8d10c

* Test staging package version precedence

Cover both stable-versus-same-line-preview and current-preview-versus-older-stable selection through staging package discovery and the add version picker.

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

Copilot-Session: 2b95dfd3-c558-45ae-8d8e-d798fbd8d10c

---------

Copilot-Session: 2b95dfd3-c558-45ae-8d8e-d798fbd8d10c
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings August 17, 2026 03:00
@github-actions

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 -- 19427

Or

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

@github-actions

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.

2 / 100 test projects · 5 jobs, from 11 changed files.

Selected test projects (2 / 100)

Aspire.Cli.EndToEnd.Tests, Aspire.Cli.Tests

Selected jobs (5)

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


How these were chosen — grouped by what changed

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

🧪 tests/Aspire.Cli.Tests/Commands/AddCommandTests.cs (changed test)
1 directly: Aspire.Cli.Tests

🧪 tests/Aspire.Cli.Tests/Packaging/PackageChannelTests.cs (changed test)
1 directly: Aspire.Cli.Tests

🧪 tests/Aspire.Cli.Tests/Packaging/PackagingServiceTests.cs (changed test)
1 directly: Aspire.Cli.Tests

🧪 tests/Aspire.Cli.Tests/Projects/PrebuiltAppHostServerTests.cs (changed test)
1 directly: Aspire.Cli.Tests

🧪 tests/Aspire.Cli.Tests/TestServices/TestAppHostProjectFactory.cs (changed test)
1 directly: Aspire.Cli.Tests

🧪 tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs (changed test)
1 directly: Aspire.Cli.Tests

Job reasons

Job Triggered by
cli-starter • affected project Aspire.Cli
• selected test Aspire.Cli.Tests
deployment-e2e affected project Aspire.Cli
extension-e2e src/Aspire.Cli/Packaging/PackagingService.cs, tests/Aspire.Cli.Tests/Commands/AddCommandTests.cs, tests/Aspire.Cli.Tests/Packaging/PackageChannelTests.cs, tests/Aspire.Cli.Tests/Packaging/PackagingServiceTests.cs, tests/Aspire.Cli.Tests/Projects/PrebuiltAppHostServerTests.cs, tests/Aspire.Cli.Tests/TestServices/TestAppHostProjectFactory.cs, tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs
• affected project Aspire.Cli
polyglot affected project Aspire.Cli
typescript-api-compat affected project Aspire.Cli

Selection computed for commit f03d6d7.

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.

Pull request overview

Backports the staging package-discovery fix so stable-shaped staging CLIs discover both stable and prerelease-only integrations from their SHA-specific feed.

Changes:

  • Sets official staging channels to Both quality.
  • Adds package-quality, channel-selection, and TypeScript discovery regression tests.
  • Updates staging validation scripts and documentation.
Show a summary per file
File Description
src/Aspire.Cli/Packaging/PackagingService.cs Broadens official staging discovery.
tests/Aspire.Cli.Tests/Utils/CliTestHelper.cs Removes obsolete version-shape override.
tests/Aspire.Cli.Tests/TestServices/TestAppHostProjectFactory.cs Enables package-add test callbacks.
tests/Aspire.Cli.Tests/Projects/PrebuiltAppHostServerTests.cs Updates staging service coverage.
tests/Aspire.Cli.Tests/Packaging/PackagingServiceTests.cs Tests mixed-quality staging discovery.
tests/Aspire.Cli.Tests/Packaging/PackageChannelTests.cs Tests quality filtering contracts.
tests/Aspire.Cli.Tests/Commands/AddCommandTests.cs Tests channel/version selection matrices.
eng/scripts/debug-stable.sh Updates expected staging quality.
eng/scripts/debug-stable.ps1 Updates expected staging quality.
eng/scripts/debug-aspire-channel.sh Exercises TypeScript package discovery.
eng/scripts/debug-aspire-channel.ps1 Exercises TypeScript package discovery.
docs/cli-staging-validation.md Documents mixed-quality staging behavior.
.agents/skills/cli-channel-debugging/SKILL.md Updates channel-emulation guidance.

Review details

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

  • Files reviewed: 13/13 changed files
  • Comments generated: 0
  • Review effort level: Balanced

@joperezr
Jose Perez Rodriguez (joperezr) merged commit d370c09 into release/13.5 Aug 17, 2026
344 checks passed
@joperezr
Jose Perez Rodriguez (joperezr) deleted the mitchdenny-backport-19426-release-13-5 branch August 17, 2026 22:28
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.5 milestone Aug 17, 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, body_backport_marker

signals.json sets excluded: true, which overrides the recommendation field regardless of triggered_signals (0 signals fired; signal_count: 0).

Exclusion reasons (from signals.json):

This is a backport PR that ports an already-merged change (#19426) onto release/13.5. Per workflow policy, backports are documented against the original forward PR on the default branch, so no duplicate docs PR is drafted here.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants