docs: enforce documentation style with Vale#69
Conversation
Add an opinionated, fully vendored Vale setup (no vale sync needed):
- .vale.ini lints README.md, docs/, and packages/, skipping boilerplate
(CHANGELOG/LICENSE/CODE_OF_CONDUCT/CONTRIBUTING/CLAUDE/AGENTS) and the
vendored RFC/PSR spec texts in packages/*/docs/{rfc,psr}/
- Utopia style: sentence-case section headings (H1 exempt as the
library's proper name), no weasel words, brand casing in prose, and
spell-checking against a shared vocabulary
- CI: docs lint step in the validate job via pinned jdkato/vale image;
errors fail the build, warnings are advisory
Bring all existing docs up to the standard: sentence-case ~110
headings, fix typos (Telemtry, Prerequisities, sanitisation), correct
brand casing (Composer, PHPStan, DigitalOcean), and backtick code
identifiers in prose.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Benchmark resultshttp — Swoole modes (4 cores, 200 VUs, 20s/run)
a = HYPERLOOP_A (process), b = HYPERLOOP_B (coroutine) Shared CI runners — treat absolute numbers as rough, compare modes within a run. Commit 70970e4. |
Greptile SummaryIntroduces a vendored Vale linting setup (no network sync required) and brings all 99 scanned markdown files to zero errors. The CI
Confidence Score: 5/5Safe to merge — all changes are documentation text and additive linting infrastructure with no impact on runtime behaviour. All changed files are markdown docs, Vale style rules, a vocabulary list, and one additive CI step. The action is SHA-pinned, fail_on_error is set, and the author verified 0 errors across 99 files locally. No application logic is touched. No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "docs(vale): widen exclamation lookahead ..." | Re-trigger Greptile |
Use the official vale-cli/vale-action (SHA-pinned, ratchet format like the other actions) rather than a raw docker run. It installs a pinned Vale, lints README.md/docs/packages, annotates findings in the PR diff via reviewdog, and fails the job on error-level alerts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
'\w!(?:\s|$)' missed exclamations followed by quotes, parens, or
periods ('Great!"', '(Wow!)', 'Done!!'). '\w!(?:\W|$)' catches those
while still skipping mid-word uses like != in prose.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What
Adds an opinionated Vale setup to lint all markdown documentation, and brings every package's docs up to the standard (0 errors across 99 files).
Setup
.vale.inilintsREADME.md,docs/, andpackages/. It skips files we don't author as prose: CHANGELOG/LICENSE/CODE_OF_CONDUCT/CONTRIBUTING boilerplate, CLAUDE/AGENTS instructions, and the vendored RFC/PSR spec texts inpackages/*/docs/{rfc,psr}/.Utopiastyle in.vale/styles/— novale sync, no network dependency.validatejob via SHA-pinnedvale-cli/vale-action(Vale 3.15.1), with reviewdog annotations in the PR diff. Errors fail the build; warnings are advisory.The opinions
Utopia.HeadingSentenceCaseUtopia.WeaselWordsUtopia.TermsVale.Spelling.vale/styles/config/vocabularies/Utopia/accept.txt)Utopia.ExclamationLegitimate new terms (brands, tech vocabulary) go in
accept.txt; code identifiers in prose should be backticked instead.Docs cleanup to get green
getCPUCores… table in system, class-name headings likeUpDownCounter)Verified locally with the exact CI docker invocation: 0 errors, 7 advisory warnings in 99 files.
bin/monorepo validatestill passes.🤖 Generated with Claude Code