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
@@ -1,6 +1,6 @@
1
1
  id: colon-lead-in
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: colon-lead-in
5
5
  # English human writing hands off to a list after a colon as a matter of course: two in a short self-written English
6
6
  # document already passed any limit that the generated-style samples reached. Japanese only until a limit separates them.
@@ -27,6 +27,11 @@ how_to_fix:
27
27
  levels: { strict: 1, normal: 2, relaxed: 4 }
28
28
 
29
29
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
30
+ off_for:
31
+ 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."
32
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
33
+ 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."
34
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
30
35
 
31
36
  group: ai-tells
32
37
  summary:
@@ -58,6 +63,7 @@ level_meaning:
58
63
  ja: コロンで箇条書きへ渡す文が 1000 字あたり {limit} 個まで
59
64
  en: "colon lead-ins to lists: up to {limit} per 1000 characters"
60
65
  rewrite:
66
+ depth: structure
61
67
  ja:
62
68
  direction: コロンで箇条書きへ渡す所のうち、項目が二つか三つで互いに繋がっているものを文に戻してください。手順や部品の一覧は箇条書きのままにします。
63
69
  pairs:
@@ -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: "A speech opens with greetings and closes with thanks: that is its form, not padding."
28
34
 
29
35
  group: structure
30
36
  summary:
@@ -1,6 +1,6 @@
1
1
  id: contraction-consistency
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: contraction-mix
5
5
  word_list: contraction
6
6
  languages: [en]
@@ -26,6 +26,9 @@ how_to_fix:
26
26
  levels: { strict: 4, normal: 2, relaxed: 1 }
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: consistency
31
34
  summary:
@@ -1,6 +1,6 @@
1
1
  id: contrast-framing
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: contrast-framing
5
5
  word_list: contrast-frame
6
6
  # 打ち消し(it's not)と、それを返す語(it's、but)。後ろに返しが来たときだけ対比の枠になる。
@@ -30,6 +30,11 @@ levels:
30
30
  en: { strict: 2, normal: 3, relaxed: 6 }
31
31
 
32
32
  use_for: [technical/readme, blog, business, legal, docs, academic, literature, speech]
33
+ off_for:
34
+ 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."
35
+ docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
36
+ 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."
37
+ speech: "A speech opens with greetings and closes with thanks: that is its form, not padding."
33
38
 
34
39
  group: ai-tells
35
40
  summary:
@@ -56,6 +61,7 @@ level_meaning:
56
61
  ja: 1000 字あたり対比の枠 {limit} 個まで
57
62
  en: up to {limit} contrast frames per 1000 words
58
63
  rewrite:
64
+ depth: light
59
65
  ja:
60
66
  direction: 打ち消している側(X)を消し、言いたい側(Y)を普通の文で書いてください。X が誰かの実際の誤解なら、その誤解を書いたうえで一度だけ打ち消してください。
61
67
  pairs:
@@ -0,0 +1,70 @@
1
+ id: cross-doc-duplicate-definition
2
+ layer: L3
3
+ status: experimental
4
+ how_to_find: cross-doc-duplicate-definition
5
+ # documents: compares the files of one run, so it runs only when chaff is given two or more files, or a folder.
6
+ requires: [structure, documents]
7
+ # The words that make a sentence a definition (をいう, means), per language.
8
+ extra_word_lists: [definition-statement]
9
+ severity: warning
10
+
11
+ name:
12
+ ja: ファイルによって違う定義
13
+ en: One term defined differently in different files
14
+
15
+ why:
16
+ ja: 契約書の束や説明書では、同じ語をいくつものファイルで定義することがあります(本契約と別紙、用語集と各ページ)。後から一方だけを直すと、ファイルによって定義が食い違い、どちらの意味で読めばよいか分からなくなります。一度に渡したファイルどうしで、同じ語の定義(「『X』とは、…をいう」"X" means …)の、語の後ろの言葉を比べ、多くのファイルと違う言葉で定義したファイルを指します。全角半角、空白、両端の句読点の違いは問いません。言葉が違っても意味が同じかは機械では決まらないので、確かめる場所を示すだけです。
17
+ en: 'A bundle of contracts or a manual often defines the same term in several files (the agreement and its schedule, the glossary and the pages). When one is changed later and the other is not, the files disagree on what the term means. Across the files given together, the words after the term in each definition ("X" means …, 「X」とは、…をいう) are compared, and a file that defines the term in other words than most files do is pointed out. Width, spaces and the punctuation at either end do not count. Whether two wordings mean the same is not something a machine can decide, so chaff only shows where to look.'
18
+
19
+ message:
20
+ ja: 「{term}」を、一緒に見たほかの {count} ファイルと違う言葉で定義しています(例:{example})
21
+ en: '"{term}" is defined in other words than in {count} other {count|file|files} checked with it (as in {example})'
22
+
23
+ how_to_fix:
24
+ ja: 定義を一か所(用語集や本契約)にまとめ、ほかのファイルからはそこを参照してください。意味を変えているなら、別の語にします。
25
+ en: Keep the definition in one place (the glossary, the main agreement) and refer to it from the other files. If the meaning is meant to differ, use a different term.
26
+
27
+ placeholders:
28
+ term:
29
+ ja: 〇〇
30
+ en: the term
31
+
32
+ levels: { strict: error, normal: warning, relaxed: info }
33
+
34
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
35
+
36
+ group: structure
37
+ summary:
38
+ ja: 同じ語を、ファイルによって違う言葉で定義している所
39
+ en: The same term defined in other words in different files
40
+ example:
41
+ ja:
42
+ other: |
43
+ # 用語集
44
+
45
+ 「メンバー」とは、ワークスペースに招かれた人のことです。
46
+ before: |
47
+ # はじめに
48
+
49
+ 「メンバー」とは、料金を払った人のことです。
50
+ after: |
51
+ # はじめに
52
+
53
+ 「メンバー」とは、ワークスペースに招かれた人のことです。
54
+ en:
55
+ other: |
56
+ # Glossary
57
+
58
+ "Member" means a person invited to a workspace.
59
+ before: |
60
+ # Getting started
61
+
62
+ "Member" means a person who pays the fee.
63
+ after: |
64
+ # Getting started
65
+
66
+ "Member" means a person invited to a workspace.
67
+
68
+ not_flagged:
69
+ ja: 範囲を限った定義(「この条において『X』とは」)と、語の後ろに意味を書かない定義(「以下『X』という。」)は比べません。一つのファイルの中で二度定義した語は、最初の定義で比べます(二度目は duplicate-definition が見ます)。全角半角、空白、両端の句読点だけが違う定義は同じとみなします。
70
+ en: Definitions limited to a part ("In this section, X means") and those that give the meaning before the term ('(the "Vendor")') are not compared. A file that defines a term twice is compared by its first definition (duplicate-definition reports the second). Definitions that differ only in width, spaces or the punctuation at either end are taken as the same.
@@ -0,0 +1,64 @@
1
+ id: cross-doc-fact-conflict
2
+ layer: L3
3
+ status: experimental
4
+ how_to_find: cross-doc-fact-conflict
5
+ # documents: compares the files of one run, so it runs only when chaff is given two or more files, or a folder.
6
+ requires: [quantities, documents]
7
+ uses: [pos]
8
+ severity: warning
9
+
10
+ name:
11
+ ja: ファイルによって違う値が書いてある項目
12
+ en: One item given different values in different files
13
+
14
+ why:
15
+ ja: 説明書や文書の束では、料金・版・締切・問い合わせ先のような同じ項目を、いくつものページに書きます。値を直したときに一つのページだけ直し忘れると、ページによって値が食い違い、読み手はどれを信じればよいか分かりません。一度に渡したファイルどうしで、「項目:値」「項目は値です」と書いた所と表の升を読み、同じ項目名(全角半角、大文字小文字は揃えて比べます)に、同じ単位で違う値を書いたファイルを指します。メールアドレスと、三つ以上に区切った版(2.4.1、v3)も値として読みます。どちらが正しいかは決めず、その値を書いたファイルの少ないほうを指します。
16
+ en: 'A manual or a bundle of documents repeats the same items, such as a fee, a version, a deadline or a contact address, on page after page. When a value changes and one page is missed, the pages disagree and the reader cannot tell which to trust. Across the files given together, values written as "Item: value" or "The item is value", and table cells, are read; a file that gives the same item name (case and width aside) a different value in the same unit is pointed out. Email addresses and versions of three parts or more (2.4.1, v3) are read as values too. chaff does not decide which is right; it points at the value fewer files give.'
17
+
18
+ message:
19
+ ja: 「{label}」が {value} と書かれていますが、一緒に見たほかの {count} ファイルでは {other} です(例:{example})
20
+ en: '"{label}" is {value} here, but {other} in {count} other {count|file|files} checked with it (as in {example})'
21
+
22
+ how_to_fix:
23
+ ja: どちらの値が正しいかを確かめて、違うほうを直してください。別のもの(別のプラン、別の版)の値なら、項目名にそれを書き分けてください(「プロプランの月額料金」)。
24
+ en: Check which value is right and correct the other. If they are values of different things (another plan, another release), say so in the item name ("Pro plan monthly fee").
25
+
26
+ levels: { normal: warning, relaxed: info }
27
+
28
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
29
+
30
+ group: facts
31
+ summary:
32
+ ja: 同じ項目(料金、版、締切、問い合わせ先)に、ファイルによって違う値を書いた所
33
+ en: The same item (a fee, a version, a deadline, a contact address) given different values in different files
34
+ example:
35
+ ja:
36
+ other: |
37
+ # 料金
38
+
39
+ 月額料金:1,200円
40
+ before: |
41
+ # よくある質問
42
+
43
+ 月額料金:1,500円
44
+ after: |
45
+ # よくある質問
46
+
47
+ 月額料金:1,200円
48
+ en:
49
+ other: |
50
+ # Pricing
51
+
52
+ Monthly fee: $12
53
+ before: |
54
+ # Questions
55
+
56
+ Monthly fee: $15
57
+ after: |
58
+ # Questions
59
+
60
+ Monthly fee: $12
61
+
62
+ not_flagged:
63
+ ja: 一つのファイルの中で同じ項目に二つ以上の値を書いたファイルは数えません(プランごとの料金のような一覧か、ファイルの中の食い違いで、そちらは fact-conflict が見ます)。ファイルどうしで値が三通り以上に分かれる項目も、一覧と読んで何も言いません。単位の違う値、記録の欄(同じ名前が行の頭に何度も出る欄)、値の後ろに条件が続くもの(「1,200円から」)も比べません。
64
+ en: A file that gives an item two or more values is not counted (it is a list, such as a fee per plan, or a conflict within the file, which fact-conflict reports). An item whose values split three or more ways across the files is read as a list and left alone. Values in different units, record fields (the same name at the start of many lines), and values followed by a condition ("$12 per seat") are not compared.
@@ -0,0 +1,77 @@
1
+ id: currency-notation-consistency
2
+ layer: L2
3
+ status: stable
4
+ how_to_find: currency-notation
5
+ severity: info
6
+
7
+ name:
8
+ ja: 通貨の書き方が混ざっている
9
+ en: A currency written two ways
10
+
11
+ why:
12
+ ja: 同じ通貨の金額を「1,000円」と「¥1,000」、「$20」と「USD 20」のように二通りに書くと、読み手は別の通貨か、別の扱いの金額かと迷います。見積もりや資料を寄せ集めたときに起きます。どの書き方が正しいかは決めず、通貨ごとに文書の中で少ないほうを指します。
13
+ en: When one currency is written two ways in one document ("$20" and "USD 20", "1,000円" and "¥1,000"), the reader wonders whether a different currency or a different kind of amount is meant. It happens when quotes and notes are pasted together. chaff does not decide which way is right; for each currency it points at the way the document uses less.
14
+
15
+ message:
16
+ ja: 「{written}」と書いています(この文書はこの通貨をふつう「{usual}」のように書きます。{of} 箇所のうち {count} 箇所が違う)
17
+ en: '"{written}" here, where the document usually writes this currency like "{usual}" ({count} of {of})'
18
+
19
+ how_to_fix:
20
+ ja: 文書の多いほうの書き方に合わせてください。チームで決めているなら、STYLE.md に書いておくと迷いません。
21
+ en: Match the way the rest of the document writes the currency. If the team has decided, write it in the style guide.
22
+
23
+ # 少ないほうが、その通貨の金額の何パーセントまでなら「混ざっている」と見るか。これを超えたら、文書が使い分けている。
24
+ levels: { strict: 49, normal: 34, relaxed: 20 }
25
+
26
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
27
+
28
+ group: consistency
29
+ summary:
30
+ ja: 「1,000円」と「¥1,000」、「$20」と「USD 20」のように、一つの文書で同じ通貨の金額を二通りに書いている所
31
+ en: One currency written two ways in one document, such as "$20" and "USD 20", or "1,000円" and "¥1,000"
32
+ example:
33
+ ja:
34
+ before: |
35
+ 基本料金は 3,000円、追加料金は 500円、送料は 800円 です。割引は ¥200 です。
36
+ after: |
37
+ 基本料金は 3,000円、追加料金は 500円、送料は 800円 です。割引は 200円 です。
38
+ en:
39
+ before: |
40
+ The base fee is $300, the add-on is $50 and shipping is $20. The discount is USD 10.
41
+ after: |
42
+ The base fee is $300, the add-on is $50 and shipping is $20. The discount is $10.
43
+
44
+ not_flagged:
45
+ ja: 通貨ごとに比べるので、円とドルが並ぶのは混ざりではありません。少ないほうがその通貨の金額の三分の一を超える文書は、使い分けている(表は USD、本文は $)と読んで言いません。二つの書き方が同じ数のときも言いません。コードの中は読みません。
46
+ en: Each currency is compared with itself, so dollars beside yen is not a mix. When the less common way is over a third of that currency's amounts, the document is read as using both on purpose (USD in tables, $ in prose) and nothing is reported; nor when the two ways are equally common. Code is not read.
47
+ level_meaning:
48
+ ja: 少ないほうの書き方が、その通貨の金額の {limit}% 以下のとき指摘
49
+ en: reported when the less common way is {limit}% of that currency's amounts or less
50
+
51
+ rewrite:
52
+ ja:
53
+ direction: その通貨の金額を、文書で多いほうの書き方にそろえてください。数と桁はそのまま残します。
54
+ pairs:
55
+ - before: 送料は 800円 です。割引は ¥200 です。
56
+ after: 送料は 800円 です。割引は 200円 です。
57
+ - before: 月額 $20、年額 USD 200 です。
58
+ after: 月額 $20、年額 $200 です。
59
+ keep:
60
+ - 金額の数と桁
61
+ - どの通貨か
62
+ avoid:
63
+ - 別の通貨に換算してしまう
64
+ - 表の通貨の書き方まで本文に合わせて崩す
65
+ en:
66
+ direction: Write the currency's amounts the way the document mostly does. Keep the numbers as they are.
67
+ pairs:
68
+ - before: Shipping is $20. The discount is USD 10.
69
+ after: Shipping is $20. The discount is $10.
70
+ - before: The fee is 500 yen, or ¥450 if paid early.
71
+ after: The fee is 500 yen, or 450 yen if paid early.
72
+ keep:
73
+ - the numbers and their magnitude
74
+ - which currency each amount is in
75
+ avoid:
76
+ - converting an amount to another currency
77
+ - changing the way a table writes it to match the prose
@@ -1,6 +1,6 @@
1
1
  id: cushion-phrase-density
2
2
  layer: L2
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: cushion-density
5
5
  word_list: cushion-phrase
6
6
  uses: [pos]
@@ -25,6 +25,12 @@ how_to_fix:
25
25
  levels: { strict: 2, normal: 5, relaxed: 10 }
26
26
 
27
27
  use_for: [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: wording
30
36
  summary:
@@ -51,6 +57,7 @@ level_meaning:
51
57
  ja: 1000 字あたりクッション言葉 {limit} 個まで
52
58
  en: up to {limit} softeners per 1000 words
53
59
  rewrite:
60
+ depth: light
54
61
  ja:
55
62
  direction: クッション言葉は最初の一つだけ残し、あとは用件(何を、いつまでに)から書いてください。敬語の丁寧さは変えません。
56
63
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: dangling-figure-reference
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: dangling-figure
5
5
  severity: warning
6
6
 
@@ -23,6 +23,8 @@ how_to_fix:
23
23
  levels: { strict: error, normal: warning, relaxed: info }
24
24
 
25
25
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
26
+ off_for:
27
+ 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."
26
28
 
27
29
  group: facts
28
30
  summary:
@@ -0,0 +1,58 @@
1
+ id: dangling-participle
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: dangling-opener
5
+ requires: [pos]
6
+ languages: [en]
7
+ severity: info
8
+
9
+ name:
10
+ ja: 主語の無い分詞の句
11
+ en: Dangling participle
12
+
13
+ why:
14
+ ja: 英語で分詞の句から始めた文(Having reviewed the code, …)は、句の動作をしたのが文の主語だと読まれます。主語が形だけの it や there だと(Having reviewed the code, it is ready.)、コードを見たのが誰なのか文に書かれていません。読み手は一瞬つまずき、意味を補って読むことになります。-ing の分詞の句の直後の主語が it か there で、be が続く形だけを指します。
15
+ en: 'A sentence that opens with a participle phrase ("Having reviewed the code, …") is read as if the subject did that action. When the subject is an empty "it" or "there" ("Having reviewed the code, it is ready."), the sentence never says who reviewed the code, and the reader has to supply it. Only an opening "-ing" phrase followed by "it" or "there" and a form of "be" is reported.'
16
+
17
+ message:
18
+ ja: 「{opener}」の動作をしたのが誰か、文に書かれていません(主語が「{subject}」)
19
+ en: '"{opener}" has no one to attach to; the subject is an empty "{subject}"'
20
+
21
+ how_to_fix:
22
+ ja: 動作をした人を主語にするか(Having reviewed the code, we think it is ready.)、句を節にしてください(After we reviewed the code, it was ready.)。
23
+ en: Make whoever did the action the subject ("Having reviewed the code, we consider it ready."), or turn the phrase into a clause ("After we reviewed the code, it was ready.").
24
+
25
+ levels: { strict: warning, normal: info, relaxed: info }
26
+
27
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
28
+ off_for:
29
+ literature: "A narrator and a character speak as they speak, and loose openings are part of a voice."
30
+ speech: "A transcript keeps the speaker's words."
31
+
32
+ group: wording
33
+ summary:
34
+ ja: 英語で、「Having reviewed the code, it is ready.」のように、分詞の句の後ろの主語が形だけの it や there の文
35
+ en: 'A participle phrase followed by an empty "it" or "there", as in "Having reviewed the code, it is ready."'
36
+
37
+ example:
38
+ en:
39
+ before: Having reviewed the logs, it is clear that the job failed twice.
40
+ after: Having reviewed the logs, we found that the job failed twice.
41
+
42
+ not_flagged:
43
+ ja: 主語が人や物の名詞の文(Having reviewed the code, the team approved it.)、過去分詞で始めた句(Configured with SSO, it is ready.。it そのものを言うことが多い)、決まった言い方として読む句(Given、Based on、Generally speaking、Having said that)、挿入句の it is(Testing it, it is worth noting, requires …)、分詞の句が長く読点の位置が当てにならない文は指しません。英語の文だけを読みます。
44
+ en: 'A sentence whose subject is a person or a thing ("Having reviewed the code, the team approved it."), an opening past participle ("Configured with SSO, it is ready.", which usually describes "it" itself), openings read as fixed phrases ("Given", "Based on", "Generally speaking", "Having said that"), a parenthetical "it is" ("Testing it, it is worth noting, requires …"), and long openings where the comma cannot be trusted are not reported. Only English sentences are read.'
45
+
46
+ rewrite:
47
+ depth: light
48
+ en:
49
+ direction: Give the participle phrase a subject that did its action, or turn the phrase into a clause with its own subject. Keep what the sentence says.
50
+ pairs:
51
+ - before: Having reviewed the logs, it is clear that the job failed twice.
52
+ after: Having reviewed the logs, we found that the job failed twice.
53
+ - before: Looking at the totals, there is a gap of 40 hours.
54
+ after: Looking at the totals, we see a gap of 40 hours.
55
+ keep:
56
+ - what the sentence says and its figures
57
+ avoid:
58
+ - inventing who did the action when the document does not say
@@ -1,6 +1,6 @@
1
1
  id: dangling-reference
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: dangling-reference
5
5
  requires: [structure]
6
6
  severity: error
@@ -25,6 +25,8 @@ how_to_fix:
25
25
  levels: { normal: error, relaxed: warning }
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
  sources: [jis-z8301-2019, femmer-2017]
29
31
 
30
32
  group: structure
@@ -1,8 +1,8 @@
1
1
  id: date-format-consistency
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: date-format
5
- severity: warning
5
+ severity: info
6
6
 
7
7
  name:
8
8
  ja: 日付の書き方が揃っていない
@@ -59,6 +59,7 @@ level_meaning:
59
59
  ja: 少ないほうの書き方の日付が全体の {limit}% 以下なら指摘
60
60
  en: reported while the minority style is {limit}% of the dates or less
61
61
  rewrite:
62
+ depth: light
62
63
  ja:
63
64
  direction: 指された日付を、文書の多いほうの書き方(指摘が例に引く日付の書き方)に書き直してください。日付そのもの(年・月・日)は変えません。
64
65
  pairs:
@@ -1,6 +1,6 @@
1
1
  id: date-order
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: date-order
5
5
  requires: [dates]
6
6
  severity: warning
@@ -24,6 +24,8 @@ how_to_fix:
24
24
  levels: { strict: error, normal: warning, relaxed: info }
25
25
 
26
26
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
27
+ off_for:
28
+ 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."
27
29
  sources: [de-marneffe-2008]
28
30
 
29
31
  group: facts
@@ -1,6 +1,6 @@
1
1
  id: date-range-reversed
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: date-range-reversed
5
5
  requires: [dates]
6
6
  severity: warning
@@ -24,6 +24,8 @@ how_to_fix:
24
24
  levels: { strict: error, normal: warning, relaxed: info }
25
25
 
26
26
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
27
+ off_for:
28
+ 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."
27
29
 
28
30
  group: facts
29
31
  summary:
@@ -1,6 +1,6 @@
1
1
  id: date-weekday-mismatch
2
2
  layer: L3
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: date-weekday-mismatch
5
5
  requires: [dates]
6
6
  severity: error
@@ -24,6 +24,8 @@ how_to_fix:
24
24
  levels: { normal: error, relaxed: warning }
25
25
 
26
26
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
27
+ off_for:
28
+ 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."
27
29
 
28
30
  group: facts
29
31
  summary:
@@ -1,12 +1,12 @@
1
1
  id: date-without-year
2
2
  layer: L1
3
- status: experimental
3
+ status: stable
4
4
  how_to_find: date-without-year
5
5
  requires: [dates]
6
6
  # The dates come from the language package's date reader. English does not read a date written without its year yet,
7
7
  # so the rule checks Japanese only until it does.
8
8
  languages: [ja]
9
- severity: warning
9
+ severity: info
10
10
 
11
11
  name:
12
12
  ja: 年の無い日付
@@ -28,7 +28,7 @@ how_to_fix:
28
28
  ja: 年を書いてください(2027年1月15日)。
29
29
  en: Write the year (January 15, 2027).
30
30
 
31
- levels: { strict: error, normal: warning, relaxed: info }
31
+ levels: { strict: warning, normal: info, relaxed: info }
32
32
 
33
33
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
34
34
 
@@ -55,6 +55,7 @@ not_flagged:
55
55
  ja: 年を一度だけ書いて、あとの日付は月と日だけで書く文書(年の無い日付のほうが多い文書)は、書き方の選び方として指しません。ただしその場合も、年をまたぐ日付は指します。月だけ・年だけの日付は見ません。
56
56
  en: A document that writes the year once and the rest as month and day (more yearless dates than dated ones) is a style, and not reported, except for a date across the turn of a year. Month-only and year-only dates are not checked.
57
57
  rewrite:
58
+ depth: light
58
59
  ja:
59
60
  direction: 指摘された日付に年を書き足してください。年は本文のほかの日付と、曜日から確かめます。決められなければ、作らずに[年]と空けて書き手に聞きます。
60
61
  pairs:
@@ -0,0 +1,97 @@
1
+ id: defined-name-repeated
2
+ layer: L3
3
+ status: stable
4
+ how_to_find: defined-name-repeated
5
+ requires: [structure, pos]
6
+ severity: info
7
+
8
+ name:
9
+ ja: 短い呼び名を定めた名前を、あとで正式の名前のまま書いている
10
+ en: A long name used again after its short name was defined
11
+
12
+ why:
13
+ ja: 「株式会社みなと製作所(以下「甲」という。)」と定めたら、そのあとは「甲」と書くのが決まりです。途中で「株式会社みなと製作所」と書き戻すと、読み手は甲と同じ会社なのか、別の立場の同じ会社なのかを確かめることになります。文の途中で括弧に入れて短い呼び名を定めた所の、括弧のすぐ前の名前(名詞と固有名詞の並び)を正式の名前とし、定義より後でその名前が出てくる所を指します。署名欄のように、呼び名と並べて書いた行や名前だけの行は見ません。
14
+ en: 'Once a contract says "Harbour Works Ltd (the "Supplier")", it refers to the Supplier as "the Supplier". Writing "Harbour Works Ltd" again later makes the reader check whether it is the same party in the same role. chaff takes the name right before an inline definition''s bracket (a run of nouns and names) as the long name, and points at each later use of it. Lines that give the short name too, or little more than the name (a signature block), are not read.'
15
+
16
+ message:
17
+ ja: 「{name}」は {line} 行目で「{term}」と呼ぶと定めた名前です
18
+ en: '"{name}" was given the short name "{term}" on line {line}'
19
+
20
+ how_to_fix:
21
+ ja: 定めた呼び名で書いてください。正式の名前が要る所(署名欄、別の会社と並べる所)なら、そのままにします。
22
+ en: Use the short name the contract defined. Where the full name is needed (a signature block, a list beside other companies), leave it.
23
+
24
+ levels: { strict: warning, normal: info, relaxed: info }
25
+
26
+ use_for: [legal, docs, academic, literature, speech]
27
+ off_for:
28
+ docs: "Defined terms and short names are a contract's apparatus: the legal genres check them."
29
+ academic: "Defined terms and short names are a contract's apparatus: the legal genres check them."
30
+ literature: "Defined terms and short names are a contract's apparatus: the legal genres check them."
31
+ speech: "Defined terms and short names are a contract's apparatus: the legal genres check them."
32
+
33
+ group: consistency
34
+ summary:
35
+ ja: 「株式会社みなと製作所(以下「甲」という。)」のあとで、甲を正式の名前のまま書いている所
36
+ en: A party or a thing given a short name ("the Supplier") and later written out in full again
37
+ example:
38
+ ja:
39
+ config: { genre: legal/contract }
40
+ before: |
41
+ # 業務委託契約書
42
+
43
+ 株式会社みなと製作所(以下「甲」という。)と北浜商事株式会社(以下「乙」という。)は、次のとおり契約を結ぶ。
44
+
45
+ 第1条 乙は、株式会社みなと製作所の会議室の予約を代わりに行う。
46
+ after: |
47
+ # 業務委託契約書
48
+
49
+ 株式会社みなと製作所(以下「甲」という。)と北浜商事株式会社(以下「乙」という。)は、次のとおり契約を結ぶ。
50
+
51
+ 第1条 乙は、甲の会議室の予約を代わりに行う。
52
+ en:
53
+ config: { genre: legal/contract }
54
+ before: |
55
+ # Services Agreement
56
+
57
+ This agreement is between Harbour Works Ltd (the "Supplier") and North Trading Inc (the "Customer").
58
+
59
+ 1. The Customer pays Harbour Works Ltd within thirty days of each invoice.
60
+ after: |
61
+ # Services Agreement
62
+
63
+ This agreement is between Harbour Works Ltd (the "Supplier") and North Trading Inc (the "Customer").
64
+
65
+ 1. The Customer pays the Supplier within thirty days of each invoice.
66
+
67
+ not_flagged:
68
+ ja: 短い呼び名を定める前の使用、呼び名と同じ行にある使用、名前だけの行(署名欄)、四字に満たない名前(「法律」)、一語の英語の名前、呼び名が名前を含むもの(「本サービス」)、前の語が絞り込む名前(「妊娠中の女性従業員」「本利用規約」)、それ自体が定義した語である名前、長い語の一部(「株式会社みなと製作所大阪支店」)は見ません。法務のジャンルで見ます。
69
+ en: 'Uses before the short name is defined, uses on a line that also gives the short name, lines holding little more than the name (a signature block), names shorter than four characters, one-word English names, short names that contain the long one, names narrowed by the word before them ("the Beta Preview"), names that are defined terms themselves, and a name inside a longer word are not reported. The legal genres run this rule.'
70
+ rewrite:
71
+ depth: light
72
+ ja:
73
+ direction: 正式の名前を、定めた呼び名に置き換えてください。署名欄や、ほかの会社と並べて正式の名前が要る所はそのままにします。どちらの立場の名前か分からなければ、書き手に確かめます。
74
+ pairs:
75
+ - before: 乙は、株式会社みなと製作所の会議室の予約を代わりに行う。
76
+ after: 乙は、甲の会議室の予約を代わりに行う。
77
+ - before: 個人情報の保護に関する法律に従って扱う。
78
+ after: 個人情報保護法に従って扱う。
79
+ keep:
80
+ - 条の番号と中身
81
+ - 署名欄の正式の名前
82
+ avoid:
83
+ - 甲と乙を取り違える
84
+ - 署名欄の名前を呼び名に変える
85
+ en:
86
+ direction: Replace the full name with the short name the contract defined. Leave it where the full name is needed, such as a signature block or a list beside other companies. If it is not clear which party is meant, ask the writer.
87
+ pairs:
88
+ - before: The Customer pays Harbour Works Ltd within thirty days.
89
+ after: The Customer pays the Supplier within thirty days.
90
+ - before: North Trading Inc may end this agreement on notice.
91
+ after: The Customer may end this agreement on notice.
92
+ keep:
93
+ - the clause numbers and their content
94
+ - the full names in the signature block
95
+ avoid:
96
+ - swapping the parties
97
+ - turning a signature block's name into the short name