Migrate cspell config to per-service files ***NO_CI*** - #48094
Conversation
|
Azure Pipelines: Successfully started running 3 pipeline(s). 7 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Reference: this migration follows the Azure SDK spellcheck guidance — Migrating from |
0d7b82b to
b14f83c
Compare
|
Updated to fix the spell-check failure seen in the earlier CI run Root cause: the initial version kept service words inside per-file Fix: follow the guidance literally — one |
b14f83c to
5d9e8d8
Compare
5d9e8d8 to
f5b4c4a
Compare
|
Refreshed onto the latest The rebase was clean (cspell-only). One new package config that landed upstream |
CI status: spell-check passes; remaining failures are pre-existing/environmentalThe change this PR is actually about — the Why so many other jobs run (and fail)This PR adds Every failure is pre-existing and environmental — none caused by this changeAll failures are in packages this PR does not modify, and reproduce independently of it:
None of these relate to spelling or to the cspell configuration content. The diff is 100% cspell files ( Net: the spelling migration is validated (spell-check green, no words lost). The red checks are pre-existing environmental/recording failures in unrelated packages that this PR merely triggers by touching many service directories. |
|
Azure Pipelines: Successfully started running 3 pipeline(s). 7 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Pull request overview
Migrates spellcheck configuration to imported, service-level YAML files and removes legacy package configs. Several migrated ignore globs have incorrect or broadened scopes and require correction.
Changes:
- Added or normalized per-service
cspell.yamlfiles. - Consolidated, sorted, and deduplicated service word lists.
- Removed legacy package configs and service overrides from the central config.
Show a summary per file
| File | Description |
|---|---|
.vscode/cspell.json |
Removes service overrides and normalizes global words. |
sdk/webpubsub/cspell.yaml |
Adds service configuration. |
sdk/webpubsub/cspell.json |
Removes legacy configuration. |
sdk/voicelive/cspell.yaml |
Adds consolidated configuration. |
sdk/voicelive/azure-ai-voicelive/cspell.json |
Removes package configuration. |
sdk/vision/cspell.yaml |
Adds service configuration. |
sdk/videoanalyzer/cspell.yaml |
Adds service configuration. |
sdk/translation/cspell.yaml |
Expands and normalizes service words. |
sdk/transcription/cspell.yaml |
Adds consolidated configuration. |
sdk/transcription/azure-ai-transcription/cspell.json |
Removes package configuration. |
sdk/textanalytics/cspell.yaml |
Adds service configuration. |
sdk/tables/cspell.yaml |
Adds service configuration. |
sdk/synapse/cspell.yaml |
Adds service configuration. |
sdk/storage/cspell.yaml |
Consolidates storage words. |
sdk/schemaregistry/cspell.yaml |
Adds service configuration. |
sdk/remoterendering/cspell.yaml |
Adds service configuration. |
sdk/purview/cspell.yaml |
Adds service configuration. |
sdk/postgresql/cspell.yaml |
Normalizes existing configuration. |
sdk/planetarycomputer/cspell.yaml |
Normalizes and expands words. |
sdk/personalizer/cspell.yaml |
Adds service configuration. |
sdk/openai/cspell.yaml |
Adds service configuration. |
sdk/monitor/cspell.yaml |
Adds consolidated configuration. |
sdk/ml/cspell.yaml |
Adds consolidated ML configuration. |
sdk/ml/azure-ai-ml/cspell.json |
Removes package configuration. |
sdk/mixedreality/cspell.yaml |
Adds service configuration. |
sdk/metricsadvisor/cspell.yaml |
Adds service configuration. |
sdk/maps/cspell.yaml |
Adds service configuration. |
sdk/loadtestservice/cspell.yaml |
Adds service configuration. |
sdk/loadtesting/cspell.yaml |
Adds consolidated configuration. |
sdk/loadtesting/azure-developer-loadtesting/cspell.json |
Removes package configuration. |
sdk/keyvault/cspell.yaml |
Adds consolidated configuration. |
sdk/keyvault/cspell.json |
Removes legacy configuration. |
sdk/iothub/cspell.yaml |
Adds service configuration. |
sdk/identity/cspell.yaml |
Adds service configuration. |
sdk/healthinsights/cspell.yaml |
Adds consolidated configuration. |
sdk/healthdataaiservices/cspell.yaml |
Adds service configuration. |
sdk/formrecognizer/cspell.yaml |
Adds service configuration. |
sdk/face/cspell.yaml |
Adds service configuration. |
sdk/eventhub/cspell.yaml |
Adds service configuration. |
sdk/eventgrid/cspell.yaml |
Adds service configuration. |
sdk/evaluation/cspell.yaml |
Adds consolidated configuration and ignores. |
sdk/evaluation/azure-ai-evaluation/cspell.json |
Removes package configuration. |
sdk/documentintelligence/cspell.yaml |
Adds service configuration. |
sdk/discovery/cspell.yaml |
Adds consolidated configuration and ignores. |
sdk/discovery/azure-ai-discovery/cspell.json |
Removes package configuration. |
sdk/deviceupdate/cspell.yaml |
Adds central import and normalizes metadata. |
sdk/devcenter/cspell.yaml |
Adds service configuration. |
sdk/cosmos/cspell.yaml |
Adds consolidated configuration. |
sdk/cosmos/azure-cosmos/cspell.json |
Removes package configuration. |
sdk/core/cspell.yaml |
Adds service configuration. |
sdk/contentunderstanding/cspell.yaml |
Adds consolidated configuration and ignores. |
sdk/contentunderstanding/azure-ai-contentunderstanding/cspell.json |
Removes package configuration. |
sdk/contentsafety/cspell.yaml |
Adds service configuration. |
sdk/containerregistry/cspell.yaml |
Adds service configuration. |
sdk/confidentialledger/cspell.yaml |
Adds service configuration. |
sdk/communication/cspell.yaml |
Adds consolidated configuration. |
sdk/communication/cspell.json |
Removes legacy configuration. |
sdk/communication/azure-communication-callautomation/cspell.yaml |
Removes package configuration. |
sdk/cognitiveservices/cspell.yaml |
Adds service configuration. |
sdk/cognitivelanguage/cspell.yaml |
Adds service configuration. |
sdk/batch/cspell.yaml |
Adds import and sorts words. |
sdk/attestation/cspell.yaml |
Adds service configuration. |
sdk/appconfiguration/cspell.yaml |
Adds service configuration. |
sdk/ai/cspell.yaml |
Adds consolidated AI configuration and ignores. |
sdk/ai/azure-ai-projects/cspell.json |
Removes package configuration. |
sdk/ai/azure-ai-agents/cspell.json |
Removes package configuration. |
sdk/agrifood/cspell.yaml |
Adds service configuration. |
sdk/agentserver/cspell.yaml |
Consolidates Agent Server configurations. |
sdk/agentserver/azure-ai-agentserver-responses/cspell.json |
Removes package configuration. |
sdk/agentserver/azure-ai-agentserver-optimization/cspell.json |
Removes package configuration. |
sdk/agentserver/azure-ai-agentserver-invocations/cspell.json |
Removes package configuration. |
sdk/agentserver/azure-ai-agentserver-ghcopilot/cspell.json |
Removes package configuration. |
sdk/agentserver/azure-ai-agentserver-core/cspell.json |
Removes package configuration. |
sdk/agentserver/azure-ai-agentserver-activity/cspell.json |
Removes package configuration. |
Review details
- Files reviewed: 74/74 changed files
- Comments generated: 5
- Review effort level: Medium
| ignorePaths: | ||
| - '*.csv' | ||
| - '*.json' | ||
| - '*.jsonl' |
There was a problem hiding this comment.
I'm looking into all of these 👍
There was a problem hiding this comment.
Good catch — addressed in the latest push. Each ignorePaths glob is now scoped to its originating package with a repo-root-relative path (e.g. sdk/ai/azure-ai-projects/**/*.json and sdk/ai/azure-ai-agents/**/*.json instead of a bare *.json). I verified against the real repo that JSON under sibling packages like azure-ai-inference is spell-checked again (as it was on main), and that no file previously ignored is now checked.
| - '*.csv' | ||
| - '*.json' | ||
| - '*.rst' | ||
| - samples/** | ||
| - samples/*.py |
There was a problem hiding this comment.
Fixed in the latest push. The bare extension globs and samples/** are now emitted per-package with repo-root-relative paths (e.g. sdk/agentserver/azure-ai-agentserver-core/**/*.json and sdk/agentserver/azure-ai-agentserver-core/samples/**), so they no longer affect the whole service and samples/** correctly targets each package's nested sample dir. Verified the ignored-file set is a superset of the previous behavior (nothing newly exposed).
| - sdk/discovery/azure-ai-discovery/**/generated_samples/** | ||
| - sdk/discovery/azure-ai-discovery/**/generated_tests/** |
There was a problem hiding this comment.
I don't think this one holds. The Azure spellcheck tooling (eng/common/spelling/Invoke-Cspell.ps1) runs cspell with --root <repo root>, and cspell resolves ignorePaths relative to that root — not to the config file's directory. So sdk/discovery/azure-ai-discovery/**/generated_samples/** is not double-prefixed to sdk/discovery/sdk/discovery/...; it matches the real path. I verified against the actual repo: sdk/discovery/azure-ai-discovery/.../generated_samples/... reports skipped (Excluded by ignorePaths.) identically on this branch and on main. No change needed.
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_common/onedp/models/_enums.py | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_retrieval/retrieval.prompty | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_intent_resolution/intent_resolution.prompty | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_groundedness/groundedness_with_query.prompty | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/simulator/_data_sources/grounding.json | ||
| - sdk/evaluation/azure-ai-evaluation/samples/data/evaluate_test_data.jsonl | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_task_completion/task_completion.prompty | ||
| - sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_task_completion/_task_completion.py |
There was a problem hiding this comment.
Same as the discovery thread — cspell resolves ignorePaths relative to --root (the repo root passed by Invoke-Cspell.ps1), not the config directory, so the sdk/evaluation/... prefix is correct rather than duplicated. Verified on the real repo: .../simulator/_data_sources/grounding.json and the other listed paths are excluded identically on this branch and on main. (Confirmed they are NOT excluded by the central config alone, so the service-level ignore is doing the work.) No change needed.
| - UPCA | ||
| - UPCE | ||
| ignorePaths: | ||
| - sdk/contentunderstanding/azure-ai-contentunderstanding/samples/sample_files/training_samples/*.json |
There was a problem hiding this comment.
cspell resolves ignorePaths relative to --root (repo root), not the config file location, so sdk/contentunderstanding/... is not duplicated. Verified against the real repo: .../training_samples/*.json files report skipped (Excluded by ignorePaths.) identically on this branch and on main. No change needed.
There was a problem hiding this comment.
Review details
Comments suppressed due to low confidence (2)
sdk/agentserver/cspell.yaml:70
- Moving these package-local exclusions to the service root broadens them to every
sdk/agentserverpackage. For example,azure-ai-agentserver-ghcopilotpreviously had noignorePaths, while it now skips CSV/JSON/RST, samples, and Makefiles;optimizationlikewise newly skips samples. This contradicts the stated coverage-preservation guarantee and can hide future spelling errors. Keep the exclusions package-qualified when consolidating them.
ignorePaths:
- '*.csv'
- '*.json'
- '*.rst'
- samples/**
sdk/ai/cspell.yaml:131
- These exclusions were package-local before consolidation: JSONL applied only to
azure-ai-projects, and CSV/JSON only to Projects and Agents. At the service root they now suppress those file types across everysdk/aipackage, reducing spellcheck coverage rather than preserving it. Scope each glob to the package(s) that originally owned it.
ignorePaths:
- '*.csv'
- '*.json'
- '*.jsonl'
- Files reviewed: 74/74 changed files
- Comments generated: 0 new
- Review effort level: Medium
Adopt the latest Azure SDK spellcheck guidance (https://github.com/Azure/azure-sdk-tools/blob/main/doc/common/spellcheck.md#migrating-from-vscodecspelljson-to-sdkservicecspellyaml): - Move service-scoped `overrides` out of the central .vscode/cspell.json into one per-service sdk/<service>/cspell.yaml that `import`s the central config (the import is required). - Convert and consolidate all legacy per-service/per-package cspell.json and cspell.yaml files into that single service-level file. - Flatten every service word to top-level `words` (no per-file `overrides`), so the cspell.yaml self-covers when CI spell checks the file itself. - Scope each `ignorePaths` glob to its originating package using a repo-root-relative path (cspell resolves ignorePaths relative to --root). This preserves each ignore's original boundary now that the config lives at service scope, instead of widening bare globs like `*.json` across the whole service. - Alphabetize word lists (case-insensitive) and dedupe. Cross-cutting words remain in the central config. Validated with cspell 10 that no words were lost, every generated cspell.yaml passes a self-lint, and the set of ignored files is a superset of the previous behavior (no file that was ignored before is now spell-checked). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 65188144-106d-4960-b150-a8faa13eef33
| "uniquifier", | ||
| "unpad", | ||
| "unpadder", | ||
| "unpartial", |
[Pilot] PR Pipeline Failure AnalysisA CI pipeline failed on this pull request. Here is an automated analysis of what went wrong and how to get the build green. What failedThree failures were reported across two Azure DevOps builds:
Recommended next steps
Raw pipeline analysis (azsdk ci analyze)
|
What
Adopt the latest Azure SDK spellcheck guidance
(spellcheck.md):
overridesout of the central.vscode/cspell.jsoninto per-service
sdk/<service>/cspell.yamlfiles thatimportthe centralconfig (the
importis required).cspell.json→cspell.yaml, add the missingimportto existing per-servicecspell.yamlfiles, and consolidate eachservice down to a single
sdk/<service>/cspell.yaml.Cross-cutting words stay in the central config (they have no reliable
per-service attribution).
Why
Keeping service words in per-service files reduces merge conflicts in the hot
central file and makes the lists easier to read — exactly what the guidance now
recommends.
Safety / validation
cspelluses the nearest config for each file, so consolidating packageconfigs up to the service directory preserves coverage (verified empirically
with cspell 10, the pinned version).
before and after — 0 words lost.
cosmos sources) still report 0 issues.
CI
Config-only change across many packages, so the commit is tagged
***NO_CI***to avoid a repo-wide build storm. Opened as a draft.