@redocly/recheck 0.15.0 → 2.58.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -1886
- package/examples/appendices/google.appendix.yaml +1 -1
- package/examples/appendices/inclusive-language.appendix.yaml +1 -1
- package/examples/appendices/microsoft.appendix.yaml +1 -1
- package/examples/appendices/plain-language.appendix.yaml +1 -1
- package/examples/appendices/technical-english.appendix.yaml +1 -1
- package/examples/google.yaml +7 -7
- package/examples/inclusive-language.yaml +7 -7
- package/examples/microsoft.yaml +7 -7
- package/examples/plain-language.yaml +7 -7
- package/examples/technical-english.yaml +7 -7
- package/lib/actions/baseline.d.ts +15 -0
- package/lib/actions/baseline.d.ts.map +1 -0
- package/lib/actions/baseline.js +51 -0
- package/lib/actions/baseline.js.map +1 -0
- package/lib/actions/lint.d.ts +51 -0
- package/lib/actions/lint.d.ts.map +1 -0
- package/lib/actions/lint.js +123 -0
- package/lib/actions/lint.js.map +1 -0
- package/lib/actions/markdoc-schema.d.ts +34 -0
- package/lib/actions/markdoc-schema.d.ts.map +1 -0
- package/lib/actions/markdoc-schema.js +106 -0
- package/lib/actions/markdoc-schema.js.map +1 -0
- package/lib/actions/readability.d.ts +25 -0
- package/lib/actions/readability.d.ts.map +1 -0
- package/lib/actions/readability.js +47 -0
- package/lib/actions/readability.js.map +1 -0
- package/lib/actions/roots.d.ts +7 -0
- package/lib/actions/roots.d.ts.map +1 -0
- package/lib/actions/roots.js +36 -0
- package/lib/actions/roots.js.map +1 -0
- package/lib/config/presets/api-descriptions.d.ts +8 -0
- package/lib/config/presets/api-descriptions.d.ts.map +1 -0
- package/lib/config/presets/api-descriptions.js +24 -0
- package/lib/config/presets/api-descriptions.js.map +1 -0
- package/lib/config/presets/google.d.ts +3 -0
- package/lib/config/presets/google.d.ts.map +1 -0
- package/lib/config/presets/google.js +1086 -0
- package/lib/config/presets/google.js.map +1 -0
- package/lib/config/presets/inclusive-language.d.ts +3 -0
- package/lib/config/presets/inclusive-language.d.ts.map +1 -0
- package/lib/config/presets/inclusive-language.js +151 -0
- package/lib/config/presets/inclusive-language.js.map +1 -0
- package/lib/config/presets/index.d.ts +16 -0
- package/lib/config/presets/index.d.ts.map +1 -0
- package/lib/config/presets/index.js +38 -0
- package/lib/config/presets/index.js.map +1 -0
- package/lib/config/presets/markdoc.d.ts +3 -0
- package/lib/config/presets/markdoc.d.ts.map +1 -0
- package/lib/config/presets/markdoc.js +45 -0
- package/lib/config/presets/markdoc.js.map +1 -0
- package/lib/config/presets/markdown-relaxed.d.ts +3 -0
- package/lib/config/presets/markdown-relaxed.d.ts.map +1 -0
- package/lib/config/presets/markdown-relaxed.js +34 -0
- package/lib/config/presets/markdown-relaxed.js.map +1 -0
- package/lib/config/presets/markdown.d.ts +11 -0
- package/lib/config/presets/markdown.d.ts.map +1 -0
- package/lib/config/presets/markdown.js +73 -0
- package/lib/config/presets/markdown.js.map +1 -0
- package/lib/config/presets/microsoft.d.ts +3 -0
- package/lib/config/presets/microsoft.d.ts.map +1 -0
- package/lib/config/presets/microsoft.js +1260 -0
- package/lib/config/presets/microsoft.js.map +1 -0
- package/lib/config/presets/minimal.d.ts +3 -0
- package/lib/config/presets/minimal.d.ts.map +1 -0
- package/lib/config/presets/minimal.js +13 -0
- package/lib/config/presets/minimal.js.map +1 -0
- package/lib/config/presets/plain-language.d.ts +3 -0
- package/lib/config/presets/plain-language.d.ts.map +1 -0
- package/lib/config/presets/plain-language.js +175 -0
- package/lib/config/presets/plain-language.js.map +1 -0
- package/lib/config/presets/prose.d.ts +3 -0
- package/lib/config/presets/prose.d.ts.map +1 -0
- package/lib/config/presets/prose.js +60 -0
- package/lib/config/presets/prose.js.map +1 -0
- package/lib/config/presets/technical-english.d.ts +22 -0
- package/lib/config/presets/technical-english.d.ts.map +1 -0
- package/lib/config/presets/technical-english.js +61 -0
- package/lib/config/presets/technical-english.js.map +1 -0
- package/lib/config/resolve.d.ts +36 -0
- package/lib/config/resolve.d.ts.map +1 -0
- package/lib/config/resolve.js +106 -0
- package/lib/config/resolve.js.map +1 -0
- package/lib/config/schema.d.ts +215 -0
- package/lib/config/schema.d.ts.map +1 -0
- package/lib/config/schema.js +152 -0
- package/lib/config/schema.js.map +1 -0
- package/lib/config/validate.d.ts +19 -0
- package/lib/config/validate.d.ts.map +1 -0
- package/lib/config/validate.js +1049 -0
- package/lib/config/validate.js.map +1 -0
- package/lib/core/auto-fix.d.ts.map +1 -0
- package/lib/core/auto-fix.js +94 -0
- package/lib/core/auto-fix.js.map +1 -0
- package/lib/core/baseline.d.ts +43 -0
- package/lib/core/baseline.d.ts.map +1 -0
- package/lib/core/baseline.js +142 -0
- package/lib/core/baseline.js.map +1 -0
- package/lib/core/case-preserve.d.ts +11 -0
- package/lib/core/case-preserve.d.ts.map +1 -0
- package/lib/core/case-preserve.js +22 -0
- package/lib/core/case-preserve.js.map +1 -0
- package/lib/core/directives.d.ts.map +1 -0
- package/lib/core/directives.js +66 -0
- package/lib/core/directives.js.map +1 -0
- package/lib/core/files.d.ts +31 -0
- package/lib/core/files.d.ts.map +1 -0
- package/lib/core/files.js +184 -0
- package/lib/core/files.js.map +1 -0
- package/lib/core/inline-code.d.ts +33 -0
- package/lib/core/inline-code.d.ts.map +1 -0
- package/lib/core/inline-code.js +50 -0
- package/lib/core/inline-code.js.map +1 -0
- package/lib/core/line-endings.d.ts +13 -0
- package/lib/core/line-endings.d.ts.map +1 -0
- package/lib/core/line-endings.js +39 -0
- package/lib/core/line-endings.js.map +1 -0
- package/lib/core/markdoc-tags.d.ts +48 -0
- package/lib/core/markdoc-tags.d.ts.map +1 -0
- package/lib/core/markdoc-tags.js +102 -0
- package/lib/core/markdoc-tags.js.map +1 -0
- package/lib/core/prose-extract.d.ts +6 -0
- package/lib/core/prose-extract.d.ts.map +1 -0
- package/lib/core/prose-extract.js +71 -0
- package/lib/core/prose-extract.js.map +1 -0
- package/lib/core/readability.d.ts +17 -0
- package/lib/core/readability.d.ts.map +1 -0
- package/lib/core/readability.js +34 -0
- package/lib/core/readability.js.map +1 -0
- package/lib/core/rule-filters.d.ts +29 -0
- package/lib/core/rule-filters.d.ts.map +1 -0
- package/lib/core/rule-filters.js +88 -0
- package/lib/core/rule-filters.js.map +1 -0
- package/lib/core/runner.d.ts +60 -0
- package/lib/core/runner.d.ts.map +1 -0
- package/lib/core/runner.js +305 -0
- package/lib/core/runner.js.map +1 -0
- package/lib/core/summary.d.ts +4 -0
- package/lib/core/summary.d.ts.map +1 -0
- package/lib/core/summary.js +37 -0
- package/lib/core/summary.js.map +1 -0
- package/lib/core/timing.d.ts +9 -0
- package/lib/core/timing.d.ts.map +1 -0
- package/lib/core/timing.js +19 -0
- package/lib/core/timing.js.map +1 -0
- package/lib/data/markdoc-realm-schema.d.ts.map +1 -0
- package/lib/data/markdoc-realm-schema.js +782 -0
- package/lib/data/markdoc-realm-schema.js.map +1 -0
- package/lib/data/proper-nouns.d.ts.map +1 -0
- package/lib/data/proper-nouns.js +42 -0
- package/lib/data/proper-nouns.js.map +1 -0
- package/lib/data/realm-front-matter-schema.d.ts +12 -0
- package/lib/data/realm-front-matter-schema.d.ts.map +1 -0
- package/lib/data/realm-front-matter-schema.js +51 -0
- package/lib/data/realm-front-matter-schema.js.map +1 -0
- package/lib/index.d.ts +81 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +114 -0
- package/lib/index.js.map +1 -0
- package/lib/metrics/formulas.d.ts +9 -0
- package/lib/metrics/formulas.d.ts.map +1 -0
- package/lib/metrics/formulas.js +59 -0
- package/lib/metrics/formulas.js.map +1 -0
- package/lib/metrics/statistics.d.ts +14 -0
- package/lib/metrics/statistics.d.ts.map +1 -0
- package/lib/metrics/statistics.js +35 -0
- package/lib/metrics/statistics.js.map +1 -0
- package/lib/parser/index.d.ts +13 -0
- package/lib/parser/index.d.ts.map +1 -0
- package/lib/parser/index.js +123 -0
- package/lib/parser/index.js.map +1 -0
- package/lib/parser/markdoc/extract-statics.d.ts +28 -0
- package/lib/parser/markdoc/extract-statics.d.ts.map +1 -0
- package/lib/parser/markdoc/extract-statics.js +80 -0
- package/lib/parser/markdoc/extract-statics.js.map +1 -0
- package/lib/parser/markdoc/pairing.d.ts +38 -0
- package/lib/parser/markdoc/pairing.d.ts.map +1 -0
- package/lib/parser/markdoc/pairing.js +77 -0
- package/lib/parser/markdoc/pairing.js.map +1 -0
- package/lib/parser/markdoc/schema.d.ts +56 -0
- package/lib/parser/markdoc/schema.d.ts.map +1 -0
- package/lib/parser/markdoc/schema.js +60 -0
- package/lib/parser/markdoc/schema.js.map +1 -0
- package/lib/parser/markdoc/span.d.ts +52 -0
- package/lib/parser/markdoc/span.d.ts.map +1 -0
- package/lib/parser/markdoc/span.js +577 -0
- package/lib/parser/markdoc/span.js.map +1 -0
- package/lib/parser/markdoc/structure.d.ts +17 -0
- package/lib/parser/markdoc/structure.d.ts.map +1 -0
- package/lib/parser/markdoc/structure.js +121 -0
- package/lib/parser/markdoc/structure.js.map +1 -0
- package/lib/parser/markdoc/syntax.d.ts +17 -0
- package/lib/parser/markdoc/syntax.d.ts.map +1 -0
- package/lib/parser/markdoc/syntax.js +262 -0
- package/lib/parser/markdoc/syntax.js.map +1 -0
- package/lib/parser/types.d.ts.map +1 -0
- package/lib/presets.d.ts +6 -0
- package/lib/presets.d.ts.map +1 -0
- package/lib/presets.js +12 -0
- package/lib/presets.js.map +1 -0
- package/lib/rules/registry.d.ts +13 -0
- package/lib/rules/registry.d.ts.map +1 -0
- package/lib/rules/registry.js +54 -0
- package/lib/rules/registry.js.map +1 -0
- package/lib/rules/scope/capitalization.d.ts.map +1 -0
- package/lib/rules/scope/capitalization.js +128 -0
- package/lib/rules/scope/capitalization.js.map +1 -0
- package/lib/rules/scope/conditional.d.ts.map +1 -0
- package/lib/rules/scope/conditional.js +93 -0
- package/lib/rules/scope/conditional.js.map +1 -0
- package/lib/rules/scope/consistency.d.ts.map +1 -0
- package/lib/rules/scope/consistency.js +118 -0
- package/lib/rules/scope/consistency.js.map +1 -0
- package/lib/rules/scope/length.d.ts.map +1 -0
- package/lib/rules/scope/length.js +50 -0
- package/lib/rules/scope/length.js.map +1 -0
- package/lib/rules/scope/max-image-size.d.ts.map +1 -0
- package/lib/rules/scope/max-image-size.js +55 -0
- package/lib/rules/scope/max-image-size.js.map +1 -0
- package/lib/rules/scope/metric.d.ts +3 -0
- package/lib/rules/scope/metric.d.ts.map +1 -0
- package/lib/rules/scope/metric.js +59 -0
- package/lib/rules/scope/metric.js.map +1 -0
- package/lib/rules/scope/occurrence.d.ts.map +1 -0
- package/lib/rules/scope/occurrence.js +41 -0
- package/lib/rules/scope/occurrence.js.map +1 -0
- package/lib/rules/scope/pattern.d.ts.map +1 -0
- package/lib/rules/scope/pattern.js +58 -0
- package/lib/rules/scope/pattern.js.map +1 -0
- package/lib/rules/scope/repetition.d.ts.map +1 -0
- package/lib/rules/scope/repetition.js +134 -0
- package/lib/rules/scope/repetition.js.map +1 -0
- package/lib/rules/scope/semantic-line-breaks.d.ts.map +1 -0
- package/lib/rules/scope/semantic-line-breaks.js +180 -0
- package/lib/rules/scope/semantic-line-breaks.js.map +1 -0
- package/lib/rules/scope/spelling.d.ts +11 -0
- package/lib/rules/scope/spelling.d.ts.map +1 -0
- package/lib/rules/scope/spelling.js +146 -0
- package/lib/rules/scope/spelling.js.map +1 -0
- package/lib/rules/scope/swap.d.ts.map +1 -0
- package/lib/rules/scope/swap.js +111 -0
- package/lib/rules/scope/swap.js.map +1 -0
- package/lib/rules/scope/title-case.d.ts +24 -0
- package/lib/rules/scope/title-case.d.ts.map +1 -0
- package/lib/rules/scope/title-case.js +216 -0
- package/lib/rules/scope/title-case.js.map +1 -0
- package/lib/rules/token/blanks-around-fences.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-fences.js.map +1 -0
- package/lib/rules/token/blanks-around-headings.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-headings.js +96 -0
- package/lib/rules/token/blanks-around-headings.js.map +1 -0
- package/lib/rules/token/blanks-around-lists.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-lists.js +48 -0
- package/lib/rules/token/blanks-around-lists.js.map +1 -0
- package/lib/rules/token/blanks-around-tables.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-tables.js +40 -0
- package/lib/rules/token/blanks-around-tables.js.map +1 -0
- package/lib/rules/token/code-block-style.d.ts.map +1 -0
- package/lib/rules/token/code-block-style.js.map +1 -0
- package/lib/rules/token/code-fence-style.d.ts.map +1 -0
- package/lib/rules/token/code-fence-style.js.map +1 -0
- package/lib/rules/token/commands-show-output.d.ts.map +1 -0
- package/lib/rules/token/commands-show-output.js.map +1 -0
- package/lib/rules/token/descriptive-link-text.d.ts.map +1 -0
- package/lib/rules/token/descriptive-link-text.js +46 -0
- package/lib/rules/token/descriptive-link-text.js.map +1 -0
- package/lib/rules/token/fenced-code-language.d.ts.map +1 -0
- package/lib/rules/token/fenced-code-language.js.map +1 -0
- package/lib/rules/token/first-line-h1.d.ts.map +1 -0
- package/lib/rules/token/first-line-h1.js +83 -0
- package/lib/rules/token/first-line-h1.js.map +1 -0
- package/lib/rules/token/front-matter.d.ts.map +1 -0
- package/lib/rules/token/front-matter.js +169 -0
- package/lib/rules/token/front-matter.js.map +1 -0
- package/lib/rules/token/heading-increment.d.ts.map +1 -0
- package/lib/rules/token/heading-increment.js +26 -0
- package/lib/rules/token/heading-increment.js.map +1 -0
- package/lib/rules/token/heading-start-left.d.ts.map +1 -0
- package/lib/rules/token/heading-start-left.js.map +1 -0
- package/lib/rules/token/heading-style.d.ts.map +1 -0
- package/lib/rules/token/heading-style.js.map +1 -0
- package/lib/rules/token/helpers.d.ts +115 -0
- package/lib/rules/token/helpers.d.ts.map +1 -0
- package/lib/rules/token/helpers.js +502 -0
- package/lib/rules/token/helpers.js.map +1 -0
- package/lib/rules/token/hr-style.d.ts.map +1 -0
- package/lib/rules/token/hr-style.js.map +1 -0
- package/lib/rules/token/index.d.ts +65 -0
- package/lib/rules/token/index.d.ts.map +1 -0
- package/lib/rules/token/index.js +157 -0
- package/lib/rules/token/index.js.map +1 -0
- package/lib/rules/token/line-length.d.ts.map +1 -0
- package/lib/rules/token/line-length.js +96 -0
- package/lib/rules/token/line-length.js.map +1 -0
- package/lib/rules/token/link-fragments.d.ts.map +1 -0
- package/lib/rules/token/link-fragments.js +398 -0
- package/lib/rules/token/link-fragments.js.map +1 -0
- package/lib/rules/token/link-image-reference-definitions.d.ts.map +1 -0
- package/lib/rules/token/link-image-reference-definitions.js.map +1 -0
- package/lib/rules/token/link-image-style.d.ts.map +1 -0
- package/lib/rules/token/link-image-style.js +138 -0
- package/lib/rules/token/link-image-style.js.map +1 -0
- package/lib/rules/token/list-indent.d.ts.map +1 -0
- package/lib/rules/token/list-indent.js.map +1 -0
- package/lib/rules/token/list-length.d.ts.map +1 -0
- package/lib/rules/token/list-length.js +31 -0
- package/lib/rules/token/list-length.js.map +1 -0
- package/lib/rules/token/list-marker-space.d.ts.map +1 -0
- package/lib/rules/token/list-marker-space.js.map +1 -0
- package/lib/rules/token/markdoc-attributes.d.ts.map +1 -0
- package/lib/rules/token/markdoc-attributes.js +198 -0
- package/lib/rules/token/markdoc-attributes.js.map +1 -0
- package/lib/rules/token/markdoc-pairing.d.ts.map +1 -0
- package/lib/rules/token/markdoc-pairing.js +65 -0
- package/lib/rules/token/markdoc-pairing.js.map +1 -0
- package/lib/rules/token/markdoc-syntax.d.ts.map +1 -0
- package/lib/rules/token/markdoc-syntax.js +84 -0
- package/lib/rules/token/markdoc-syntax.js.map +1 -0
- package/lib/rules/token/markdoc-unknown-tag.d.ts.map +1 -0
- package/lib/rules/token/markdoc-unknown-tag.js +44 -0
- package/lib/rules/token/markdoc-unknown-tag.js.map +1 -0
- package/lib/rules/token/no-alt-text.d.ts.map +1 -0
- package/lib/rules/token/no-alt-text.js +43 -0
- package/lib/rules/token/no-alt-text.js.map +1 -0
- package/lib/rules/token/no-bare-urls.d.ts.map +1 -0
- package/lib/rules/token/no-bare-urls.js +74 -0
- package/lib/rules/token/no-bare-urls.js.map +1 -0
- package/lib/rules/token/no-blanks-blockquote.d.ts.map +1 -0
- package/lib/rules/token/no-blanks-blockquote.js.map +1 -0
- package/lib/rules/token/no-duplicate-heading.d.ts.map +1 -0
- package/lib/rules/token/no-duplicate-heading.js +89 -0
- package/lib/rules/token/no-duplicate-heading.js.map +1 -0
- package/lib/rules/token/no-duplicate-link-destinations.d.ts.map +1 -0
- package/lib/rules/token/no-duplicate-link-destinations.js +54 -0
- package/lib/rules/token/no-duplicate-link-destinations.js.map +1 -0
- package/lib/rules/token/no-emphasis-as-heading.d.ts.map +1 -0
- package/lib/rules/token/no-emphasis-as-heading.js +39 -0
- package/lib/rules/token/no-emphasis-as-heading.js.map +1 -0
- package/lib/rules/token/no-empty-headings.d.ts.map +1 -0
- package/lib/rules/token/no-empty-headings.js +21 -0
- package/lib/rules/token/no-empty-headings.js.map +1 -0
- package/lib/rules/token/no-empty-links.d.ts.map +1 -0
- package/lib/rules/token/no-empty-links.js.map +1 -0
- package/lib/rules/token/no-hard-tabs.d.ts.map +1 -0
- package/lib/rules/token/no-hard-tabs.js.map +1 -0
- package/lib/rules/token/no-inline-html.d.ts.map +1 -0
- package/lib/rules/token/no-inline-html.js +41 -0
- package/lib/rules/token/no-inline-html.js.map +1 -0
- package/lib/rules/token/no-multiple-blanks.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-blanks.js.map +1 -0
- package/lib/rules/token/no-multiple-space-atx.d.ts +9 -0
- package/lib/rules/token/no-multiple-space-atx.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-space-atx.js +46 -0
- package/lib/rules/token/no-multiple-space-atx.js.map +1 -0
- package/lib/rules/token/no-multiple-space-closed-atx.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-space-closed-atx.js.map +1 -0
- package/lib/rules/token/no-reversed-links.d.ts.map +1 -0
- package/lib/rules/token/no-reversed-links.js.map +1 -0
- package/lib/rules/token/no-space-in-code.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-code.js.map +1 -0
- package/lib/rules/token/no-space-in-emphasis.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-emphasis.js +72 -0
- package/lib/rules/token/no-space-in-emphasis.js.map +1 -0
- package/lib/rules/token/no-space-in-links.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-links.js.map +1 -0
- package/lib/rules/token/no-trailing-punctuation.d.ts.map +1 -0
- package/lib/rules/token/no-trailing-punctuation.js.map +1 -0
- package/lib/rules/token/no-trailing-spaces.d.ts.map +1 -0
- package/lib/rules/token/no-trailing-spaces.js.map +1 -0
- package/lib/rules/token/ol-prefix.d.ts.map +1 -0
- package/lib/rules/token/ol-prefix.js.map +1 -0
- package/lib/rules/token/proper-names.d.ts.map +1 -0
- package/lib/rules/token/proper-names.js +87 -0
- package/lib/rules/token/proper-names.js.map +1 -0
- package/lib/rules/token/reference-links-images.d.ts.map +1 -0
- package/lib/rules/token/reference-links-images.js.map +1 -0
- package/lib/rules/token/required-headings.d.ts.map +1 -0
- package/lib/rules/token/required-headings.js +73 -0
- package/lib/rules/token/required-headings.js.map +1 -0
- package/lib/rules/token/single-h1.d.ts.map +1 -0
- package/lib/rules/token/single-h1.js +43 -0
- package/lib/rules/token/single-h1.js.map +1 -0
- package/lib/rules/token/table-column-count.d.ts.map +1 -0
- package/lib/rules/token/table-column-count.js.map +1 -0
- package/lib/rules/token/table-column-style.d.ts.map +1 -0
- package/lib/rules/token/table-column-style.js +162 -0
- package/lib/rules/token/table-column-style.js.map +1 -0
- package/lib/rules/token/table-pipe-style.d.ts.map +1 -0
- package/lib/rules/token/table-pipe-style.js.map +1 -0
- package/lib/rules/token/ul-indent.d.ts.map +1 -0
- package/lib/rules/token/ul-indent.js.map +1 -0
- package/lib/rules/token/ul-style.d.ts.map +1 -0
- package/lib/rules/token/ul-style.js +70 -0
- package/lib/rules/token/ul-style.js.map +1 -0
- package/lib/rules/types.d.ts +62 -0
- package/lib/rules/types.d.ts.map +1 -0
- package/lib/rules/utils.d.ts +18 -0
- package/lib/rules/utils.d.ts.map +1 -0
- package/lib/rules/utils.js +75 -0
- package/lib/rules/utils.js.map +1 -0
- package/lib/scopes/extractor.d.ts +6 -0
- package/lib/scopes/extractor.d.ts.map +1 -0
- package/lib/scopes/extractor.js +398 -0
- package/lib/scopes/extractor.js.map +1 -0
- package/lib/scopes/selector.d.ts +26 -0
- package/lib/scopes/selector.d.ts.map +1 -0
- package/lib/scopes/selector.js +78 -0
- package/lib/scopes/selector.js.map +1 -0
- package/lib/scopes/sentences.d.ts +13 -0
- package/lib/scopes/sentences.d.ts.map +1 -0
- package/lib/scopes/sentences.js +237 -0
- package/lib/scopes/sentences.js.map +1 -0
- package/lib/scopes/types.d.ts +35 -0
- package/lib/scopes/types.d.ts.map +1 -0
- package/lib/scopes/vocabulary.d.ts +12 -0
- package/lib/scopes/vocabulary.d.ts.map +1 -0
- package/lib/scopes/vocabulary.js +56 -0
- package/lib/scopes/vocabulary.js.map +1 -0
- package/lib/types/assertions.d.ts +97 -0
- package/lib/types/assertions.d.ts.map +1 -0
- package/lib/types/reporting.d.ts +23 -0
- package/lib/types/reporting.d.ts.map +1 -0
- package/lib/types/rules.d.ts +53 -0
- package/lib/types/rules.d.ts.map +1 -0
- package/lib/types/validation.d.ts +5 -0
- package/lib/types/validation.d.ts.map +1 -0
- package/lib/utils/is-plain-object.d.ts +2 -0
- package/lib/utils/is-plain-object.d.ts.map +1 -0
- package/lib/utils/is-plain-object.js +5 -0
- package/lib/utils/is-plain-object.js.map +1 -0
- package/package.json +58 -61
- package/presets/google/PROVENANCE.md +217 -221
- package/presets/inclusive-language/PROVENANCE.md +20 -19
- package/presets/microsoft/PROVENANCE.md +242 -243
- package/presets/plain-language/PROVENANCE.md +66 -60
- package/presets/technical-english/PROVENANCE.md +5 -5
- package/skills/recheck-config/SKILL.md +70 -20
- package/skills/recheck-lint/SKILL.md +37 -13
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -228
- package/dist/cli.js.map +0 -1
- package/dist/commands/baseline.d.ts +0 -10
- package/dist/commands/baseline.d.ts.map +0 -1
- package/dist/commands/baseline.js +0 -59
- package/dist/commands/baseline.js.map +0 -1
- package/dist/commands/markdoc-schema.d.ts +0 -17
- package/dist/commands/markdoc-schema.d.ts.map +0 -1
- package/dist/commands/markdoc-schema.js +0 -127
- package/dist/commands/markdoc-schema.js.map +0 -1
- package/dist/commands/readability.d.ts +0 -10
- package/dist/commands/readability.d.ts.map +0 -1
- package/dist/commands/readability.js +0 -90
- package/dist/commands/readability.js.map +0 -1
- package/dist/commands/run.d.ts +0 -21
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -236
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -8
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -43
- package/dist/commands/validate.js.map +0 -1
- package/dist/config/load.d.ts +0 -33
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js +0 -98
- package/dist/config/load.js.map +0 -1
- package/dist/config/presets/api-descriptions.d.ts +0 -8
- package/dist/config/presets/api-descriptions.d.ts.map +0 -1
- package/dist/config/presets/api-descriptions.js +0 -24
- package/dist/config/presets/api-descriptions.js.map +0 -1
- package/dist/config/presets/google.d.ts +0 -3
- package/dist/config/presets/google.d.ts.map +0 -1
- package/dist/config/presets/google.js +0 -1671
- package/dist/config/presets/google.js.map +0 -1
- package/dist/config/presets/inclusive-language.d.ts +0 -3
- package/dist/config/presets/inclusive-language.d.ts.map +0 -1
- package/dist/config/presets/inclusive-language.js +0 -321
- package/dist/config/presets/inclusive-language.js.map +0 -1
- package/dist/config/presets/index.d.ts +0 -67
- package/dist/config/presets/index.d.ts.map +0 -1
- package/dist/config/presets/index.js +0 -141
- package/dist/config/presets/index.js.map +0 -1
- package/dist/config/presets/markdoc.d.ts +0 -21
- package/dist/config/presets/markdoc.d.ts.map +0 -1
- package/dist/config/presets/markdoc.js +0 -101
- package/dist/config/presets/markdoc.js.map +0 -1
- package/dist/config/presets/markdown-relaxed.d.ts +0 -3
- package/dist/config/presets/markdown-relaxed.d.ts.map +0 -1
- package/dist/config/presets/markdown-relaxed.js +0 -98
- package/dist/config/presets/markdown-relaxed.js.map +0 -1
- package/dist/config/presets/markdown.d.ts +0 -43
- package/dist/config/presets/markdown.d.ts.map +0 -1
- package/dist/config/presets/markdown.js +0 -132
- package/dist/config/presets/markdown.js.map +0 -1
- package/dist/config/presets/microsoft.d.ts +0 -3
- package/dist/config/presets/microsoft.d.ts.map +0 -1
- package/dist/config/presets/microsoft.js +0 -2268
- package/dist/config/presets/microsoft.js.map +0 -1
- package/dist/config/presets/minimal.d.ts +0 -3
- package/dist/config/presets/minimal.d.ts.map +0 -1
- package/dist/config/presets/minimal.js +0 -21
- package/dist/config/presets/minimal.js.map +0 -1
- package/dist/config/presets/plain-language.d.ts +0 -3
- package/dist/config/presets/plain-language.d.ts.map +0 -1
- package/dist/config/presets/plain-language.js +0 -351
- package/dist/config/presets/plain-language.js.map +0 -1
- package/dist/config/presets/prose.d.ts +0 -52
- package/dist/config/presets/prose.d.ts.map +0 -1
- package/dist/config/presets/prose.js +0 -138
- package/dist/config/presets/prose.js.map +0 -1
- package/dist/config/presets/technical-english.d.ts +0 -34
- package/dist/config/presets/technical-english.d.ts.map +0 -1
- package/dist/config/presets/technical-english.js +0 -79
- package/dist/config/presets/technical-english.js.map +0 -1
- package/dist/config/schema.d.ts +0 -226
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -196
- package/dist/config/schema.js.map +0 -1
- package/dist/config/validate.d.ts +0 -22
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js +0 -1315
- package/dist/config/validate.js.map +0 -1
- package/dist/core/auto-fix.d.ts.map +0 -1
- package/dist/core/auto-fix.js +0 -101
- package/dist/core/auto-fix.js.map +0 -1
- package/dist/core/baseline.d.ts +0 -49
- package/dist/core/baseline.d.ts.map +0 -1
- package/dist/core/baseline.js +0 -0
- package/dist/core/baseline.js.map +0 -1
- package/dist/core/case-preserve.d.ts +0 -46
- package/dist/core/case-preserve.d.ts.map +0 -1
- package/dist/core/case-preserve.js +0 -57
- package/dist/core/case-preserve.js.map +0 -1
- package/dist/core/directives.d.ts.map +0 -1
- package/dist/core/directives.js +0 -73
- package/dist/core/directives.js.map +0 -1
- package/dist/core/files.d.ts +0 -69
- package/dist/core/files.d.ts.map +0 -1
- package/dist/core/files.js +0 -260
- package/dist/core/files.js.map +0 -1
- package/dist/core/inline-code.d.ts +0 -87
- package/dist/core/inline-code.d.ts.map +0 -1
- package/dist/core/inline-code.js +0 -104
- package/dist/core/inline-code.js.map +0 -1
- package/dist/core/line-endings.d.ts +0 -32
- package/dist/core/line-endings.d.ts.map +0 -1
- package/dist/core/line-endings.js +0 -65
- package/dist/core/line-endings.js.map +0 -1
- package/dist/core/markdoc-tags.d.ts +0 -79
- package/dist/core/markdoc-tags.d.ts.map +0 -1
- package/dist/core/markdoc-tags.js +0 -131
- package/dist/core/markdoc-tags.js.map +0 -1
- package/dist/core/prose-extract.d.ts +0 -6
- package/dist/core/prose-extract.d.ts.map +0 -1
- package/dist/core/prose-extract.js +0 -79
- package/dist/core/prose-extract.js.map +0 -1
- package/dist/core/readability.d.ts +0 -17
- package/dist/core/readability.d.ts.map +0 -1
- package/dist/core/readability.js +0 -37
- package/dist/core/readability.js.map +0 -1
- package/dist/core/rule-filters.d.ts +0 -45
- package/dist/core/rule-filters.d.ts.map +0 -1
- package/dist/core/rule-filters.js +0 -118
- package/dist/core/rule-filters.js.map +0 -1
- package/dist/core/runner.d.ts +0 -98
- package/dist/core/runner.d.ts.map +0 -1
- package/dist/core/runner.js +0 -401
- package/dist/core/runner.js.map +0 -1
- package/dist/core/timing.d.ts +0 -24
- package/dist/core/timing.d.ts.map +0 -1
- package/dist/core/timing.js +0 -39
- package/dist/core/timing.js.map +0 -1
- package/dist/data/markdoc-realm-schema.d.ts.map +0 -1
- package/dist/data/markdoc-realm-schema.js +0 -798
- package/dist/data/markdoc-realm-schema.js.map +0 -1
- package/dist/data/proper-nouns.d.ts.map +0 -1
- package/dist/data/proper-nouns.js +0 -47
- package/dist/data/proper-nouns.js.map +0 -1
- package/dist/data/realm-front-matter-schema.d.ts +0 -28
- package/dist/data/realm-front-matter-schema.d.ts.map +0 -1
- package/dist/data/realm-front-matter-schema.js +0 -73
- package/dist/data/realm-front-matter-schema.js.map +0 -1
- package/dist/index.d.ts +0 -90
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -152
- package/dist/index.js.map +0 -1
- package/dist/metrics/formulas.d.ts +0 -17
- package/dist/metrics/formulas.d.ts.map +0 -1
- package/dist/metrics/formulas.js +0 -70
- package/dist/metrics/formulas.js.map +0 -1
- package/dist/metrics/statistics.d.ts +0 -27
- package/dist/metrics/statistics.d.ts.map +0 -1
- package/dist/metrics/statistics.js +0 -56
- package/dist/metrics/statistics.js.map +0 -1
- package/dist/parser/index.d.ts +0 -19
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -174
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/markdoc/extract-statics.d.ts +0 -45
- package/dist/parser/markdoc/extract-statics.d.ts.map +0 -1
- package/dist/parser/markdoc/extract-statics.js +0 -139
- package/dist/parser/markdoc/extract-statics.js.map +0 -1
- package/dist/parser/markdoc/pairing.d.ts +0 -63
- package/dist/parser/markdoc/pairing.d.ts.map +0 -1
- package/dist/parser/markdoc/pairing.js +0 -94
- package/dist/parser/markdoc/pairing.js.map +0 -1
- package/dist/parser/markdoc/schema.d.ts +0 -85
- package/dist/parser/markdoc/schema.d.ts.map +0 -1
- package/dist/parser/markdoc/schema.js +0 -86
- package/dist/parser/markdoc/schema.js.map +0 -1
- package/dist/parser/markdoc/span.d.ts +0 -64
- package/dist/parser/markdoc/span.d.ts.map +0 -1
- package/dist/parser/markdoc/span.js +0 -729
- package/dist/parser/markdoc/span.js.map +0 -1
- package/dist/parser/markdoc/structure.d.ts +0 -28
- package/dist/parser/markdoc/structure.d.ts.map +0 -1
- package/dist/parser/markdoc/structure.js +0 -153
- package/dist/parser/markdoc/structure.js.map +0 -1
- package/dist/parser/markdoc/syntax.d.ts +0 -44
- package/dist/parser/markdoc/syntax.d.ts.map +0 -1
- package/dist/parser/markdoc/syntax.js +0 -317
- package/dist/parser/markdoc/syntax.js.map +0 -1
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/reporter/fixes.d.ts +0 -3
- package/dist/reporter/fixes.d.ts.map +0 -1
- package/dist/reporter/fixes.js +0 -41
- package/dist/reporter/fixes.js.map +0 -1
- package/dist/reporter/formats/github-actions.d.ts +0 -6
- package/dist/reporter/formats/github-actions.d.ts.map +0 -1
- package/dist/reporter/formats/github-actions.js +0 -20
- package/dist/reporter/formats/github-actions.js.map +0 -1
- package/dist/reporter/formats/json.d.ts +0 -10
- package/dist/reporter/formats/json.d.ts.map +0 -1
- package/dist/reporter/formats/json.js +0 -25
- package/dist/reporter/formats/json.js.map +0 -1
- package/dist/reporter/formats/sarif.d.ts +0 -10
- package/dist/reporter/formats/sarif.d.ts.map +0 -1
- package/dist/reporter/formats/sarif.js +0 -66
- package/dist/reporter/formats/sarif.js.map +0 -1
- package/dist/reporter/formats/table.d.ts +0 -6
- package/dist/reporter/formats/table.d.ts.map +0 -1
- package/dist/reporter/formats/table.js +0 -43
- package/dist/reporter/formats/table.js.map +0 -1
- package/dist/reporter/index.d.ts +0 -10
- package/dist/reporter/index.d.ts.map +0 -1
- package/dist/reporter/index.js +0 -42
- package/dist/reporter/index.js.map +0 -1
- package/dist/reporter/prioritize-problems.d.ts +0 -7
- package/dist/reporter/prioritize-problems.d.ts.map +0 -1
- package/dist/reporter/prioritize-problems.js +0 -29
- package/dist/reporter/prioritize-problems.js.map +0 -1
- package/dist/reporter/statistics.d.ts +0 -10
- package/dist/reporter/statistics.d.ts.map +0 -1
- package/dist/reporter/statistics.js +0 -52
- package/dist/reporter/statistics.js.map +0 -1
- package/dist/reporter/summary.d.ts +0 -10
- package/dist/reporter/summary.d.ts.map +0 -1
- package/dist/reporter/summary.js +0 -49
- package/dist/reporter/summary.js.map +0 -1
- package/dist/rules/registry.d.ts +0 -15
- package/dist/rules/registry.d.ts.map +0 -1
- package/dist/rules/registry.js +0 -81
- package/dist/rules/registry.js.map +0 -1
- package/dist/rules/scope/capitalization.d.ts.map +0 -1
- package/dist/rules/scope/capitalization.js +0 -164
- package/dist/rules/scope/capitalization.js.map +0 -1
- package/dist/rules/scope/conditional.d.ts.map +0 -1
- package/dist/rules/scope/conditional.js +0 -112
- package/dist/rules/scope/conditional.js.map +0 -1
- package/dist/rules/scope/consistency.d.ts.map +0 -1
- package/dist/rules/scope/consistency.js +0 -179
- package/dist/rules/scope/consistency.js.map +0 -1
- package/dist/rules/scope/length.d.ts.map +0 -1
- package/dist/rules/scope/length.js +0 -73
- package/dist/rules/scope/length.js.map +0 -1
- package/dist/rules/scope/max-image-size.d.ts.map +0 -1
- package/dist/rules/scope/max-image-size.js +0 -65
- package/dist/rules/scope/max-image-size.js.map +0 -1
- package/dist/rules/scope/metric.d.ts +0 -5
- package/dist/rules/scope/metric.d.ts.map +0 -1
- package/dist/rules/scope/metric.js +0 -74
- package/dist/rules/scope/metric.js.map +0 -1
- package/dist/rules/scope/occurrence.d.ts.map +0 -1
- package/dist/rules/scope/occurrence.js +0 -48
- package/dist/rules/scope/occurrence.js.map +0 -1
- package/dist/rules/scope/pattern.d.ts.map +0 -1
- package/dist/rules/scope/pattern.js +0 -75
- package/dist/rules/scope/pattern.js.map +0 -1
- package/dist/rules/scope/repetition.d.ts.map +0 -1
- package/dist/rules/scope/repetition.js +0 -139
- package/dist/rules/scope/repetition.js.map +0 -1
- package/dist/rules/scope/semantic-line-breaks.d.ts.map +0 -1
- package/dist/rules/scope/semantic-line-breaks.js +0 -236
- package/dist/rules/scope/semantic-line-breaks.js.map +0 -1
- package/dist/rules/scope/spelling.d.ts +0 -27
- package/dist/rules/scope/spelling.d.ts.map +0 -1
- package/dist/rules/scope/spelling.js +0 -227
- package/dist/rules/scope/spelling.js.map +0 -1
- package/dist/rules/scope/swap.d.ts.map +0 -1
- package/dist/rules/scope/swap.js +0 -149
- package/dist/rules/scope/swap.js.map +0 -1
- package/dist/rules/scope/title-case.d.ts +0 -46
- package/dist/rules/scope/title-case.d.ts.map +0 -1
- package/dist/rules/scope/title-case.js +0 -301
- package/dist/rules/scope/title-case.js.map +0 -1
- package/dist/rules/token/blanks-around-fences.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-fences.js.map +0 -1
- package/dist/rules/token/blanks-around-headings.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-headings.js +0 -108
- package/dist/rules/token/blanks-around-headings.js.map +0 -1
- package/dist/rules/token/blanks-around-lists.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-lists.js +0 -56
- package/dist/rules/token/blanks-around-lists.js.map +0 -1
- package/dist/rules/token/blanks-around-tables.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-tables.js +0 -42
- package/dist/rules/token/blanks-around-tables.js.map +0 -1
- package/dist/rules/token/code-block-style.d.ts.map +0 -1
- package/dist/rules/token/code-block-style.js.map +0 -1
- package/dist/rules/token/code-fence-style.d.ts.map +0 -1
- package/dist/rules/token/code-fence-style.js.map +0 -1
- package/dist/rules/token/commands-show-output.d.ts.map +0 -1
- package/dist/rules/token/commands-show-output.js.map +0 -1
- package/dist/rules/token/descriptive-link-text.d.ts.map +0 -1
- package/dist/rules/token/descriptive-link-text.js +0 -53
- package/dist/rules/token/descriptive-link-text.js.map +0 -1
- package/dist/rules/token/fenced-code-language.d.ts.map +0 -1
- package/dist/rules/token/fenced-code-language.js.map +0 -1
- package/dist/rules/token/first-line-h1.d.ts.map +0 -1
- package/dist/rules/token/first-line-h1.js +0 -107
- package/dist/rules/token/first-line-h1.js.map +0 -1
- package/dist/rules/token/front-matter.d.ts.map +0 -1
- package/dist/rules/token/front-matter.js +0 -177
- package/dist/rules/token/front-matter.js.map +0 -1
- package/dist/rules/token/heading-increment.d.ts.map +0 -1
- package/dist/rules/token/heading-increment.js +0 -27
- package/dist/rules/token/heading-increment.js.map +0 -1
- package/dist/rules/token/heading-start-left.d.ts.map +0 -1
- package/dist/rules/token/heading-start-left.js.map +0 -1
- package/dist/rules/token/heading-style.d.ts.map +0 -1
- package/dist/rules/token/heading-style.js.map +0 -1
- package/dist/rules/token/helpers.d.ts +0 -313
- package/dist/rules/token/helpers.d.ts.map +0 -1
- package/dist/rules/token/helpers.js +0 -746
- package/dist/rules/token/helpers.js.map +0 -1
- package/dist/rules/token/hr-style.d.ts.map +0 -1
- package/dist/rules/token/hr-style.js.map +0 -1
- package/dist/rules/token/index.d.ts +0 -76
- package/dist/rules/token/index.d.ts.map +0 -1
- package/dist/rules/token/index.js +0 -229
- package/dist/rules/token/index.js.map +0 -1
- package/dist/rules/token/line-length.d.ts.map +0 -1
- package/dist/rules/token/line-length.js +0 -120
- package/dist/rules/token/line-length.js.map +0 -1
- package/dist/rules/token/link-fragments.d.ts.map +0 -1
- package/dist/rules/token/link-fragments.js +0 -393
- package/dist/rules/token/link-fragments.js.map +0 -1
- package/dist/rules/token/link-image-reference-definitions.d.ts.map +0 -1
- package/dist/rules/token/link-image-reference-definitions.js.map +0 -1
- package/dist/rules/token/link-image-style.d.ts.map +0 -1
- package/dist/rules/token/link-image-style.js +0 -131
- package/dist/rules/token/link-image-style.js.map +0 -1
- package/dist/rules/token/list-indent.d.ts.map +0 -1
- package/dist/rules/token/list-indent.js.map +0 -1
- package/dist/rules/token/list-length.d.ts.map +0 -1
- package/dist/rules/token/list-length.js +0 -55
- package/dist/rules/token/list-length.js.map +0 -1
- package/dist/rules/token/list-marker-space.d.ts.map +0 -1
- package/dist/rules/token/list-marker-space.js.map +0 -1
- package/dist/rules/token/markdoc-attributes.d.ts.map +0 -1
- package/dist/rules/token/markdoc-attributes.js +0 -269
- package/dist/rules/token/markdoc-attributes.js.map +0 -1
- package/dist/rules/token/markdoc-pairing.d.ts.map +0 -1
- package/dist/rules/token/markdoc-pairing.js +0 -73
- package/dist/rules/token/markdoc-pairing.js.map +0 -1
- package/dist/rules/token/markdoc-syntax.d.ts.map +0 -1
- package/dist/rules/token/markdoc-syntax.js +0 -119
- package/dist/rules/token/markdoc-syntax.js.map +0 -1
- package/dist/rules/token/markdoc-unknown-tag.d.ts.map +0 -1
- package/dist/rules/token/markdoc-unknown-tag.js +0 -64
- package/dist/rules/token/markdoc-unknown-tag.js.map +0 -1
- package/dist/rules/token/no-alt-text.d.ts.map +0 -1
- package/dist/rules/token/no-alt-text.js +0 -47
- package/dist/rules/token/no-alt-text.js.map +0 -1
- package/dist/rules/token/no-bare-urls.d.ts.map +0 -1
- package/dist/rules/token/no-bare-urls.js +0 -88
- package/dist/rules/token/no-bare-urls.js.map +0 -1
- package/dist/rules/token/no-blanks-blockquote.d.ts.map +0 -1
- package/dist/rules/token/no-blanks-blockquote.js.map +0 -1
- package/dist/rules/token/no-duplicate-heading.d.ts.map +0 -1
- package/dist/rules/token/no-duplicate-heading.js +0 -101
- package/dist/rules/token/no-duplicate-heading.js.map +0 -1
- package/dist/rules/token/no-duplicate-link-destinations.d.ts.map +0 -1
- package/dist/rules/token/no-duplicate-link-destinations.js +0 -65
- package/dist/rules/token/no-duplicate-link-destinations.js.map +0 -1
- package/dist/rules/token/no-emphasis-as-heading.d.ts.map +0 -1
- package/dist/rules/token/no-emphasis-as-heading.js +0 -44
- package/dist/rules/token/no-emphasis-as-heading.js.map +0 -1
- package/dist/rules/token/no-empty-headings.d.ts.map +0 -1
- package/dist/rules/token/no-empty-headings.js +0 -28
- package/dist/rules/token/no-empty-headings.js.map +0 -1
- package/dist/rules/token/no-empty-links.d.ts.map +0 -1
- package/dist/rules/token/no-empty-links.js.map +0 -1
- package/dist/rules/token/no-hard-tabs.d.ts.map +0 -1
- package/dist/rules/token/no-hard-tabs.js.map +0 -1
- package/dist/rules/token/no-inline-html.d.ts.map +0 -1
- package/dist/rules/token/no-inline-html.js +0 -45
- package/dist/rules/token/no-inline-html.js.map +0 -1
- package/dist/rules/token/no-multiple-blanks.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-blanks.js.map +0 -1
- package/dist/rules/token/no-multiple-space-atx.d.ts +0 -13
- package/dist/rules/token/no-multiple-space-atx.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-space-atx.js +0 -50
- package/dist/rules/token/no-multiple-space-atx.js.map +0 -1
- package/dist/rules/token/no-multiple-space-closed-atx.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-space-closed-atx.js.map +0 -1
- package/dist/rules/token/no-reversed-links.d.ts.map +0 -1
- package/dist/rules/token/no-reversed-links.js.map +0 -1
- package/dist/rules/token/no-space-in-code.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-code.js.map +0 -1
- package/dist/rules/token/no-space-in-emphasis.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-emphasis.js +0 -79
- package/dist/rules/token/no-space-in-emphasis.js.map +0 -1
- package/dist/rules/token/no-space-in-links.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-links.js.map +0 -1
- package/dist/rules/token/no-trailing-punctuation.d.ts.map +0 -1
- package/dist/rules/token/no-trailing-punctuation.js.map +0 -1
- package/dist/rules/token/no-trailing-spaces.d.ts.map +0 -1
- package/dist/rules/token/no-trailing-spaces.js.map +0 -1
- package/dist/rules/token/ol-prefix.d.ts.map +0 -1
- package/dist/rules/token/ol-prefix.js.map +0 -1
- package/dist/rules/token/proper-names.d.ts.map +0 -1
- package/dist/rules/token/proper-names.js +0 -93
- package/dist/rules/token/proper-names.js.map +0 -1
- package/dist/rules/token/reference-links-images.d.ts.map +0 -1
- package/dist/rules/token/reference-links-images.js.map +0 -1
- package/dist/rules/token/required-headings.d.ts.map +0 -1
- package/dist/rules/token/required-headings.js +0 -83
- package/dist/rules/token/required-headings.js.map +0 -1
- package/dist/rules/token/single-h1.d.ts.map +0 -1
- package/dist/rules/token/single-h1.js +0 -56
- package/dist/rules/token/single-h1.js.map +0 -1
- package/dist/rules/token/table-column-count.d.ts.map +0 -1
- package/dist/rules/token/table-column-count.js.map +0 -1
- package/dist/rules/token/table-column-style.d.ts.map +0 -1
- package/dist/rules/token/table-column-style.js +0 -179
- package/dist/rules/token/table-column-style.js.map +0 -1
- package/dist/rules/token/table-pipe-style.d.ts.map +0 -1
- package/dist/rules/token/table-pipe-style.js.map +0 -1
- package/dist/rules/token/ul-indent.d.ts.map +0 -1
- package/dist/rules/token/ul-indent.js.map +0 -1
- package/dist/rules/token/ul-style.d.ts.map +0 -1
- package/dist/rules/token/ul-style.js +0 -80
- package/dist/rules/token/ul-style.js.map +0 -1
- package/dist/rules/types.d.ts +0 -83
- package/dist/rules/types.d.ts.map +0 -1
- package/dist/rules/utils.d.ts +0 -31
- package/dist/rules/utils.d.ts.map +0 -1
- package/dist/rules/utils.js +0 -90
- package/dist/rules/utils.js.map +0 -1
- package/dist/scopes/extractor.d.ts +0 -7
- package/dist/scopes/extractor.d.ts.map +0 -1
- package/dist/scopes/extractor.js +0 -536
- package/dist/scopes/extractor.js.map +0 -1
- package/dist/scopes/selector.d.ts +0 -51
- package/dist/scopes/selector.d.ts.map +0 -1
- package/dist/scopes/selector.js +0 -121
- package/dist/scopes/selector.js.map +0 -1
- package/dist/scopes/sentences.d.ts +0 -15
- package/dist/scopes/sentences.d.ts.map +0 -1
- package/dist/scopes/sentences.js +0 -202
- package/dist/scopes/sentences.js.map +0 -1
- package/dist/scopes/types.d.ts +0 -46
- package/dist/scopes/types.d.ts.map +0 -1
- package/dist/scopes/vocabulary.d.ts +0 -16
- package/dist/scopes/vocabulary.d.ts.map +0 -1
- package/dist/scopes/vocabulary.js +0 -70
- package/dist/scopes/vocabulary.js.map +0 -1
- package/dist/types/assertions.d.ts +0 -121
- package/dist/types/assertions.d.ts.map +0 -1
- package/dist/types/reporting.d.ts +0 -32
- package/dist/types/reporting.d.ts.map +0 -1
- package/dist/types/rules.d.ts +0 -41
- package/dist/types/rules.d.ts.map +0 -1
- package/dist/types/validation.d.ts +0 -6
- package/dist/types/validation.d.ts.map +0 -1
- /package/{dist → lib}/core/auto-fix.d.ts +0 -0
- /package/{dist → lib}/core/directives.d.ts +0 -0
- /package/{dist → lib}/data/markdoc-realm-schema.d.ts +0 -0
- /package/{dist → lib}/data/proper-nouns.d.ts +0 -0
- /package/{dist → lib}/metrics/index.d.ts +0 -0
- /package/{dist → lib}/metrics/index.d.ts.map +0 -0
- /package/{dist → lib}/metrics/index.js +0 -0
- /package/{dist → lib}/metrics/index.js.map +0 -0
- /package/{dist → lib}/parser/types.d.ts +0 -0
- /package/{dist → lib}/parser/types.js +0 -0
- /package/{dist → lib}/parser/types.js.map +0 -0
- /package/{dist → lib}/rules/scope/capitalization.d.ts +0 -0
- /package/{dist → lib}/rules/scope/conditional.d.ts +0 -0
- /package/{dist → lib}/rules/scope/consistency.d.ts +0 -0
- /package/{dist → lib}/rules/scope/length.d.ts +0 -0
- /package/{dist → lib}/rules/scope/max-image-size.d.ts +0 -0
- /package/{dist → lib}/rules/scope/occurrence.d.ts +0 -0
- /package/{dist → lib}/rules/scope/pattern.d.ts +0 -0
- /package/{dist → lib}/rules/scope/repetition.d.ts +0 -0
- /package/{dist → lib}/rules/scope/semantic-line-breaks.d.ts +0 -0
- /package/{dist → lib}/rules/scope/swap.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-fences.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-fences.js +0 -0
- /package/{dist → lib}/rules/token/blanks-around-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-lists.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-tables.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-block-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-block-style.js +0 -0
- /package/{dist → lib}/rules/token/code-fence-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-fence-style.js +0 -0
- /package/{dist → lib}/rules/token/commands-show-output.d.ts +0 -0
- /package/{dist → lib}/rules/token/commands-show-output.js +0 -0
- /package/{dist → lib}/rules/token/descriptive-link-text.d.ts +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.js +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.js.map +0 -0
- /package/{dist → lib}/rules/token/fenced-code-language.d.ts +0 -0
- /package/{dist → lib}/rules/token/fenced-code-language.js +0 -0
- /package/{dist → lib}/rules/token/first-line-h1.d.ts +0 -0
- /package/{dist → lib}/rules/token/front-matter.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-increment.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-start-left.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-start-left.js +0 -0
- /package/{dist → lib}/rules/token/heading-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-style.js +0 -0
- /package/{dist → lib}/rules/token/hr-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/hr-style.js +0 -0
- /package/{dist → lib}/rules/token/line-length.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-fragments.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-image-reference-definitions.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-image-reference-definitions.js +0 -0
- /package/{dist → lib}/rules/token/link-image-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-indent.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-indent.js +0 -0
- /package/{dist → lib}/rules/token/list-length.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-marker-space.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-marker-space.js +0 -0
- /package/{dist → lib}/rules/token/markdoc-attributes.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-pairing.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-syntax.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-unknown-tag.d.ts +0 -0
- /package/{dist → lib}/rules/token/messages.d.ts +0 -0
- /package/{dist → lib}/rules/token/messages.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/messages.js +0 -0
- /package/{dist → lib}/rules/token/messages.js.map +0 -0
- /package/{dist → lib}/rules/token/no-alt-text.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-bare-urls.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-blanks-blockquote.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-blanks-blockquote.js +0 -0
- /package/{dist → lib}/rules/token/no-duplicate-heading.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-duplicate-link-destinations.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-emphasis-as-heading.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-links.js +0 -0
- /package/{dist → lib}/rules/token/no-hard-tabs.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-hard-tabs.js +0 -0
- /package/{dist → lib}/rules/token/no-inline-html.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.js.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-blanks.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-blanks.js +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-reversed-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-reversed-links.js +0 -0
- /package/{dist → lib}/rules/token/no-space-in-code.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-code.js +0 -0
- /package/{dist → lib}/rules/token/no-space-in-emphasis.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-links.js +0 -0
- /package/{dist → lib}/rules/token/no-trailing-punctuation.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-trailing-punctuation.js +0 -0
- /package/{dist → lib}/rules/token/no-trailing-spaces.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-trailing-spaces.js +0 -0
- /package/{dist → lib}/rules/token/ol-prefix.d.ts +0 -0
- /package/{dist → lib}/rules/token/ol-prefix.js +0 -0
- /package/{dist → lib}/rules/token/proper-names.d.ts +0 -0
- /package/{dist → lib}/rules/token/reference-links-images.d.ts +0 -0
- /package/{dist → lib}/rules/token/reference-links-images.js +0 -0
- /package/{dist → lib}/rules/token/required-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-h1.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.js +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.js.map +0 -0
- /package/{dist → lib}/rules/token/strong-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/strong-style.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/strong-style.js +0 -0
- /package/{dist → lib}/rules/token/strong-style.js.map +0 -0
- /package/{dist → lib}/rules/token/table-column-count.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-column-count.js +0 -0
- /package/{dist → lib}/rules/token/table-column-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-pipe-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-pipe-style.js +0 -0
- /package/{dist → lib}/rules/token/ul-indent.d.ts +0 -0
- /package/{dist → lib}/rules/token/ul-indent.js +0 -0
- /package/{dist → lib}/rules/token/ul-style.d.ts +0 -0
- /package/{dist → lib}/rules/types.js +0 -0
- /package/{dist → lib}/rules/types.js.map +0 -0
- /package/{dist → lib}/scopes/types.js +0 -0
- /package/{dist → lib}/scopes/types.js.map +0 -0
- /package/{dist → lib}/types/assertions.js +0 -0
- /package/{dist → lib}/types/assertions.js.map +0 -0
- /package/{dist → lib}/types/index.d.ts +0 -0
- /package/{dist → lib}/types/index.d.ts.map +0 -0
- /package/{dist → lib}/types/index.js +0 -0
- /package/{dist → lib}/types/index.js.map +0 -0
- /package/{dist → lib}/types/problems.d.ts +0 -0
- /package/{dist → lib}/types/problems.d.ts.map +0 -0
- /package/{dist → lib}/types/problems.js +0 -0
- /package/{dist → lib}/types/problems.js.map +0 -0
- /package/{dist → lib}/types/reporting.js +0 -0
- /package/{dist → lib}/types/reporting.js.map +0 -0
- /package/{dist → lib}/types/rules.js +0 -0
- /package/{dist → lib}/types/rules.js.map +0 -0
- /package/{dist → lib}/types/validation.js +0 -0
- /package/{dist → lib}/types/validation.js.map +0 -0
|
@@ -33,9 +33,9 @@ Confirmed two independent ways:
|
|
|
33
33
|
- The raw `LICENSE` file itself is the full CC BY 4.0 legal code.
|
|
34
34
|
|
|
35
35
|
The site's Terms of Use (`https://learn.microsoft.com/en-us/legal/termsofuse`)
|
|
36
|
-
explicitly defers to this:
|
|
36
|
+
explicitly defers to this: _"Certain documentation may be subject to
|
|
37
37
|
explicit license terms separate from the terms contained here. To the
|
|
38
|
-
extent the terms conflict, the explicit license terms control."
|
|
38
|
+
extent the terms conflict, the explicit license terms control."_
|
|
39
39
|
|
|
40
40
|
**Bottom line, and the reason this matters for the preset:** CC-BY-4.0
|
|
41
41
|
attribution is factually correct to ship, but every `link:` in `microsoft.ts`
|
|
@@ -91,35 +91,35 @@ rather than a complete test) is `warn`.
|
|
|
91
91
|
|
|
92
92
|
### Structural (heading, list, table, alt-text, link mechanics) — `error` unless noted
|
|
93
93
|
|
|
94
|
-
| Rule id
|
|
95
|
-
|
|
96
|
-
| `microsoft/heading-sentence-case`
|
|
97
|
-
| `microsoft/capitalize-after-heading-colon` (`warn`) | [colons](https://learn.microsoft.com/en-us/style-guide/punctuation/colons)
|
|
98
|
-
| `microsoft/no-trailing-punctuation`
|
|
99
|
-
| `microsoft/no-ampersand-in-headings` (`warn`)
|
|
100
|
-
| `microsoft/vs-in-headings` (`warn`)
|
|
101
|
-
| `microsoft/versus-in-text` (`warn`)
|
|
102
|
-
| `microsoft/no-multiple-blanks`
|
|
103
|
-
| `microsoft/no-emphasis-as-heading`
|
|
104
|
-
| `microsoft/no-apostrophe-plural-decade` (`warn`)
|
|
105
|
-
| `microsoft/article-before-acronym` (`warn`)
|
|
106
|
-
| `microsoft/list-item-capital`
|
|
107
|
-
| `microsoft/no-trailing-conjunction-list` (`warn`)
|
|
108
|
-
| `microsoft/no-ellipsis-column-header` (`warn`)
|
|
109
|
-
| `microsoft/no-blank-table-cell` (`warn`)
|
|
110
|
-
| `microsoft/single-space-after-punctuation` (`warn`) | [periods](https://learn.microsoft.com/en-us/style-guide/punctuation/periods) + [top-10-tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice) | "Put one space, not two, after a period" — top-10-tips broadens to "periods, question marks, and colons" | CONFIRMED, widened scope per verifier F's note
|
|
111
|
-
| `microsoft/no-space-around-em-dash` (`warn`)
|
|
112
|
-
| `microsoft/no-from-before-en-dash-range` (`warn`)
|
|
113
|
-
| `microsoft/straight-quotes` (`warn`)
|
|
114
|
-
| `microsoft/spell-out-ordinals` (`warn`)
|
|
115
|
-
| `microsoft/ordinal-no-ly` (`warn`)
|
|
116
|
-
| `microsoft/noon-midnight` (`warn`)
|
|
117
|
-
| `microsoft/no-alt-text`
|
|
118
|
-
| `microsoft/alt-text-length` (`warn`)
|
|
119
|
-
| `microsoft/alt-text-format` (`warn`)
|
|
120
|
-
| `microsoft/alt-text-generic-opener` (`warn`)
|
|
121
|
-
| `microsoft/alt-text-no-filename` (`warn`)
|
|
122
|
-
| `microsoft/descriptive-link-text`
|
|
94
|
+
| Rule id | Source URL | Quote | Verdict |
|
|
95
|
+
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
96
|
+
| `microsoft/heading-sentence-case` | [capitalization](https://learn.microsoft.com/en-us/style-guide/capitalization) | "Microsoft style uses sentence-style capitalization." | CONFIRMED |
|
|
97
|
+
| `microsoft/capitalize-after-heading-colon` (`warn`) | [colons](https://learn.microsoft.com/en-us/style-guide/punctuation/colons) | "Always capitalize the word after the colon." | CONFIRMED, scoped to headings only — the mid-sentence-colon form is merely "Acceptable" per the guide's own table, not shipped |
|
|
98
|
+
| `microsoft/no-trailing-punctuation` | [headings](https://learn.microsoft.com/en-us/style-guide/scannable-content/headings) | "Don't end headings with a period." | CONFIRMED — default punctuation set (`.,;:` with `?` stripped) already matches Microsoft's own `?`-allowed/`!`-rarely exceptions with no override |
|
|
99
|
+
| `microsoft/no-ampersand-in-headings` (`warn`) | [headings](https://learn.microsoft.com/en-us/style-guide/scannable-content/headings) | "Don't use ampersands (&) or plus signs (+) in headings unless..." | CONFIRMED, `exceptions.lines` for `C++`/`A+`/`.NET`; `&` pattern excludes `&`/` `/`<`/`>`/`"`/numeric entities |
|
|
100
|
+
| `microsoft/vs-in-headings` (`warn`) | [versus-vs](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/v/versus-vs) | "In headings, use the abbreviation vs., all lowercase." | CONFIRMED, scoped to `heading` |
|
|
101
|
+
| `microsoft/versus-in-text` (`warn`) | same | "In text, spell out as versus." | CONFIRMED, scoped to `[paragraph, list-item, table.cell]` — two scoped rules with opposite directions so they don't fight each other |
|
|
102
|
+
| `microsoft/no-multiple-blanks` | [headings](https://learn.microsoft.com/en-us/style-guide/scannable-content/headings) | "Don't use extra line breaks to increase heading spacing." | CONFIRMED |
|
|
103
|
+
| `microsoft/no-emphasis-as-heading` | [writing-all-abilities](https://learn.microsoft.com/en-us/style-guide/accessibility/writing-all-abilities) | "Use heading levels instead of text formatting to communicate... hierarchy." | CONFIRMED |
|
|
104
|
+
| `microsoft/no-apostrophe-plural-decade` (`warn`) | [apostrophes](https://learn.microsoft.com/en-us/style-guide/punctuation/apostrophes) | "Don't use an apostrophe... to form the plural of a singular noun." | CONFIRMED, scoped to the unambiguous decade case (`1990's`); a bare `[A-Z]{2,}'s` (e.g. `API's`) is excluded — frequently a legitimate possessive |
|
|
105
|
+
| `microsoft/article-before-acronym` (`warn`) | [acronyms](https://learn.microsoft.com/en-us/style-guide/acronyms) | "a DLL / an ISP / a URL / a SQL database" | CONFIRMED |
|
|
106
|
+
| `microsoft/list-item-capital` | [lists](https://learn.microsoft.com/en-us/style-guide/scannable-content/lists) | "Begin each item in a list with a capital letter." | CONFIRMED, custom-regex `capitalization` (not `$sentence`, which would overshoot) |
|
|
107
|
+
| `microsoft/no-trailing-conjunction-list` (`warn`) | [lists](https://learn.microsoft.com/en-us/style-guide/scannable-content/lists) | "Don't use semicolons, commas, or conjunctions... at the end of list items." | CONFIRMED |
|
|
108
|
+
| `microsoft/no-ellipsis-column-header` (`warn`) | [tables](https://learn.microsoft.com/en-us/style-guide/scannable-content/tables) | "Don't use ellipses at the end of column headers." | CONFIRMED |
|
|
109
|
+
| `microsoft/no-blank-table-cell` (`warn`) | [tables](https://learn.microsoft.com/en-us/style-guide/scannable-content/tables) | "Don't leave a cell blank or use an em dash. Instead, use Not applicable or None." | CONFIRMED, **em dash only** — the guide's other half ("don't leave a cell blank") is NOT enforced: a truly blank `table.cell` segment's content is the empty string, and every `pattern` token can only ever produce a zero-width match against `''`, which pattern.ts deliberately skips (no real text to report) — an architectural limit of the `pattern` assertion, not a missed narrowing pass. See the rule's doc comment in `config/presets/microsoft.ts` for the full reasoning and what a real fix would require (a token rule or an extractor-level change). The draft's original broader pattern also matched an en dash/hyphen, which the guide never names for this rule either. |
|
|
110
|
+
| `microsoft/single-space-after-punctuation` (`warn`) | [periods](https://learn.microsoft.com/en-us/style-guide/punctuation/periods) + [top-10-tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice) | "Put one space, not two, after a period" — top-10-tips broadens to "periods, question marks, and colons" | CONFIRMED, widened scope per verifier F's note |
|
|
111
|
+
| `microsoft/no-space-around-em-dash` (`warn`) | [dashes-hyphens](https://learn.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/) | "Don't use spaces around em dashes." | CONFIRMED, **narrowed to em dash only** — the en-dash rule has an explicit worked exception for UI timestamps/date ranges ("2:15 PM – 4:45 PM") a blind regex can't distinguish from the ordinary case; en-dash spacing is not enforced at all |
|
|
112
|
+
| `microsoft/no-from-before-en-dash-range` (`warn`) | [numbers](https://learn.microsoft.com/en-us/style-guide/numbers) | "Don't use from before a range indicated by an en dash." | CONFIRMED |
|
|
113
|
+
| `microsoft/straight-quotes` (`warn`) | [quotation-marks](https://learn.microsoft.com/en-us/style-guide/punctuation/quotation-marks) | "Use straight quotation marks. Segoe Sans... does not have a curly quotation mark option." | CONFIRMED |
|
|
114
|
+
| `microsoft/spell-out-ordinals` (`warn`) | [numbers](https://learn.microsoft.com/en-us/style-guide/numbers) | "Always spell out ordinal numbers." | CONFIRMED |
|
|
115
|
+
| `microsoft/ordinal-no-ly` (`warn`) | [numbers](https://learn.microsoft.com/en-us/style-guide/numbers) | "Don't add -ly to an ordinal number, as in firstly or secondly." | CONFIRMED |
|
|
116
|
+
| `microsoft/noon-midnight` (`warn`) | [numbers](https://learn.microsoft.com/en-us/style-guide/numbers) | "Don't use numerals for 12:00. Use noon or midnight instead." | CONFIRMED |
|
|
117
|
+
| `microsoft/no-alt-text` | [alternative-text](https://learn.microsoft.com/en-us/style-guide/accessibility/alternative-text) | "Add alt text to all images that convey important meaning." | CONFIRMED |
|
|
118
|
+
| `microsoft/alt-text-length` (`warn`) | same | "Limit the length to 150 characters." | CONFIRMED — structural number |
|
|
119
|
+
| `microsoft/alt-text-format` (`warn`) | same | "Begin alt text with a capital letter. End it with a period." | CONFIRMED, incomplete — the guide's own carve-out ("even if it's just a fragment, if doing so is practical for the image type") is not modeled; see "Known limitations" |
|
|
120
|
+
| `microsoft/alt-text-generic-opener` (`warn`) | same | "Don't start alt text with 'Image.'" / "Don't start... with 'Button' or 'Link.'" | CONFIRMED — `Screenshot`/`Diagram`/`Photograph`/`Chart`/`Drawing` are prescribed openers, deliberately absent from the pattern |
|
|
121
|
+
| `microsoft/alt-text-no-filename` (`warn`) | same | "Don't use the file name of an image as alt text." | CONFIRMED |
|
|
122
|
+
| `microsoft/descriptive-link-text` | [urls-web-addresses](https://learn.microsoft.com/en-us/style-guide/urls-web-addresses) | "rather than a generic phrase like click here" | CONFIRMED |
|
|
123
123
|
|
|
124
124
|
### Structural numbers (`warn`) — see the dedicated section below
|
|
125
125
|
|
|
@@ -127,36 +127,36 @@ rather than a complete test) is `warn`.
|
|
|
127
127
|
|
|
128
128
|
### Voice, contractions — `warn`
|
|
129
129
|
|
|
130
|
-
| Rule id
|
|
131
|
-
|
|
132
|
-
| `microsoft/use-contractions`
|
|
133
|
-
| `microsoft/no-awkward-contractions` | [use-contractions](https://learn.microsoft.com/en-us/style-guide/word-choice/use-contractions)
|
|
134
|
-
| `microsoft/contraction-consistency` | same
|
|
135
|
-
| `microsoft/no-weak-phrasing`
|
|
136
|
-
| `microsoft/avoid-please`
|
|
130
|
+
| Rule id | Source URL | Quote | Verdict |
|
|
131
|
+
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
132
|
+
| `microsoft/use-contractions` | [use-contractions](https://learn.microsoft.com/en-us/style-guide/word-choice/use-contractions) + [top-10-tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice) | "Use contractions like it's, you'll, you're, we're, and let's." | CONFIRMED — the signature Microsoft rule and the sharpest voice difference from other guides. Every pair is a clean word-for-word contraction; `applyMatchCase` verified to handle sentence-initial capitalized matches correctly ("Do not" → "Don't"). |
|
|
133
|
+
| `microsoft/no-awkward-contractions` | [use-contractions](https://learn.microsoft.com/en-us/style-guide/word-choice/use-contractions) | "Avoid ambiguous or awkward contractions, such as there'd, it'll, and they'd." | CONFIRMED |
|
|
134
|
+
| `microsoft/contraction-consistency` | same | "don't use can't and cannot in the same UI." | CONFIRMED — textbook fit for first-seen-wins `consistency` |
|
|
135
|
+
| `microsoft/no-weak-phrasing` | [top-10-tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice) | "Avoid weak phrasing like there is, there are, and there were." | CONFIRMED |
|
|
136
|
+
| `microsoft/avoid-please` | [a-z/please](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/p/please) | "Avoid please except in situations where the customer is asked to do something inconvenient..." | CONFIRMED |
|
|
137
137
|
|
|
138
138
|
### US spelling, Latin abbreviations, simple words — `error` (mechanical, per the research's "ship at error" framing)
|
|
139
139
|
|
|
140
|
-
| Rule id
|
|
141
|
-
|
|
142
|
-
| `microsoft/us-spelling`
|
|
143
|
-
| `microsoft/no-latin-abbreviations` | same
|
|
144
|
-
| `microsoft/simple-words`
|
|
145
|
-
| `microsoft/leverage`
|
|
146
|
-
| `microsoft/glyph`
|
|
147
|
-
| `microsoft/bucketize`
|
|
148
|
-
| `microsoft/impact-verb` (`warn`)
|
|
149
|
-
| `microsoft/the-ask` (`warn`)
|
|
140
|
+
| Rule id | Source URL | Quote | Verdict |
|
|
141
|
+
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
142
|
+
| `microsoft/us-spelling` | [use-us-spelling](https://learn.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words) | "use the US spelling. For example, use license, not licence." | CONFIRMED — a subset not already covered by `recheck/prose`'s `consistency` rule (behavior/color/license/organize) |
|
|
143
|
+
| `microsoft/no-latin-abbreviations` | same | "Avoid Latin abbreviations for common English phrases." | CONFIRMED for e.g./i.e./viz./ergo/de facto/ad hoc/vis-a-vis. `via` deliberately dropped (see self-contradictions section) |
|
|
144
|
+
| `microsoft/simple-words` | [use-simple-words](https://learn.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences) | "Choose simple verbs without modifiers." / "Don't use two or three words when one will do." | CONFIRMED |
|
|
145
|
+
| `microsoft/leverage` | [avoid-jargon](https://learn.microsoft.com/en-us/style-guide/word-choice/avoid-jargon) | "using leverage to mean take advantage of" | CONFIRMED — split into its own rule so its `link:` points at the page that actually states it |
|
|
146
|
+
| `microsoft/glyph` | same | "such as symbol instead of glyph" | CONFIRMED |
|
|
147
|
+
| `microsoft/bucketize` | [dont-use-common-words](https://learn.microsoft.com/en-us/style-guide/word-choice/dont-use-common-words-in-new-ways) | "Don't create a new word from an existing word." | CONFIRMED |
|
|
148
|
+
| `microsoft/impact-verb` (`warn`) | same | "Don't use verbs as nouns or nouns as verbs" | CONFIRMED, narrowly anchored to `impact` immediately followed by a specific object noun (performance/productivity/quality/reliability/availability/latency/throughput) — bare "impact" is also a common, correct noun ("the impact of this change") per verifier E's own caution |
|
|
149
|
+
| `microsoft/the-ask` (`warn`) | [dont-use-common-words](https://learn.microsoft.com/en-us/style-guide/word-choice/dont-use-common-words-in-new-ways) | "respond to the request" vs. "respond to the ask" | CONFIRMED |
|
|
150
150
|
|
|
151
151
|
### Bias-free, militaristic, derogatory language — `error` (sensitive category)
|
|
152
152
|
|
|
153
|
-
| Rule id
|
|
154
|
-
|
|
155
|
-
| `microsoft/bias-free-terms`
|
|
156
|
-
| `microsoft/master-slave`
|
|
157
|
-
| `microsoft/cyberattack-spelling`
|
|
158
|
-
| `microsoft/no-derogatory-slang`
|
|
159
|
-
| `microsoft/racial-ethnic-capitalization` | same
|
|
153
|
+
| Rule id | Source URL | Quote | Verdict |
|
|
154
|
+
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
155
|
+
| `microsoft/bias-free-terms` | [bias-free](https://learn.microsoft.com/en-us/style-guide/bias-free-communication) | chairman→chair; mankind→humanity; manmade→synthetic; manpower→workforce; salesman→sales representative; DMZ→perimeter network | CONFIRMED. `master/slave` deliberately NOT included in this rule's pairs — it ships separately as `microsoft/master-slave`, see next row and the self-contradictions section |
|
|
156
|
+
| `microsoft/master-slave` | [bias-free](https://learn.microsoft.com/en-us/style-guide/bias-free-communication) + [a-z/master-slave](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/master-slave) | "primary/subordinate ← master/slave" (bias-free); "Don't use master/slave. Use primary/replica or alternatives such as primary/secondary, principal/agent, controller/worker" (a-z) | CONFIRMED both pages ban the term; the two pages disagree only on the replacement — added in the task-10 fix wave as `pattern` (detection-only), naming both candidates in its message rather than shipping neither direction. See "Self-contradictions" |
|
|
157
|
+
| `microsoft/cyberattack-spelling` | [militaristic-language](https://learn.microsoft.com/en-us/style-guide/militaristic-language) | "add cyber- in front of threat so it reads cyberthreat, all one word no space no hyphen" | CONFIRMED — spelling normalization only; the guide's separate "needs a qualifier in front of it" test is not mechanically decidable and is not enforced |
|
|
158
|
+
| `microsoft/no-derogatory-slang` | [bias-free](https://learn.microsoft.com/en-us/style-guide/bias-free-communication) | "Don't use profane or derogatory terms, such as pimp or bitch." / "spirit animal" | CONFIRMED, detection-only (no safe fixed replacement for any of these) |
|
|
159
|
+
| `microsoft/racial-ethnic-capitalization` | same | "Use title-style capitalization for Asian, Black and African American, Hispanic and Latinx..." | CONFIRMED, case-sensitive match (only genuinely-lowercase forms flagged); `white`/`multiracial` (which the guide says to LOWERCASE) deliberately excluded — a bare capitalized "White" collides constantly with unrelated proper nouns |
|
|
160
160
|
|
|
161
161
|
**Note on the militaristic-language word bundle:** the broader "kill chain /
|
|
162
162
|
blast radius / locked down / threat intel / defense-in-depth approach /
|
|
@@ -230,15 +230,15 @@ adjective-for-clause instead of verb-for-noun.
|
|
|
230
230
|
|
|
231
231
|
### UI verbs and checkbox/dialog terminology — `warn`
|
|
232
232
|
|
|
233
|
-
| Rule id
|
|
234
|
-
|
|
235
|
-
| `microsoft/no-click`
|
|
236
|
-
| `microsoft/press-key-verb`
|
|
237
|
-
| `microsoft/checkbox-verbs`
|
|
238
|
-
| `microsoft/dialog-terminology`
|
|
239
|
-
| `microsoft/mouse-over`
|
|
240
|
-
| `microsoft/keyboard-shortcut-plus-spacing` | [formatting-text-in-instructions](https://learn.microsoft.com/en-us/style-guide/procedures-instructions/formatting-text-in-instructions)
|
|
241
|
-
| `microsoft/sign-in-sign-out`
|
|
233
|
+
| Rule id | Source URL | Quote | Verdict |
|
|
234
|
+
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
235
|
+
| `microsoft/no-click` | [describing-interactions-with-ui](https://learn.microsoft.com/en-us/style-guide/procedures-instructions/describing-interactions-with-ui) | "Don't use input-specific verbs, such as click or swipe." | CONFIRMED — **the single sharpest divergence from `recheck/google`**, which allows "click". Anchored with a negative lookbehind/lookahead to exclude the hyphen-joined compounds `double-click`/`right-click` (a real substring risk: `\bclick\b` DOES match inside "double-click" once a hyphen precedes it, since a hyphen is a non-word character) and the unrelated compounds `clickstream`/`clickthrough`. Verified via a dedicated fix-safety test. |
|
|
236
|
+
| `microsoft/press-key-verb` | [a-z/hit](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/h/hit) | "Don't use press, depress, hit, or strike [to describe pressing a key]. Use select instead." | CONFIRMED, narrowly anchored to recognizable key-press phrasing (Enter/Tab/Esc/Delete/etc., or "the ... key") — bare "press"/"hit"/"strike" are far too polysemous (press releases, press charges, hit a milestone, strike a balance) to match unconditionally |
|
|
237
|
+
| `microsoft/checkbox-verbs` | [describing-interactions-with-ui](https://learn.microsoft.com/en-us/style-guide/procedures-instructions/describing-interactions-with-ui) | "Clear \| Clearing the selection from a checkbox." | CONFIRMED for `uncheck`/`unmark`/`unselect` → `clear`. Bare `check`/`deselect` deliberately excluded: "check" is extremely polysemous, and "deselect"'s replacement differs by UI-element type ("clear" for checkboxes, "cancel the selection" elsewhere) in a way a blind swap can't resolve |
|
|
238
|
+
| `microsoft/dialog-terminology` | [formatting-text-in-instructions](https://learn.microsoft.com/en-us/style-guide/procedures-instructions/formatting-text-in-instructions) | "Don't use pop-up window, dialog box, or dialogue box." | CONFIRMED |
|
|
239
|
+
| `microsoft/mouse-over` | [mouse-and-mouse-interaction-terms](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/mouse-and-mouse-interaction-terms) | "Don't use mouse over or move the mouse pointer to." | CONFIRMED (conditionally OK for beginner-skill content per the same page — low risk for reference documentation) |
|
|
240
|
+
| `microsoft/keyboard-shortcut-plus-spacing` | [formatting-text-in-instructions](https://learn.microsoft.com/en-us/style-guide/procedures-instructions/formatting-text-in-instructions) | "Don't put a space around the plus sign (+) in keyboard shortcuts." | CONFIRMED, detection-only — `swap` replacements are literal (Constraint 2), and the fix would need to reproduce whichever modifier key matched, which needs capture-group interpolation the engine does not support |
|
|
241
|
+
| `microsoft/sign-in-sign-out` | [log-on-log-off](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/l/log-on-log-off) | "Don't use log in, login, log into, log on... unless it appears in the UI (and you're writing instructions)." | CONFIRMED, `fix: false` — "login"/"logon" are frequently used as NOUNS or adjectives ("the login page", "your login credentials"), where "sign in" (a verb phrase) does not slot in grammatically. The guide's exception is also a two-part test (UI match AND instructions context) neither this nor the research draft attempts to model — flagged here as a known limitation, not silently dropped |
|
|
242
242
|
|
|
243
243
|
## Excluded candidates
|
|
244
244
|
|
|
@@ -275,29 +275,29 @@ Fix wave B / Step 6.3: every row below now carries its own source URL(s) —
|
|
|
275
275
|
the stated bar for this table is rule + URL + reason, and a reason without
|
|
276
276
|
a citation isn't verifiable by a future reader.
|
|
277
277
|
|
|
278
|
-
| Candidate
|
|
279
|
-
|
|
280
|
-
| `deprecated` → `obsolete`; `user` → `customer`; `client` (a person) → `customer`; `utility` → `tool`; `cursor`; `machine` → `computer`; `start` (an app) → `open`
|
|
281
|
-
| `freeze`/`frozen` (as system-hang synonyms)
|
|
282
|
-
| `header`/`head` → `heading`; `context menu` → `shortcut menu`; `disk` → `hard drive`; `directory` → `folder`; `field`/`entry field` → `box`; `attribute` (meaning property) → `property`; `issue` (meaning problem) → `problem` | Each has a common, correct, unrelated technical sense in API/developer documentation (HTTP header, context menu in a sample app, managed disk, working directory, JSON field, XML attribute, GitHub issue / "issue a token") that a blind match would corrupt.
|
|
283
|
-
| `radio button`, `scroll`, `Microsoft's` (possessive), x-multiplication, `shortcut key`
|
|
284
|
-
| `may` (ability modal)
|
|
285
|
-
| `that` (referring to people) → `who`
|
|
286
|
-
| `star` → `asterisk`
|
|
287
|
-
| `+` (plus sign, in text)
|
|
288
|
-
| `field`, `attribute`, `issue`
|
|
289
|
-
| `foo`/`foobar`/`fubar` (as placeholders)
|
|
290
|
-
| `Internet Service Provider`/`Key Performance Indicator` (C20 illustrative pairs)
|
|
291
|
-
| `API's`/`URL's`/`SDK's` → `APIs`/`URLs`/`SDKs` (C18)
|
|
292
|
-
| `property sheet`/`property page` → "dialog box or tab"; `application developer` → "software developer, web developer, developer, or programmer"
|
|
293
|
-
| Broader militaristic-language bundle (`kill chain`, `blast radius`, `locked down`, `threat intel`, `defense-in-depth approach`, `frontline analysts`, `first line of defense`)
|
|
294
|
-
| `corrupt`/`corrupted` (detection-only)
|
|
295
|
-
| C21 acronym first-mention expansion
|
|
296
|
-
| Broader "spell out & / + / ~ in prose" (A9)
|
|
297
|
-
| `no-possessive-product-names` (C16, "Don't use Microsoft's")
|
|
298
|
-
| `SMB` → "small or medium-sized business"
|
|
299
|
-
| `SKU` → "subscription, edition, version, or tier"
|
|
300
|
-
| `terminate` → "close"
|
|
278
|
+
| Candidate | Why excluded | Source(s) |
|
|
279
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
280
|
+
| `deprecated` → `obsolete`; `user` → `customer`; `client` (a person) → `customer`; `utility` → `tool`; `cursor`; `machine` → `computer`; `start` (an app) → `open` | Each carries an explicit or de-facto developer/technical-audience carve-out that directly applies to Redocly's own documentation — see "Additional tier-boundary findings" above. | [d/deprecated](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/d/deprecated), [u/user-end-user](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/u/user-end-user), [c/client](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/client), [u/utility](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/u/utility), [mouse-mouse-interaction-terms](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/mouse-mouse-interaction-terms), [computer-device-terms](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/computer-device-terms), [o/open](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/o/open) |
|
|
281
|
+
| `freeze`/`frozen` (as system-hang synonyms) | Sense-ambiguous: "freeze an account," "freeze a value," "deep freeze" are all common, unrelated, correct uses; the guide's own carve-out ("as a synonym for stop responding") names a specific sense a blind swap can't isolate. | [f/freeze-frozen](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/f/freeze-frozen) |
|
|
282
|
+
| `header`/`head` → `heading`; `context menu` → `shortcut menu`; `disk` → `hard drive`; `directory` → `folder`; `field`/`entry field` → `box`; `attribute` (meaning property) → `property`; `issue` (meaning problem) → `problem` | Each has a common, correct, unrelated technical sense in API/developer documentation (HTTP header, context menu in a sample app, managed disk, working directory, JSON field, XML attribute, GitHub issue / "issue a token") that a blind match would corrupt. | [h/header](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/h/header), [c/context-menu](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/context-menu), [d/disk](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/d/disk), [d/directory](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/d/directory), [f/field](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/f/field), [a/attribute](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/attribute), [i/issue](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/i/issue) |
|
|
283
|
+
| `radio button`, `scroll`, `Microsoft's` (possessive), x-multiplication, `shortcut key` | Tier-4/Tier-1 crossings — see Rule 0. | [r/radio-button](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/r/radio-button), [s/scroll](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/scroll), [m/microsoft](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/microsoft), [m/multiplication-sign](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/multiplication-sign), [keys-keyboard-shortcuts](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/keys-keyboard-shortcuts) |
|
|
284
|
+
| `may` (ability modal) | Homograph collision with the proper noun "May" (the month) — `ignoreCase: true` (needed to catch sentence-initial "May") would flag "released in May 2024" as a modal verb. | [c/can-may](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/can-may) |
|
|
285
|
+
| `that` (referring to people) → `who` | One of the most common words in English; only a small fraction of occurrences refer to people. A literal `swap` would be extraordinarily noisy; the guide's own quote scopes the objection to a use a `pattern`/`swap` can't isolate. | [w/who-vs-that](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/w/who-vs-that) |
|
|
286
|
+
| `star` → `asterisk` | Ordinary English word (star rating, star performer) with a narrow, Microsoft-documented exception (OK for a phone-keypad key) a blanket swap would miss in both directions. | [keys-keyboard-shortcuts](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/keys-keyboard-shortcuts) |
|
|
287
|
+
| `+` (plus sign, in text) | Single punctuation character; collides with `C++`, query strings, and ordinary arithmetic in code-adjacent prose. | [p/plus-sign](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/p/plus-sign) |
|
|
288
|
+
| `field`, `attribute`, `issue` | See row above — TOO-RISKY for Redocly's schema/API documentation specifically. | (same as above) |
|
|
289
|
+
| `foo`/`foobar`/`fubar` (as placeholders) | "OK to use... in content for a technical audience" — Redocly's docs qualify. | [f/foo-foobar-fubar](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/f/foo-foobar-fubar) |
|
|
290
|
+
| `Internet Service Provider`/`Key Performance Indicator` (C20 illustrative pairs) | The general principle (lowercase spelled-out acronym forms) is CONFIRMED, but these specific phrase pairs were not independently re-quoted as live-page examples by any verifier — dropped rather than shipped on the author's own unverified guess. | [acronyms](https://learn.microsoft.com/en-us/style-guide/acronyms) (general principle only; no per-phrase page exists to cite) |
|
|
291
|
+
| `API's`/`URL's`/`SDK's` → `APIs`/`URLs`/`SDKs` (C18) | The general "add lowercase s, not an apostrophe" principle is CONFIRMED, but a bare `[A-Z]{2,}'s` is frequently a legitimate POSSESSIVE ("the API's response"), not an attempted plural — verifier G's own note flags this exact ambiguity. Excluded entirely; only the unambiguous decade-plural case (`microsoft/no-apostrophe-plural-decade`) ships. | [acronyms](https://learn.microsoft.com/en-us/style-guide/acronyms) |
|
|
292
|
+
| `property sheet`/`property page` → "dialog box or tab"; `application developer` → "software developer, web developer, developer, or programmer" | Multiple, meaningfully different acceptable replacements — no single canonical swap target can be chosen without guessing which the guide's authors intended for a given context. | [p/property-sheet-property-page](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/p/property-sheet-property-page), [a/application-developer-app-developer](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/application-developer-app-developer) |
|
|
293
|
+
| Broader militaristic-language bundle (`kill chain`, `blast radius`, `locked down`, `threat intel`, `defense-in-depth approach`, `frontline analysts`, `first line of defense`) | See the note under "Bias-free, militaristic, derogatory language" above — content confirmed real, but no verifier independently quoted exact replacement text for each multi-word term, and the same page's "12 never-use terms" count was already shown to be wrong. | [militaristic-language](https://learn.microsoft.com/en-us/style-guide/militaristic-language) |
|
|
294
|
+
| `corrupt`/`corrupted` (detection-only) | Considered as a `pattern` fallback after ruling out the `swap` to "damaged"; ultimately not shipped at all — the guide's own instruction ("offer help fixing it if possible") is a request for an empathetic, context-dependent rewrite, not a term to flag mechanically. | [c/corrupted](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/corrupted) |
|
|
295
|
+
| C21 acronym first-mention expansion | See "Known limitations" #5. | [acronyms](https://learn.microsoft.com/en-us/style-guide/acronyms) |
|
|
296
|
+
| Broader "spell out & / + / ~ in prose" (A9) | NOISY in developer docs outside heading/list-item/alt scope (query strings, HTML entities, code-adjacent `&&`); the one high-value case (ampersands in HEADINGS specifically) is already covered by `microsoft/no-ampersand-in-headings`. | [headings](https://learn.microsoft.com/en-us/style-guide/scannable-content/headings) |
|
|
297
|
+
| `no-possessive-product-names` (C16, "Don't use Microsoft's") | **Not shippable at all**, conditionally or not — see below. | [m/microsoft](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/microsoft) |
|
|
298
|
+
| `SMB` → "small or medium-sized business" | Fix wave B / Step 4 drop, added here in fix wave C to give it a URL + reason row (it previously existed only in the narrative "Fix wave B / Step 4" prose below, which this table's own stated purpose — "why doesn't `recheck/microsoft` check X?" — doesn't cover). Bare, case-shouted acronym with a common, correct, unrelated technical sense in exactly Redocly's domain: SMB as the Server Message Block network protocol ("mount the SMB share"). No syntactic anchor distinguishes either sense — both are just the bare acronym in ordinary noun position. | [s/smb](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/smb) |
|
|
299
|
+
| `SKU` → "subscription, edition, version, or tier" | Fix wave B / Step 4 drop, same table-completeness reason as `SMB` above. Common, correct, unrelated e-commerce/inventory sense ("the SKU field") with no syntactic anchor separating it from Microsoft's intended sense. Carries a second, independent hazard even where the guide's sense IS intended: the guide names FOUR acceptable alternatives, not one, so no single canonical swap target exists either. | [s/sku](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/sku) |
|
|
300
|
+
| `terminate` → "close" | Fix wave B / Step 4 drop, same table-completeness reason as `SMB`/`SKU` above. "Terminate the instance/process/session/connection" is standard, correct cloud-infrastructure vocabulary throughout Redocly's own API-documentation domain (a genuine meaning change, not a false match: the guide's sense is "close an app or window"), and no reliable positional anchor separates that sense from the guide's UI sense the way `exit`'s determiner-based anchor does. | [t/terminate](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/t/terminate) |
|
|
301
301
|
|
|
302
302
|
Every URL in the "Source(s)" column above was re-verified live (`curl`,
|
|
303
303
|
HTTP 200) during this fix wave — see `sources.json` for the ones this
|
|
@@ -333,12 +333,12 @@ Redocly's own vocabulary, not something the Microsoft guide provides.
|
|
|
333
333
|
|
|
334
334
|
### NOT-ENFORCEABLE (real guide content, requires human judgment or structure Recheck doesn't have)
|
|
335
335
|
|
|
336
|
-
| Candidate
|
|
337
|
-
|
|
338
|
-
| V19-V22, V37-V39 (noun+verb contractions, active voice, subjunctive mood, verb-first sentences, modifier stacks, that/who omission, -ing word care)
|
|
336
|
+
| Candidate | Why excluded |
|
|
337
|
+
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
338
|
+
| V19-V22, V37-V39 (noun+verb contractions, active voice, subjunctive mood, verb-first sentences, modifier stacks, that/who omission, -ing word care) | Each requires POS tagging or grammatical-role judgment beyond regex/AST primitives. |
|
|
339
339
|
| C10 (second-level headings need ≥2 siblings), C11 (no two headings in a row), L4 (periods only on complete sentences), L5 (per-list punctuation consistency), L7 (list parallelism), T1 (table sentence-case — NOISY, reference tables are dense with identifiers/proper nouns), T4 ("Name" is a bad column header — NOISY, "Name" is genuinely correct in many API reference tables), T5/T6/T10 (table intro-sentence rules, minimum table dimensions), P3/P4/P6/P8/P9/P10-P12 (multiple-hyphens-for-dash, en-dash-for-minus, from/through ranges, closing-quote placement, mid-sentence colon rules, colon-before-block), N1/N2/N6/N7/N9/N11 (spell out 0-9, no sentence-initial numerals, no K/M/B abbreviation, comma grouping, spell out months, decimal leading zero) | Each is confirmed content, but every one carries either a documented exception too common to ignore (space-limited UI text, "if one item requires a numeral," page numbers/addresses/decimals) or needs structural context (paragraph→table/list/heading adjacency) Recheck's segment model doesn't expose — matching the research draft's own NOISY/NOT-ENFORCEABLE verdicts, independently re-confirmed rather than re-litigated. |
|
|
340
|
-
| U5 (don't name the UI element type unless it adds clarity), U8 (file extensions lowercase / device names uppercase), U9 (bold not italic for work titles), A7 (directional terms as the only clue to location), W1-W4 (URL formatting/bare-URL rules)
|
|
341
|
-
| S1-S4 (link fragments, fenced-code-language, single-H1, consistent bullet/fence/emphasis/table-pipe style)
|
|
340
|
+
| U5 (don't name the UI element type unless it adds clarity), U8 (file extensions lowercase / device names uppercase), U9 (bold not italic for work titles), A7 (directional terms as the only clue to location), W1-W4 (URL formatting/bare-URL rules) | "Unless it adds needed clarity" and "as the only clue" are judgment calls; the URL rules were separately judged too weakly cited (W4) or too noisy in a docs site full of real clickable links (W1/W2) to attribute to Microsoft specifically — available generically via `recheck/markdown`'s `no-bare-urls` if wanted. |
|
|
341
|
+
| S1-S4 (link fragments, fenced-code-language, single-H1, consistent bullet/fence/emphasis/table-pipe style) | The research draft itself labels these "House rule; no Microsoft statement" — no live-page citation exists for any of them, so none ship under a Microsoft attribution (unlike `recheck/google`, whose equivalent structural rules ARE independently Google-cited). |
|
|
342
342
|
|
|
343
343
|
## Deliberation and development history
|
|
344
344
|
|
|
@@ -358,13 +358,13 @@ research draft's config shipped five terms unconditionally at `error` while
|
|
|
358
358
|
those SAME five also appeared, verbatim, on its own Tier-4 "never enforce"
|
|
359
359
|
list:
|
|
360
360
|
|
|
361
|
-
| Term
|
|
362
|
-
|
|
363
|
-
| `execute`
|
|
364
|
-
| `reboot`
|
|
365
|
-
| `navigate`
|
|
366
|
-
| `ZIP Code`
|
|
367
|
-
| `disjoint selection` | "Don't use... except for a technical audience, and only if the term appears in the UI or API."
|
|
361
|
+
| Term | Live page carve-out |
|
|
362
|
+
| -------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
363
|
+
| `execute` | "Don't use except to follow the UI. Use run instead." |
|
|
364
|
+
| `reboot` | "If the UI or API uses reboot in a label... it's OK to refer to the label." |
|
|
365
|
+
| `navigate` | "You don't need to find an alternative to navigation when it's the most precise word in the context." |
|
|
366
|
+
| `ZIP Code` | "It's OK to use ZIP Code in content that's intended for a US audience only." |
|
|
367
|
+
| `disjoint selection` | "Don't use... except for a technical audience, and only if the term appears in the UI or API." |
|
|
368
368
|
|
|
369
369
|
None of the five ship. Their siblings sharing the exact same conditional
|
|
370
370
|
sentence (`contiguous selection`, `nonadjacent selection`, `noncontiguous
|
|
@@ -372,13 +372,13 @@ selection` — same sentence as `disjoint selection`) are excluded too.
|
|
|
372
372
|
|
|
373
373
|
#### The five additional mis-filed entries the corrections doc flagged for evaluation
|
|
374
374
|
|
|
375
|
-
| Term
|
|
376
|
-
|
|
377
|
-
| `shortcut key`
|
|
378
|
-
| `radio button`
|
|
379
|
-
| `scroll`
|
|
380
|
-
| x-multiplication (`x` → `×`)
|
|
381
|
-
| `Microsoft's` (possessive ban) | "Exception: it's OK to use Microsoft's occasionally when referring to the company itself" — with the guide's own worked example, "Microsoft's privacy policies."
|
|
375
|
+
| Term | Carve-out found | Disposition |
|
|
376
|
+
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
377
|
+
| `shortcut key` | Bundled in the same Tier-1 row as `accelerator key, fast key, hot key, quick key, speed key`, but `keys-keyboard-shortcuts` grants it, alone, the identical developer-audience carve-out already accepted for `access key` (correctly Tier 4). | Removed from the row; `accelerator key`/`fast key`/`hot key`/`quick key`/`speed key` still ship (no carve-out for those). |
|
|
378
|
+
| `radio button` | "Use radio button **only** in content for developers in which the API includes the term." | Excluded entirely. |
|
|
379
|
+
| `scroll` | "It's OK to use scroll in content that teaches beginning skills." | Excluded entirely. |
|
|
380
|
+
| x-multiplication (`x` → `×`) | "Use an asterisk (\*) **if you need to match the UI**" — Tier 4's own defining phrase, verbatim. Also SUBSTRING-RISK (bare `x` collides with `x-axis`/`x-ray`/`x-coordinate`, all hyphen-joined so `\bx\b` DOES match inside them). | Excluded entirely (double reason). |
|
|
381
|
+
| `Microsoft's` (possessive ban) | "Exception: it's OK to use Microsoft's occasionally when referring to the company itself" — with the guide's own worked example, "Microsoft's privacy policies." | Excluded entirely — see "C16" above; not shippable at all, conditional or not (see reasoning). |
|
|
382
382
|
|
|
383
383
|
#### Additional tier-boundary findings made while authoring (beyond the ten above)
|
|
384
384
|
|
|
@@ -387,19 +387,19 @@ rows that were not individually named by the corrections doc but share the
|
|
|
387
387
|
identical shape. Found by re-reading the verifier tables while authoring,
|
|
388
388
|
not pre-flagged:
|
|
389
389
|
|
|
390
|
-
| Term
|
|
391
|
-
|
|
392
|
-
| `deprecated` → `obsolete`
|
|
393
|
-
| `and/or` → `or`
|
|
394
|
-
| `freeze`/`frozen`
|
|
395
|
-
| `user` → `customer`/`person`/etc.
|
|
396
|
-
| `cursor` (as opposed to `insertion point`)
|
|
397
|
-
| `machine` → `computer`
|
|
398
|
-
| `foo, foobar, fubar`
|
|
399
|
-
| `client` (a person) → `customer`
|
|
400
|
-
| `utility` → `tool`
|
|
401
|
-
| `start` (an app) → `open`
|
|
402
|
-
| `deinstall`, `machine`, `user`, `client`, `utility` cross-checked against Redocly's own domain vocabulary | —
|
|
390
|
+
| Term | Carve-out | Disposition |
|
|
391
|
+
| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
392
|
+
| `deprecated` → `obsolete` | "Avoid in content for a **technical audience**. Don't use in content for a general audience." | **Excluded.** Redocly's docs are technical-audience API documentation, and "deprecated" is itself load-bearing OpenAPI vocabulary (the `deprecated: true` field). Shipping this unconditionally would misfire on Redocly's own domain, the same shape as `header`/`context menu`/`disk`/`directory` below. |
|
|
393
|
+
| `and/or` → `or` | "Don't use **unless it helps you avoid lengthy, complex wording**." | Excluded (not in the shipped word list). |
|
|
394
|
+
| `freeze`/`frozen` | "Don't use freeze **as a synonym for stop responding**" — i.e. only in that one sense; "freeze" has many unrelated senses (freeze an account, freeze a value). | Excluded from `az-state-failure`. **Correction (fix wave B / Step 9):** this row previously said "not verifier-flagged" — false. Verifier G:76 marks it `CONFIRMED (cond.)` with the exact quote above; the exclusion is a real, verifier-confirmed sense-ambiguity call (the same class as `marquee`, which verifier H explicitly calls "context-flipped"), not an unflagged author guess. |
|
|
395
|
+
| `user` → `customer`/`person`/etc. | "It's OK to use user in content for **developers**." | Excluded — Redocly's docs are developer content, and "user" is one of the most common words in any documentation. |
|
|
396
|
+
| `cursor` (as opposed to `insertion point`) | "Use cursor only for a **technical audience**." | Only `insertion point` → `pointer` ships (unconditional per the same page); bare `cursor` excluded. |
|
|
397
|
+
| `machine` → `computer` | "It's OK to use machine in content for a **technical audience** and... virtualization." | Excluded — "virtual machine", "state machine", "build machine" are all extremely common in Redocly's domain. |
|
|
398
|
+
| `foo, foobar, fubar` | "OK to use these words as placeholders... in content for a **technical audience**." | Excluded (Redocly's docs qualify). |
|
|
399
|
+
| `client` (a person) → `customer` | Not marked `(cond.)` by the verifier — G:93 states it plainly ("Don't use client to refer to a person. Use customer instead."), no carve-out at all. | Excluded anyway (see the fix-wave-B note directly below — this is a considered "anchoring isn't reliable" call, not silent inference). |
|
|
400
|
+
| `utility` → `tool` | Not marked `(cond.)` either — H:55 is also unconditional ("Use tool, not utility, to describe a feature..."). | Excluded anyway (same fix-wave-B note). |
|
|
401
|
+
| `start` (an app) → `open` | Not marked `(cond.)` — G:89 bundles it with `launch` under one unconditional CONFIRMED row. The row bundles `launch, start (an app), boot`; "start" alone is one of the most common words in English with countless unrelated correct senses (start a server, start a request, from the start). | Excluded; only `launch` → `open` and `boot` → `turn on` ship from this row. |
|
|
402
|
+
| `deinstall`, `machine`, `user`, `client`, `utility` cross-checked against Redocly's own domain vocabulary | — | See individual rows above. |
|
|
403
403
|
|
|
404
404
|
**Fix wave B / Step 8 — these three are inference, not a documented guide
|
|
405
405
|
exception, and that distinction matters.** Unlike `header`/`context
|
|
@@ -449,28 +449,28 @@ the developer/API-documentation audience Redocly serves. **None of the four
|
|
|
449
449
|
ship**, unconditionally or otherwise — running this preset on Redocly's own
|
|
450
450
|
docs must not flag any of them:
|
|
451
451
|
|
|
452
|
-
| Term
|
|
453
|
-
|
|
454
|
-
| `header` (meaning heading) → `heading`
|
|
455
|
-
| `context menu` → `shortcut menu`
|
|
456
|
-
| `disk`/`fixed disk`/`hard disk`/`disk drive` → `hard drive` | "Use disk only in the context of Azure cloud storage and virtual machines" — extremely common, correct in cloud/infra API docs.
|
|
457
|
-
| `directory` → `folder`
|
|
452
|
+
| Term | Carve-out |
|
|
453
|
+
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
454
|
+
| `header` (meaning heading) → `heading` | Microsoft's own page confirms "it's OK to use header as a short form of file header, as in HTML header" — the standard, correct term for an HTTP/API request/response header throughout API documentation. |
|
|
455
|
+
| `context menu` → `shortcut menu` | "Use context menu only in content for developers." |
|
|
456
|
+
| `disk`/`fixed disk`/`hard disk`/`disk drive` → `hard drive` | "Use disk only in the context of Azure cloud storage and virtual machines" — extremely common, correct in cloud/infra API docs. |
|
|
457
|
+
| `directory` → `folder` | "Use directory only in content for developers... to match the API" — CLI paths, working directory, root directory. |
|
|
458
458
|
|
|
459
459
|
`microsoft-clean.md` includes a paragraph using all four terms in exactly
|
|
460
460
|
this developer sense, and the test suite asserts zero findings on it.
|
|
461
461
|
|
|
462
462
|
### Section 3 — wrong, inverted, and non-guidance entries corrected
|
|
463
463
|
|
|
464
|
-
| Entry
|
|
465
|
-
|
|
466
|
-
| `shaded`
|
|
467
|
-
| `boot` → `open`
|
|
468
|
-
| `corrupt`/`corrupted` → `damaged` | Not guidance — the source asks for an empathetic sentence **rewrite** ("Try to use a more empathetic statement... offer help"); its own worked example never uses "damaged".
|
|
469
|
-
| `invalid` → `not valid`
|
|
470
|
-
| "afflicted with" (Tier 2)
|
|
471
|
-
| `ToolTip` regex (Tier 3)
|
|
472
|
-
| Row-1452 "(all don't use)" bundle | **Under-shipped.** The draft filed the whole bundle as detection-only; six of its members have an explicit, single-value replacement stated on their own page.
|
|
473
|
-
| Tier 2 accessibility table
|
|
464
|
+
| Entry | Problem found | Resolution |
|
|
465
|
+
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
466
|
+
| `shaded` | **Inverted.** The draft bundled it into an avoid-term row (`gray, grayed out, dimmed, shaded, unavailable, disabled`); the live pages state Microsoft **recommends** "shaded" for the appearance of a checkbox representing a mixture of settings. | `shaded` does not appear anywhere in this preset, in either direction. **Nor does the rest of that row** — no `grayed out` or `dimmed` rule ships here either (an earlier revision of this table claimed one did; it never existed). `recheck/inclusive-language` covers `grayed out` → `unavailable`, sourced from Google. |
|
|
467
|
+
| `boot` → `open` | Wrong direction AND target. Live page: _"Don't use as a verb. Use turn on to refer to turning on power to a device."_ | Shipped separately as `boot` → `turn on` (`microsoft/az-lifecycle-verbs`), not bundled with `launch`/`open`. |
|
|
468
|
+
| `corrupt`/`corrupted` → `damaged` | Not guidance — the source asks for an empathetic sentence **rewrite** ("Try to use a more empathetic statement... offer help"); its own worked example never uses "damaged". | Not shipped as a swap. (Detection-only was considered and also dropped for scope reasons — see "Excluded candidates".) |
|
|
469
|
+
| `invalid` → `not valid` | Soft preference: _"Both terms are OK to use, but try to use more specific terms instead"_ — a machine-translation-safety tip, not a "never use" rule. | Not shipped. |
|
|
470
|
+
| "afflicted with" (Tier 2) | **Fabricated** — appears nowhere on the live `accessibility-terms` page; the actual Row 5 avoid-list is "Affected by, stricken with, suffers from, a victim of, an epileptic." | Not shipped anywhere. `affected by`/`stricken with`/`suffers from`/`a victim of` (the real Row 5 terms, minus "an epileptic", which needs a sentence rewrite no pattern/swap can safely target) ship in `microsoft/accessibility-terms`. |
|
|
471
|
+
| `ToolTip` regex (Tier 3) | Config-mechanics bug: a shared `ignoreCase: true` flag on the combined "tool tip"/"ToolTip" pattern made the "ToolTip"-only branch also match the already-correct lowercase "tooltip". | `microsoft/tooltip-capitalization` ships as its OWN case-sensitive (`ignoreCase: false`) rule, separate from `microsoft/spelling-hyphenation`'s case-insensitive "tool tip" (spacing) pattern. |
|
|
472
|
+
| Row-1452 "(all don't use)" bundle | **Under-shipped.** The draft filed the whole bundle as detection-only; six of its members have an explicit, single-value replacement stated on their own page. | `friendly name` → `display name`, `print queue`/`printer queue` → `list of documents`, `data record` → `record`, `e-form` → `form`, `upsize` → `scale up` ship in `microsoft/az-real-replacements` (plus `working memory`, `soft copy`, `print out`, `search and replace`, `target drive`/`target file`, which had replacements but weren't singled out by the corrections doc). `property sheet`/`property page` (multi-option: "dialog box or tab") and `application developer` (four very different alternatives: "software developer, web developer, developer, or programmer") are excluded — no single canonical replacement can be chosen without guessing which the guide's authors intended. |
|
|
473
|
+
| Tier 2 accessibility table | **Three crossed pairings.** The draft merged two separate live rows into one, producing wrong swap targets: `handicapped` → `person with a disability` (wrong; that word belongs to Row 3, whose target is "person with limited mobility..."); `differently abled` → `person with a disability` (wrong; Row 9's target is "person with cognitive disabilities, developmental disabilities, learning disabilities, or dyslexia"). | See "Tier 2 design" below — resolved by shipping **detection-only**, sidestepping the wrong-target risk entirely rather than attempting to re-derive every row's exact target from partial verifier quotes. |
|
|
474
474
|
|
|
475
475
|
### Self-contradictions — enforced in NEITHER direction (three), plus one escalated
|
|
476
476
|
|
|
@@ -481,12 +481,12 @@ the task-10 fix wave to ship detection-only — see the dedicated subsection
|
|
|
481
481
|
below the table. Both citations for all four are recorded here regardless,
|
|
482
482
|
per the task's instruction:
|
|
483
483
|
|
|
484
|
-
| Case
|
|
485
|
-
|
|
486
|
-
| **`%` vs. spelled-out "percent"**
|
|
487
|
-
| **`master/slave` replacement target** — ESCALATED, ships detection-only, see below | [bias-free](https://learn.microsoft.com/en-us/style-guide/bias-free-communication): "primary/subordinate ← master/slave"
|
|
488
|
-
| **`etc.`**
|
|
489
|
-
| **Forced line breaks**
|
|
484
|
+
| Case | Page A | Page B |
|
|
485
|
+
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
486
|
+
| **`%` vs. spelled-out "percent"** | [numbers](https://learn.microsoft.com/en-us/style-guide/numbers) (`ms.date` 2022-05-13): "Use a numeral plus percent to specify a percentage." | [a-z/percent-percentage](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/p/percent-percentage) (`ms.date` 2023-11-15, newer): "Use the percent sign (\"%\") with numerals, rather than spelling out \"percent.\"" |
|
|
487
|
+
| **`master/slave` replacement target** — ESCALATED, ships detection-only, see below | [bias-free](https://learn.microsoft.com/en-us/style-guide/bias-free-communication): "primary/subordinate ← master/slave" | [a-z/master-slave](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/m/master-slave): "Don't use master/slave. Use primary/replica or alternatives such as primary/secondary, principal/agent, controller/worker" — and separately rejects `primary/subordinate` as a synonym for parent/child. |
|
|
488
|
+
| **`etc.`** | [use-us-spelling](https://learn.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words): "It's OK to use etc., in situations where space is limited." | [a-z/etc](https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/e/etc): "Don't use. Instead be specific. When space is limited, use such as or like." |
|
|
489
|
+
| **Forced line breaks** | [writing-all-abilities](https://learn.microsoft.com/en-us/style-guide/accessibility/writing-all-abilities): "Don't force line breaks... within sentences and paragraphs." | [headings](https://learn.microsoft.com/en-us/style-guide/scannable-content/headings): "Break two-line headings carefully... (Shift + Enter inserts a manual line break)." |
|
|
490
490
|
|
|
491
491
|
Also note: `via` is dropped from the Latin-abbreviation swap list on
|
|
492
492
|
verifier E's own recommendation ("Could not independently confirm 'via'
|
|
@@ -526,12 +526,12 @@ Shipping a `metric` rule under a Microsoft citation would misattribute an
|
|
|
526
526
|
invented numeric mandate. Instead, this preset ships the guide's own real
|
|
527
527
|
structural numbers:
|
|
528
528
|
|
|
529
|
-
| Rule
|
|
530
|
-
|
|
531
|
-
| `microsoft/paragraph-length` | `length`, `unit: sentences`, `max: 7`
|
|
532
|
-
| `microsoft/list-length`
|
|
533
|
-
| `microsoft/comma-density`
|
|
534
|
-
| `microsoft/alt-text-length`
|
|
529
|
+
| Rule | Assertion | Guide's number | Source |
|
|
530
|
+
| ---------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
531
|
+
| `microsoft/paragraph-length` | `length`, `unit: sentences`, `max: 7` | "Three to seven lines is about the right length for a paragraph." | [scannable-content](https://learn.microsoft.com/en-us/style-guide/scannable-content/) |
|
|
532
|
+
| `microsoft/list-length` | `list-length`, `min: 2, max: 7` | "at least two items but (if possible) no more than seven items" | [lists](https://learn.microsoft.com/en-us/style-guide/scannable-content/lists) |
|
|
533
|
+
| `microsoft/comma-density` | `occurrence`, pattern `,`, `max: 2`, `scope: sentence` | "If a sentence contains more than a comma or two and ending punctuation, consider rewriting it" | [punctuation](https://learn.microsoft.com/en-us/style-guide/punctuation/) |
|
|
534
|
+
| `microsoft/alt-text-length` | `length`, `unit: characters`, `max: 150`, `scope: alt` | "Limit the length to 150 characters." | [alternative-text](https://learn.microsoft.com/en-us/style-guide/accessibility/alternative-text) |
|
|
535
535
|
|
|
536
536
|
**Two deliberate deviations from the brief's literal numbers, both found
|
|
537
537
|
empirically while building this preset's own clean fixture, both discussed
|
|
@@ -887,24 +887,24 @@ already-correct `favorite` spelling too) narrowed to `favourite` only.
|
|
|
887
887
|
|
|
888
888
|
#### Step 4 — ~15 Tier-1 pairs no longer rewrite correct prose
|
|
889
889
|
|
|
890
|
-
| Pair
|
|
891
|
-
|
|
892
|
-
| `SMB` → `small or medium-sized business`
|
|
893
|
-
| `SKU` → `edition`
|
|
894
|
-
| `terminate` → `close`
|
|
895
|
-
| `exit` → `close`
|
|
896
|
-
| `launch` → `open`
|
|
897
|
-
| `boot` → `turn on`
|
|
898
|
-
| `crash` → `fail`
|
|
899
|
-
| `lock up` → `fail`
|
|
900
|
-
| `hangs`/`hang` → `stops responding`/`stop responding` | **Anchored, stays fixable**
|
|
901
|
-
| `roman` → `regular type`
|
|
902
|
-
| `italics`/`italicized` → `italic`
|
|
903
|
-
| `blade` → `pane`
|
|
904
|
-
| `beta` → `preview`
|
|
905
|
-
| `visit` → `go to`
|
|
906
|
-
| `in addition` → `also`
|
|
907
|
-
| `print out` → `print`
|
|
890
|
+
| Pair | Disposition | Reasoning |
|
|
891
|
+
| ----------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
892
|
+
| `SMB` → `small or medium-sized business` | **Dropped** | Homograph with the Server Message Block protocol, common in exactly Redocly's domain ("mount the SMB share"); no positional anchor distinguishes the senses. |
|
|
893
|
+
| `SKU` → `edition` | **Dropped** | `SKU` is standard e-commerce/inventory vocabulary in API docs; also carried an independent ALL-CAPS-shout hazard (single-word replacement) and a multi-target guide quote (subscription/edition/version/tier). |
|
|
894
|
+
| `terminate` → `close` | **Dropped** | "Terminate the instance/process/session" is standard, correct cloud-infrastructure vocabulary in Redocly's own domain — a genuine meaning change, not a false match, with no reliable anchor. |
|
|
895
|
+
| `exit` → `close` | **Anchored, stays fixable** | Lookaround excludes preceding "the/an/no/emergency" and following "code/status/button/sign/strategy/interview/poll/ramp/velocity/row" (noun-compound senses). |
|
|
896
|
+
| `launch` → `open` | **Anchored, stays fixable** | Excludes preceding "product/software/game/website/app/feature/rocket/mission" and following "date/event/party/window/site/pad/day/plan/schedule/announcement". |
|
|
897
|
+
| `boot` → `turn on` | **Anchored, stays fixable** | Excludes following "disk/sector/loader/sequence/process/time/options/record/partition/menu/order/camera". |
|
|
898
|
+
| `crash` → `fail` | **Moved to detection-only** (`az-state-failure-detect`) | G:73 gives a hardware/software target split ("fail" vs. "stop responding") a single `swap` replacement can't express; also anchored against "crash dump/report/log/course/test/site". |
|
|
899
|
+
| `lock up` → `fail` | **Moved to detection-only** (`az-state-failure-detect`) | Same hardware/software split (G:77). |
|
|
900
|
+
| `hangs`/`hang` → `stops responding`/`stop responding` | **Anchored, stays fixable** | Excludes "hang(s) on/up/around/out/together" (retain, end a call, loiter — unrelated phrasal verbs). |
|
|
901
|
+
| `roman` → `regular type` | **Anchored, stays fixable** | Excludes the civilization/proper-noun sense ("Roman numerals/Empire/alphabet/calendar/..."), a homograph collision of the `aka`-inside-`Akamai` shape. |
|
|
902
|
+
| `italics`/`italicized` → `italic` | **Moved to detection-only** (`microsoft/italic-as-noun`) | The guide's own rule ("use only as an adjective, not a noun") makes a direct swap ungrammatical in exactly the position the avoid-term occupies — the same class as `actionable`. |
|
|
903
|
+
| `blade` → `pane` | **Anchored, stays fixable** | Excludes following "server(s)/enclosure/chassis/center(s)/centre(s)" (physical hardware sense). |
|
|
904
|
+
| `beta` → `preview` | **Anchored, stays fixable** | Excludes following "distribution/function/coefficient/particle/blocker/decay" (statistical/physics/medical senses). |
|
|
905
|
+
| `visit` → `go to` | **Anchored, stays fixable** | Excludes following "count(s)/duration/frequency/history/log/data" (analytics-metric noun sense). |
|
|
906
|
+
| `in addition` → `also` | **Anchored, stays fixable** | Excludes following "to" (the standard, grammatically necessary preposition phrase "in addition to X", distinct from the guide's stand-alone-adverb target). |
|
|
907
|
+
| `print out` → `print` | **Anchored, stays fixable** | Excludes following "of" (noun sense — "a print out of X" — distinct from the guide's verb-scoped rule). |
|
|
908
908
|
|
|
909
909
|
#### Step 5 — the "CONFIRMED unconditional" comment corrected
|
|
910
910
|
|
|
@@ -916,17 +916,17 @@ contradicted it; each was moved to a `*-detect` `pattern` sibling,
|
|
|
916
916
|
- **Moved to detection-only:** `quit`/`deinstall`/`reinitialize`
|
|
917
917
|
(`az-lifecycle-verbs-detect`; G:88 multi-target, G:156/H:52 "(cond.)"),
|
|
918
918
|
`crash`/`lock up` (`az-state-failure-detect`; Step 4), `bottom
|
|
919
|
-
|
|
919
|
+
left`/`bottom right` (`az-direction-layout-detect`; G:106, the
|
|
920
920
|
BottomLeft/BottomRight API-property carve-out), `thank you`
|
|
921
921
|
(`az-geography-detect`; H:62), `hierarchical menu`/`secondary
|
|
922
|
-
|
|
922
|
+
menu`/`running head`/`running foot` (`az-ui-nouns-detect`; G:146/H:93),
|
|
923
923
|
`pound sign` (`az-abbreviations-names-detect`; H:115).
|
|
924
924
|
- **`fix: false`:** `left-hand`/`right-hand` (new rule
|
|
925
925
|
`microsoft/left-hand-right-hand`; G:108 marks these DETECT-ONLY outright
|
|
926
926
|
— no replacement is stated on the live page for the modifier sense, so
|
|
927
927
|
shipping one fixable was itself the defect).
|
|
928
928
|
- **Already detection-only, no change needed:** `backbone`/`natural user
|
|
929
|
-
|
|
929
|
+
interface` (G:187/G:190) already ship as `pattern` in
|
|
930
930
|
`microsoft/az-no-replacement`. `indices` is excluded entirely (see Step
|
|
931
931
|
5's own TOO-RISKY note below), so its math-carve-out marker (G:168) never
|
|
932
932
|
reached a shipped pair either.
|
|
@@ -941,38 +941,38 @@ instead of unconditionally.
|
|
|
941
941
|
(16 rules pre-wave, more after Step 4/5 added new rules) now cites the
|
|
942
942
|
real, live, term-specific page for one of its pairs (verified via
|
|
943
943
|
`curl`, HTTP 200, for every one — see the table below). `microsoft/
|
|
944
|
-
|
|
944
|
+
mouse-over`'s slug carried a spurious "-and-"
|
|
945
945
|
(`mouse-and-mouse-interaction-terms`, 404) corrected to
|
|
946
946
|
`mouse-mouse-interaction-terms` (200) — verifier G's own fetch log
|
|
947
947
|
named the correct slug at G:200; the verifier never cited the broken
|
|
948
948
|
form itself.
|
|
949
949
|
|
|
950
|
-
| Rule
|
|
951
|
-
|
|
952
|
-
| `spelling-hyphenation`
|
|
953
|
-
| `az-case-only`
|
|
954
|
-
| `az-verb-able`
|
|
955
|
-
| `az-state-failure`
|
|
956
|
-
| `az-state-failure-detect`
|
|
957
|
-
| `az-lifecycle-verbs`
|
|
958
|
-
| `az-lifecycle-verbs-detect`
|
|
959
|
-
| `az-judgment-words`
|
|
960
|
-
| `az-geography`
|
|
961
|
-
| `az-geography-detect`
|
|
962
|
-
| `az-direction-layout`
|
|
963
|
-
| `az-direction-layout-detect`
|
|
964
|
-
| `left-hand-right-hand`
|
|
965
|
-
| `az-ui-nouns`
|
|
966
|
-
| `az-ui-nouns-detect`
|
|
967
|
-
| `az-typography`
|
|
968
|
-
| `az-filesystem`
|
|
969
|
-
| `az-grammar-usage`
|
|
970
|
-
| `az-abbreviations-names`
|
|
971
|
-
| `az-abbreviations-names-detect` | `n/number-sign`
|
|
972
|
-
| `az-navigation`
|
|
973
|
-
| `bookmark-favorite`
|
|
974
|
-
| `az-no-replacement`
|
|
975
|
-
| `az-real-replacements`
|
|
950
|
+
| Rule | New link slug |
|
|
951
|
+
| ------------------------------- | ------------------------------ |
|
|
952
|
+
| `spelling-hyphenation` | `e/email` |
|
|
953
|
+
| `az-case-only` | `i/internet-intranet-extranet` |
|
|
954
|
+
| `az-verb-able` | `b/blacklist` |
|
|
955
|
+
| `az-state-failure` | `h/hang` |
|
|
956
|
+
| `az-state-failure-detect` | `c/crash` |
|
|
957
|
+
| `az-lifecycle-verbs` | `b/boot` |
|
|
958
|
+
| `az-lifecycle-verbs-detect` | `q/quit` |
|
|
959
|
+
| `az-judgment-words` | `f/finalize` |
|
|
960
|
+
| `az-geography` | `f/far-east` |
|
|
961
|
+
| `az-geography-detect` | `t/thanks-thank-you` |
|
|
962
|
+
| `az-direction-layout` | `f/far-left-far-right` |
|
|
963
|
+
| `az-direction-layout-detect` | `b/bottom-left-bottom-right` |
|
|
964
|
+
| `left-hand-right-hand` | `l/left-leftmost-left-hand` |
|
|
965
|
+
| `az-ui-nouns` | `b/blade` |
|
|
966
|
+
| `az-ui-nouns-detect` | `h/hierarchical-menu` |
|
|
967
|
+
| `az-typography` | `r/roman` |
|
|
968
|
+
| `az-filesystem` | `c/child-folder` |
|
|
969
|
+
| `az-grammar-usage` | `a/as-well-as` |
|
|
970
|
+
| `az-abbreviations-names` | `h/hexadecimal` |
|
|
971
|
+
| `az-abbreviations-names-detect` | `n/number-sign` |
|
|
972
|
+
| `az-navigation` | `v/visit` |
|
|
973
|
+
| `bookmark-favorite` | `b/bookmark` |
|
|
974
|
+
| `az-no-replacement` | `b/black-box` |
|
|
975
|
+
| `az-real-replacements` | `f/friendly-name` |
|
|
976
976
|
|
|
977
977
|
All 60 distinct URLs this preset's rules now cite were verified live
|
|
978
978
|
(`curl -A "Mozilla/5.0..."`) at HTTP 200 as of 2026-07-30.
|
|
@@ -1016,13 +1016,13 @@ polysemous for any anchor to meaningfully narrow).
|
|
|
1016
1016
|
|
|
1017
1017
|
- `case-preserve.ts`'s "KNOWN EDGE" note claimed no shipped pair hit the
|
|
1018
1018
|
hyphen/dot-joined-replacement shouting gap — false; `spelling-
|
|
1019
|
-
|
|
1019
|
+
hyphenation`'s `ecommerce`→`e-commerce`/`elearning`→`e-learning`/
|
|
1020
1020
|
`ebook`→`e-book` all do (comment corrected, no behavior change).
|
|
1021
1021
|
- `az-case-only`'s claim that all 17 pairs would "silently no-op" was
|
|
1022
1022
|
verified against the live `applyMatchCase` function directly (not
|
|
1023
1023
|
re-reasoned by eye): true for only 7 (`Internet`, `Intranet`,
|
|
1024
1024
|
`Extranet`, `Euro`, `WWW`, `Registry`, `Spam`). The other 10 (`Big
|
|
1025
|
-
|
|
1025
|
+
Data`, `Dark Mode`, `darkmode`, `Devops`, `devops`, `bluetooth`,
|
|
1026
1026
|
`boolean`, `Javascript`, `javascript`, `World Wide Web`) now ship
|
|
1027
1027
|
fixable in a new rule, `microsoft/az-case-fixable`, instead of
|
|
1028
1028
|
reporting forever for no reason.
|
|
@@ -1053,18 +1053,18 @@ one rule family nobody had named (`az-grammar-usage`) and found two more
|
|
|
1053
1053
|
corrupting pairs — both marked plain `CONFIRMED` by a verifier, with the
|
|
1054
1054
|
correct quote attached:
|
|
1055
1055
|
|
|
1056
|
-
- `as well as` → `and`: a/as-well-as says
|
|
1057
|
-
and"
|
|
1056
|
+
- `as well as` → `and`: a/as-well-as says _"Don't use as a synonym for
|
|
1057
|
+
and"_ — a caution against treating the two as interchangeable, not an
|
|
1058
1058
|
instruction to replace the text.
|
|
1059
1059
|
- `or greater`/`or higher`/`or lower` → `or later`/`or earlier`:
|
|
1060
|
-
g/greater-better and h/higher scope this to
|
|
1061
|
-
versions of programs or apps"
|
|
1060
|
+
g/greater-better and h/higher scope this to _"identifying multiple
|
|
1061
|
+
versions of programs or apps"_ — a version-number rule, not a
|
|
1062
1062
|
general-magnitude rule.
|
|
1063
1063
|
|
|
1064
1064
|
#### The root cause, restated precisely
|
|
1065
1065
|
|
|
1066
|
-
A `CONFIRMED` verdict means
|
|
1067
|
-
It does **not** mean
|
|
1066
|
+
A `CONFIRMED` verdict means _the live page genuinely discusses this term_.
|
|
1067
|
+
It does **not** mean _a blind textual substitution of that term is safe_.
|
|
1068
1068
|
Those are two different properties, and this task's verification passes
|
|
1069
1069
|
(E/F/G/H/accessibility) only ever checked the first one. Fixing the two
|
|
1070
1070
|
named pairs without addressing the conflation would have left the rest of
|
|
@@ -1085,18 +1085,18 @@ all HTTP 200.
|
|
|
1085
1085
|
|
|
1086
1086
|
**10 pairs reclassified** from fixable to detection-only or `fix: false`:
|
|
1087
1087
|
|
|
1088
|
-
| Pair
|
|
1089
|
-
|
|
1090
|
-
| `as well as` → `and`
|
|
1091
|
-
| `or greater` → `or later`
|
|
1092
|
-
| `or higher` → `or later`
|
|
1093
|
-
| `or lower` → `or earlier`
|
|
1094
|
-
| `leverage`/`leveraging`/`leveraged` → `use`/`using`/`used` | `microsoft/leverage`, `fix: false`
|
|
1095
|
-
| `glyph` → `symbol`
|
|
1096
|
-
| `de facto` → `in practice`
|
|
1097
|
-
| `ad hoc` → `as needed`
|
|
1098
|
-
| `vis-a-vis` → `compared with`
|
|
1099
|
-
| `visit` → `go to`
|
|
1088
|
+
| Pair | Rule (before → after) | Guidance shape (live quote) | Why unsafe as a blind swap |
|
|
1089
|
+
| ---------------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1090
|
+
| `as well as` → `and` | `az-grammar-usage` → `az-grammar-usage-detect` (`pattern`) | "Don't use **as a synonym for** and." | Caution against conflation, not an instruction to replace — "As well as being fast, the API is reliable." → "And being fast, the API is reliable." is not grammatical; "and" can't head a sentence the way a subordinating phrase can. |
|
|
1091
|
+
| `or greater` → `or later` | `az-grammar-usage` → `az-grammar-usage-detect` | "Don't use greater or better to mean or later **when identifying multiple versions of programs or apps**." | Scoped to version numbers; "a score of 80 or greater" → "a score of 80 or later" is nonsensical for a magnitude. |
|
|
1092
|
+
| `or higher` → `or later` | `az-grammar-usage` → `az-grammar-usage-detect` | Same page, PLUS: "It's OK to use higher to refer to **display resolution**. Don't use higher to refer to **processor speed**. Use **faster** instead." | Scoped to version numbers AND multi-target (resolution: unchanged; processor speed: "faster"; version: "later") — no single literal replacement covers all three senses the live page itself names. |
|
|
1093
|
+
| `or lower` → `or earlier` | `az-grammar-usage` → `az-grammar-usage-detect` | "Don't use **to indicate product version numbers**. Use earlier instead." | Same version-number scoping; "lower" is an ordinary magnitude word (price, temperature, priority) in every other context. |
|
|
1094
|
+
| `leverage`/`leveraging`/`leveraged` → `use`/`using`/`used` | `microsoft/leverage`, `fix: false` | "Don't use **as a verb** to mean take advantage of. Use take advantage of, use, or **another more appropriate word or phrase**." | Verb-sense-scoped AND multiple-alternatives. "Leverage"/"leveraged" are also common, correct nouns/adjectives this page never addresses ("financial leverage", "a highly leveraged company", "a leveraged buyout") — unlike `impact-verb`, there's no small enumerable set of following objects to anchor on (leverage takes almost any direct object), so detection-only is the fallback, not an abandoned first attempt. |
|
|
1095
|
+
| `glyph` → `symbol` | `microsoft/glyph`, `fix: false` | "Don't use to refer generically to a graphic... on a button, on an icon, or in a message box. Use symbol instead. **It's OK to use glyph in a technical discussion of fonts and characters.**" | Context-scoped exactly like the developer-audience carve-outs already excluded for `header`/`disk`/`directory`/`context menu` — font/Unicode documentation (plausible in Redocly's own docs) uses "glyph" as a precise technical term this page's objection doesn't cover, and no anchor tells "technical discussion of fonts" apart from the generic-icon sense. |
|
|
1096
|
+
| `de facto` → `in practice` | `no-latin-abbreviations` → `no-latin-abbreviations-detect` (`pattern`) | use-us-spelling's ONLY sentence: "Avoid non-English words or phrases, **such as** de facto or ad hoc." | No replacement given at all — an example list of avoid-terms, not a "use Y instead of X" table row (unlike `e.g./i.e./viz./ergo`, which come from this same page's own table). "in practice" was the author's own reasonable-sounding guess. |
|
|
1097
|
+
| `ad hoc` → `as needed` | `no-latin-abbreviations` → `no-latin-abbreviations-detect` | Same sentence as `de facto`. | Same — no replacement stated. |
|
|
1098
|
+
| `vis-a-vis` → `compared with` | `no-latin-abbreviations` → `no-latin-abbreviations-detect` | **Not named on any fetched page at all** — confirmed via a live 404 on `v/vis-a-vis`. | Not just "no replacement given" — the term itself isn't sourced anywhere; "compared with" is entirely the author's own invention. |
|
|
1099
|
+
| `visit` → `go to` | `az-navigation` → `az-navigation-detect` (`pattern`) | "use go to in **most cases**... It's OK to use visit... if you're using a tone that's meant to imply [a suggestion, or browsing]." Worked example: "**Visit** the product website to learn about offerings..." | The live page's own approved example uses "visit" — a blind fix would rewrite Microsoft's own sanctioned usage. Also a second, independent hazard the wave-B anchor never covered: "visit" preceded by an article ("Schedule a visit", "during my visit") is a common noun sense the noun-**compound** anchor (which only excluded specific FOLLOWING words) never excluded — "Schedule a go to with the doctor" is not English. |
|
|
1100
1100
|
|
|
1101
1101
|
`hot link` (same `az-navigation` rule) and `e.g./i.e./viz./ergo` (same
|
|
1102
1102
|
`no-latin-abbreviations` rule) were audited alongside their reclassified
|
|
@@ -1110,11 +1110,11 @@ real but incomplete — the guidance shape was correctly identified as
|
|
|
1110
1110
|
sense-scoped, but the exclusion list didn't cover every common noun/idiom
|
|
1111
1111
|
sense:
|
|
1112
1112
|
|
|
1113
|
-
| Pair
|
|
1114
|
-
|
|
1115
|
-
| `hang`/`hangs` → `stop(s) responding` | `az-state-failure`
|
|
1116
|
-
| `print out` → `print`
|
|
1117
|
-
| `click`/`clicks` → `select(s)`
|
|
1113
|
+
| Pair | Rule | Gap found | Fix |
|
|
1114
|
+
| ------------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1115
|
+
| `hang`/`hangs` → `stop(s) responding` | `az-state-failure` | Exclusion list (`on/up/around/out/together`) missed "get the hang **of** it" (a knack, not a system), "hang **in** there"/"hang **tight**"/"hang **loose**"/"hang **fire**" (encouragement/waiting idioms), and the literal suspension sense ("hangs **from** the ceiling"/"hangs **over** the door"). | Added `of/in/tight/loose/fire/from/over` to the exclusion list. Not exhaustive — "hang" is as broad a word as `crash`/`lock up`, which were moved to detection-only in wave B for the identical breadth reason — but this closes the specific gap a plausible Redocly onboarding sentence ("Once you get the hang of the API...") would have hit. |
|
|
1116
|
+
| `print out` → `print` | `az-real-replacements` | The noun-compound anchor only excluded "print out **of** X" — "Keep the print out safe"/"Attach the print out to the ticket" (a determiner-preceded noun, no "of" following) still corrupted to "Keep the print safe"/"Attach the print to the ticket" (register shift toward "print" = photograph). | Added a negative lookbehind excluding a preceding determiner/possessive (`a/an/the/this/that/your/my/its/his/her/their/our`) — the verb sense is never preceded by a determiner directly. |
|
|
1117
|
+
| `click`/`clicks` → `select(s)` | `no-click` | The live page's ban is verb-scoped ("Avoid this **verb**"); the anchor excluded hyphen-joined compounds and letter-adjacent compounds (`double-click`, `clickstream`) but not the ordinary noun sense ("click count", "clicks per session") — plausible in analytics/UI-event documentation, exactly Redocly's domain. | Added a follow-word exclusion for noun-compound risk (`count(s)/rate(s)/event(s)/tracking/data/metrics/history/id(s)/per`). Residual, accepted risk (not anchored): the live page's own carve-out "OK to use click when you need to describe mouse actions specifically" isn't mechanically detectable — same class as `hex`'s mechanical-fastener sense, low practical likelihood in Redocly's API-documentation domain. |
|
|
1118
1118
|
|
|
1119
1119
|
#### Bug fix found during the audit (not a substitution-safety issue — a detection bug)
|
|
1120
1120
|
|
|
@@ -1242,7 +1242,7 @@ wrong under `--fix` twice:
|
|
|
1242
1242
|
corruption strings above pass axis 1 (each guide page states a plain
|
|
1243
1243
|
"use Y instead of X" rule) and fail on axis 2 — `DMZ` is also the
|
|
1244
1244
|
Korean border zone; `the ask` is also the bid/ask market term; `home
|
|
1245
|
-
|
|
1245
|
+
directory` always means the Unix `$HOME` sense in the corrupted
|
|
1246
1246
|
sentence, and the guide's "root directory" target is a genuinely
|
|
1247
1247
|
different concept (the filesystem's `/`, not a per-user directory);
|
|
1248
1248
|
`unmark` collides with no listed acceptable alternative for non-
|
|
@@ -1252,7 +1252,7 @@ wrong under `--fix` twice:
|
|
|
1252
1252
|
3. **The posture**: auto-fix is retained **only** where a replacement
|
|
1253
1253
|
cannot be wrong — the same word, normalized (spelling, hyphenation,
|
|
1254
1254
|
casing, or a non-standard written form of the identical word). A pair
|
|
1255
|
-
that substitutes a
|
|
1255
|
+
that substitutes a _different_ word or phrase — even one that always
|
|
1256
1256
|
looks safe, like `alright` → `OK` — moves to detection-only, because
|
|
1257
1257
|
"this one looks safe" is exactly the per-pair judgement call that
|
|
1258
1258
|
produced three rounds of misses. Mechanical classification, not
|
|
@@ -1267,12 +1267,12 @@ is a whole-RULE flag, not per-pair, so a mixed bundle has to split). The
|
|
|
1267
1267
|
16 rules that remain fixable are exhaustively enumerated with before/after
|
|
1268
1268
|
fix output in the fix-posture report; four representative examples:
|
|
1269
1269
|
|
|
1270
|
-
| Rule
|
|
1271
|
-
|
|
1272
|
-
| `microsoft/us-spelling`
|
|
1273
|
-
| `microsoft/spelling-hyphenation` | `e-mail` → `email`
|
|
1274
|
-
| `microsoft/az-case-fixable`
|
|
1275
|
-
| `microsoft/az-grammar-usage`
|
|
1270
|
+
| Rule | Pair | Why it stays fixable |
|
|
1271
|
+
| -------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1272
|
+
| `microsoft/us-spelling` | `centre` → `center` | Spelling variant of the identical word (the brief's own textbook example). |
|
|
1273
|
+
| `microsoft/spelling-hyphenation` | `e-mail` → `email` | Hyphenation of the identical word. |
|
|
1274
|
+
| `microsoft/az-case-fixable` | `javascript` → `JavaScript` | Casing of the identical token; empirically re-verified against `applyMatchCase` this wave (case-sensitive matching means an ALL-CAPS input like `JAVASCRIPT` can never reach these keys in the first place, so the ALL-CAPS-shout no-op class `az-case-only` exists to avoid doesn't recur here). |
|
|
1275
|
+
| `microsoft/az-grammar-usage` | `broadcasted` → `broadcast` | Non-standard inflection of the identical word (the guide's own irregular past tense), the same class as "alot" → "a lot". |
|
|
1276
1276
|
|
|
1277
1277
|
Two rules flipped for a reason found DURING this wave, not named in the
|
|
1278
1278
|
brief:
|
|
@@ -1288,7 +1288,7 @@ brief:
|
|
|
1288
1288
|
each has to be checked against the actual function, not just the shape
|
|
1289
1289
|
of the rule.
|
|
1290
1290
|
- **`MSFT` → `Microsoft` (`az-abbreviations-names`) moved to detection-only
|
|
1291
|
-
for a fix
|
|
1291
|
+
for a fix-_mechanism_ defect, not a word-choice one.** `MSFT` is
|
|
1292
1292
|
virtually always written all-caps (it's a stock ticker); with
|
|
1293
1293
|
`ignoreCase: true`, `applyMatchCase`'s ALL-CAPS branch shouts a
|
|
1294
1294
|
single-word replacement, so the "fix" would produce `"MICROSOFT"` (wrong
|
|
@@ -1399,12 +1399,12 @@ this preset, plus 5 `consistency` pairs left untouched — 118 total; the
|
|
|
1399
1399
|
parallel sweep in `recheck/google` is documented in that preset's own
|
|
1400
1400
|
PROVENANCE.md) was checked against question 3. This preset's flips:
|
|
1401
1401
|
|
|
1402
|
-
| Rule
|
|
1403
|
-
|
|
1404
|
-
| `microsoft/usa-abbreviation` | `USA`/`U.S.A.`/`U.S.` -> `US` (all 3)
|
|
1405
|
-
| `microsoft/us-spelling`
|
|
1406
|
-
| `microsoft/us-spelling`
|
|
1407
|
-
| `microsoft/az-case-fixable`
|
|
1402
|
+
| Rule | Pair(s) flipped | Real proper noun that collides |
|
|
1403
|
+
| ---------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1404
|
+
| `microsoft/usa-abbreviation` | `USA`/`U.S.A.`/`U.S.` -> `US` (all 3) | "USA Gymnastics" (US national governing body), "U.S. Bank" (top-10 US bank), "U.S.A. Track and Field" (national governing body), "U.S. Steel" — named brief case. |
|
|
1405
|
+
| `microsoft/us-spelling` | `centre`/`centres` -> `center`/`centers` | "Bell Centre" (Montreal Canadiens' arena, official English spelling) and "Centre County, Pennsylvania" (a real US county whose OWN official name keeps the British "re"). |
|
|
1406
|
+
| `microsoft/us-spelling` | `catalogue`/`catalogues` -> `catalog`/`catalogs` | "Catalogue of Life" (a real, commonly-cited global species database whose own name is spelled with the British "ue"). |
|
|
1407
|
+
| `microsoft/az-case-fixable` | `boolean` -> `Boolean` | Not proper-noun (question 2, found during this sweep): lowercase `boolean` is the REQUIRED spelling of the OpenAPI/JSON Schema type name (`"type": "boolean"`) — exactly Redocly's own domain — and auto-capitalizing it would corrupt extremely common, completely correct schema prose. |
|
|
1408
1408
|
|
|
1409
1409
|
**4 pairs swept out of the 113 live `swap` pairs, all moved to a
|
|
1410
1410
|
detection-only sibling rather than anchored** — `microsoft/us-spelling`
|
|
@@ -1434,6 +1434,7 @@ round of anchor-then-leak was not worth it for pairs this marginal.
|
|
|
1434
1434
|
`fix: false` was preferred over an anchor for every pair this wave found.
|
|
1435
1435
|
|
|
1436
1436
|
#### `aka` was misclassified, not newly found unsafe (recorded here for
|
|
1437
|
+
|
|
1437
1438
|
cross-reference; the pair itself lives in `recheck/google`)
|
|
1438
1439
|
|
|
1439
1440
|
Expanding an abbreviation into a phrase is a substitution, not a
|
|
@@ -1491,7 +1492,7 @@ RISING hit rate after three rounds of narrowing, spanning every category
|
|
|
1491
1492
|
the three axes above treated as clean:
|
|
1492
1493
|
|
|
1493
1494
|
- **Spelling**, believed the safest category of all: Hemingway's real,
|
|
1494
|
-
correctly spelled published title
|
|
1495
|
+
correctly spelled published title _A Moveable Feast_ is corrected to "A
|
|
1495
1496
|
Movable Feast" by this preset's own `microsoft/az-grammar-usage`'s
|
|
1496
1497
|
`moveable` → `movable` pair — a genuine same-word normalization by every
|
|
1497
1498
|
axis above (axis 1 passes, axis 2 finds no unrelated sense, axis 3 finds
|
|
@@ -1513,10 +1514,8 @@ the three axes above treated as clean:
|
|
|
1513
1514
|
|
|
1514
1515
|
Full round-5 acceptance evidence (these sentences and more, run through
|
|
1515
1516
|
`--fix` twice and confirmed byte-identical) lives in
|
|
1516
|
-
`src/config/__tests__/
|
|
1517
|
-
per-preset
|
|
1518
|
-
`preset-google-fix-wave-c.test.ts` (both rewritten by this change to assert
|
|
1519
|
-
"unchanged" where they used to assert a real rewrite). The `consistency`
|
|
1517
|
+
`src/config/__tests__/presets.test.ts` (the "detection-only" contract), plus the
|
|
1518
|
+
per-preset suites in `preset-microsoft.test.ts` and `preset-google.test.ts`. The `consistency`
|
|
1520
1519
|
engine bug this same change fixed — `it's`/`it is` collapsing into one
|
|
1521
1520
|
meaning via first-seen-wins, live since Phase 1 and reproduced exactly by
|
|
1522
1521
|
this preset's `microsoft/contraction-consistency` rule with
|
|
@@ -1528,9 +1527,9 @@ preset.
|
|
|
1528
1527
|
|
|
1529
1528
|
#### The conclusion this decision rests on
|
|
1530
1529
|
|
|
1531
|
-
A rule's
|
|
1532
|
-
predict fix-safety at this scale. A style guide states
|
|
1533
|
-
mean Y"); a `swap`/`consistency`/`pattern` rule matches
|
|
1530
|
+
A rule's _category_ — spelling, hyphenation, casing, word-choice — does not
|
|
1531
|
+
predict fix-safety at this scale. A style guide states _intent_ ("use X to
|
|
1532
|
+
mean Y"); a `swap`/`consistency`/`pattern` rule matches _tokens_ (literal
|
|
1534
1533
|
text, regardless of the grammatical role or referent that text has in a
|
|
1535
1534
|
given sentence). That gap is not closable by inventing a fourth, fifth, or
|
|
1536
1535
|
sixth axis: axis 1 (guidance-shape) closed the space of pairs where the
|