Chore(CI): repair spell checking and fix the typos it finds - #765
Open
matthewmcneely wants to merge 2 commits into
Open
Chore(CI): repair spell checking and fix the typos it finds#765matthewmcneely wants to merge 2 commits into
matthewmcneely wants to merge 2 commits into
Conversation
Both spellcheck workflows filtered on ./content/, a directory that has not existed since the Docusaurus migration, so neither has run against any documentation. Repointing them exposed two further problems. Vale.Terms treats every Vocab entry as a casing rule, but the Dgraph vocabulary is a spelling accept-list. That mismatch produced 1,378 false positives, including "use 'graphql' instead of 'GraphQL'" 652 times. Terms is now disabled and the vocabulary keeps its intended role. write-good was also enabled, and its E-Prime rule flags every use of "is", "are", and "be". It is a prose-style linter that duplicates documentation-style-guide.md, so this drops it and keeps Vale core. With the check working, Vale.Spelling and Vale.Repetition found 36 real typos that had gone unnoticed: 20 misspellings (Aplha, transactoins, Retreive, prediate, forfull, wouild, and others) and 16 duplicated words. All are fixed in the next content and backported to version-v25.4, the version served as latest. deployments.yml is removed. It ran reviewdog misspell, which Vale supersedes, and its name described a deployment it never performed. Lint scope is the four next-content directories. The versioned snapshots are frozen copies, and a version cut carries this content forward already checked. Verified with Vale 3.7.1: 0 errors, 0 warnings, and 0 suggestions across 293 files. npm run build passes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
stale.yml has run with no exempt labels, so re-enabling Actions after a long quiet period would mark a backlog of still-wanted work as stale. Exempts the labels that denote deliberate, open work for issues and PRs. Dependabot PRs are deliberately left unexempt, since the next bump supersedes them and closing is the right outcome. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Makes spell checking able to run, and fixes the 36 real typos it turns up.
The problem
Three separate things were wrong, and each one alone was enough to make the check vacuous.
The path filters pointed at a directory that no longer exists. Both workflows filtered on
./content/, which has not existed since the Docusaurus migration.any_changedwas therefore alwaysfalseand every step was skipped. The runs still reported success, which is why this went unnoticed. The last real run ofci-spell-checkingwas 2025-11-05.Actions was later disabled entirely. The last run of any of these workflows was 2025-12-04. Nothing has run since.
Repointing the paths is still not enough, because the check then fails immediately on existing content. Two further causes:
Vale.Termswas reading the vocabulary as a casing authority..github/styles/config/vocabularies/Dgraph/accept.txtis a spelling accept-list, butVale.Termsenforces the exact casing of every entry it finds there. Because the file lists bothGraphQLandgraphql, and listsClusterwithoutcluster, the result was 1,378 error-level false positives across the corpus:write-goodwas enabled. ItsE-Primerule flags every use of "is", "are", and "be", which is unworkable for reference documentation: 25 alerts in a 3-file sample. It is a prose-style linter covering grounddocumentation-style-guide.mdalready covers, by a different standard.What changed
.github/workflows/ci-spell-checking.yml— paths repointed at the four next-content directories,*.mdand*.mdx. Also pins the Vale version so a new release cannot silently change what CI accepts, moves toactions/checkout@v4with the historychanged-filesneeds, and passes the file list through the environment rather than interpolating it into the shell..github/workflows/deployments.yml— deleted. It ran reviewdogmisspell, which Vale supersedes, and its filename described a deployment it never performed. CloudFlare Pages handles deployment through its GitHub integration, not a workflow..github/.vale.ini—Vale.Termsoff with a comment explaining why,write-gooddropped,mdxadded to the file glob.accept.txt— 145 entries added and the file sorted, so future diffs stay readable. The additions are identifiers (backupId,forceFull,taskId), technical terms (backpressure,linearizability,snapshotting,varints), product names, abbreviations (PVCs,SSTs,vCPUs), and a few deliberate oddities in sample data:goeandsourcare stemmer-output fragments in a tokenizer example, andUn nouvelis French sample data in an RDF example.The typos it found
20 misspellings, including
Aplha→Alphain the glossary,transactoins→transactions,Retreive→Retrieve,prediate→predicate,forfull→fulfill,wouild→would,parctices→practices,attriubutes→attributes, andMinmizes→Minimizesin two link labels.16 duplicated words, including
will lead the the declaration→to the,must be equal the the JWT claim→to the, andwhat your app needs to to→to do.All are fixed in
docs/,docs-graphql/, anddocs-learn/, and backported toversion-v25.4in both versioned trees, since those are live on the site today. Older snapshots are left as the historical record they are.Scope
Linting covers
docs/,docs-graphql/,docs-ratel/, anddocs-learn/only. The*_versioned_docs/snapshots are frozen copies that are not edited in place, and a version cut copies the next content forward already checked, so linting them would double every alert for no benefit. It also means a release PR like #763 will not drag 227 snapshot files through the linter.Before this takes effect
Re-enable Actions for the repository (Settings → Actions → General), then re-enable the
ci-spell-checkingworkflow, which is separately markeddisabled_manually. Both are repository settings rather than files, so neither can be changed by this PR.Stale bot, handled here
stale.ymlruns nightly at 01:30 UTC and had no exempt labels configured, so re-enabling Actions after this long a quiet period would have marked a backlog of still-wanted work as stale. This PR adds exempt lists:bug,accepted,RFC,help wanted,good first issue,investigate,triage:delayed,reviewingaccepted,RFC,reviewing,triage:delayed,cherry-pickDependabot PRs are deliberately left unexempt. The next bump supersedes them, so closing is the right outcome.
Measured against the open backlog, every item that would currently qualify as stale is now handled:
bug(#700, #707, #713, #730)reviewing, now exemptThe four contribution PRs carried no labels, so no exempt list could reach them. They have been labelled
reviewingseparately from this PR.Testing
Since CI cannot run yet, this was verified locally with Vale 3.7.1, the version the workflow now pins:
npm run buildpasses, confirming the two corrected link labels still resolve.The workflow YAML parses, but it has not executed. That is the one thing here I could not verify end to end.