Skip to content

Migrate cspell config to per-service files ***NO_CI***#48094

Draft
maorleger wants to merge 1 commit into
Azure:mainfrom
maorleger:maorleger/cspell-migration
Draft

Migrate cspell config to per-service files ***NO_CI***#48094
maorleger wants to merge 1 commit into
Azure:mainfrom
maorleger:maorleger/cspell-migration

Conversation

@maorleger

Copy link
Copy Markdown
Member

What

Adopt the latest Azure SDK spellcheck guidance
(spellcheck.md):

  • Move service-scoped overrides out of the central .vscode/cspell.json
    into per-service sdk/<service>/cspell.yaml files that import the central
    config (the import is required).
  • Convert legacy per-service cspell.jsoncspell.yaml, add the missing
    import to existing per-service cspell.yaml files, and consolidate each
    service down to a single sdk/<service>/cspell.yaml.
  • Alphabetize word lists (case-insensitive) and dedupe.

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

  • cspell uses the nearest config for each file, so consolidating package
    configs up to the service directory preserves coverage (verified empirically
    with cspell 10, the pinned version).
  • Conservation check: the full case-insensitive word union is identical
    before and after — 0 words lost.
  • Spot-checked affected files (e.g. voicelive/keyvault review docs, storage &
    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.

@azure-pipelines

Copy link
Copy Markdown
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.

@maorleger

Copy link
Copy Markdown
Member Author

Reference: this migration follows the Azure SDK spellcheck guidance — Migrating from .vscode/cspell.json to sdk/<service>/cspell.yaml.

@maorleger
maorleger force-pushed the maorleger/cspell-migration branch from 0d7b82b to b14f83c Compare July 16, 2026 18:46
@maorleger

Copy link
Copy Markdown
Member Author

Updated to fix the spell-check failure seen in the earlier CI run
(build 6573147).

Root cause: the initial version kept service words inside per-file overrides
blocks. When CI spell-checks the changed cspell.yaml file itself, top-level
words self-cover it but words nested in overrides do not, so tokens like
BYOK/coreai were flagged as unknown in sdk/agentserver/cspell.yaml.

Fix: follow the guidance literally — one sdk/<service>/cspell.yaml per
service with all words flattened to top-level words (no overrides). The file
now self-covers, and a single config per service keeps words scoped to that
service. Verified locally with cspell 10: every generated cspell.yaml passes a
self-lint, no words were lost vs. the previous config, and affected source files
still pass.

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`).
  A single config per service both keeps words scoped to the service (cspell
  uses the nearest config) and lets the cspell.yaml self-cover when CI spell
  checks the file itself, so no ignorePaths entry is needed.
- 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 affected
source files still pass.

***NO_CI*** to avoid a repo-wide build storm from a config-only change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 65188144-106d-4960-b150-a8faa13eef33
@maorleger
maorleger force-pushed the maorleger/cspell-migration branch from b14f83c to 5d9e8d8 Compare July 16, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Untriaged
Status: No status
Status: Untriaged
Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant