import type { RecheckConfig } from '../../types/index.js'; /** * `recheck/prose` — the Vale-parity counterpart to `recheck/markdown`: * `extends: [recheck/markdown, recheck/prose]` is the README-documented * one-liner that replaces a markdownlint + Vale combo with one config. * * A deliberately small, high-signal set, all at `severity: warn` (prose * suggestions, not structural violations): * * - `repetition` — default options, flags an adjacent repeated word. * - `consistency` — internal consistency (first-seen wins) for four common * British/American variant pairs, with `ignoreCase: true` so a * sentence-initial "Colour" still counts. Deliberately not a `swap`-style * fixed-spelling list — `consistency` only requires the file be * internally consistent, the gentler default. * - `capitalization` — `$sentence`, scoped to `heading` only, with * `fix: false` (see the `capitalization` rule below). No preset-level * `exceptions` list: `TECHNICAL_PROPER_NOUNS` (`../../data/proper-nouns.ts`, * Task 8 of this phase) is unioned in by default by the `capitalization` * rule itself (rules/scope/capitalization.ts), so the preset inherits the * built-in vocabulary instead of shipping its own copy — this also * dissolves the ergonomic wart the Phase 3 version of this list had: a * user's own `exceptions` on a preset-configured rule *replaces* the * preset's list (see the README's `extends` merge semantics), so a * preset-shipped list and built-ins unioned by the rule are not the same * guarantee — only the latter survives a user override. * * Scope rules have no `defaults.message` to derive a message from (see * markdown.ts's doc comment), so each entry sets its own explicit * `message`, matching the assertion module's own fallback string exactly * so the two never drift apart. * * `occurrence`, `conditional`, `metric`, and `spelling` are documented * opt-ins instead (see the README's "Opt-in prose assertions") — their * thresholds or external peer dependencies are inherently project-specific. * `DOCUMENTED_OPT_IN_ASSERTIONS` (presets/index.ts) is the source of truth * the registry<->preset completeness test (config/__tests__/presets.test.ts) * checks against: every scope-rule assertion must be shipped in some * preset (any preset, not just this one) or be in that list — never * neither, never both. * * `length` used to be a fifth entry here (an opt-in, not a preset default, * because it has no default bounds and requires a `unit` -- see * rules/scope/length.ts). `recheck/google` now ships it directly (see * `google/sentence-length`, spec §5.6's "fewer than 26 words per sentence" * rule), so it moved out of the opt-in list entirely -- see * `DOCUMENTED_OPT_IN_ASSERTIONS`'s own doc comment in presets/index.ts and * cross-task-constraints.md §C / task-9-10-resolutions.md §5 for why. */ export declare const PROSE_PRESET_ASSERTIONS: readonly ['repetition', 'consistency', 'capitalization']; export declare function buildProsePreset(): RecheckConfig; //# sourceMappingURL=prose.d.ts.map