Repository navigation
Sync Aspire CLI config schemas through 13.6.0 and fix config docs - #1814
Merged
David Pine (IEvangelist) merged 4 commits intoOct 5, 2026
Conversation
- Backfill the aspire-config JSON Schema for every stable microsoft/aspire release from 13.2.0 through 13.6.0, and set latest to 13.6.0. - Rewrite update-schemas.ts to sync every stable release, and run it from the scheduled Integration Data Updater workflow through update:all. - Add tests for the schema index and the automation wiring. - Rewrite the CLI config settings table for 13.6.0: merge the duplicate key columns, add defaults, and document the missing settings. - Update the configuration page: versioned schema URLs, draft-07, and the aspire config set limitations for colon and dotted keys. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The daily updater now fails if an existing versioned schema is modified, deleted, or renamed, so a release's schema never changes after it ships. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Upstream's checked-in schema is stale for 13.3.x and 13.4.x because the generator at those tags couldn't read the CLI's camelCase output. Generate each schema from the released CLI's `aspire config info --json` output instead, and regenerate the 13.3.x and 13.4.x schemas. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
David Pine (IEvangelist)
marked this pull request as ready for review
October 2, 2026 14:15
David Pine (IEvangelist)
requested a review
from Mitch Denny (mitchdenny)
as a code owner
October 2, 2026 14:15
David Pine (IEvangelist)
enabled auto-merge (squash)
October 2, 2026 14:15
Contributor
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Copilot review overview
Review effort: Lite
Findings: 3
Open (3)
What changed in this PR
This PR updates aspire.dev’s hosted Aspire CLI configuration JSON Schemas and documentation to match stable microsoft/aspire releases through 13.6.0, and adds automation + tests to keep schemas in sync going forward.
Changes:
- Adds/updates versioned Aspire CLI config schema files and updates
latestto 13.6.0. - Automates schema generation by installing each released
Aspire.Cliversion and generating schema fromaspire config info --json. - Updates CLI configuration documentation + adds unit coverage to validate schema indexing and updater wiring.
| File | Description |
|---|---|
| src/frontend/vitest.structured-data.config.ts | Adds schema integrity tests to the structured-data suite so updater PRs validate schema data. |
| src/frontend/tests/unit/update-integrations.vitest.test.ts | Extends updater wiring tests to ensure schema sync is run, allowed, and staged by automation. |
| src/frontend/tests/unit/cli-config-schema.vitest.test.ts | Adds index/sorting/coverage checks ensuring every schema file is indexed and latest is correct. |
| src/frontend/src/data/schemas/index.json | Expands schema versions list through 13.6.0 and advances latest. |
| src/frontend/src/data/schemas/aspire-config.13.6.0.schema.json | Adds generated schema for Aspire 13.6.0. |
| src/frontend/src/data/schemas/aspire-config.13.5.4.schema.json | Adds generated schema for Aspire 13.5.4. |
| src/frontend/src/data/schemas/aspire-config.13.5.3.schema.json | Adds generated schema for Aspire 13.5.3. |
| src/frontend/src/data/schemas/aspire-config.13.5.2.schema.json | Adds generated schema for Aspire 13.5.2. |
| src/frontend/src/data/schemas/aspire-config.13.5.1.schema.json | Adds generated schema for Aspire 13.5.1. |
| src/frontend/src/data/schemas/aspire-config.13.5.0.schema.json | Adds generated schema for Aspire 13.5.0. |
| src/frontend/src/data/schemas/aspire-config.13.4.6.schema.json | Adds generated schema for Aspire 13.4.6. |
| src/frontend/src/data/schemas/aspire-config.13.4.5.schema.json | Adds generated schema for Aspire 13.4.5. |
| src/frontend/src/data/schemas/aspire-config.13.4.4.schema.json | Adds generated schema for Aspire 13.4.4. |
| src/frontend/src/data/schemas/aspire-config.13.4.3.schema.json | Adds generated schema for Aspire 13.4.3. |
| src/frontend/src/data/schemas/aspire-config.13.4.2.schema.json | Adds generated schema for Aspire 13.4.2. |
| src/frontend/src/data/schemas/aspire-config.13.4.1.schema.json | Adds generated schema for Aspire 13.4.1. |
| src/frontend/src/data/schemas/aspire-config.13.4.0.schema.json | Adds generated schema for Aspire 13.4.0. |
| src/frontend/src/data/schemas/aspire-config.13.3.5.schema.json | Adds generated schema for Aspire 13.3.5. |
| src/frontend/src/data/schemas/aspire-config.13.3.4.schema.json | Adds generated schema for Aspire 13.3.4. |
| src/frontend/src/data/schemas/aspire-config.13.3.3.schema.json | Adds generated schema for Aspire 13.3.3. |
| src/frontend/src/data/schemas/aspire-config.13.3.2.schema.json | Adds generated schema for Aspire 13.3.2. |
| src/frontend/src/data/schemas/aspire-config.13.3.1.schema.json | Adds generated schema for Aspire 13.3.1. |
| src/frontend/src/data/schemas/aspire-config.13.3.0.schema.json | Updates schema content for 13.3.0 to match released CLI behavior (camelCase era). |
| src/frontend/src/data/schemas/aspire-config.13.2.4.schema.json | Adds generated schema for Aspire 13.2.4. |
| src/frontend/src/data/schemas/aspire-config.13.2.2.schema.json | Adds generated schema for Aspire 13.2.2. |
| src/frontend/src/data/schemas/aspire-config.13.2.1.schema.json | Adds generated schema for Aspire 13.2.1. |
| src/frontend/src/data/schemas/aspire-config.13.2.0.schema.json | Adds generated schema for Aspire 13.2.0. |
| src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md | Updates settings table layout, adds missing settings/defaults, and documents CLI key limitations. |
| src/frontend/src/content/docs/reference/cli/configuration.mdx | Fixes schema dialect info, schema URLs, and updates feature-flag guidance for 13.6.0 behavior. |
| src/frontend/scripts/update-schemas.ts | Reworks schema updater to generate per-release schemas from the released CLI and maintain an immutable version index. |
| src/frontend/scripts/update-integration-data.ps1 | Expands updater allowed paths/staging to include schemas and enforces “published schema immutability”. |
| src/frontend/package.json | Ensures pnpm update:all runs schema sync so the daily updater can ingest new releases. |
| .github/workflows/update-integration-data.yml | Stages schema directory in updater workflow so PRs include generated schema changes. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Include command output when installing or running the CLI fails, check that the CLI printed a JSON object before parsing it, and reject --version values that aren't stable releases at or after 13.2.0. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Eric Erhardt (eerhardt)
approved these changes
Oct 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
The
aspire.config.jsonschema on aspire.dev stopped at 13.3.0, so/reference/cli/configuration/schema.jsonserved an outdated schema. The CLI configuration docs had also drifted from the 13.6.0 CLI. This PR syncs the schema for every stable microsoft/aspire release through 13.6.0, keeps it in sync automatically, and corrects the config docs.Schemas
latestnow points to 13.6.0 instead of 13.3.0.Aspire.Clitool at the release version, readsaspire config info --json, and converts the output the same way upstream'sextension/scripts/generate-schema.jsdoes.$idis set to the file's aspire.dev URL.extension/schemas/aspire-config.schema.jsonis stale at the 13.3.x and 13.4.x tags. Starting with 13.3.0, the CLI emits camelCase JSON. The generator at those tags still read PascalCase, so it exited without writing anything, and the checked-in file kept the 13.2 content. 13.5.0 fixed the generator.$id.docs.llmsTxtUrl,docs.api.sitemapUrl, andfeatures.nugetSignatureVerificationEnabled.features.aspireSkillsRemoteFetchEnabledand removesfeatures.execCommandEnabled.features.polyglotIntegrationFilterEnabledandfeatures.terminalCommandsEnabled, and hidesfeatures.aspireSkillsRemoteFetchEnabled.certificates.nssDbPathsand removesfeatures.terminalCommandsEnabled.Automation
scripts/update-schemas.tsnow lists microsoft/aspire releases and generates the schema for each stable release from 13.2.0 on, including thev13.4.4-releasetag form. For each missing version, it installs thatAspire.Cliversion into a temporary directory withdotnet tool install, runsaspire config info --json, and generates the schema from the output. It skips versions it already has, keepsindex.jsonsorted withlatestset to the newest version, and fails when a release can't be installed or read.--version <version>generates a single version. The script now requires the .NET SDK, which the updater workflow already installs.pnpm update:allnow ends withpnpm update:schemas, so the daily Integration Data Updater workflow picks up new releases. The workflow'sgit addlist and the updater script's allowed paths and PR body now includesrc/frontend/src/data/schemas/.index.jsonupdates are still allowed.Tests
cli-config-schema.vitest.test.tschecks thatindex.jsonversions are unique and sorted, thatlatestis the newest version, and that every schema file is indexed. The structured-data suite now includes this file, so the updater validates schema changes before it opens a PR.update-integrations.vitest.test.tschecks the schema sync wiring inupdate:all, the structured-data config, the updater's allowed paths, the workflow'sgit addlist, the updater's rejection of changes to published schemas, and that the schema sync generates from the released CLI.Docs
aspire config, andaspire config setpages:appHost.language,docs.api.sitemapUrl,docs.llmsTxtUrl,features.nugetSignatureVerificationEnabled,features.stagingChannelEnabled,packages.<packageId>,profiles.<name>.applicationUrl,profiles.<name>.environmentVariables, andsdk.version.appHost.path,channel,features.polyglotIntegrationFilterEnabled, andoverrideStagingFeeddescriptions to match the 13.6.0 CLI.aspire config setlimitation described under Known CLI issues.%ASPIRE_VERSION%for the versioned schema URL instead of a hard-coded 13.2.3, and states that every stable release starting with 13.2.0 has a versioned schema that never changes after the release ships.features.experimentalPolyglot:goto match the table, and explains why these flags need--global.aspire config list --allinto the feature flags section, and updates the description and intro to mention default values.Known CLI issues
The docs now describe these 13.6.0 CLI behaviors as limitations. They need fixes in microsoft/aspire:
aspire config settreats every.and:in a key as a nesting separator. Without--global,aspire config set features.experimentalPolyglot:go truewrites a nestedexperimentalPolyglotobject to the localaspire.config.jsonfile, and later commands fail to load the file. Dotted package IDs such asAspire.Hosting.Redisalso become nested objects.overrideStagingFeed, but the published schema doesn't define it and setsadditionalProperties: false, so schema-aware editors flag it as an unknown property.Polyglot feature keys
The 13.6.0 docs and schema keep the
experimentalPolyglot:<language>keys because that's what 13.6.0 ships:KnownFeatures.csandextension/schemas/aspire-config.schema.jsonatv13.6.0and onrelease/13.6both use the colon form. microsoft/aspire#20481, a breaking change merged tomainafter the 13.6.0 branch was cut, renames them toexperimentalPolyglotJava,experimentalPolyglotGo,experimentalPolyglotPython, andexperimentalPolyglotRust. The schema sync adds the renamed keys with the first release that ships them. The docs table needs a follow-up update at that point.Third-party links and affiliations
None. The new schema files carry upstream's standard
$schemameta-schema URI,http://json-schema.org/draft-07/schema#, which the existing schema files already use.Validation
Run from
src/frontendon the final commit unless noted:pnpm lint: passed.pnpm test:unit: passed. 77 files, with 986 tests passed and 1 skipped.pnpm test:unit:structured-data: passed. 5 files, with 99 tests passed.vitestrun ofupdate-integrations.vitest.test.tsandcli-config-schema.vitest.test.ts: passed. 2 files, with 59 tests passed.index.jsonedit, and with a staged new schema. It failed with the new error when an existing schema was modified or deleted.pnpm test:e2e tests/e2e/schema-routes.spec.ts: passed. 75 tests across the desktop, tablet, and mobile projects.pnpm update:schemas, with all schema files removed: regenerated all 24 versions from the released CLIs. A second run generated nothing..github/scripts/check-forbidden-words.sh <merge-base> HEAD, run from the repository root: no forbidden phrases in added lines.aspire config info --jsonoutput. Also ran each tag's owngenerate-schema.jsagainst that output. For 13.2.x and 13.5.0 on, it reproduces the checked-in file. For 13.3.x and 13.4.x, it fails on the camelCase output and exits 0.KnownFeatures.csandAspireConfigFile.csagainst the matching schema.astro dev: the configuration,aspire config, andaspire config setpages render the new table and caution,%ASPIRE_VERSION%resolves to 13.6.0, and each versioned schema route serves the matching schema.v13.6.0source and an isolated install of the 13.6.0 Aspire CLI, includingaspire config setkey handling,aspire addwriting topackages, and thedocsURL defaults.Not run locally:
pnpm build:productionand the full Playwright suite. CI runs both.