Repository navigation
Graduate user secrets APIs from experimental to stable - #20817
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 20817Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 20817" |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟢 Approval recommended
The changes consistently graduate the intended API and remove only obsolete diagnostics without altering behavior.
0 open findings
What changed in this PR
Graduates the user-secrets API from experimental to stable without changing runtime behavior.
Changes:
- Removes
Experimentalattributes from the public user-secrets API. - Removes obsolete
ASPIREUSERSECRETS001suppressions and an unused import. - Leaves API baselines, ATS exports, and behavior unchanged.
| File | Description |
|---|---|
tests/Aspire.Hosting.TestUtilities/Utils/MockUserSecretsManager.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Tests/VersionChecking/VersionCheckServiceTests.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Tests/PersistentContainerWarningTests.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Tests/Orchestrator/ParameterProcessorTests.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Tests/DistributedApplicationBuilderTests.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Tests/Dcp/DcpExecutorTests.cs |
Removes obsolete suppression. |
tests/Aspire.Hosting.Browsers.Tests/BrowserLogsBuilderExtensionsTests.cs |
Removes obsolete suppression directives. |
src/Aspire.Hosting/VersionChecking/VersionCheckService.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/UserSecrets/UserSecretsManagerFactory.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/UserSecrets/NoopUserSecretsManager.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/UserSecrets/IUserSecretsManager.cs |
Graduates the interface and removes its unused import. |
src/Aspire.Hosting/Pipelines/Internal/UserSecretsDeploymentStateManager.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/IDistributedApplicationBuilder.cs |
Graduates the user-secrets manager property. |
src/Aspire.Hosting/DistributedApplicationBuilder.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/Dcp/DcpExecutor.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/BuiltInDistributedApplicationEventSubscriptionHandlers.cs |
Removes obsolete suppression. |
src/Aspire.Hosting/Ats/UserSecretsExports.cs |
Removes obsolete ATS suppression. |
src/Aspire.Hosting/ApplicationModel/UserSecretsParameterDefault.cs |
Removes obsolete suppression. |
src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs |
Removes obsolete suppression. |
src/Aspire.Hosting.Browsers/BrowserLogsConfigurationManager.cs |
Removes obsolete suppression directives. |
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
James Newton-King (JamesNK)
left a comment
There was a problem hiding this comment.
Found 1 issue: a stale generated TypeScript snapshot causes the code-generation regression test to fail on Windows and Linux. No other high-confidence findings. Local structural comparison and diff checks passed; CI failure output was inspected, but tests were not rerun locally.
James Newton-King (JamesNK)
left a comment
There was a problem hiding this comment.
Approval submitted as requested. The previously posted finding about the stale TypeScript snapshot remains outstanding; it caused the code-generation snapshot test to fail on Windows and Linux.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟢 Approval recommended
The changes consistently remove experimental metadata and suppressions while preserving API signatures and behavior.
0 open findings
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟢 Approval recommended
The attribute-only graduation is internally consistent, preserves behavior, and updates affected generated output and consumers.
0 open findings
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
3b176ce to
4741061
Compare
This comment has been minimized.
This comment has been minimized.
Remove ASPIREUSERSECRETS001 attributes and obsolete consumer suppressions without changing API signatures, compatibility defaults, implementations, or ATS exports. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove generated experimental JSDoc for the graduated user secrets manager and builder property without changing generated signatures or runtime code. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The rebased builder interface no longer has experimental attributes after both pipeline and user-secrets API graduation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
4741061 to
b9b2495
Compare
Tests selector50 / 98 PR test projects · 4 PR jobs, from 23 changed files. Selected PR test projects (50 / 98)
Selected PR jobs (4)
How these were chosen — grouped by what changed
🧪 show 30
🔧 🔧 🧪 📦 affected project 🔧 🧪 🧪 🧪 🧪 🧪 🧪 Job reasons
Selection computed for commit |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Document that IUserSecretsManager and IDistributedApplicationBuilder.UserSecretsManager have graduated from experimental to stable in Aspire 17.0, following microsoft/aspire#20817. - Update ASPIREUSERSECRETS001 diagnostic page to reflect the graduation, matching the pattern used for ASPIREACADOMAINS001. - Add a What's new in Aspire 17.0 entry announcing the graduation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Pull request created: #1854
|
|
📝 Documentation has been drafted in microsoft/aspire.dev#1854 targeting Triggered signals: Note This draft PR needs human review before merging. |
Description
Graduate the
ASPIREUSERSECRETS001API family so consumers can use Aspire's user-secrets manager without suppressing an experimental diagnostic.Re-enumerated current
main: the only actual source declarations areIUserSecretsManagerandIDistributedApplicationBuilder.UserSecretsManager. Remove their experimental attributes and all 23 associated warning suppression directives across hosting, testing, browser, and test consumers. Remove the now-unused attribute namespace import.This is attribute-only graduation. All signatures, defaults, compatibility implementations, availability and file-path behavior, persistence semantics, locking, and lifecycle behavior remain unchanged, including
TryDeleteSecret's defaultfalse,GetOrSetSecret, andSaveStateAsync. ATS exports and adapters are unchanged. A structural comparison confirms every other nonblank source line is identical tomain.No related documentation explicitly describes these APIs as experimental, and no playground/configuration suppressions were found. Generated
api/*.csbaselines remain untouched, as do all other experimental families and package/version settings. This is an independent branch frommain, not stacked on another graduation PR.User-facing usage
Existing usage is unchanged and no longer requires an
ASPIREUSERSECRETS001suppression:Validation
All validation ran locally on macOS arm64. Existing tests were reused; no new tests were added for the attribute-only change. Test commands without
--no-buildalso built the affected projects and their project-reference dependencies, including Hosting, Hosting.Testing, Hosting.Browsers, TestUtilities, and TypeScript code generation../restore.sh— passed, 0 warnings/errors.git diff --check origin/main...HEAD— passed.main— passed: exactly two experimental attributes and 23 suppression directives removed; all remaining nonblank source lines unchanged apart from the unused import.Passed: 173 tests, covering user-secrets manager/factory operations, concurrent persistence, deletion, configuration, and deployment-state consumers.
Passed: 44 tests, including polyglot user-secrets ID and file-path behavior. Used the Hosting test build from the preceding command.
Passed: 10 tests, including user-secrets availability and persistence-failure handling.
Passed: 1 test.
Passed: 3 tests, including generated
getUserSecretsManagerandsaveStateJsonhelpers. Total: 231 tests passed, none failed or skipped.Limitations: full solution build/full test suite, Windows/Linux validation, and other language generator suites were not run. Quarantined and outerloop tests were excluded.
Fixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?