chaffjs 0.20.0 → 0.22.0

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.
Files changed (762) hide show
  1. package/README.md +7 -5
  2. package/dist/api.d.ts +16 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js.map +1 -1
  5. package/dist/cli-text.d.ts +2 -0
  6. package/dist/cli-text.d.ts.map +1 -1
  7. package/dist/cli-text.js +18 -5
  8. package/dist/cli-text.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +8 -11
  11. package/dist/cli.js.map +1 -1
  12. package/dist/command-help.d.ts +7 -0
  13. package/dist/command-help.d.ts.map +1 -0
  14. package/dist/command-help.js +18 -0
  15. package/dist/command-help.js.map +1 -0
  16. package/dist/commands/eval.js +2 -2
  17. package/dist/commands/eval.js.map +1 -1
  18. package/dist/commands/fix-plan.d.ts.map +1 -1
  19. package/dist/commands/fix-plan.js +11 -1
  20. package/dist/commands/fix-plan.js.map +1 -1
  21. package/dist/commands/help.d.ts +4 -0
  22. package/dist/commands/help.d.ts.map +1 -0
  23. package/dist/commands/help.js +7 -0
  24. package/dist/commands/help.js.map +1 -0
  25. package/dist/commands/init-command.d.ts +4 -0
  26. package/dist/commands/init-command.d.ts.map +1 -0
  27. package/dist/commands/init-command.js +15 -0
  28. package/dist/commands/init-command.js.map +1 -0
  29. package/dist/commands/plugin-init.d.ts +20 -0
  30. package/dist/commands/plugin-init.d.ts.map +1 -0
  31. package/dist/commands/plugin-init.js +129 -0
  32. package/dist/commands/plugin-init.js.map +1 -0
  33. package/dist/commands/plugin-test.d.ts +11 -0
  34. package/dist/commands/plugin-test.d.ts.map +1 -0
  35. package/dist/commands/plugin-test.js +81 -0
  36. package/dist/commands/plugin-test.js.map +1 -0
  37. package/dist/config/load.d.ts +2 -0
  38. package/dist/config/load.d.ts.map +1 -1
  39. package/dist/config/load.js +1 -0
  40. package/dist/config/load.js.map +1 -1
  41. package/dist/config/option-problems.js +2 -2
  42. package/dist/config/option-problems.js.map +1 -1
  43. package/dist/config/rule-problems.js +2 -2
  44. package/dist/config/rule-problems.js.map +1 -1
  45. package/dist/custom/checked.d.ts +9 -0
  46. package/dist/custom/checked.d.ts.map +1 -0
  47. package/dist/custom/checked.js +3 -0
  48. package/dist/custom/checked.js.map +1 -0
  49. package/dist/custom/dsl-fields.d.ts +27 -0
  50. package/dist/custom/dsl-fields.d.ts.map +1 -0
  51. package/dist/custom/dsl-fields.js +86 -0
  52. package/dist/custom/dsl-fields.js.map +1 -0
  53. package/dist/custom/load.d.ts.map +1 -1
  54. package/dist/custom/load.js +2 -0
  55. package/dist/custom/load.js.map +1 -1
  56. package/dist/custom/parse.d.ts +14 -3
  57. package/dist/custom/parse.d.ts.map +1 -1
  58. package/dist/custom/parse.js +44 -40
  59. package/dist/custom/parse.js.map +1 -1
  60. package/dist/custom/problems.d.ts.map +1 -1
  61. package/dist/custom/problems.js +10 -1
  62. package/dist/custom/problems.js.map +1 -1
  63. package/dist/detectors/amount-for-count.d.ts +21 -0
  64. package/dist/detectors/amount-for-count.d.ts.map +1 -0
  65. package/dist/detectors/amount-for-count.js +55 -0
  66. package/dist/detectors/amount-for-count.js.map +1 -0
  67. package/dist/detectors/blank-structure.d.ts.map +1 -1
  68. package/dist/detectors/blank-structure.js +6 -4
  69. package/dist/detectors/blank-structure.js.map +1 -1
  70. package/dist/detectors/clause-shape.d.ts +22 -0
  71. package/dist/detectors/clause-shape.d.ts.map +1 -0
  72. package/dist/detectors/clause-shape.js +149 -0
  73. package/dist/detectors/clause-shape.js.map +1 -0
  74. package/dist/detectors/code-fences.d.ts +34 -0
  75. package/dist/detectors/code-fences.d.ts.map +1 -0
  76. package/dist/detectors/code-fences.js +100 -0
  77. package/dist/detectors/code-fences.js.map +1 -0
  78. package/dist/detectors/cross-definitions.d.ts +4 -0
  79. package/dist/detectors/cross-definitions.d.ts.map +1 -0
  80. package/dist/detectors/cross-definitions.js +43 -0
  81. package/dist/detectors/cross-definitions.js.map +1 -0
  82. package/dist/detectors/cross-facts.d.ts +4 -0
  83. package/dist/detectors/cross-facts.d.ts.map +1 -0
  84. package/dist/detectors/cross-facts.js +53 -0
  85. package/dist/detectors/cross-facts.js.map +1 -0
  86. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts +3 -0
  87. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts.map +1 -0
  88. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js +3 -0
  89. package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js.map +1 -0
  90. package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts +3 -0
  91. package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts.map +1 -0
  92. package/dist/detectors/cross-registry/cross-doc-fact-conflict.js +3 -0
  93. package/dist/detectors/cross-registry/cross-doc-fact-conflict.js.map +1 -0
  94. package/dist/detectors/currency-notation.d.ts +29 -0
  95. package/dist/detectors/currency-notation.d.ts.map +1 -0
  96. package/dist/detectors/currency-notation.js +58 -0
  97. package/dist/detectors/currency-notation.js.map +1 -0
  98. package/dist/detectors/custom.d.ts.map +1 -1
  99. package/dist/detectors/custom.js +4 -1
  100. package/dist/detectors/custom.js.map +1 -1
  101. package/dist/detectors/dangling-opener.d.ts +14 -0
  102. package/dist/detectors/dangling-opener.d.ts.map +1 -0
  103. package/dist/detectors/dangling-opener.js +55 -0
  104. package/dist/detectors/dangling-opener.js.map +1 -0
  105. package/dist/detectors/defined-term-form.d.ts +25 -0
  106. package/dist/detectors/defined-term-form.d.ts.map +1 -0
  107. package/dist/detectors/defined-term-form.js +170 -0
  108. package/dist/detectors/defined-term-form.js.map +1 -0
  109. package/dist/detectors/email-letter.d.ts +46 -0
  110. package/dist/detectors/email-letter.d.ts.map +1 -0
  111. package/dist/detectors/email-letter.js +234 -0
  112. package/dist/detectors/email-letter.js.map +1 -0
  113. package/dist/detectors/footnote-mismatch.d.ts +11 -0
  114. package/dist/detectors/footnote-mismatch.d.ts.map +1 -0
  115. package/dist/detectors/footnote-mismatch.js +55 -0
  116. package/dist/detectors/footnote-mismatch.js.map +1 -0
  117. package/dist/detectors/form-minority.d.ts +13 -0
  118. package/dist/detectors/form-minority.d.ts.map +1 -0
  119. package/dist/detectors/form-minority.js +19 -0
  120. package/dist/detectors/form-minority.js.map +1 -0
  121. package/dist/detectors/heading-end-mark.d.ts +10 -0
  122. package/dist/detectors/heading-end-mark.d.ts.map +1 -0
  123. package/dist/detectors/heading-end-mark.js +59 -0
  124. package/dist/detectors/heading-end-mark.js.map +1 -0
  125. package/dist/detectors/impossible-date.d.ts +20 -0
  126. package/dist/detectors/impossible-date.d.ts.map +1 -0
  127. package/dist/detectors/impossible-date.js +105 -0
  128. package/dist/detectors/impossible-date.js.map +1 -0
  129. package/dist/detectors/impossible-time.d.ts +18 -0
  130. package/dist/detectors/impossible-time.d.ts.map +1 -0
  131. package/dist/detectors/impossible-time.js +116 -0
  132. package/dist/detectors/impossible-time.js.map +1 -0
  133. package/dist/detectors/link-shape.d.ts +11 -0
  134. package/dist/detectors/link-shape.d.ts.map +1 -0
  135. package/dist/detectors/link-shape.js +56 -0
  136. package/dist/detectors/link-shape.js.map +1 -0
  137. package/dist/detectors/list-marker.d.ts +7 -0
  138. package/dist/detectors/list-marker.d.ts.map +1 -0
  139. package/dist/detectors/list-marker.js +50 -0
  140. package/dist/detectors/list-marker.js.map +1 -0
  141. package/dist/detectors/mark-shape.d.ts +53 -0
  142. package/dist/detectors/mark-shape.d.ts.map +1 -0
  143. package/dist/detectors/mark-shape.js +160 -0
  144. package/dist/detectors/mark-shape.js.map +1 -0
  145. package/dist/detectors/markdown-slip.d.ts +19 -0
  146. package/dist/detectors/markdown-slip.d.ts.map +1 -0
  147. package/dist/detectors/markdown-slip.js +122 -0
  148. package/dist/detectors/markdown-slip.js.map +1 -0
  149. package/dist/detectors/numeral-opener.d.ts +10 -0
  150. package/dist/detectors/numeral-opener.d.ts.map +1 -0
  151. package/dist/detectors/numeral-opener.js +65 -0
  152. package/dist/detectors/numeral-opener.js.map +1 -0
  153. package/dist/detectors/ordinal-suffix.d.ts +12 -0
  154. package/dist/detectors/ordinal-suffix.d.ts.map +1 -0
  155. package/dist/detectors/ordinal-suffix.js +33 -0
  156. package/dist/detectors/ordinal-suffix.js.map +1 -0
  157. package/dist/detectors/range-notation.d.ts +15 -0
  158. package/dist/detectors/range-notation.d.ts.map +1 -0
  159. package/dist/detectors/range-notation.js +58 -0
  160. package/dist/detectors/range-notation.js.map +1 -0
  161. package/dist/detectors/registry/adverb-polarity.d.ts +3 -0
  162. package/dist/detectors/registry/adverb-polarity.d.ts.map +1 -0
  163. package/dist/detectors/registry/adverb-polarity.js +3 -0
  164. package/dist/detectors/registry/adverb-polarity.js.map +1 -0
  165. package/dist/detectors/registry/amount-for-count.d.ts +3 -0
  166. package/dist/detectors/registry/amount-for-count.d.ts.map +1 -0
  167. package/dist/detectors/registry/amount-for-count.js +3 -0
  168. package/dist/detectors/registry/amount-for-count.js.map +1 -0
  169. package/dist/detectors/registry/attachment-missing.d.ts +3 -0
  170. package/dist/detectors/registry/attachment-missing.d.ts.map +1 -0
  171. package/dist/detectors/registry/attachment-missing.js +3 -0
  172. package/dist/detectors/registry/attachment-missing.js.map +1 -0
  173. package/dist/detectors/registry/bare-url-mix.d.ts +3 -0
  174. package/dist/detectors/registry/bare-url-mix.d.ts.map +1 -0
  175. package/dist/detectors/registry/bare-url-mix.js +3 -0
  176. package/dist/detectors/registry/bare-url-mix.js.map +1 -0
  177. package/dist/detectors/registry/caps-shouting.d.ts +3 -0
  178. package/dist/detectors/registry/caps-shouting.d.ts.map +1 -0
  179. package/dist/detectors/registry/caps-shouting.js +3 -0
  180. package/dist/detectors/registry/caps-shouting.js.map +1 -0
  181. package/dist/detectors/registry/code-fence-language.d.ts +3 -0
  182. package/dist/detectors/registry/code-fence-language.d.ts.map +1 -0
  183. package/dist/detectors/registry/code-fence-language.js +3 -0
  184. package/dist/detectors/registry/code-fence-language.js.map +1 -0
  185. package/dist/detectors/registry/currency-notation.d.ts +3 -0
  186. package/dist/detectors/registry/currency-notation.d.ts.map +1 -0
  187. package/dist/detectors/registry/currency-notation.js +3 -0
  188. package/dist/detectors/registry/currency-notation.js.map +1 -0
  189. package/dist/detectors/registry/dangling-opener.d.ts +3 -0
  190. package/dist/detectors/registry/dangling-opener.d.ts.map +1 -0
  191. package/dist/detectors/registry/dangling-opener.js +3 -0
  192. package/dist/detectors/registry/dangling-opener.js.map +1 -0
  193. package/dist/detectors/registry/defined-name-repeated.d.ts +3 -0
  194. package/dist/detectors/registry/defined-name-repeated.d.ts.map +1 -0
  195. package/dist/detectors/registry/defined-name-repeated.js +3 -0
  196. package/dist/detectors/registry/defined-name-repeated.js.map +1 -0
  197. package/dist/detectors/registry/defined-term-form.d.ts +3 -0
  198. package/dist/detectors/registry/defined-term-form.d.ts.map +1 -0
  199. package/dist/detectors/registry/defined-term-form.js +3 -0
  200. package/dist/detectors/registry/defined-term-form.js.map +1 -0
  201. package/dist/detectors/registry/email-frame.d.ts +3 -0
  202. package/dist/detectors/registry/email-frame.d.ts.map +1 -0
  203. package/dist/detectors/registry/email-frame.js +3 -0
  204. package/dist/detectors/registry/email-frame.js.map +1 -0
  205. package/dist/detectors/registry/email-subject.d.ts +3 -0
  206. package/dist/detectors/registry/email-subject.d.ts.map +1 -0
  207. package/dist/detectors/registry/email-subject.js +3 -0
  208. package/dist/detectors/registry/email-subject.js.map +1 -0
  209. package/dist/detectors/registry/ending-run.d.ts +3 -0
  210. package/dist/detectors/registry/ending-run.d.ts.map +1 -0
  211. package/dist/detectors/registry/ending-run.js +3 -0
  212. package/dist/detectors/registry/ending-run.js.map +1 -0
  213. package/dist/detectors/registry/footnote-mismatch.d.ts +3 -0
  214. package/dist/detectors/registry/footnote-mismatch.d.ts.map +1 -0
  215. package/dist/detectors/registry/footnote-mismatch.js +3 -0
  216. package/dist/detectors/registry/footnote-mismatch.js.map +1 -0
  217. package/dist/detectors/registry/heading-command.d.ts +3 -0
  218. package/dist/detectors/registry/heading-command.d.ts.map +1 -0
  219. package/dist/detectors/registry/heading-command.js +3 -0
  220. package/dist/detectors/registry/heading-command.js.map +1 -0
  221. package/dist/detectors/registry/heading-end-punctuation.d.ts +3 -0
  222. package/dist/detectors/registry/heading-end-punctuation.d.ts.map +1 -0
  223. package/dist/detectors/registry/heading-end-punctuation.js +3 -0
  224. package/dist/detectors/registry/heading-end-punctuation.js.map +1 -0
  225. package/dist/detectors/registry/hyphen-dash.d.ts +3 -0
  226. package/dist/detectors/registry/hyphen-dash.d.ts.map +1 -0
  227. package/dist/detectors/registry/hyphen-dash.js +3 -0
  228. package/dist/detectors/registry/hyphen-dash.js.map +1 -0
  229. package/dist/detectors/registry/image-file-name-alt.d.ts +3 -0
  230. package/dist/detectors/registry/image-file-name-alt.d.ts.map +1 -0
  231. package/dist/detectors/registry/image-file-name-alt.js +3 -0
  232. package/dist/detectors/registry/image-file-name-alt.js.map +1 -0
  233. package/dist/detectors/registry/impossible-date.d.ts +3 -0
  234. package/dist/detectors/registry/impossible-date.d.ts.map +1 -0
  235. package/dist/detectors/registry/impossible-date.js +3 -0
  236. package/dist/detectors/registry/impossible-date.js.map +1 -0
  237. package/dist/detectors/registry/impossible-time.d.ts +3 -0
  238. package/dist/detectors/registry/impossible-time.d.ts.map +1 -0
  239. package/dist/detectors/registry/impossible-time.js +3 -0
  240. package/dist/detectors/registry/impossible-time.js.map +1 -0
  241. package/dist/detectors/registry/latin-abbreviation.d.ts +3 -0
  242. package/dist/detectors/registry/latin-abbreviation.d.ts.map +1 -0
  243. package/dist/detectors/registry/latin-abbreviation.js +3 -0
  244. package/dist/detectors/registry/latin-abbreviation.js.map +1 -0
  245. package/dist/detectors/registry/link-text-url-mismatch.d.ts +3 -0
  246. package/dist/detectors/registry/link-text-url-mismatch.d.ts.map +1 -0
  247. package/dist/detectors/registry/link-text-url-mismatch.js +3 -0
  248. package/dist/detectors/registry/link-text-url-mismatch.js.map +1 -0
  249. package/dist/detectors/registry/list-marker.d.ts +3 -0
  250. package/dist/detectors/registry/list-marker.d.ts.map +1 -0
  251. package/dist/detectors/registry/list-marker.js +3 -0
  252. package/dist/detectors/registry/list-marker.js.map +1 -0
  253. package/dist/detectors/registry/mark-consistency.d.ts +3 -0
  254. package/dist/detectors/registry/mark-consistency.d.ts.map +1 -0
  255. package/dist/detectors/registry/mark-consistency.js +3 -0
  256. package/dist/detectors/registry/mark-consistency.js.map +1 -0
  257. package/dist/detectors/registry/numeral-opener.d.ts +3 -0
  258. package/dist/detectors/registry/numeral-opener.d.ts.map +1 -0
  259. package/dist/detectors/registry/numeral-opener.js +3 -0
  260. package/dist/detectors/registry/numeral-opener.js.map +1 -0
  261. package/dist/detectors/registry/ordinal-suffix.d.ts +3 -0
  262. package/dist/detectors/registry/ordinal-suffix.d.ts.map +1 -0
  263. package/dist/detectors/registry/ordinal-suffix.js +3 -0
  264. package/dist/detectors/registry/ordinal-suffix.js.map +1 -0
  265. package/dist/detectors/registry/origin-particle.d.ts +3 -0
  266. package/dist/detectors/registry/origin-particle.d.ts.map +1 -0
  267. package/dist/detectors/registry/origin-particle.js +3 -0
  268. package/dist/detectors/registry/origin-particle.js.map +1 -0
  269. package/dist/detectors/registry/range-notation.d.ts +3 -0
  270. package/dist/detectors/registry/range-notation.d.ts.map +1 -0
  271. package/dist/detectors/registry/range-notation.js +3 -0
  272. package/dist/detectors/registry/range-notation.js.map +1 -0
  273. package/dist/detectors/registry/relative-pronoun-mix.d.ts +3 -0
  274. package/dist/detectors/registry/relative-pronoun-mix.d.ts.map +1 -0
  275. package/dist/detectors/registry/relative-pronoun-mix.js +3 -0
  276. package/dist/detectors/registry/relative-pronoun-mix.js.map +1 -0
  277. package/dist/detectors/registry/request-without-deadline.d.ts +3 -0
  278. package/dist/detectors/registry/request-without-deadline.d.ts.map +1 -0
  279. package/dist/detectors/registry/request-without-deadline.js +3 -0
  280. package/dist/detectors/registry/request-without-deadline.js.map +1 -0
  281. package/dist/detectors/registry/sentence-spacing.d.ts +3 -0
  282. package/dist/detectors/registry/sentence-spacing.d.ts.map +1 -0
  283. package/dist/detectors/registry/sentence-spacing.js +3 -0
  284. package/dist/detectors/registry/sentence-spacing.js.map +1 -0
  285. package/dist/detectors/registry/share-over-hundred.d.ts +3 -0
  286. package/dist/detectors/registry/share-over-hundred.d.ts.map +1 -0
  287. package/dist/detectors/registry/share-over-hundred.js +3 -0
  288. package/dist/detectors/registry/share-over-hundred.js.map +1 -0
  289. package/dist/detectors/registry/shell-prompt.d.ts +3 -0
  290. package/dist/detectors/registry/shell-prompt.d.ts.map +1 -0
  291. package/dist/detectors/registry/shell-prompt.js +3 -0
  292. package/dist/detectors/registry/shell-prompt.js.map +1 -0
  293. package/dist/detectors/registry/step-reference.d.ts +3 -0
  294. package/dist/detectors/registry/step-reference.d.ts.map +1 -0
  295. package/dist/detectors/registry/step-reference.js +3 -0
  296. package/dist/detectors/registry/step-reference.js.map +1 -0
  297. package/dist/detectors/registry/step-statement.d.ts +3 -0
  298. package/dist/detectors/registry/step-statement.d.ts.map +1 -0
  299. package/dist/detectors/registry/step-statement.js +3 -0
  300. package/dist/detectors/registry/step-statement.js.map +1 -0
  301. package/dist/detectors/registry/table-row-overflow.d.ts +3 -0
  302. package/dist/detectors/registry/table-row-overflow.d.ts.map +1 -0
  303. package/dist/detectors/registry/table-row-overflow.js +3 -0
  304. package/dist/detectors/registry/table-row-overflow.js.map +1 -0
  305. package/dist/detectors/registry/toc-heading.d.ts +3 -0
  306. package/dist/detectors/registry/toc-heading.d.ts.map +1 -0
  307. package/dist/detectors/registry/toc-heading.js +3 -0
  308. package/dist/detectors/registry/toc-heading.js.map +1 -0
  309. package/dist/detectors/registry/unclosed-code-fence.d.ts +3 -0
  310. package/dist/detectors/registry/unclosed-code-fence.d.ts.map +1 -0
  311. package/dist/detectors/registry/unclosed-code-fence.js +3 -0
  312. package/dist/detectors/registry/unclosed-code-fence.js.map +1 -0
  313. package/dist/detectors/registry/unpaired-parallel.d.ts +3 -0
  314. package/dist/detectors/registry/unpaired-parallel.d.ts.map +1 -0
  315. package/dist/detectors/registry/unpaired-parallel.js +3 -0
  316. package/dist/detectors/registry/unpaired-parallel.js.map +1 -0
  317. package/dist/detectors/registry/unrendered-emphasis.d.ts +3 -0
  318. package/dist/detectors/registry/unrendered-emphasis.d.ts.map +1 -0
  319. package/dist/detectors/registry/unrendered-emphasis.js +3 -0
  320. package/dist/detectors/registry/unrendered-emphasis.js.map +1 -0
  321. package/dist/detectors/relative-pronoun-mix.d.ts +19 -0
  322. package/dist/detectors/relative-pronoun-mix.d.ts.map +1 -0
  323. package/dist/detectors/relative-pronoun-mix.js +60 -0
  324. package/dist/detectors/relative-pronoun-mix.js.map +1 -0
  325. package/dist/detectors/request-owner.d.ts +23 -0
  326. package/dist/detectors/request-owner.d.ts.map +1 -0
  327. package/dist/detectors/request-owner.js +110 -0
  328. package/dist/detectors/request-owner.js.map +1 -0
  329. package/dist/detectors/share-over-hundred.d.ts +20 -0
  330. package/dist/detectors/share-over-hundred.d.ts.map +1 -0
  331. package/dist/detectors/share-over-hundred.js +55 -0
  332. package/dist/detectors/share-over-hundred.js.map +1 -0
  333. package/dist/detectors/step-reference.d.ts +20 -0
  334. package/dist/detectors/step-reference.d.ts.map +1 -0
  335. package/dist/detectors/step-reference.js +57 -0
  336. package/dist/detectors/step-reference.js.map +1 -0
  337. package/dist/detectors/technical-docs.d.ts +32 -0
  338. package/dist/detectors/technical-docs.d.ts.map +1 -0
  339. package/dist/detectors/technical-docs.js +199 -0
  340. package/dist/detectors/technical-docs.js.map +1 -0
  341. package/dist/detectors/toc-heading.d.ts +10 -0
  342. package/dist/detectors/toc-heading.d.ts.map +1 -0
  343. package/dist/detectors/toc-heading.js +99 -0
  344. package/dist/detectors/toc-heading.js.map +1 -0
  345. package/dist/extension/pack-read.d.ts +21 -0
  346. package/dist/extension/pack-read.d.ts.map +1 -0
  347. package/dist/extension/pack-read.js +117 -0
  348. package/dist/extension/pack-read.js.map +1 -0
  349. package/dist/extension/plugin-load.d.ts.map +1 -1
  350. package/dist/extension/plugin-load.js +44 -10
  351. package/dist/extension/plugin-load.js.map +1 -1
  352. package/dist/extension/plugin-parse.d.ts.map +1 -1
  353. package/dist/extension/plugin-parse.js +10 -3
  354. package/dist/extension/plugin-parse.js.map +1 -1
  355. package/dist/facts/address-values.d.ts +5 -0
  356. package/dist/facts/address-values.d.ts.map +1 -0
  357. package/dist/facts/address-values.js +64 -0
  358. package/dist/facts/address-values.js.map +1 -0
  359. package/dist/facts/cross-facts.d.ts +20 -0
  360. package/dist/facts/cross-facts.d.ts.map +1 -0
  361. package/dist/facts/cross-facts.js +41 -0
  362. package/dist/facts/cross-facts.js.map +1 -0
  363. package/dist/fix-plan/chosen-depth.d.ts +10 -0
  364. package/dist/fix-plan/chosen-depth.d.ts.map +1 -0
  365. package/dist/fix-plan/chosen-depth.js +24 -0
  366. package/dist/fix-plan/chosen-depth.js.map +1 -0
  367. package/dist/fix-plan/mode.d.ts +13 -4
  368. package/dist/fix-plan/mode.d.ts.map +1 -1
  369. package/dist/fix-plan/mode.js +38 -7
  370. package/dist/fix-plan/mode.js.map +1 -1
  371. package/dist/fix-plan/plan.d.ts +20 -0
  372. package/dist/fix-plan/plan.d.ts.map +1 -1
  373. package/dist/fix-plan/plan.js +23 -5
  374. package/dist/fix-plan/plan.js.map +1 -1
  375. package/dist/fix-plan/render.d.ts.map +1 -1
  376. package/dist/fix-plan/render.js +24 -0
  377. package/dist/fix-plan/render.js.map +1 -1
  378. package/dist/fix-plan/text.d.ts +8 -0
  379. package/dist/fix-plan/text.d.ts.map +1 -1
  380. package/dist/fix-plan/text.js +36 -10
  381. package/dist/fix-plan/text.js.map +1 -1
  382. package/dist/genre-load.d.ts +1 -1
  383. package/dist/genre-load.d.ts.map +1 -1
  384. package/dist/genre-load.js +7 -4
  385. package/dist/genre-load.js.map +1 -1
  386. package/dist/genre-parse.d.ts +6 -0
  387. package/dist/genre-parse.d.ts.map +1 -1
  388. package/dist/genre-parse.js +18 -0
  389. package/dist/genre-parse.js.map +1 -1
  390. package/dist/init.js +10 -10
  391. package/dist/init.js.map +1 -1
  392. package/dist/known-genres.d.ts +8 -0
  393. package/dist/known-genres.d.ts.map +1 -0
  394. package/dist/known-genres.js +17 -0
  395. package/dist/known-genres.js.map +1 -0
  396. package/dist/link-shape.d.ts +20 -0
  397. package/dist/link-shape.d.ts.map +1 -0
  398. package/dist/link-shape.js +58 -0
  399. package/dist/link-shape.js.map +1 -0
  400. package/dist/list-marks.d.ts +21 -0
  401. package/dist/list-marks.d.ts.map +1 -0
  402. package/dist/list-marks.js +82 -0
  403. package/dist/list-marks.js.map +1 -0
  404. package/dist/reasons.d.ts.map +1 -1
  405. package/dist/reasons.js +15 -4
  406. package/dist/reasons.js.map +1 -1
  407. package/dist/render/explain.d.ts.map +1 -1
  408. package/dist/render/explain.js +11 -2
  409. package/dist/render/explain.js.map +1 -1
  410. package/dist/render/friendly.js +1 -1
  411. package/dist/render/friendly.js.map +1 -1
  412. package/dist/render/rules-json.d.ts.map +1 -1
  413. package/dist/render/rules-json.js +12 -3
  414. package/dist/render/rules-json.js.map +1 -1
  415. package/dist/render/rules-table.js +6 -6
  416. package/dist/render/rules-table.js.map +1 -1
  417. package/dist/render/semantic.js +2 -2
  418. package/dist/render/semantic.js.map +1 -1
  419. package/dist/render/suppressions.js +2 -2
  420. package/dist/render/suppressions.js.map +1 -1
  421. package/dist/rewrite-depth.d.ts +22 -0
  422. package/dist/rewrite-depth.d.ts.map +1 -0
  423. package/dist/rewrite-depth.js +42 -0
  424. package/dist/rewrite-depth.js.map +1 -0
  425. package/dist/rule-fields.d.ts +28 -0
  426. package/dist/rule-fields.d.ts.map +1 -0
  427. package/dist/rule-fields.js +85 -0
  428. package/dist/rule-fields.js.map +1 -0
  429. package/dist/rule-guide.d.ts +3 -0
  430. package/dist/rule-guide.d.ts.map +1 -1
  431. package/dist/rule-guide.js +6 -0
  432. package/dist/rule-guide.js.map +1 -1
  433. package/dist/rule-load.d.ts.map +1 -1
  434. package/dist/rule-load.js +13 -5
  435. package/dist/rule-load.js.map +1 -1
  436. package/dist/rule-offs.d.ts +14 -0
  437. package/dist/rule-offs.d.ts.map +1 -0
  438. package/dist/rule-offs.js +45 -0
  439. package/dist/rule-offs.js.map +1 -0
  440. package/dist/structure/build.d.ts.map +1 -1
  441. package/dist/structure/build.js +14 -1
  442. package/dist/structure/build.js.map +1 -1
  443. package/dist/structure/cross-definitions.d.ts +23 -0
  444. package/dist/structure/cross-definitions.d.ts.map +1 -0
  445. package/dist/structure/cross-definitions.js +34 -0
  446. package/dist/structure/cross-definitions.js.map +1 -0
  447. package/genres.yaml +14 -313
  448. package/package.json +3 -3
  449. package/rules/absolute-exception.yaml +3 -1
  450. package/rules/abstract-length.yaml +7 -1
  451. package/rules/acronym-expansion-conflict.yaml +2 -1
  452. package/rules/adverb-overuse.yaml +7 -1
  453. package/rules/adverb-without-negation.yaml +60 -0
  454. package/rules/adversative-ga-repeat.yaml +2 -1
  455. package/rules/agentless-passive.yaml +10 -1
  456. package/rules/agreement-slip.yaml +4 -1
  457. package/rules/ai-generated-composite.yaml +6 -1
  458. package/rules/ai-structure.yaml +8 -2
  459. package/rules/ai-tell.yaml +7 -1
  460. package/rules/all-caps-shouting.yaml +61 -0
  461. package/rules/announced-count-mismatch.yaml +3 -1
  462. package/rules/announcing-opener.yaml +7 -1
  463. package/rules/article-sound.yaml +6 -2
  464. package/rules/assistant-residue.yaml +4 -1
  465. package/rules/attachment-not-attached.yaml +112 -0
  466. package/rules/baito-keigo.yaml +64 -0
  467. package/rules/bare-url-mix.yaml +86 -0
  468. package/rules/bold-density.yaml +1 -0
  469. package/rules/bold-label-list.yaml +9 -1
  470. package/rules/bracket-nesting.yaml +2 -1
  471. package/rules/bracket-width-consistency.yaml +64 -0
  472. package/rules/broken-link.yaml +1 -1
  473. package/rules/chat-citation-residue.yaml +2 -1
  474. package/rules/citation-reference-mismatch.yaml +7 -1
  475. package/rules/citation-style-mix.yaml +7 -1
  476. package/rules/clause-chain.yaml +6 -1
  477. package/rules/cliche.yaml +67 -0
  478. package/rules/closing-cliche.yaml +7 -0
  479. package/rules/code-fence-language-mix.yaml +176 -0
  480. package/rules/colloquial-opener.yaml +62 -0
  481. package/rules/colon-lead-in.yaml +7 -1
  482. package/rules/concrete-evidence-density.yaml +6 -0
  483. package/rules/contraction-consistency.yaml +4 -1
  484. package/rules/contrast-framing.yaml +7 -1
  485. package/rules/cross-doc-duplicate-definition.yaml +70 -0
  486. package/rules/cross-doc-fact-conflict.yaml +64 -0
  487. package/rules/currency-notation-consistency.yaml +77 -0
  488. package/rules/cushion-phrase-density.yaml +8 -1
  489. package/rules/dangling-figure-reference.yaml +3 -1
  490. package/rules/dangling-participle.yaml +58 -0
  491. package/rules/dangling-reference.yaml +3 -1
  492. package/rules/date-format-consistency.yaml +3 -2
  493. package/rules/date-order.yaml +3 -1
  494. package/rules/date-range-reversed.yaml +3 -1
  495. package/rules/date-weekday-mismatch.yaml +3 -1
  496. package/rules/date-without-year.yaml +4 -3
  497. package/rules/defined-name-repeated.yaml +97 -0
  498. package/rules/defined-term-form.yaml +113 -0
  499. package/rules/demonstrative-opener-run.yaml +2 -1
  500. package/rules/double-keigo.yaml +6 -1
  501. package/rules/double-negative.yaml +5 -1
  502. package/rules/doubled-nado.yaml +2 -1
  503. package/rules/doubled-punctuation.yaml +1 -1
  504. package/rules/doubled-word.yaml +4 -1
  505. package/rules/duplicate-definition.yaml +3 -1
  506. package/rules/duplicate-heading.yaml +1 -1
  507. package/rules/duration-mismatch.yaml +2 -1
  508. package/rules/elapsed-years-mismatch.yaml +4 -1
  509. package/rules/email-greeting-closing.yaml +122 -0
  510. package/rules/email-subject-length.yaml +112 -0
  511. package/rules/emoji-density.yaml +3 -1
  512. package/rules/emoji-heading.yaml +7 -1
  513. package/rules/empty-intensifier.yaml +4 -0
  514. package/rules/empty-list-item.yaml +2 -1
  515. package/rules/empty-section.yaml +1 -1
  516. package/rules/empty-table-cell.yaml +2 -1
  517. package/rules/excessive-hedging.yaml +7 -1
  518. package/rules/exclamation-width-consistency.yaml +64 -0
  519. package/rules/expletive-construction.yaml +7 -1
  520. package/rules/fact-conflict.yaml +4 -1
  521. package/rules/figure-reference-order.yaml +7 -1
  522. package/rules/footnote-mismatch.yaml +91 -0
  523. package/rules/fullwidth-alnum-consistency.yaml +2 -2
  524. package/rules/hankaku-kana.yaml +1 -1
  525. package/rules/heading-command-missing.yaml +109 -0
  526. package/rules/heading-echo.yaml +6 -1
  527. package/rules/heading-end-punctuation-mix.yaml +158 -0
  528. package/rules/heading-level-skip.yaml +3 -3
  529. package/rules/heading-numbering-mix.yaml +4 -3
  530. package/rules/hiragana-fukushi.yaml +4 -1
  531. package/rules/homophone-slip.yaml +5 -1
  532. package/rules/humble-for-others.yaml +63 -0
  533. package/rules/hyphen-as-dash.yaml +59 -0
  534. package/rules/idiom-misuse.yaml +4 -1
  535. package/rules/image-file-name-alt.yaml +83 -0
  536. package/rules/impossible-date.yaml +79 -0
  537. package/rules/impossible-time.yaml +76 -0
  538. package/rules/internal-jargon.yaml +1 -1
  539. package/rules/invisible-character.yaml +1 -1
  540. package/rules/katakana-density.yaml +2 -1
  541. package/rules/katakana-long-vowel.yaml +1 -1
  542. package/rules/known-misspelling.yaml +2 -1
  543. package/rules/kutoten-consistency.yaml +1 -1
  544. package/rules/latin-abbreviation-form.yaml +58 -0
  545. package/rules/latin-spacing.yaml +6 -2
  546. package/rules/less-for-fewer.yaml +59 -0
  547. package/rules/link-text-url-mismatch.yaml +72 -0
  548. package/rules/list-item-form-mix.yaml +7 -1
  549. package/rules/list-marker-mix.yaml +111 -0
  550. package/rules/max-kanji-continuous.yaml +10 -2
  551. package/rules/max-paragraph-length.yaml +4 -1
  552. package/rules/max-sentence-length.yaml +29 -21
  553. package/rules/max-ten.yaml +4 -1
  554. package/rules/misconversion.yaml +2 -1
  555. package/rules/modal-conflict.yaml +2 -1
  556. package/rules/name-variant.yaml +4 -3
  557. package/rules/ngram-repetition.yaml +5 -0
  558. package/rules/no-doubled-joshi.yaml +5 -1
  559. package/rules/no-em-dash.yaml +4 -1
  560. package/rules/no-lead.yaml +6 -1
  561. package/rules/no-mixed-desumasu.yaml +5 -2
  562. package/rules/no-nakaguro-parallel.yaml +3 -0
  563. package/rules/nominalization.yaml +5 -1
  564. package/rules/nonstandard-word.yaml +80 -0
  565. package/rules/number-style-consistency.yaml +6 -1
  566. package/rules/number-without-unit.yaml +2 -1
  567. package/rules/numbering-gap.yaml +1 -1
  568. package/rules/numeral-sentence-start.yaml +56 -0
  569. package/rules/one-sentence-paragraph-run.yaml +5 -1
  570. package/rules/ordinal-suffix-mismatch.yaml +65 -0
  571. package/rules/orthographic-variant.yaml +4 -1
  572. package/rules/outside-announced-list.yaml +2 -1
  573. package/rules/oxford-comma-consistency.yaml +3 -1
  574. package/rules/padded-intro.yaml +7 -0
  575. package/rules/paragraph-length-variance.yaml +7 -1
  576. package/rules/paragraph-restatement.yaml +6 -1
  577. package/rules/percent-sum-mismatch.yaml +3 -1
  578. package/rules/person-consistency.yaml +4 -1
  579. package/rules/preamble-length.yaml +6 -0
  580. package/rules/preferred-term.yaml +1 -1
  581. package/rules/proper-noun-density.yaml +8 -1
  582. package/rules/quote-style-consistency.yaml +66 -0
  583. package/rules/ra-nuki.yaml +4 -1
  584. package/rules/range-notation-consistency.yaml +73 -0
  585. package/rules/redundant-expression.yaml +4 -1
  586. package/rules/reference-title-mismatch.yaml +4 -3
  587. package/rules/reference-topic-missing.yaml +2 -1
  588. package/rules/relative-date-mismatch.yaml +2 -1
  589. package/rules/repeated-conjunction.yaml +4 -1
  590. package/rules/repeated-sentence-ending.yaml +62 -0
  591. package/rules/repeated-sentence-head.yaml +4 -0
  592. package/rules/request-without-deadline.yaml +92 -0
  593. package/rules/required-sections.yaml +1 -1
  594. package/rules/requirement-modal.yaml +1 -1
  595. package/rules/requirement-smell.yaml +12 -4
  596. package/rules/rule-of-three.yaml +8 -1
  597. package/rules/sasete-itadaku.yaml +7 -1
  598. package/rules/section-length-uniformity.yaml +7 -1
  599. package/rules/sentence-initial-conjunction-run.yaml +5 -1
  600. package/rules/sentence-initial-so.yaml +6 -1
  601. package/rules/sentence-rhythm.yaml +8 -1
  602. package/rules/sentence-spacing-consistency.yaml +63 -0
  603. package/rules/share-over-hundred.yaml +65 -0
  604. package/rules/shell-prompt-mix.yaml +128 -0
  605. package/rules/space-before-punctuation.yaml +1 -1
  606. package/rules/spelling-consistency.yaml +3 -1
  607. package/rules/step-reference-missing.yaml +85 -0
  608. package/rules/step-statement-mix.yaml +76 -0
  609. package/rules/stock-transition.yaml +8 -1
  610. package/rules/stray-space.yaml +2 -2
  611. package/rules/summary-fact-mismatch.yaml +4 -1
  612. package/rules/table-header-variant.yaml +2 -1
  613. package/rules/table-row-overflow.yaml +90 -0
  614. package/rules/taigen-dome-in-prose.yaml +6 -0
  615. package/rules/tari-unpaired.yaml +58 -0
  616. package/rules/teki-overuse.yaml +2 -1
  617. package/rules/title-case-consistency.yaml +1 -1
  618. package/rules/title-length.yaml +7 -1
  619. package/rules/toc-heading-mismatch.yaml +136 -0
  620. package/rules/topic-predicate-distance.yaml +6 -1
  621. package/rules/total-mismatch.yaml +3 -1
  622. package/rules/translationese-density.yaml +4 -1
  623. package/rules/unbalanced-bracket.yaml +3 -3
  624. package/rules/unclosed-code-fence.yaml +107 -0
  625. package/rules/uncomparable-graded.yaml +65 -0
  626. package/rules/undefined-acronym.yaml +8 -1
  627. package/rules/unfilled-placeholder.yaml +1 -1
  628. package/rules/unit-mismatch.yaml +2 -1
  629. package/rules/unknown-word.yaml +4 -1
  630. package/rules/unqualified-superlative.yaml +6 -1
  631. package/rules/unrendered-emphasis.yaml +73 -0
  632. package/rules/unused-definition.yaml +4 -3
  633. package/rules/url-run-on.yaml +1 -1
  634. package/rules/use-before-definition.yaml +4 -3
  635. package/rules/vague-figure-reference.yaml +3 -1
  636. package/rules/vague-link-text.yaml +2 -1
  637. package/rules/vague-word-density.yaml +2 -1
  638. package/rules/very-adjective.yaml +5 -1
  639. package/rules/weasel-word.yaml +6 -1
  640. package/rules/which-that-consistency.yaml +64 -0
  641. package/rules/wordy-phrase.yaml +6 -1
  642. package/rules/yori-as-from.yaml +61 -0
  643. package/skills/chaff/SKILL.md +7 -7
  644. package/src/api.ts +13 -1
  645. package/src/cli-text.ts +22 -7
  646. package/src/cli.ts +8 -9
  647. package/src/command-help.ts +26 -0
  648. package/src/commands/eval.ts +2 -2
  649. package/src/commands/fix-plan.ts +13 -1
  650. package/src/commands/help.ts +8 -0
  651. package/src/commands/init-command.ts +13 -0
  652. package/src/commands/plugin-init.ts +150 -0
  653. package/src/commands/plugin-test.ts +111 -0
  654. package/src/config/load.ts +3 -0
  655. package/src/config/option-problems.ts +2 -2
  656. package/src/config/rule-problems.ts +2 -2
  657. package/src/custom/checked.ts +8 -0
  658. package/src/custom/dsl-fields.ts +102 -0
  659. package/src/custom/load.ts +2 -0
  660. package/src/custom/parse.ts +72 -50
  661. package/src/custom/problems.ts +16 -2
  662. package/src/detectors/amount-for-count.ts +90 -0
  663. package/src/detectors/blank-structure.ts +12 -4
  664. package/src/detectors/clause-shape.ts +199 -0
  665. package/src/detectors/code-fences.ts +113 -0
  666. package/src/detectors/cross-definitions.ts +49 -0
  667. package/src/detectors/cross-facts.ts +60 -0
  668. package/src/detectors/cross-registry/cross-doc-duplicate-definition.ts +4 -0
  669. package/src/detectors/cross-registry/cross-doc-fact-conflict.ts +4 -0
  670. package/src/detectors/currency-notation.ts +90 -0
  671. package/src/detectors/custom.ts +10 -2
  672. package/src/detectors/dangling-opener.ts +74 -0
  673. package/src/detectors/defined-term-form.ts +200 -0
  674. package/src/detectors/email-letter.ts +262 -0
  675. package/src/detectors/footnote-mismatch.ts +72 -0
  676. package/src/detectors/form-minority.ts +21 -0
  677. package/src/detectors/heading-end-mark.ts +82 -0
  678. package/src/detectors/impossible-date.ts +141 -0
  679. package/src/detectors/impossible-time.ts +151 -0
  680. package/src/detectors/link-shape.ts +70 -0
  681. package/src/detectors/list-marker.ts +60 -0
  682. package/src/detectors/mark-shape.ts +202 -0
  683. package/src/detectors/markdown-slip.ts +140 -0
  684. package/src/detectors/numeral-opener.ts +72 -0
  685. package/src/detectors/ordinal-suffix.ts +40 -0
  686. package/src/detectors/range-notation.ts +76 -0
  687. package/src/detectors/registry/adverb-polarity.ts +4 -0
  688. package/src/detectors/registry/amount-for-count.ts +4 -0
  689. package/src/detectors/registry/attachment-missing.ts +4 -0
  690. package/src/detectors/registry/bare-url-mix.ts +4 -0
  691. package/src/detectors/registry/caps-shouting.ts +4 -0
  692. package/src/detectors/registry/code-fence-language.ts +4 -0
  693. package/src/detectors/registry/currency-notation.ts +4 -0
  694. package/src/detectors/registry/dangling-opener.ts +4 -0
  695. package/src/detectors/registry/defined-name-repeated.ts +4 -0
  696. package/src/detectors/registry/defined-term-form.ts +4 -0
  697. package/src/detectors/registry/email-frame.ts +4 -0
  698. package/src/detectors/registry/email-subject.ts +4 -0
  699. package/src/detectors/registry/ending-run.ts +4 -0
  700. package/src/detectors/registry/footnote-mismatch.ts +4 -0
  701. package/src/detectors/registry/heading-command.ts +4 -0
  702. package/src/detectors/registry/heading-end-punctuation.ts +4 -0
  703. package/src/detectors/registry/hyphen-dash.ts +4 -0
  704. package/src/detectors/registry/image-file-name-alt.ts +4 -0
  705. package/src/detectors/registry/impossible-date.ts +4 -0
  706. package/src/detectors/registry/impossible-time.ts +4 -0
  707. package/src/detectors/registry/latin-abbreviation.ts +4 -0
  708. package/src/detectors/registry/link-text-url-mismatch.ts +4 -0
  709. package/src/detectors/registry/list-marker.ts +4 -0
  710. package/src/detectors/registry/mark-consistency.ts +4 -0
  711. package/src/detectors/registry/numeral-opener.ts +4 -0
  712. package/src/detectors/registry/ordinal-suffix.ts +4 -0
  713. package/src/detectors/registry/origin-particle.ts +4 -0
  714. package/src/detectors/registry/range-notation.ts +4 -0
  715. package/src/detectors/registry/relative-pronoun-mix.ts +4 -0
  716. package/src/detectors/registry/request-without-deadline.ts +4 -0
  717. package/src/detectors/registry/sentence-spacing.ts +4 -0
  718. package/src/detectors/registry/share-over-hundred.ts +4 -0
  719. package/src/detectors/registry/shell-prompt.ts +4 -0
  720. package/src/detectors/registry/step-reference.ts +4 -0
  721. package/src/detectors/registry/step-statement.ts +4 -0
  722. package/src/detectors/registry/table-row-overflow.ts +4 -0
  723. package/src/detectors/registry/toc-heading.ts +4 -0
  724. package/src/detectors/registry/unclosed-code-fence.ts +4 -0
  725. package/src/detectors/registry/unpaired-parallel.ts +4 -0
  726. package/src/detectors/registry/unrendered-emphasis.ts +4 -0
  727. package/src/detectors/relative-pronoun-mix.ts +79 -0
  728. package/src/detectors/request-owner.ts +141 -0
  729. package/src/detectors/share-over-hundred.ts +75 -0
  730. package/src/detectors/step-reference.ts +83 -0
  731. package/src/detectors/technical-docs.ts +230 -0
  732. package/src/detectors/toc-heading.ts +125 -0
  733. package/src/extension/pack-read.ts +128 -0
  734. package/src/extension/plugin-load.ts +49 -9
  735. package/src/extension/plugin-parse.ts +10 -3
  736. package/src/facts/address-values.ts +74 -0
  737. package/src/facts/cross-facts.ts +54 -0
  738. package/src/fix-plan/chosen-depth.ts +28 -0
  739. package/src/fix-plan/mode.ts +57 -11
  740. package/src/fix-plan/plan.ts +37 -5
  741. package/src/fix-plan/render.ts +24 -0
  742. package/src/fix-plan/text.ts +47 -10
  743. package/src/genre-load.ts +7 -4
  744. package/src/genre-parse.ts +19 -0
  745. package/src/init.ts +10 -10
  746. package/src/known-genres.ts +19 -0
  747. package/src/link-shape.ts +62 -0
  748. package/src/list-marks.ts +106 -0
  749. package/src/reasons.ts +16 -4
  750. package/src/render/explain.ts +14 -2
  751. package/src/render/friendly.ts +1 -1
  752. package/src/render/rules-json.ts +14 -3
  753. package/src/render/rules-table.ts +6 -6
  754. package/src/render/semantic.ts +2 -2
  755. package/src/render/suppressions.ts +2 -2
  756. package/src/rewrite-depth.ts +60 -0
  757. package/src/rule-fields.ts +123 -0
  758. package/src/rule-guide.ts +9 -0
  759. package/src/rule-load.ts +10 -4
  760. package/src/rule-offs.ts +50 -0
  761. package/src/structure/build.ts +21 -1
  762. package/src/structure/cross-definitions.ts +60 -0
@@ -0,0 +1,64 @@
1
+ id: exclamation-width-consistency
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: mark-consistency
5
+ word_list: exclamation-width
6
+ languages: [ja]
7
+ severity: info
8
+
9
+ name:
10
+ ja: !? の全角と半角の混在
11
+ en: Full-width and half-width ! and ? mixed
12
+
13
+ why:
14
+ ja: 日本語の文の中で、感嘆符と疑問符を全角(!?)と半角(!?)で混ぜて書くと、別々の所から貼り合わせた文書に見えます。どちらが正しいかは決めません。日本語の字に接するものだけを、感嘆符と疑問符それぞれで数え、少ないほうを指します。
15
+ en: In a Japanese document, ! and ? written both full-width (!?) and half-width (!?) make it look pasted together. chaff does not pick a side; it counts only marks touching Japanese text, each kind apart, and points at the less common way.
16
+
17
+ message:
18
+ ja: 「{mark}」と書いています(この文書はふつう「{usual}」。{of} 箇所のうち {count} 箇所が違う)
19
+ en: '"{mark}" here, where the document usually writes "{usual}" ({count} of {of})'
20
+
21
+ # 少ないほうが 5 箇所以上で、全体の 2 割を超えるとき。書き損じではなく書き方が二通りあるので、1 件にまとめて両方の数を言う。
22
+ messages:
23
+ mixed:
24
+ ja: "「{mark}」の仲間を、全角で {spaced} 箇所、半角で {touching} 箇所書いています。この文書には書き方が二通りあります"
25
+ en: '"{mark}" is written two ways in this document ({spaced} full-width, {touching} half-width)'
26
+
27
+ how_to_fix:
28
+ ja: 文書の多いほうの書き方に合わせてください。
29
+ en: Match the way the rest of the document writes it.
30
+
31
+ levels: { strict: 1, normal: 1, relaxed: 3 }
32
+
33
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
34
+
35
+ group: consistency
36
+ summary:
37
+ ja: 日本語の文の中で、!? の全角と半角(!?)が混ざっている所
38
+ en: Full-width !? and half-width !? mixed in one Japanese document
39
+ example:
40
+ ja:
41
+ before: |
42
+ 本当ですか? 来週ですか? 今日ですか?
43
+ after: |
44
+ 本当ですか? 来週ですか? 今日ですか?
45
+
46
+ not_flagged:
47
+ ja: 日本語の字に接するものだけを数えます。URL やコードの中の「?」、英語の文の中のものは数えません。
48
+ en: Only marks touching Japanese text. A ? in a URL, in code or in English text is not counted.
49
+ level_meaning:
50
+ ja: 少ないほうの書き方が {limit} 箇所あれば指摘
51
+ en: reported once the less common way appears {limit} times
52
+ rewrite:
53
+ depth: light
54
+ ja:
55
+ direction: 指された感嘆符・疑問符だけを、文書の多いほうの書き方(全角か半角)に替えてください。
56
+ pairs:
57
+ - before: 今日ですか?
58
+ after: 今日ですか?
59
+ - before: 完成しました!
60
+ after: 完成しました!
61
+ keep:
62
+ - 文の言葉
63
+ avoid:
64
+ - 感嘆符を増やしたり減らしたりする
@@ -1,6 +1,6 @@
1
1
  id: expletive-construction
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: expletive
5
5
  requires: [pos]
6
6
  languages: [en]
@@ -25,6 +25,12 @@ how_to_fix:
25
25
  levels: { strict: 1, normal: 3, relaxed: 6 }
26
26
 
27
27
  use_for: [blog, business, legal, docs, academic, literature, speech]
28
+ off_for:
29
+ legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
30
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
31
+ academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
32
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
33
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
28
34
 
29
35
  group: readability
30
36
  summary:
@@ -1,6 +1,6 @@
1
1
  id: fact-conflict
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: fact-conflict
5
5
  requires: [quantities]
6
6
  uses: [pos]
@@ -25,6 +25,8 @@ how_to_fix:
25
25
  levels: { normal: warning, relaxed: info }
26
26
 
27
27
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
28
+ off_for:
29
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
28
30
 
29
31
  group: facts
30
32
  summary:
@@ -58,6 +60,7 @@ not_flagged:
58
60
  ja: 違う見出しの下、違う親の項目の下、太字だけの行や「第2回:」のような行の後ろの値は、別のものの値として比べません。値の後ろに条件が続くもの(「3,000円から」「10月5日に開催」)、読点のあとから始まる項目名(「大人は、参加費は」)、単位の違う値(単位の食い違いは別に見ます)も比べません。同じ項目に三通り以上の値があれば、一覧として何も言いません。
59
61
  en: Values under different headings, under different parent list items, or after a bold-only line or a line like "Session 2:" are taken as values of different things. A value followed by a condition ("$300 per person", "May 3 at noon"), a name that starts after a comma ("For adults, the fee"), and values in different units are not compared. An item with three or more different values is read as a list and left alone.
60
62
  rewrite:
63
+ depth: light
61
64
  ja:
62
65
  direction: 二つの値のどちらが正しいかを書き手に確かめ、もう一方を同じ値に直してください。どちらが正しいか文書から決まらないときは、推測で選ばずに書き手に聞いてください。
63
66
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: figure-reference-order
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: figure-order
5
5
  severity: info
6
6
 
@@ -34,6 +34,11 @@ how_to_fix:
34
34
  levels: { strict: warning, normal: info, relaxed: info }
35
35
 
36
36
  use_for: [academic, legal, docs, literature, speech]
37
+ off_for:
38
+ legal: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
39
+ docs: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
40
+ literature: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
41
+ speech: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
37
42
 
38
43
  group: structure
39
44
  summary:
@@ -81,6 +86,7 @@ not_flagged:
81
86
  ja: キャプション(行の頭の「図1 …」)を一つも書いていない種類の図、他の文書の図(「報告書の図5」)、リンクの字、番号が字や漢数字のもの(付録A、別表第一)は見ません。付録・別表・様式は文書の終わりに置くものなので、参照の順だけを見て、置き場所と参照の有無は見ません。見出しの無い文書では、節を越えたかどうかは見ません。論文のジャンルでだけ見ます。
82
87
  en: 'A kind of figure the document never captions (a "Figure 1: …" line), figures of another document ("Figure 5 of the report"), link text, and numbers that are letters or numerals in words (Appendix A) are left alone. Appendices and annexes sit at the end, so only the order of their references is checked, not where they are or whether they are referred to. A document without headings is not checked for references past the section. Only the academic paper genre runs this rule.'
83
88
  rewrite:
89
+ depth: structure
84
90
  ja:
85
91
  direction: 初めて参照する順に番号が増えるよう、参照の順を入れ替えるか、図と表の番号を振り直してください。振り直すなら、キャプションとほかの参照も同じく直します。参照しない図には、本文に参照の文を足します。
86
92
  pairs:
@@ -0,0 +1,91 @@
1
+ id: footnote-mismatch
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: footnote-mismatch
5
+ severity: warning
6
+
7
+ name:
8
+ ja: 注の無い注の印と、印の無い注
9
+ en: A note mark with no note, or a note nothing points to
10
+
11
+ why:
12
+ ja: 本文に「※3」や「[^3]」と書いたのに注3が無ければ、読み手は探しても見つからない注を探します。逆に、本文のどこも指さない注は、どの語の注か分かりません。注を消したり番号を振り直したりして、印と注の片方だけが残ったときに起きます。印と注の番号を突き合わせれば、機械で言えます。
13
+ en: When the text says "[^3]" or "※3" and there is no note 3, the reader looks for a note that is not there; a note nothing points to cannot be tied to any word. It happens when a note is deleted or the notes are renumbered and only one side is changed. Matching the marks against the notes' numbers is mechanical.
14
+
15
+ message:
16
+ ja: 「{label}」の注がありません
17
+ en: 'There is no note for "{label}"'
18
+
19
+ messages:
20
+ missing:
21
+ ja: 「{label}」の注がありません
22
+ en: 'There is no note for "{label}"'
23
+ unused:
24
+ ja: 注「{label}」を本文のどこも指していません
25
+ en: 'Nothing in the text points to the note "{label}"'
26
+
27
+ how_to_fix:
28
+ ja: 注を足すか、印を消してください。注を振り直したなら、本文の印も同じ番号に直します。
29
+ en: Add the note or remove the mark. If the notes were renumbered, renumber the marks to match.
30
+
31
+ levels: { normal: warning, relaxed: info }
32
+
33
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
34
+
35
+ group: structure
36
+ summary:
37
+ ja: 本文の「※3」「[^3]」に対応する注が無い所と、本文のどこも指さない注
38
+ en: A note mark ("[^3]", "※3") with no note, or a note that nothing in the text points to
39
+ example:
40
+ ja:
41
+ before: |
42
+ 営業運行※1を開始し、料金※2は無料です。
43
+
44
+ ※1 特定の走行環境条件での運行
45
+ after: |
46
+ 営業運行※1を開始し、料金※2は無料です。
47
+
48
+ ※1 特定の走行環境条件での運行
49
+ ※2 実証期間中に限ります
50
+ en:
51
+ before: |
52
+ The pilot starts in May[^1] and is free[^2].
53
+
54
+ [^1]: On weekdays only.
55
+ after: |
56
+ The pilot starts in May[^1] and is free[^2].
57
+
58
+ [^1]: On weekdays only.
59
+ [^2]: During the trial period.
60
+
61
+ not_flagged:
62
+ ja: Markdown の脚注([^1] と行頭の [^1]:)と、※ に一桁か二桁の番号を付けた印(※1、(※2))を読みます。※ の注が文書に一つも無いときは、注を別の所(表や別紙)に置いた文書と読んで言いません。※ の後ろに数が続くもの(※2018年度)は注の番号ではありません。コードの中は読みません。
63
+ en: Markdown footnotes ([^1] and a line starting "[^1]:") and a ※ with a one- or two-digit number (※1, (※2)) are read. When a document has no ※ note at all, its notes are taken to be elsewhere (a table, an annex) and nothing is reported for ※. A ※ before a longer number ("※2018") is not a note mark. Code is not read.
64
+
65
+ rewrite:
66
+ ja:
67
+ direction: 印と注の番号を突き合わせ、注の無い印には注を足すか印を消し、どこからも指されない注には印を足すか注を消してください。
68
+ pairs:
69
+ - before: 料金※2は無料です。(注は ※1 だけ)
70
+ after: 料金※2は無料です。(※2 実証期間中に限ります、を足す)
71
+ - before: 本文に ※3 が無いのに「※3 予約が必要です」の注がある
72
+ after: 予約の要る語に ※3 を付ける
73
+ keep:
74
+ - 注の中身
75
+ - ほかの注の番号
76
+ avoid:
77
+ - 書き手が知らない注の中身を作る
78
+ - 印だけを消して、注が要る内容を本文から落とす
79
+ en:
80
+ direction: Match the marks against the notes. Add the missing note or remove its mark; for a note nothing points to, add the mark where it belongs or remove the note.
81
+ pairs:
82
+ - before: The pilot is free[^2]. (only [^1] is defined)
83
+ after: 'The pilot is free[^2]. (adds "[^2]: During the trial period.")'
84
+ - before: '"[^3]: Booking required." with no [^3] in the text'
85
+ after: '"Booking is required[^3]." where the note belongs'
86
+ keep:
87
+ - what each note says
88
+ - the numbers of the other notes
89
+ avoid:
90
+ - inventing what a note says
91
+ - removing a mark and with it a qualification the text needs
@@ -1,9 +1,9 @@
1
1
  id: fullwidth-alnum-consistency
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: fullwidth-alnum
5
5
  languages: [ja]
6
- severity: warning
6
+ severity: info
7
7
 
8
8
  name:
9
9
  ja: 英数字の全角と半角が混ざっている
@@ -1,6 +1,6 @@
1
1
  id: hankaku-kana
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: hankaku-kana
5
5
  languages: [ja]
6
6
  severity: warning
@@ -0,0 +1,109 @@
1
+ id: heading-command-missing
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: heading-command
5
+ requires: [markdown]
6
+ severity: info
7
+
8
+ name:
9
+ ja: 見出しのコマンドやオプションが、その節のコードに無い
10
+ en: A heading names a command its section's code does not show
11
+
12
+ why:
13
+ ja: 「## `--dry-run`」の節のコード例が「--dryrun」を使っていると、読み手はどちらが正しいか分かりません。コマンドやオプションの名前を変えたときに、見出しかコード例の片方だけを直すと起きます。見出しのコードの部分(`npm install`、`--force`、`init`)が、その節(次の同じ深さか浅い見出しまで)のコードブロックにもコードの部分にも無いとき指します。節にコードが一つも無ければ見ません。
14
+ en: 'When the section "## `--dry-run`" shows an example using "--dryrun", the reader cannot tell which is right. It happens when a command or an option is renamed and only the heading or only the example is updated. chaff points out a heading''s code part (`npm install`, `--force`, `init`) that appears in none of the code blocks or code spans of its section (up to the next heading of the same or a higher level). A section with no code at all is not checked.'
15
+
16
+ message:
17
+ ja: 見出しの「{command}」が、この節のコードにありません
18
+ en: '"{command}" in this heading does not appear in the section''s code'
19
+
20
+ how_to_fix:
21
+ ja: 見出しとコード例のどちらが今の名前かを確かめて、もう一方を直してください。
22
+ en: Check which of the heading and the example has the current name, and correct the other.
23
+
24
+ levels: { strict: warning, normal: info, relaxed: info }
25
+
26
+ use_for: [technical, docs, blog, legal, academic, literature, speech]
27
+ off_for:
28
+ legal: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
29
+ academic: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
30
+ literature: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
31
+ speech: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
32
+
33
+ group: facts
34
+ summary:
35
+ ja: 見出しが名指すコマンドやオプションが、その節のコード例のどこにも無い所
36
+ en: A command or option named in a heading that the section's examples never use
37
+ example:
38
+ ja:
39
+ config: { genre: docs/manual }
40
+ before: |
41
+ # 使い方
42
+
43
+ ## `--dry-run`
44
+
45
+ 直さずに、直す所だけを見せます。
46
+
47
+ ```bash
48
+ npx chaffjs fix --dryrun README.md
49
+ ```
50
+ after: |
51
+ # 使い方
52
+
53
+ ## `--dry-run`
54
+
55
+ 直さずに、直す所だけを見せます。
56
+
57
+ ```bash
58
+ npx chaffjs fix --dry-run README.md
59
+ ```
60
+ en:
61
+ config: { genre: docs/manual }
62
+ before: |
63
+ # Usage
64
+
65
+ ## `--dry-run`
66
+
67
+ Show what would change without changing it.
68
+
69
+ ```bash
70
+ npx chaffjs fix --dryrun README.md
71
+ ```
72
+ after: |
73
+ # Usage
74
+
75
+ ## `--dry-run`
76
+
77
+ Show what would change without changing it.
78
+
79
+ ```bash
80
+ npx chaffjs fix --dry-run README.md
81
+ ```
82
+
83
+ not_flagged:
84
+ ja: コードの無い節、ファイル名や関数名(`config.yaml`、`useEffect`)を書いた見出し、コードの部分の無い見出しは見ません。`--force` は `--force-with-lease` の中にあっても、あったとは数えません。
85
+ en: "Sections with no code, headings naming a file or a function (`config.yaml`, `useEffect`), and headings with no code part are not checked. `--force` inside `--force-with-lease` does not count as shown."
86
+ rewrite:
87
+ depth: light
88
+ ja:
89
+ direction: 見出しとコード例のどちらが今のコマンドやオプションの名前かを書き手に確かめ、もう一方を直してください。分からなければ推測で書き換えず、確かめるよう伝えます。
90
+ pairs:
91
+ - before: npx chaffjs fix --dryrun README.md
92
+ after: npx chaffjs fix --dry-run README.md
93
+ - before: "## `chaff lint`"
94
+ after: "## `chaff check`"
95
+ keep:
96
+ - 節の説明の文
97
+ avoid:
98
+ - どちらの名前が正しいかを推測で決める
99
+ en:
100
+ direction: Ask the writer which of the heading and the example has the current name of the command or option, and correct the other. If it is not clear, do not guess; ask.
101
+ pairs:
102
+ - before: npx chaffjs fix --dryrun README.md
103
+ after: npx chaffjs fix --dry-run README.md
104
+ - before: "## `chaff lint`"
105
+ after: "## `chaff check`"
106
+ keep:
107
+ - the section's explanation
108
+ avoid:
109
+ - guessing which name is right
@@ -3,7 +3,7 @@ layer: L1
3
3
  status: stable
4
4
  how_to_find: heading-echo
5
5
  uses: [pos]
6
- severity: warning
6
+ severity: info
7
7
 
8
8
  name:
9
9
  ja: 見出しの繰り返し
@@ -29,6 +29,11 @@ levels:
29
29
  relaxed: 75
30
30
 
31
31
  use_for: [blog, business, technical, legal, docs, academic, literature, speech]
32
+ off_for:
33
+ legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
34
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
35
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
36
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
32
37
 
33
38
  group: readability
34
39
  summary:
@@ -0,0 +1,158 @@
1
+ id: heading-end-punctuation-mix
2
+ layer: L1
3
+ status: stable
4
+ how_to_find: heading-end-punctuation
5
+ word_list: heading-end-word
6
+ requires: [markdown]
7
+ severity: info
8
+
9
+ name:
10
+ ja: 見出しの終わりの記号が揃っていない
11
+ en: Heading end punctuation mixed
12
+
13
+ why:
14
+ ja: ほとんどの見出しが「手順」「注意点」のように記号なしで終わるのに、一つだけ「準備:」「確認。」と記号で終わっていたり、その逆だったりすると、読み手はその見出しだけ別の扱いなのかと迷い、目次でも浮いて見えます。直し忘れや、別の文書から貼った見出しによく出る形です。どちらの書き方が正しいかは決めず、同じ深さの見出しのうち少ないほうを指します。深さごとに比べるので、一段深い見出しをすべて「任意:」のような札にする書き方は指しません。
15
+ en: When most headings end bare ("Setup", "Notes") and one ends with a colon or a full stop ("Prerequisites:", "Checks."), or the other way round, the reader wonders whether that heading is meant to be different, and it stands out in the table of contents. It is usually a heading pasted from elsewhere or not yet tidied. chaff does not pick a style; it points at the smaller side among headings of the same depth. Depths are compared apart, so a depth whose headings are all labels ("Optional:") is not reported.
16
+
17
+ message:
18
+ ja: 見出し「{heading}」の終わりの記号が、ほかの見出し(「{example}」など {count} 個)と違います
19
+ en: 'The heading "{heading}" ends differently from the other headings ("{example}" and {count} in all)'
20
+ messages:
21
+ marked:
22
+ ja: 見出し「{heading}」だけ「{mark}」で終わっています(ほかの見出しは「{example}」など {count} 個が「:」「。」なしで終わる)
23
+ en: 'The heading "{heading}" ends with "{mark}", while {count} other headings end bare ("{example}")'
24
+ bare:
25
+ ja: 見出し「{heading}」だけ「:」「。」なしで終わっています(ほかの見出しは「{example}」など {count} 個が記号で終わる)
26
+ en: 'The heading "{heading}" ends bare, while {count} other headings end with a mark ("{example}")'
27
+
28
+ how_to_fix:
29
+ ja: 見出しの終わりを、多いほうの書き方に揃えてください。記号なしの見出しが多ければ「:」や「。」を外します。
30
+ en: End the heading the way most headings end. If most end bare, drop the colon or the full stop.
31
+
32
+ placeholders:
33
+ heading:
34
+ ja: 見出し
35
+ en: the heading
36
+ mark:
37
+ ja: 記号
38
+ en: the mark
39
+ example:
40
+ ja: ほかの見出し
41
+ en: another heading
42
+ count:
43
+ ja: 〇
44
+ en: N
45
+
46
+ levels: { strict: warning, normal: info, relaxed: info }
47
+
48
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
49
+
50
+ group: consistency
51
+ summary:
52
+ ja: 記号なしの見出しの中に「準備:」「確認。」のように記号で終わる見出しが混ざっている所(またはその逆)
53
+ en: A heading ending with a colon or a full stop among headings that end bare, or the other way round
54
+ example:
55
+ ja:
56
+ before: |
57
+ # 作業の手引き
58
+
59
+ ## 準備
60
+
61
+ 道具をそろえます。
62
+
63
+ ## 手順
64
+
65
+ 順に進めます。
66
+
67
+ ## 確認:
68
+
69
+ 結果を見ます。
70
+
71
+ ## 片付け
72
+
73
+ 元に戻します。
74
+ after: |
75
+ # 作業の手引き
76
+
77
+ ## 準備
78
+
79
+ 道具をそろえます。
80
+
81
+ ## 手順
82
+
83
+ 順に進めます。
84
+
85
+ ## 確認
86
+
87
+ 結果を見ます。
88
+
89
+ ## 片付け
90
+
91
+ 元に戻します。
92
+ en:
93
+ before: |
94
+ # Working guide
95
+
96
+ ## Preparation
97
+
98
+ Gather the tools.
99
+
100
+ ## Steps
101
+
102
+ Work through them in order.
103
+
104
+ ## Checks:
105
+
106
+ Look at the result.
107
+
108
+ ## Cleanup
109
+
110
+ Put everything back.
111
+ after: |
112
+ # Working guide
113
+
114
+ ## Preparation
115
+
116
+ Gather the tools.
117
+
118
+ ## Steps
119
+
120
+ Work through them in order.
121
+
122
+ ## Checks
123
+
124
+ Look at the result.
125
+
126
+ ## Cleanup
127
+
128
+ Put everything back.
129
+
130
+ not_flagged:
131
+ ja: 文書の題(最初の一つだけの一番上の見出し)は比べません。同じ深さの見出しが四つ未満の所、記号で終わる見出しと終わらない見出しが同じくらいある文書(少ないほうが四分の一を超える)は指しません。疑問符・感嘆符で終わる見出しは、記号なしと数えます。「…」や「etc.」「Inc.」のように言葉の一部の点で終わる見出しは比べません(点で終わる略語は言語ごとの語彙表にあります)。
132
+ en: The page title (a single top-level heading that opens the document) is not compared. Fewer than four headings at one depth, or where both ways are common (the smaller side above a quarter), is not reported. A heading ending with a question mark or an exclamation mark counts as bare. A heading ending with a full stop that is part of the words ("…", "etc.", "Inc.") is left out of the comparison; the abbreviations are in each language's lexicon.
133
+ rewrite:
134
+ depth: light
135
+ ja:
136
+ direction: 見出しの終わりを、文書の多くの見出しと同じ書き方にしてください。記号を足すか外すだけで、見出しの言葉は変えません。
137
+ pairs:
138
+ - before: 「## 準備」「## 手順」「## 確認:」
139
+ after: 「## 準備」「## 手順」「## 確認」
140
+ - before: 「## 背景。」「## 方針。」「## 課題」
141
+ after: 「## 背景。」「## 方針。」「## 課題。」
142
+ keep:
143
+ - 見出しの言葉と深さ
144
+ avoid:
145
+ - 少ないほうに合わせて、ほかの見出しをすべて書き換える
146
+ - 見出しを文に書き直す
147
+ en:
148
+ direction: End the heading the way most of the document's headings end. Only add or drop the mark; keep the heading's words.
149
+ pairs:
150
+ - before: '"## Preparation", "## Steps", "## Checks:"'
151
+ after: '"## Preparation", "## Steps", "## Checks"'
152
+ - before: '"## Background.", "## Plan.", "## Risks"'
153
+ after: '"## Background.", "## Plan.", "## Risks."'
154
+ keep:
155
+ - the heading's words and depth
156
+ avoid:
157
+ - rewriting every other heading to match the odd one
158
+ - turning the heading into a sentence
@@ -1,9 +1,9 @@
1
1
  id: heading-level-skip
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: heading-level-skip
5
5
  requires: [markdown]
6
- severity: warning
6
+ severity: info
7
7
 
8
8
  name:
9
9
  ja: 見出しの深さが飛んでいる
@@ -21,7 +21,7 @@ how_to_fix:
21
21
  ja: 一つ前の見出しより一段だけ深くしてください。文字の大きさを変えたいだけなら、深さではなく表示の設定で変えてください。
22
22
  en: Make the heading one level deeper than the one before it. If only the size on screen was the point, change the style instead of the level.
23
23
 
24
- levels: { strict: error, normal: warning, relaxed: info }
24
+ levels: { strict: warning, normal: info, relaxed: info }
25
25
 
26
26
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
27
27
 
@@ -1,9 +1,9 @@
1
1
  id: heading-numbering-mix
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: heading-numbering
5
5
  requires: [markdown]
6
- severity: warning
6
+ severity: info
7
7
 
8
8
  name:
9
9
  ja: 見出しの番号の付け方が揃っていない
@@ -42,7 +42,7 @@ placeholders:
42
42
  ja: 〇
43
43
  en: N
44
44
 
45
- levels: { strict: error, normal: warning, relaxed: info }
45
+ levels: { strict: warning, normal: info, relaxed: info }
46
46
 
47
47
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
48
48
 
@@ -114,6 +114,7 @@ not_flagged:
114
114
  ja: 兄弟が三つ未満の所、少ないほうと多いほうが同じ数の所、深さや親の違う見出しどうし(「1.」の下の「1.1」)は比べません。前後の見出し(目次、参考文献、付録)は兄弟に数えません。見出しの頭の数でも、区切りの記号の無い数(「2026年の計画」「3つの理由」)は番号と読みません。
115
115
  en: Fewer than three siblings, a tie between the two sides, and headings at different depths or under different parents ("1." and "1.1") are not compared. Front and back matter (Contents, References, Appendix) is not counted among the siblings. A number at the head of a heading without a separator ("2026 roadmap", "3 reasons") is not read as a heading number.
116
116
  rewrite:
117
+ depth: light
117
118
  ja:
118
119
  direction: 兄弟の見出しで、多いほうの番号の付け方に揃えてください。番号の無い見出しに番号を足すか、番号の書き方(1. と 1))を一つにします。見出しの言葉は変えません。
119
120
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: hiragana-fukushi
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: phrase-match
5
5
  word_list: hiragana-fukushi
6
6
  uses: [pos]
@@ -26,6 +26,9 @@ how_to_fix:
26
26
  levels: { strict: 1, normal: 1, relaxed: 3 }
27
27
 
28
28
  use_for: [blog, business, technical, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
31
+ speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
29
32
 
30
33
  group: readability
31
34
  summary:
@@ -1,6 +1,6 @@
1
1
  id: homophone-slip
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: phrase-match
5
5
  word_list: homophone-slip
6
6
  requires: [pos]
@@ -26,6 +26,9 @@ how_to_fix:
26
26
  levels: { strict: 1, normal: 1, relaxed: 2 }
27
27
 
28
28
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
29
+ off_for:
30
+ literature: 'A narrator and a character speak as they speak: dialect ("would of"), "So," and hearsay are the voice.'
31
+ speech: "A transcript keeps the speaker's words: hedges and ら dropped as spoken."
29
32
 
30
33
  group: slips
31
34
  summary:
@@ -45,6 +48,7 @@ level_meaning:
45
48
  ja: 取り違えが {limit} 箇所あれば指摘
46
49
  en: reported once there are {limit}
47
50
  rewrite:
51
+ depth: light
48
52
  en:
49
53
  direction: Correct only the confused word, to the form the lexicon gives.
50
54
  pairs: