chaffjs 0.16.0 → 0.18.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 (939) hide show
  1. package/dist/announced-count.d.ts +26 -0
  2. package/dist/announced-count.d.ts.map +1 -0
  3. package/dist/announced-count.js +104 -0
  4. package/dist/announced-count.js.map +1 -0
  5. package/dist/bare-url.d.ts +14 -0
  6. package/dist/bare-url.d.ts.map +1 -0
  7. package/dist/bare-url.js +28 -0
  8. package/dist/bare-url.js.map +1 -0
  9. package/dist/baseline.d.ts +5 -0
  10. package/dist/baseline.d.ts.map +1 -1
  11. package/dist/baseline.js +16 -1
  12. package/dist/baseline.js.map +1 -1
  13. package/dist/body-section.d.ts +7 -0
  14. package/dist/body-section.d.ts.map +1 -0
  15. package/dist/body-section.js +6 -0
  16. package/dist/body-section.js.map +1 -0
  17. package/dist/calendar-number.d.ts +9 -2
  18. package/dist/calendar-number.d.ts.map +1 -1
  19. package/dist/calendar-number.js +18 -4
  20. package/dist/calendar-number.js.map +1 -1
  21. package/dist/cli-args.d.ts +4 -0
  22. package/dist/cli-args.d.ts.map +1 -1
  23. package/dist/cli-args.js +5 -0
  24. package/dist/cli-args.js.map +1 -1
  25. package/dist/cli-text.d.ts.map +1 -1
  26. package/dist/cli-text.js +8 -4
  27. package/dist/cli-text.js.map +1 -1
  28. package/dist/cli.js +33 -30
  29. package/dist/cli.js.map +1 -1
  30. package/dist/closing-numbers.d.ts +20 -0
  31. package/dist/closing-numbers.d.ts.map +1 -0
  32. package/dist/closing-numbers.js +56 -0
  33. package/dist/closing-numbers.js.map +1 -0
  34. package/dist/commands/compare.d.ts +8 -0
  35. package/dist/commands/compare.d.ts.map +1 -0
  36. package/dist/commands/compare.js +72 -0
  37. package/dist/commands/compare.js.map +1 -0
  38. package/dist/commands/eval.d.ts.map +1 -1
  39. package/dist/commands/eval.js +17 -9
  40. package/dist/commands/eval.js.map +1 -1
  41. package/dist/commands/feedback.d.ts +5 -2
  42. package/dist/commands/feedback.d.ts.map +1 -1
  43. package/dist/commands/feedback.js +11 -5
  44. package/dist/commands/feedback.js.map +1 -1
  45. package/dist/commands/test.d.ts.map +1 -1
  46. package/dist/commands/test.js +13 -13
  47. package/dist/commands/test.js.map +1 -1
  48. package/dist/commands/tree.d.ts +13 -0
  49. package/dist/commands/tree.d.ts.map +1 -1
  50. package/dist/commands/tree.js +35 -5
  51. package/dist/commands/tree.js.map +1 -1
  52. package/dist/compare/atom.d.ts +31 -0
  53. package/dist/compare/atom.d.ts.map +1 -0
  54. package/dist/compare/atom.js +4 -0
  55. package/dist/compare/atom.js.map +1 -0
  56. package/dist/compare/clock-time.d.ts +8 -0
  57. package/dist/compare/clock-time.d.ts.map +1 -0
  58. package/dist/compare/clock-time.js +65 -0
  59. package/dist/compare/clock-time.js.map +1 -0
  60. package/dist/compare/extract.d.ts +15 -0
  61. package/dist/compare/extract.d.ts.map +1 -0
  62. package/dist/compare/extract.js +58 -0
  63. package/dist/compare/extract.js.map +1 -0
  64. package/dist/compare/fact-text.d.ts +23 -0
  65. package/dist/compare/fact-text.d.ts.map +1 -0
  66. package/dist/compare/fact-text.js +47 -0
  67. package/dist/compare/fact-text.js.map +1 -0
  68. package/dist/compare/markup-atoms.d.ts +11 -0
  69. package/dist/compare/markup-atoms.d.ts.map +1 -0
  70. package/dist/compare/markup-atoms.js +23 -0
  71. package/dist/compare/markup-atoms.js.map +1 -0
  72. package/dist/compare/match.d.ts +19 -0
  73. package/dist/compare/match.d.ts.map +1 -0
  74. package/dist/compare/match.js +84 -0
  75. package/dist/compare/match.js.map +1 -0
  76. package/dist/compare/outcome.d.ts +33 -0
  77. package/dist/compare/outcome.d.ts.map +1 -0
  78. package/dist/compare/outcome.js +40 -0
  79. package/dist/compare/outcome.js.map +1 -0
  80. package/dist/compare/proper-nouns.d.ts +19 -0
  81. package/dist/compare/proper-nouns.d.ts.map +1 -0
  82. package/dist/compare/proper-nouns.js +44 -0
  83. package/dist/compare/proper-nouns.js.map +1 -0
  84. package/dist/compare/render.d.ts +9 -0
  85. package/dist/compare/render.d.ts.map +1 -0
  86. package/dist/compare/render.js +64 -0
  87. package/dist/compare/render.js.map +1 -0
  88. package/dist/compare/spans.d.ts +9 -0
  89. package/dist/compare/spans.d.ts.map +1 -0
  90. package/dist/compare/spans.js +11 -0
  91. package/dist/compare/spans.js.map +1 -0
  92. package/dist/compare/text-atoms.d.ts +24 -0
  93. package/dist/compare/text-atoms.d.ts.map +1 -0
  94. package/dist/compare/text-atoms.js +67 -0
  95. package/dist/compare/text-atoms.js.map +1 -0
  96. package/dist/compare/text.d.ts +24 -0
  97. package/dist/compare/text.d.ts.map +1 -0
  98. package/dist/compare/text.js +90 -0
  99. package/dist/compare/text.js.map +1 -0
  100. package/dist/compare/tree-atoms.d.ts +20 -0
  101. package/dist/compare/tree-atoms.d.ts.map +1 -0
  102. package/dist/compare/tree-atoms.js +58 -0
  103. package/dist/compare/tree-atoms.js.map +1 -0
  104. package/dist/compare/written-names.d.ts +8 -0
  105. package/dist/compare/written-names.d.ts.map +1 -0
  106. package/dist/compare/written-names.js +24 -0
  107. package/dist/compare/written-names.js.map +1 -0
  108. package/dist/config/load.d.ts +15 -0
  109. package/dist/config/load.d.ts.map +1 -1
  110. package/dist/config/load.js +5 -0
  111. package/dist/config/load.js.map +1 -1
  112. package/dist/config/option-problems.d.ts +16 -0
  113. package/dist/config/option-problems.d.ts.map +1 -0
  114. package/dist/config/option-problems.js +58 -0
  115. package/dist/config/option-problems.js.map +1 -0
  116. package/dist/config/read.d.ts +4 -0
  117. package/dist/config/read.d.ts.map +1 -0
  118. package/dist/config/read.js +8 -0
  119. package/dist/config/read.js.map +1 -0
  120. package/dist/config/rule-problems.d.ts +2 -4
  121. package/dist/config/rule-problems.d.ts.map +1 -1
  122. package/dist/config/rule-problems.js +7 -1
  123. package/dist/config/rule-problems.js.map +1 -1
  124. package/dist/config/style.d.ts +16 -0
  125. package/dist/config/style.d.ts.map +1 -0
  126. package/dist/config/style.js +36 -0
  127. package/dist/config/style.js.map +1 -0
  128. package/dist/config/warnings.d.ts +6 -0
  129. package/dist/config/warnings.d.ts.map +1 -0
  130. package/dist/config/warnings.js +10 -0
  131. package/dist/config/warnings.js.map +1 -0
  132. package/dist/config/write.d.ts.map +1 -1
  133. package/dist/config/write.js +17 -4
  134. package/dist/config/write.js.map +1 -1
  135. package/dist/custom/bounded-match.d.ts +15 -0
  136. package/dist/custom/bounded-match.d.ts.map +1 -0
  137. package/dist/custom/bounded-match.js +43 -0
  138. package/dist/custom/bounded-match.js.map +1 -0
  139. package/dist/custom/load.d.ts +8 -0
  140. package/dist/custom/load.d.ts.map +1 -0
  141. package/dist/custom/load.js +11 -0
  142. package/dist/custom/load.js.map +1 -0
  143. package/dist/custom/parse.d.ts +70 -0
  144. package/dist/custom/parse.d.ts.map +1 -0
  145. package/dist/custom/parse.js +215 -0
  146. package/dist/custom/parse.js.map +1 -0
  147. package/dist/custom/problems.d.ts +5 -0
  148. package/dist/custom/problems.d.ts.map +1 -0
  149. package/dist/custom/problems.js +78 -0
  150. package/dist/custom/problems.js.map +1 -0
  151. package/dist/custom/regex-safety.d.ts +11 -0
  152. package/dist/custom/regex-safety.d.ts.map +1 -0
  153. package/dist/custom/regex-safety.js +110 -0
  154. package/dist/custom/regex-safety.js.map +1 -0
  155. package/dist/custom/token-pattern.d.ts +8 -0
  156. package/dist/custom/token-pattern.d.ts.map +1 -0
  157. package/dist/custom/token-pattern.js +75 -0
  158. package/dist/custom/token-pattern.js.map +1 -0
  159. package/dist/detect.d.ts.map +1 -1
  160. package/dist/detect.js +24 -2
  161. package/dist/detect.js.map +1 -1
  162. package/dist/detectors/acronym-context.d.ts +4 -0
  163. package/dist/detectors/acronym-context.d.ts.map +1 -1
  164. package/dist/detectors/acronym-context.js +25 -4
  165. package/dist/detectors/acronym-context.js.map +1 -1
  166. package/dist/detectors/acronym-expansion.d.ts +2 -0
  167. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  168. package/dist/detectors/acronym-expansion.js +104 -1
  169. package/dist/detectors/acronym-expansion.js.map +1 -1
  170. package/dist/detectors/agreement-slip.d.ts +32 -0
  171. package/dist/detectors/agreement-slip.d.ts.map +1 -0
  172. package/dist/detectors/agreement-slip.js +137 -0
  173. package/dist/detectors/agreement-slip.js.map +1 -0
  174. package/dist/detectors/ai-phrasing.d.ts +20 -0
  175. package/dist/detectors/ai-phrasing.d.ts.map +1 -0
  176. package/dist/detectors/ai-phrasing.js +112 -0
  177. package/dist/detectors/ai-phrasing.js.map +1 -0
  178. package/dist/detectors/announced-count.d.ts +4 -0
  179. package/dist/detectors/announced-count.d.ts.map +1 -0
  180. package/dist/detectors/announced-count.js +20 -0
  181. package/dist/detectors/announced-count.js.map +1 -0
  182. package/dist/detectors/broken-link.d.ts +17 -0
  183. package/dist/detectors/broken-link.d.ts.map +1 -0
  184. package/dist/detectors/broken-link.js +66 -0
  185. package/dist/detectors/broken-link.js.map +1 -0
  186. package/dist/detectors/cited-name.d.ts.map +1 -1
  187. package/dist/detectors/cited-name.js +4 -4
  188. package/dist/detectors/cited-name.js.map +1 -1
  189. package/dist/detectors/cited-title.d.ts +11 -0
  190. package/dist/detectors/cited-title.d.ts.map +1 -0
  191. package/dist/detectors/cited-title.js +75 -0
  192. package/dist/detectors/cited-title.js.map +1 -0
  193. package/dist/detectors/concrete-evidence.d.ts +1 -1
  194. package/dist/detectors/concrete-evidence.d.ts.map +1 -1
  195. package/dist/detectors/concrete-evidence.js +2 -1
  196. package/dist/detectors/concrete-evidence.js.map +1 -1
  197. package/dist/detectors/content-morphemes.d.ts +4 -0
  198. package/dist/detectors/content-morphemes.d.ts.map +1 -0
  199. package/dist/detectors/content-morphemes.js +12 -0
  200. package/dist/detectors/content-morphemes.js.map +1 -0
  201. package/dist/detectors/contrast-frame.d.ts +17 -0
  202. package/dist/detectors/contrast-frame.d.ts.map +1 -0
  203. package/dist/detectors/contrast-frame.js +32 -0
  204. package/dist/detectors/contrast-frame.js.map +1 -0
  205. package/dist/detectors/custom.d.ts +8 -0
  206. package/dist/detectors/custom.d.ts.map +1 -0
  207. package/dist/detectors/custom.js +71 -0
  208. package/dist/detectors/custom.js.map +1 -0
  209. package/dist/detectors/dangling-figure.d.ts +4 -0
  210. package/dist/detectors/dangling-figure.d.ts.map +1 -0
  211. package/dist/detectors/dangling-figure.js +18 -0
  212. package/dist/detectors/dangling-figure.js.map +1 -0
  213. package/dist/detectors/doubled-punctuation.d.ts +9 -0
  214. package/dist/detectors/doubled-punctuation.d.ts.map +1 -0
  215. package/dist/detectors/doubled-punctuation.js +33 -0
  216. package/dist/detectors/doubled-punctuation.js.map +1 -0
  217. package/dist/detectors/doubled-word.d.ts +5 -0
  218. package/dist/detectors/doubled-word.d.ts.map +1 -1
  219. package/dist/detectors/doubled-word.js +24 -11
  220. package/dist/detectors/doubled-word.js.map +1 -1
  221. package/dist/detectors/en-shape.d.ts +0 -1
  222. package/dist/detectors/en-shape.d.ts.map +1 -1
  223. package/dist/detectors/en-shape.js +0 -235
  224. package/dist/detectors/en-shape.js.map +1 -1
  225. package/dist/detectors/enumerated-runs.d.ts +1 -1
  226. package/dist/detectors/enumerated-runs.d.ts.map +1 -1
  227. package/dist/detectors/enumerated-runs.js +15 -4
  228. package/dist/detectors/enumerated-runs.js.map +1 -1
  229. package/dist/detectors/gram-furniture.d.ts +6 -0
  230. package/dist/detectors/gram-furniture.d.ts.map +1 -0
  231. package/dist/detectors/gram-furniture.js +21 -0
  232. package/dist/detectors/gram-furniture.js.map +1 -0
  233. package/dist/detectors/gram-place.d.ts +2 -0
  234. package/dist/detectors/gram-place.d.ts.map +1 -1
  235. package/dist/detectors/gram-place.js +9 -7
  236. package/dist/detectors/gram-place.js.map +1 -1
  237. package/dist/detectors/gram-windows.d.ts +9 -0
  238. package/dist/detectors/gram-windows.d.ts.map +1 -0
  239. package/dist/detectors/gram-windows.js +27 -0
  240. package/dist/detectors/gram-windows.js.map +1 -0
  241. package/dist/detectors/heading-case.d.ts +2 -0
  242. package/dist/detectors/heading-case.d.ts.map +1 -1
  243. package/dist/detectors/heading-case.js +29 -2
  244. package/dist/detectors/heading-case.js.map +1 -1
  245. package/dist/detectors/heading-code-words.d.ts +6 -0
  246. package/dist/detectors/heading-code-words.d.ts.map +1 -0
  247. package/dist/detectors/heading-code-words.js +29 -0
  248. package/dist/detectors/heading-code-words.js.map +1 -0
  249. package/dist/detectors/heading-echo.d.ts.map +1 -1
  250. package/dist/detectors/heading-echo.js +17 -20
  251. package/dist/detectors/heading-echo.js.map +1 -1
  252. package/dist/detectors/heading-level-skip.d.ts +12 -0
  253. package/dist/detectors/heading-level-skip.d.ts.map +1 -0
  254. package/dist/detectors/heading-level-skip.js +11 -0
  255. package/dist/detectors/heading-level-skip.js.map +1 -0
  256. package/dist/detectors/heading-overlap.d.ts +13 -0
  257. package/dist/detectors/heading-overlap.d.ts.map +1 -0
  258. package/dist/detectors/heading-overlap.js +52 -0
  259. package/dist/detectors/heading-overlap.js.map +1 -0
  260. package/dist/detectors/image-alt-text.d.ts +3 -0
  261. package/dist/detectors/image-alt-text.d.ts.map +1 -0
  262. package/dist/detectors/image-alt-text.js +9 -0
  263. package/dist/detectors/image-alt-text.js.map +1 -0
  264. package/dist/detectors/index.d.ts.map +1 -1
  265. package/dist/detectors/index.js +40 -2
  266. package/dist/detectors/index.js.map +1 -1
  267. package/dist/detectors/kutoten-consistency.d.ts +24 -0
  268. package/dist/detectors/kutoten-consistency.d.ts.map +1 -0
  269. package/dist/detectors/kutoten-consistency.js +77 -0
  270. package/dist/detectors/kutoten-consistency.js.map +1 -0
  271. package/dist/detectors/lead-in.d.ts +1 -0
  272. package/dist/detectors/lead-in.d.ts.map +1 -1
  273. package/dist/detectors/lead-in.js +2 -1
  274. package/dist/detectors/lead-in.js.map +1 -1
  275. package/dist/detectors/letter-joined-name.d.ts +13 -0
  276. package/dist/detectors/letter-joined-name.d.ts.map +1 -0
  277. package/dist/detectors/letter-joined-name.js +11 -0
  278. package/dist/detectors/letter-joined-name.js.map +1 -0
  279. package/dist/detectors/lexicon-match.d.ts +4 -0
  280. package/dist/detectors/lexicon-match.d.ts.map +1 -1
  281. package/dist/detectors/lexicon-match.js +7 -2
  282. package/dist/detectors/lexicon-match.js.map +1 -1
  283. package/dist/detectors/lexicon.d.ts.map +1 -1
  284. package/dist/detectors/lexicon.js +5 -2
  285. package/dist/detectors/lexicon.js.map +1 -1
  286. package/dist/detectors/list-item.d.ts +45 -0
  287. package/dist/detectors/list-item.d.ts.map +1 -0
  288. package/dist/detectors/list-item.js +88 -0
  289. package/dist/detectors/list-item.js.map +1 -0
  290. package/dist/detectors/list-items.d.ts +31 -0
  291. package/dist/detectors/list-items.d.ts.map +1 -0
  292. package/dist/detectors/list-items.js +113 -0
  293. package/dist/detectors/list-items.js.map +1 -0
  294. package/dist/detectors/list-lead-in.d.ts +7 -0
  295. package/dist/detectors/list-lead-in.d.ts.map +1 -0
  296. package/dist/detectors/list-lead-in.js +28 -0
  297. package/dist/detectors/list-lead-in.js.map +1 -0
  298. package/dist/detectors/list-sentence.d.ts +65 -0
  299. package/dist/detectors/list-sentence.d.ts.map +1 -0
  300. package/dist/detectors/list-sentence.js +105 -0
  301. package/dist/detectors/list-sentence.js.map +1 -0
  302. package/dist/detectors/list-view.d.ts +34 -0
  303. package/dist/detectors/list-view.d.ts.map +1 -0
  304. package/dist/detectors/list-view.js +137 -0
  305. package/dist/detectors/list-view.js.map +1 -0
  306. package/dist/detectors/long-vowel.d.ts +7 -0
  307. package/dist/detectors/long-vowel.d.ts.map +1 -0
  308. package/dist/detectors/long-vowel.js +57 -0
  309. package/dist/detectors/long-vowel.js.map +1 -0
  310. package/dist/detectors/markup-finding.d.ts +6 -0
  311. package/dist/detectors/markup-finding.d.ts.map +1 -0
  312. package/dist/detectors/markup-finding.js +19 -0
  313. package/dist/detectors/markup-finding.js.map +1 -0
  314. package/dist/detectors/name-numeral.d.ts +1 -1
  315. package/dist/detectors/name-numeral.d.ts.map +1 -1
  316. package/dist/detectors/name-numeral.js +2 -7
  317. package/dist/detectors/name-numeral.js.map +1 -1
  318. package/dist/detectors/orthography.d.ts.map +1 -1
  319. package/dist/detectors/orthography.js +16 -12
  320. package/dist/detectors/orthography.js.map +1 -1
  321. package/dist/detectors/oxford-comma.d.ts +9 -0
  322. package/dist/detectors/oxford-comma.d.ts.map +1 -0
  323. package/dist/detectors/oxford-comma.js +246 -0
  324. package/dist/detectors/oxford-comma.js.map +1 -0
  325. package/dist/detectors/place-run.d.ts.map +1 -1
  326. package/dist/detectors/place-run.js +10 -6
  327. package/dist/detectors/place-run.js.map +1 -1
  328. package/dist/detectors/placeholder-text.d.ts +9 -0
  329. package/dist/detectors/placeholder-text.d.ts.map +1 -0
  330. package/dist/detectors/placeholder-text.js +18 -0
  331. package/dist/detectors/placeholder-text.js.map +1 -0
  332. package/dist/detectors/quote-around.d.ts +3 -0
  333. package/dist/detectors/quote-around.d.ts.map +1 -0
  334. package/dist/detectors/quote-around.js +8 -0
  335. package/dist/detectors/quote-around.js.map +1 -0
  336. package/dist/detectors/register.d.ts +11 -3
  337. package/dist/detectors/register.d.ts.map +1 -1
  338. package/dist/detectors/register.js +28 -9
  339. package/dist/detectors/register.js.map +1 -1
  340. package/dist/detectors/roman-numeral.d.ts +2 -0
  341. package/dist/detectors/roman-numeral.d.ts.map +1 -1
  342. package/dist/detectors/roman-numeral.js +2 -0
  343. package/dist/detectors/roman-numeral.js.map +1 -1
  344. package/dist/detectors/sentence-ending.d.ts +17 -1
  345. package/dist/detectors/sentence-ending.d.ts.map +1 -1
  346. package/dist/detectors/sentence-ending.js +13 -7
  347. package/dist/detectors/sentence-ending.js.map +1 -1
  348. package/dist/detectors/sentence-length.d.ts.map +1 -1
  349. package/dist/detectors/sentence-length.js +13 -4
  350. package/dist/detectors/sentence-length.js.map +1 -1
  351. package/dist/detectors/signals.d.ts +8 -0
  352. package/dist/detectors/signals.d.ts.map +1 -1
  353. package/dist/detectors/signals.js +94 -54
  354. package/dist/detectors/signals.js.map +1 -1
  355. package/dist/detectors/stacked-hedge.d.ts +0 -7
  356. package/dist/detectors/stacked-hedge.d.ts.map +1 -1
  357. package/dist/detectors/stacked-hedge.js +6 -3
  358. package/dist/detectors/stacked-hedge.js.map +1 -1
  359. package/dist/detectors/stray-space.d.ts +7 -0
  360. package/dist/detectors/stray-space.d.ts.map +1 -0
  361. package/dist/detectors/stray-space.js +34 -0
  362. package/dist/detectors/stray-space.js.map +1 -0
  363. package/dist/detectors/structure-tree.d.ts +6 -0
  364. package/dist/detectors/structure-tree.d.ts.map +1 -1
  365. package/dist/detectors/structure-tree.js +37 -1
  366. package/dist/detectors/structure-tree.js.map +1 -1
  367. package/dist/detectors/structure.d.ts +4 -4
  368. package/dist/detectors/structure.d.ts.map +1 -1
  369. package/dist/detectors/structure.js +7 -6
  370. package/dist/detectors/structure.js.map +1 -1
  371. package/dist/detectors/superlative-name.d.ts.map +1 -1
  372. package/dist/detectors/superlative-name.js +8 -5
  373. package/dist/detectors/superlative-name.js.map +1 -1
  374. package/dist/detectors/superlative-scope.d.ts.map +1 -1
  375. package/dist/detectors/superlative-scope.js +9 -4
  376. package/dist/detectors/superlative-scope.js.map +1 -1
  377. package/dist/detectors/token-column.d.ts +46 -0
  378. package/dist/detectors/token-column.d.ts.map +1 -0
  379. package/dist/detectors/token-column.js +95 -0
  380. package/dist/detectors/token-column.js.map +1 -0
  381. package/dist/detectors/unbalanced-bracket.d.ts +22 -0
  382. package/dist/detectors/unbalanced-bracket.d.ts.map +1 -0
  383. package/dist/detectors/unbalanced-bracket.js +119 -0
  384. package/dist/detectors/unbalanced-bracket.js.map +1 -0
  385. package/dist/detectors/url-run-on.d.ts +9 -0
  386. package/dist/detectors/url-run-on.d.ts.map +1 -0
  387. package/dist/detectors/url-run-on.js +19 -0
  388. package/dist/detectors/url-run-on.js.map +1 -0
  389. package/dist/document-sections.d.ts +13 -0
  390. package/dist/document-sections.d.ts.map +1 -0
  391. package/dist/document-sections.js +32 -0
  392. package/dist/document-sections.js.map +1 -0
  393. package/dist/document.d.ts +11 -4
  394. package/dist/document.d.ts.map +1 -1
  395. package/dist/document.js +99 -95
  396. package/dist/document.js.map +1 -1
  397. package/dist/email-parts.d.ts +28 -0
  398. package/dist/email-parts.d.ts.map +1 -0
  399. package/dist/email-parts.js +230 -0
  400. package/dist/email-parts.js.map +1 -0
  401. package/dist/eval.d.ts +2 -1
  402. package/dist/eval.d.ts.map +1 -1
  403. package/dist/eval.js +16 -4
  404. package/dist/eval.js.map +1 -1
  405. package/dist/figure-references.d.ts +30 -0
  406. package/dist/figure-references.d.ts.map +1 -0
  407. package/dist/figure-references.js +76 -0
  408. package/dist/figure-references.js.map +1 -0
  409. package/dist/files.d.ts +2 -0
  410. package/dist/files.d.ts.map +1 -1
  411. package/dist/files.js +4 -0
  412. package/dist/files.js.map +1 -1
  413. package/dist/genre-parse.d.ts +5 -1
  414. package/dist/genre-parse.d.ts.map +1 -1
  415. package/dist/genre-parse.js +16 -3
  416. package/dist/genre-parse.js.map +1 -1
  417. package/dist/genre-suggest.d.ts.map +1 -1
  418. package/dist/genre-suggest.js +15 -1
  419. package/dist/genre-suggest.js.map +1 -1
  420. package/dist/heading-label.d.ts +22 -0
  421. package/dist/heading-label.d.ts.map +1 -0
  422. package/dist/heading-label.js +50 -0
  423. package/dist/heading-label.js.map +1 -0
  424. package/dist/in-page-nav.d.ts +4 -1
  425. package/dist/in-page-nav.d.ts.map +1 -1
  426. package/dist/in-page-nav.js +53 -18
  427. package/dist/in-page-nav.js.map +1 -1
  428. package/dist/joined-view.d.ts.map +1 -1
  429. package/dist/joined-view.js +1 -0
  430. package/dist/joined-view.js.map +1 -1
  431. package/dist/levels.d.ts +5 -1
  432. package/dist/levels.d.ts.map +1 -1
  433. package/dist/levels.js +9 -0
  434. package/dist/levels.js.map +1 -1
  435. package/dist/line-paragraphs.d.ts +8 -0
  436. package/dist/line-paragraphs.d.ts.map +1 -1
  437. package/dist/line-paragraphs.js +36 -11
  438. package/dist/line-paragraphs.js.map +1 -1
  439. package/dist/long-vowel.d.ts +35 -0
  440. package/dist/long-vowel.d.ts.map +1 -0
  441. package/dist/long-vowel.js +71 -0
  442. package/dist/long-vowel.js.map +1 -0
  443. package/dist/markdown-node.d.ts +19 -0
  444. package/dist/markdown-node.d.ts.map +1 -0
  445. package/dist/markdown-node.js +6 -0
  446. package/dist/markdown-node.js.map +1 -0
  447. package/dist/markdown-read.d.ts +17 -0
  448. package/dist/markdown-read.d.ts.map +1 -0
  449. package/dist/markdown-read.js +37 -0
  450. package/dist/markdown-read.js.map +1 -0
  451. package/dist/markup.d.ts +22 -0
  452. package/dist/markup.d.ts.map +1 -0
  453. package/dist/markup.js +180 -0
  454. package/dist/markup.js.map +1 -0
  455. package/dist/mask.d.ts.map +1 -1
  456. package/dist/mask.js +10 -16
  457. package/dist/mask.js.map +1 -1
  458. package/dist/number-name.d.ts +21 -5
  459. package/dist/number-name.d.ts.map +1 -1
  460. package/dist/number-name.js +120 -18
  461. package/dist/number-name.js.map +1 -1
  462. package/dist/opening-line.d.ts +3 -0
  463. package/dist/opening-line.d.ts.map +1 -0
  464. package/dist/opening-line.js +14 -0
  465. package/dist/opening-line.js.map +1 -0
  466. package/dist/orthography.d.ts +7 -1
  467. package/dist/orthography.d.ts.map +1 -1
  468. package/dist/orthography.js +16 -5
  469. package/dist/orthography.js.map +1 -1
  470. package/dist/page-furniture.d.ts +5 -2
  471. package/dist/page-furniture.d.ts.map +1 -1
  472. package/dist/page-furniture.js +8 -2
  473. package/dist/page-furniture.js.map +1 -1
  474. package/dist/paragraph-length.d.ts +7 -0
  475. package/dist/paragraph-length.d.ts.map +1 -0
  476. package/dist/paragraph-length.js +10 -0
  477. package/dist/paragraph-length.js.map +1 -0
  478. package/dist/plain-source.d.ts +1 -0
  479. package/dist/plain-source.d.ts.map +1 -1
  480. package/dist/plain-source.js +2 -1
  481. package/dist/plain-source.js.map +1 -1
  482. package/dist/plugin.d.ts +121 -0
  483. package/dist/plugin.d.ts.map +1 -1
  484. package/dist/profile/for-file.d.ts.map +1 -1
  485. package/dist/profile/for-file.js +3 -1
  486. package/dist/profile/for-file.js.map +1 -1
  487. package/dist/quoted-span.d.ts +0 -2
  488. package/dist/quoted-span.d.ts.map +1 -1
  489. package/dist/quoted-span.js +9 -4
  490. package/dist/quoted-span.js.map +1 -1
  491. package/dist/reasons.d.ts +3 -0
  492. package/dist/reasons.d.ts.map +1 -1
  493. package/dist/reasons.js +6 -0
  494. package/dist/reasons.js.map +1 -1
  495. package/dist/reference-lists.d.ts +3 -0
  496. package/dist/reference-lists.d.ts.map +1 -0
  497. package/dist/reference-lists.js +75 -0
  498. package/dist/reference-lists.js.map +1 -0
  499. package/dist/render/explain.d.ts +7 -1
  500. package/dist/render/explain.d.ts.map +1 -1
  501. package/dist/render/explain.js +36 -12
  502. package/dist/render/explain.js.map +1 -1
  503. package/dist/render/friendly.d.ts.map +1 -1
  504. package/dist/render/friendly.js +19 -9
  505. package/dist/render/friendly.js.map +1 -1
  506. package/dist/render/options.d.ts +7 -0
  507. package/dist/render/options.d.ts.map +1 -0
  508. package/dist/render/options.js +50 -0
  509. package/dist/render/options.js.map +1 -0
  510. package/dist/render/rules-json.d.ts +4 -1
  511. package/dist/render/rules-json.d.ts.map +1 -1
  512. package/dist/render/rules-json.js +102 -12
  513. package/dist/render/rules-json.js.map +1 -1
  514. package/dist/render/rules-table.d.ts +4 -0
  515. package/dist/render/rules-table.d.ts.map +1 -0
  516. package/dist/render/rules-table.js +70 -0
  517. package/dist/render/rules-table.js.map +1 -0
  518. package/dist/render/sarif.js +4 -4
  519. package/dist/render/sarif.js.map +1 -1
  520. package/dist/render/semantic.js +3 -3
  521. package/dist/render/semantic.js.map +1 -1
  522. package/dist/render/severity-name.d.ts +6 -0
  523. package/dist/render/severity-name.d.ts.map +1 -0
  524. package/dist/render/severity-name.js +7 -0
  525. package/dist/render/severity-name.js.map +1 -0
  526. package/dist/render/text.d.ts +7 -2
  527. package/dist/render/text.d.ts.map +1 -1
  528. package/dist/render/text.js +15 -4
  529. package/dist/render/text.js.map +1 -1
  530. package/dist/resolve-genre.d.ts +1 -1
  531. package/dist/resolve-genre.d.ts.map +1 -1
  532. package/dist/resolve-genre.js +4 -1
  533. package/dist/resolve-genre.js.map +1 -1
  534. package/dist/rule-genres.d.ts +24 -0
  535. package/dist/rule-genres.d.ts.map +1 -0
  536. package/dist/rule-genres.js +11 -0
  537. package/dist/rule-genres.js.map +1 -0
  538. package/dist/rule-guide.d.ts +54 -0
  539. package/dist/rule-guide.d.ts.map +1 -0
  540. package/dist/rule-guide.js +81 -0
  541. package/dist/rule-guide.js.map +1 -0
  542. package/dist/rule-load.d.ts.map +1 -1
  543. package/dist/rule-load.js +94 -32
  544. package/dist/rule-load.js.map +1 -1
  545. package/dist/rule-options.d.ts +50 -0
  546. package/dist/rule-options.d.ts.map +1 -0
  547. package/dist/rule-options.js +106 -0
  548. package/dist/rule-options.js.map +1 -0
  549. package/dist/run-semantic.d.ts +3 -1
  550. package/dist/run-semantic.d.ts.map +1 -1
  551. package/dist/run-semantic.js +8 -3
  552. package/dist/run-semantic.js.map +1 -1
  553. package/dist/run.d.ts +15 -0
  554. package/dist/run.d.ts.map +1 -1
  555. package/dist/run.js +57 -10
  556. package/dist/run.js.map +1 -1
  557. package/dist/semantic.d.ts +1 -1
  558. package/dist/semantic.d.ts.map +1 -1
  559. package/dist/semantic.js +10 -3
  560. package/dist/semantic.js.map +1 -1
  561. package/dist/sentence-shape.d.ts.map +1 -1
  562. package/dist/sentence-shape.js +4 -4
  563. package/dist/sentence-shape.js.map +1 -1
  564. package/dist/setting-problems.d.ts +2 -1
  565. package/dist/setting-problems.d.ts.map +1 -1
  566. package/dist/setting-problems.js +6 -1
  567. package/dist/setting-problems.js.map +1 -1
  568. package/dist/span-cut.d.ts +6 -0
  569. package/dist/span-cut.d.ts.map +1 -0
  570. package/dist/span-cut.js +22 -0
  571. package/dist/span-cut.js.map +1 -0
  572. package/dist/span-merge.d.ts +4 -0
  573. package/dist/span-merge.d.ts.map +1 -0
  574. package/dist/span-merge.js +12 -0
  575. package/dist/span-merge.js.map +1 -0
  576. package/dist/speaker-labels.d.ts +4 -0
  577. package/dist/speaker-labels.d.ts.map +1 -0
  578. package/dist/speaker-labels.js +106 -0
  579. package/dist/speaker-labels.js.map +1 -0
  580. package/dist/stray-space.d.ts +17 -0
  581. package/dist/stray-space.d.ts.map +1 -0
  582. package/dist/stray-space.js +66 -0
  583. package/dist/stray-space.js.map +1 -0
  584. package/dist/structure/aside-depth.d.ts +21 -0
  585. package/dist/structure/aside-depth.d.ts.map +1 -0
  586. package/dist/structure/aside-depth.js +65 -0
  587. package/dist/structure/aside-depth.js.map +1 -0
  588. package/dist/structure/build.d.ts +5 -1
  589. package/dist/structure/build.d.ts.map +1 -1
  590. package/dist/structure/build.js +29 -17
  591. package/dist/structure/build.js.map +1 -1
  592. package/dist/structure/closed-pairs.d.ts +8 -0
  593. package/dist/structure/closed-pairs.d.ts.map +1 -0
  594. package/dist/structure/closed-pairs.js +22 -0
  595. package/dist/structure/closed-pairs.js.map +1 -0
  596. package/dist/structure/date-range.d.ts +21 -0
  597. package/dist/structure/date-range.d.ts.map +1 -0
  598. package/dist/structure/date-range.js +45 -0
  599. package/dist/structure/date-range.js.map +1 -0
  600. package/dist/structure/known-mentions.d.ts +18 -0
  601. package/dist/structure/known-mentions.d.ts.map +1 -0
  602. package/dist/structure/known-mentions.js +78 -0
  603. package/dist/structure/known-mentions.js.map +1 -0
  604. package/dist/structure/numbering.d.ts +1 -0
  605. package/dist/structure/numbering.d.ts.map +1 -1
  606. package/dist/structure/numbering.js +11 -6
  607. package/dist/structure/numbering.js.map +1 -1
  608. package/dist/structure/of.d.ts +3 -1
  609. package/dist/structure/of.d.ts.map +1 -1
  610. package/dist/structure/of.js +5 -1
  611. package/dist/structure/of.js.map +1 -1
  612. package/dist/structure/percent-sum.d.ts +16 -0
  613. package/dist/structure/percent-sum.d.ts.map +1 -0
  614. package/dist/structure/percent-sum.js +104 -0
  615. package/dist/structure/percent-sum.js.map +1 -0
  616. package/dist/structure/quoted-number.d.ts +8 -0
  617. package/dist/structure/quoted-number.d.ts.map +1 -0
  618. package/dist/structure/quoted-number.js +34 -0
  619. package/dist/structure/quoted-number.js.map +1 -0
  620. package/dist/structure/relative-find.d.ts.map +1 -1
  621. package/dist/structure/relative-find.js +34 -46
  622. package/dist/structure/relative-find.js.map +1 -1
  623. package/dist/structure/relative-resolve.d.ts.map +1 -1
  624. package/dist/structure/relative-resolve.js +94 -42
  625. package/dist/structure/relative-resolve.js.map +1 -1
  626. package/dist/structure/runs.d.ts +2 -0
  627. package/dist/structure/runs.d.ts.map +1 -1
  628. package/dist/structure/runs.js +2 -2
  629. package/dist/structure/runs.js.map +1 -1
  630. package/dist/structure/sexp.d.ts +1 -1
  631. package/dist/structure/sexp.d.ts.map +1 -1
  632. package/dist/structure/sexp.js +18 -6
  633. package/dist/structure/sexp.js.map +1 -1
  634. package/dist/structure/total.d.ts +3 -0
  635. package/dist/structure/total.d.ts.map +1 -1
  636. package/dist/structure/total.js +2 -2
  637. package/dist/structure/total.js.map +1 -1
  638. package/dist/structure/universal.d.ts +14 -2
  639. package/dist/structure/universal.d.ts.map +1 -1
  640. package/dist/structure/universal.js +17 -2
  641. package/dist/structure/universal.js.map +1 -1
  642. package/dist/structure/wrapped-tail.d.ts +14 -7
  643. package/dist/structure/wrapped-tail.d.ts.map +1 -1
  644. package/dist/structure/wrapped-tail.js +33 -8
  645. package/dist/structure/wrapped-tail.js.map +1 -1
  646. package/dist/style-load.d.ts +4 -0
  647. package/dist/style-load.d.ts.map +1 -0
  648. package/dist/style-load.js +28 -0
  649. package/dist/style-load.js.map +1 -0
  650. package/dist/style-parse.d.ts +19 -0
  651. package/dist/style-parse.d.ts.map +1 -0
  652. package/dist/style-parse.js +60 -0
  653. package/dist/style-parse.js.map +1 -0
  654. package/dist/subheading-line.d.ts +6 -0
  655. package/dist/subheading-line.d.ts.map +1 -0
  656. package/dist/subheading-line.js +57 -0
  657. package/dist/subheading-line.js.map +1 -0
  658. package/dist/team-names.d.ts.map +1 -1
  659. package/dist/team-names.js +11 -14
  660. package/dist/team-names.js.map +1 -1
  661. package/dist/template-syntax.d.ts +17 -0
  662. package/dist/template-syntax.d.ts.map +1 -0
  663. package/dist/template-syntax.js +140 -0
  664. package/dist/template-syntax.js.map +1 -0
  665. package/dist/text-above.d.ts +19 -0
  666. package/dist/text-above.d.ts.map +1 -0
  667. package/dist/text-above.js +43 -0
  668. package/dist/text-above.js.map +1 -0
  669. package/dist/text-figures.d.ts +10 -0
  670. package/dist/text-figures.d.ts.map +1 -0
  671. package/dist/text-figures.js +131 -0
  672. package/dist/text-figures.js.map +1 -0
  673. package/dist/trailing-aside.d.ts +2 -0
  674. package/dist/trailing-aside.d.ts.map +1 -0
  675. package/dist/trailing-aside.js +53 -0
  676. package/dist/trailing-aside.js.map +1 -0
  677. package/dist/tree-walk.d.ts +18 -0
  678. package/dist/tree-walk.d.ts.map +1 -0
  679. package/dist/tree-walk.js +45 -0
  680. package/dist/tree-walk.js.map +1 -0
  681. package/genres.yaml +60 -2
  682. package/package.json +5 -3
  683. package/reference-headings.yaml +17 -0
  684. package/rules/adverb-overuse.yaml +19 -0
  685. package/rules/agentless-passive.yaml +19 -0
  686. package/rules/agreement-slip.yaml +49 -0
  687. package/rules/ai-generated-composite.yaml +102 -0
  688. package/rules/ai-tell.yaml +23 -0
  689. package/rules/announced-count-mismatch.yaml +57 -0
  690. package/rules/announcing-opener.yaml +51 -0
  691. package/rules/assistant-residue.yaml +52 -0
  692. package/rules/bold-density.yaml +31 -0
  693. package/rules/broken-link.yaml +65 -0
  694. package/rules/closing-cliche.yaml +33 -0
  695. package/rules/colon-lead-in.yaml +59 -0
  696. package/rules/concrete-evidence-density.yaml +41 -0
  697. package/rules/contraction-consistency.yaml +18 -0
  698. package/rules/contrast-framing.yaml +57 -0
  699. package/rules/cushion-phrase-density.yaml +25 -0
  700. package/rules/dangling-figure-reference.yaml +61 -0
  701. package/rules/dangling-reference.yaml +53 -1
  702. package/rules/date-order.yaml +33 -1
  703. package/rules/date-range-reversed.yaml +46 -0
  704. package/rules/date-weekday-mismatch.yaml +17 -1
  705. package/rules/double-keigo.yaml +16 -0
  706. package/rules/doubled-punctuation.yaml +45 -0
  707. package/rules/doubled-word.yaml +17 -1
  708. package/rules/duplicate-definition.yaml +59 -1
  709. package/rules/emoji-density.yaml +25 -0
  710. package/rules/empty-conclusion.yaml +29 -0
  711. package/rules/empty-intensifier.yaml +19 -0
  712. package/rules/excessive-hedging.yaml +19 -0
  713. package/rules/expletive-construction.yaml +19 -0
  714. package/rules/heading-echo.yaml +32 -0
  715. package/rules/heading-level-skip.yaml +78 -0
  716. package/rules/hiragana-fukushi.yaml +16 -0
  717. package/rules/image-alt-text.yaml +54 -0
  718. package/rules/internal-jargon.yaml +21 -0
  719. package/rules/katakana-long-vowel.yaml +98 -0
  720. package/rules/kutoten-consistency.yaml +53 -0
  721. package/rules/latin-spacing.yaml +23 -4
  722. package/rules/max-kanji-continuous.yaml +16 -0
  723. package/rules/max-paragraph-length.yaml +42 -2
  724. package/rules/max-sentence-length.yaml +36 -0
  725. package/rules/ngram-repetition.yaml +29 -2
  726. package/rules/no-doubled-joshi.yaml +16 -0
  727. package/rules/no-em-dash.yaml +25 -0
  728. package/rules/no-mixed-desumasu.yaml +27 -2
  729. package/rules/no-nakaguro-parallel.yaml +20 -0
  730. package/rules/numbering-gap.yaml +53 -1
  731. package/rules/oxford-comma-consistency.yaml +19 -1
  732. package/rules/padded-intro.yaml +19 -0
  733. package/rules/paragraph-length-variance.yaml +49 -0
  734. package/rules/percent-sum-mismatch.yaml +58 -0
  735. package/rules/preamble-length.yaml +56 -0
  736. package/rules/preferred-term.yaml +27 -0
  737. package/rules/proper-noun-density.yaml +26 -0
  738. package/rules/repeated-conjunction.yaml +47 -0
  739. package/rules/repeated-sentence-head.yaml +23 -0
  740. package/rules/required-sections.yaml +49 -0
  741. package/rules/risk-disclosure.yaml +22 -0
  742. package/rules/rule-of-three.yaml +97 -0
  743. package/rules/sasete-itadaku.yaml +18 -0
  744. package/rules/section-length-uniformity.yaml +89 -0
  745. package/rules/sentence-initial-conjunction-run.yaml +18 -0
  746. package/rules/sentence-rhythm.yaml +25 -0
  747. package/rules/stock-transition.yaml +55 -0
  748. package/rules/stray-space.yaml +56 -0
  749. package/rules/taigen-dome-in-prose.yaml +19 -0
  750. package/rules/title-case-consistency.yaml +42 -0
  751. package/rules/total-mismatch.yaml +37 -1
  752. package/rules/unbalanced-bracket.yaml +56 -0
  753. package/rules/undefined-acronym.yaml +23 -0
  754. package/rules/unfilled-placeholder.yaml +50 -0
  755. package/rules/unqualified-superlative.yaml +19 -0
  756. package/rules/unsourced-number.yaml +16 -0
  757. package/rules/url-run-on.yaml +45 -0
  758. package/skills/chaff/SKILL.md +70 -0
  759. package/src/announced-count.ts +148 -0
  760. package/src/bare-url.ts +35 -0
  761. package/src/baseline.ts +17 -1
  762. package/src/body-section.ts +7 -0
  763. package/src/calendar-number.ts +33 -10
  764. package/src/cli-args.ts +6 -0
  765. package/src/cli-text.ts +8 -4
  766. package/src/cli.ts +37 -37
  767. package/src/closing-numbers.ts +72 -0
  768. package/src/commands/compare.ts +80 -0
  769. package/src/commands/eval.ts +19 -8
  770. package/src/commands/feedback.ts +12 -6
  771. package/src/commands/test.ts +20 -17
  772. package/src/commands/tree.ts +41 -5
  773. package/src/compare/atom.ts +33 -0
  774. package/src/compare/clock-time.ts +86 -0
  775. package/src/compare/extract.ts +78 -0
  776. package/src/compare/fact-text.ts +68 -0
  777. package/src/compare/markup-atoms.ts +29 -0
  778. package/src/compare/match.ts +105 -0
  779. package/src/compare/outcome.ts +70 -0
  780. package/src/compare/proper-nouns.ts +65 -0
  781. package/src/compare/render.ts +102 -0
  782. package/src/compare/spans.ts +17 -0
  783. package/src/compare/text-atoms.ts +95 -0
  784. package/src/compare/text.ts +120 -0
  785. package/src/compare/tree-atoms.ts +80 -0
  786. package/src/compare/written-names.ts +26 -0
  787. package/src/config/load.ts +21 -0
  788. package/src/config/option-problems.ts +70 -0
  789. package/src/config/read.ts +8 -0
  790. package/src/config/rule-problems.ts +12 -2
  791. package/src/config/style.ts +42 -0
  792. package/src/config/warnings.ts +13 -0
  793. package/src/config/write.ts +18 -4
  794. package/src/custom/bounded-match.ts +58 -0
  795. package/src/custom/load.ts +15 -0
  796. package/src/custom/parse.ts +274 -0
  797. package/src/custom/problems.ts +89 -0
  798. package/src/custom/regex-safety.ts +118 -0
  799. package/src/custom/token-pattern.ts +84 -0
  800. package/src/detect.ts +28 -2
  801. package/src/detectors/acronym-context.ts +32 -4
  802. package/src/detectors/acronym-expansion.ts +132 -1
  803. package/src/detectors/agreement-slip.ts +191 -0
  804. package/src/detectors/ai-phrasing.ts +137 -0
  805. package/src/detectors/announced-count.ts +25 -0
  806. package/src/detectors/broken-link.ts +90 -0
  807. package/src/detectors/cited-name.ts +6 -5
  808. package/src/detectors/cited-title.ts +96 -0
  809. package/src/detectors/concrete-evidence.ts +3 -2
  810. package/src/detectors/content-morphemes.ts +19 -0
  811. package/src/detectors/contrast-frame.ts +54 -0
  812. package/src/detectors/custom.ts +89 -0
  813. package/src/detectors/dangling-figure.ts +22 -0
  814. package/src/detectors/doubled-punctuation.ts +49 -0
  815. package/src/detectors/doubled-word.ts +19 -4
  816. package/src/detectors/en-shape.ts +0 -269
  817. package/src/detectors/enumerated-runs.ts +13 -4
  818. package/src/detectors/gram-furniture.ts +30 -0
  819. package/src/detectors/gram-place.ts +9 -5
  820. package/src/detectors/gram-windows.ts +31 -0
  821. package/src/detectors/heading-case.ts +30 -2
  822. package/src/detectors/heading-code-words.ts +35 -0
  823. package/src/detectors/heading-echo.ts +18 -22
  824. package/src/detectors/heading-level-skip.ts +19 -0
  825. package/src/detectors/heading-overlap.ts +65 -0
  826. package/src/detectors/image-alt-text.ts +11 -0
  827. package/src/detectors/index.ts +49 -2
  828. package/src/detectors/kutoten-consistency.ts +96 -0
  829. package/src/detectors/lead-in.ts +3 -1
  830. package/src/detectors/letter-joined-name.ts +15 -0
  831. package/src/detectors/lexicon-match.ts +9 -2
  832. package/src/detectors/lexicon.ts +6 -2
  833. package/src/detectors/list-item.ts +122 -0
  834. package/src/detectors/list-items.ts +163 -0
  835. package/src/detectors/list-lead-in.ts +33 -0
  836. package/src/detectors/list-sentence.ts +157 -0
  837. package/src/detectors/list-view.ts +157 -0
  838. package/src/detectors/long-vowel.ts +66 -0
  839. package/src/detectors/markup-finding.ts +24 -0
  840. package/src/detectors/name-numeral.ts +4 -2
  841. package/src/detectors/orthography.ts +24 -18
  842. package/src/detectors/oxford-comma.ts +297 -0
  843. package/src/detectors/place-run.ts +7 -4
  844. package/src/detectors/placeholder-text.ts +27 -0
  845. package/src/detectors/quote-around.ts +9 -0
  846. package/src/detectors/register.ts +37 -10
  847. package/src/detectors/roman-numeral.ts +3 -0
  848. package/src/detectors/sentence-ending.ts +14 -7
  849. package/src/detectors/sentence-length.ts +16 -5
  850. package/src/detectors/signals.ts +110 -53
  851. package/src/detectors/stacked-hedge.ts +6 -3
  852. package/src/detectors/stray-space.ts +40 -0
  853. package/src/detectors/structure-tree.ts +45 -1
  854. package/src/detectors/structure.ts +13 -6
  855. package/src/detectors/superlative-name.ts +7 -4
  856. package/src/detectors/superlative-scope.ts +8 -3
  857. package/src/detectors/token-column.ts +149 -0
  858. package/src/detectors/unbalanced-bracket.ts +153 -0
  859. package/src/detectors/url-run-on.ts +27 -0
  860. package/src/document-sections.ts +46 -0
  861. package/src/document.ts +116 -127
  862. package/src/email-parts.ts +269 -0
  863. package/src/eval.ts +14 -4
  864. package/src/figure-references.ts +112 -0
  865. package/src/files.ts +5 -0
  866. package/src/genre-parse.ts +30 -5
  867. package/src/genre-suggest.ts +15 -2
  868. package/src/heading-label.ts +55 -0
  869. package/src/in-page-nav.ts +48 -19
  870. package/src/joined-view.ts +1 -0
  871. package/src/levels.ts +14 -1
  872. package/src/line-paragraphs.ts +56 -10
  873. package/src/long-vowel.ts +99 -0
  874. package/src/markdown-node.ts +19 -0
  875. package/src/markdown-read.ts +44 -0
  876. package/src/markup.ts +210 -0
  877. package/src/mask.ts +10 -19
  878. package/src/number-name.ts +152 -25
  879. package/src/opening-line.ts +17 -0
  880. package/src/orthography.ts +20 -5
  881. package/src/page-furniture.ts +11 -2
  882. package/src/paragraph-length.ts +9 -0
  883. package/src/plain-source.ts +2 -1
  884. package/src/plugin.ts +107 -1
  885. package/src/profile/for-file.ts +3 -1
  886. package/src/quoted-span.ts +10 -4
  887. package/src/reasons.ts +9 -0
  888. package/src/reference-lists.ts +91 -0
  889. package/src/render/explain.ts +47 -13
  890. package/src/render/friendly.ts +20 -9
  891. package/src/render/options.ts +58 -0
  892. package/src/render/rules-json.ts +130 -14
  893. package/src/render/rules-table.ts +91 -0
  894. package/src/render/sarif.ts +4 -4
  895. package/src/render/semantic.ts +3 -3
  896. package/src/render/severity-name.ts +10 -0
  897. package/src/render/text.ts +21 -7
  898. package/src/resolve-genre.ts +4 -1
  899. package/src/rule-genres.ts +25 -0
  900. package/src/rule-guide.ts +135 -0
  901. package/src/rule-load.ts +98 -33
  902. package/src/rule-options.ts +131 -0
  903. package/src/run-semantic.ts +28 -20
  904. package/src/run.ts +78 -11
  905. package/src/semantic.ts +11 -3
  906. package/src/sentence-shape.ts +4 -5
  907. package/src/setting-problems.ts +7 -1
  908. package/src/span-cut.ts +28 -0
  909. package/src/span-merge.ts +13 -0
  910. package/src/speaker-labels.ts +129 -0
  911. package/src/stray-space.ts +81 -0
  912. package/src/structure/aside-depth.ts +67 -0
  913. package/src/structure/build.ts +38 -19
  914. package/src/structure/closed-pairs.ts +20 -0
  915. package/src/structure/date-range.ts +69 -0
  916. package/src/structure/known-mentions.ts +96 -0
  917. package/src/structure/numbering.ts +9 -5
  918. package/src/structure/of.ts +11 -3
  919. package/src/structure/percent-sum.ts +135 -0
  920. package/src/structure/quoted-number.ts +36 -0
  921. package/src/structure/relative-find.ts +34 -47
  922. package/src/structure/relative-resolve.ts +104 -42
  923. package/src/structure/runs.ts +2 -2
  924. package/src/structure/sexp.ts +17 -5
  925. package/src/structure/total.ts +2 -2
  926. package/src/structure/universal.ts +24 -4
  927. package/src/structure/wrapped-tail.ts +38 -13
  928. package/src/style-load.ts +28 -0
  929. package/src/style-parse.ts +77 -0
  930. package/src/subheading-line.ts +68 -0
  931. package/src/team-names.ts +13 -13
  932. package/src/template-syntax.ts +164 -0
  933. package/src/text-above.ts +49 -0
  934. package/src/text-figures.ts +147 -0
  935. package/src/trailing-aside.ts +50 -0
  936. package/src/tree-walk.ts +48 -0
  937. package/styles/bunkacho.yaml +25 -0
  938. package/styles/ieice.yaml +29 -0
  939. package/styles/jis-z8301-2011.yaml +25 -0
package/genres.yaml CHANGED
@@ -5,6 +5,10 @@
5
5
  # A group's rules apply to every genre in it; a genre's own rules win over its group's.
6
6
  # A rule turned off here is listed under "did not run" with the genre as the reason.
7
7
  # profile: the document profile (profiles/*.yaml) this genre reads with, when chaff.yaml names none.
8
+ # suggest: when no genre is set, what makes a file look like this genre, strongest first:
9
+ # paths (the file's path), then per language an opening (the body's first line, past front matter and
10
+ # headings) or a line with min_lines (how many lines must have that shape). A wrong suggestion misleads
11
+ # more than none, so a cue is added only where the corpus shows it does not fire on other kinds.
8
12
  # Which genres a rule applies to at all is the rule's use_for; the numbers behind a level are the rule's by_genre.
9
13
 
10
14
  groups:
@@ -43,6 +47,10 @@ groups:
43
47
  paragraph-length-variance: off
44
48
  ai-tell: off
45
49
  ai-generated-composite: off
50
+ contrast-framing: off
51
+ stock-transition: off
52
+ announcing-opener: off
53
+ colon-lead-in: off
46
54
  # A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up.
47
55
  - id: docs
48
56
  name: { ja: 説明書, en: Documentation }
@@ -67,6 +75,10 @@ groups:
67
75
  paragraph-length-variance: off
68
76
  ai-tell: off
69
77
  ai-generated-composite: off
78
+ contrast-framing: off
79
+ stock-transition: off
80
+ announcing-opener: off
81
+ colon-lead-in: off
70
82
  # Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence.
71
83
  - id: academic
72
84
  name: { ja: 学術, en: Academic }
@@ -87,6 +99,7 @@ groups:
87
99
  rule-of-three: off
88
100
  section-length-uniformity: off
89
101
  paragraph-length-variance: off
102
+ stock-transition: off
90
103
  # Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles.
91
104
  # Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps.
92
105
  - id: literature
@@ -106,6 +119,7 @@ groups:
106
119
  no-mixed-desumasu: off
107
120
  contraction-consistency: off
108
121
  doubled-word: off
122
+ agreement-slip: off
109
123
  agentless-passive: off
110
124
  expletive-construction: off
111
125
  excessive-hedging: off
@@ -130,11 +144,19 @@ groups:
130
144
  paragraph-length-variance: off
131
145
  ai-tell: off
132
146
  ai-generated-composite: off
147
+ contrast-framing: off
148
+ stock-transition: off
149
+ announcing-opener: off
150
+ colon-lead-in: off
133
151
  dangling-reference: off
134
152
  duplicate-definition: off
135
153
  date-order: off
136
154
  date-weekday-mismatch: off
137
155
  total-mismatch: off
156
+ announced-count-mismatch: off
157
+ dangling-figure-reference: off
158
+ date-range-reversed: off
159
+ percent-sum-mismatch: off
138
160
  # A speech opens with greetings and closes with thanks: that is its form, not padding.
139
161
  - id: speech
140
162
  name: { ja: 話し言葉, en: Speech }
@@ -149,6 +171,10 @@ groups:
149
171
  rule-of-three: off
150
172
  section-length-uniformity: off
151
173
  paragraph-length-variance: off
174
+ contrast-framing: off
175
+ stock-transition: off
176
+ announcing-opener: off
177
+ colon-lead-in: off
152
178
 
153
179
  genres:
154
180
  - id: technical/spec
@@ -191,6 +217,11 @@ genres:
191
217
  summary:
192
218
  ja: 仕事のメールと手紙
193
219
  en: Work email and letters
220
+ # A letter is a letter even when it encloses an agreement (an offer letter), so it goes by how it opens.
221
+ # Not by an addressee line (〇〇御中, To: ...): quotes and proposals open with one too.
222
+ suggest:
223
+ ja: { opening: "^(?:拝啓|謹啓|前略)(?:\\s|$)|^件名\\s*[::]" }
224
+ en: { opening: "^(?:Dear [^\\n]{1,60}|To whom it may concern)[,:]?$|^Subject\\s*:" }
194
225
  - id: business/press-release
195
226
  name: { ja: プレスリリース・お知らせ, en: Press release and notice }
196
227
  summary:
@@ -221,6 +252,8 @@ genres:
221
252
  dangling-reference: normal
222
253
  date-weekday-mismatch: normal
223
254
  total-mismatch: normal
255
+ dangling-figure-reference: normal
256
+ date-range-reversed: normal
224
257
  - id: legal/statute
225
258
  name: { ja: 法令・規程, en: Statute and regulation }
226
259
  summary:
@@ -232,6 +265,16 @@ genres:
232
265
  paths: ["(^|/)(laws?|statutes?|regulations?|kitei|kisoku)(/|[-_.])"]
233
266
  ja: { line: "(?:この|本)(?:法律|政令|省令|府令|規則|規程|条例|定款|通達)", min_lines: 2 }
234
267
  en: { line: "\\b(?:[Tt]his (?:Act|[Pp]art|[Ss]ubpart|[Rr]egulation)|[Tt]hese [Rr]egulations)\\b|^§\\s?\\d", min_lines: 3 }
268
+ # A statute or an internal rule is read article by article against its own numbers, like a contract.
269
+ # The statutes in the corpus (yarn corpus) give these no findings, deleted articles (第三条 削除) and 第十条の二 included.
270
+ rules:
271
+ numbering-gap: normal
272
+ duplicate-definition: normal
273
+ dangling-reference: normal
274
+ date-weekday-mismatch: normal
275
+ total-mismatch: normal
276
+ dangling-figure-reference: normal
277
+ date-range-reversed: normal
235
278
  - id: legal/judgment
236
279
  name: { ja: 判決, en: Court decision }
237
280
  summary:
@@ -253,10 +296,9 @@ genres:
253
296
  summary:
254
297
  ja: 使い方の説明・手順書・ヘルプ
255
298
  en: User guides, how-to pages and help
299
+ # Path only: step and procedure headings are as common in tech blogs and specifications as in manuals.
256
300
  suggest:
257
301
  paths: ["(^|/)(manuals?|guides?|how-?tos?|help|tutorials?|user-?guides?)(/|[-_.])"]
258
- ja: { line: "^#{1,6}\\s.*(?:手順|操作方法|設定方法)", min_lines: 2 }
259
- en: { line: "^#{1,6}\\s*(?:Steps?\\b|Step \\d|Prerequisites|Before you begin|Troubleshooting)", min_lines: 2 }
260
302
  - id: docs/faq
261
303
  name: { ja: よくある質問, en: FAQ }
262
304
  summary:
@@ -275,6 +317,11 @@ genres:
275
317
  paths: ["(^|/)(glossary|glossaries|yogo|用語集)(/|[-_.])"]
276
318
  ja: { line: "^#{1,6}\\s*用語集", min_lines: 1 }
277
319
  en: { line: "^#{1,6}\\s*Glossary\\b", min_lines: 1 }
320
+ # A reader looks up one entry and reads only that. A definition is a noun phrase (風の吹いてくる方向。), and sibling
321
+ # entries share one wording on purpose (Portion of labor productivity change attributed to …), which no reader sees twice.
322
+ rules:
323
+ taigen-dome-in-prose: off
324
+ ngram-repetition: off
278
325
  - id: academic/paper
279
326
  name: { ja: 論文, en: Academic paper }
280
327
  summary:
@@ -293,8 +340,11 @@ genres:
293
340
  summary:
294
341
  ja: 小説・物語
295
342
  en: Novels and stories
343
+ # A line that is a spoken line (「…」, or 「…」と云った): a sentence in quotes, not a term being defined
344
+ # (「…」とは, 「…」という, 「…」とする, 「…」と定める, 「…」と称する, 「…」と呼ぶ).
296
345
  suggest:
297
346
  paths: ["(^|/)(novels?|fiction|stories|shosetsu)(/|[-_.])"]
347
+ ja: { line: "^「[^」]+」と(?!は|い[うい]|する|定め|称|呼)|^「[^」]*[、。?!…―][^」]*」$", min_lines: 10 }
298
348
  - id: literature/essay
299
349
  name: { ja: 随筆, en: Literary essay }
300
350
  summary:
@@ -305,15 +355,21 @@ genres:
305
355
  summary:
306
356
  ja: 詩・短歌・俳句
307
357
  en: Poems and verse
358
+ # Verse lines: short lines with no sentence punctuation (a tanka's three lines; a capitalised line of English verse).
359
+ # A glossary or a list of names has short lines too, so it takes many of them.
308
360
  suggest:
309
361
  paths: ["(^|/)(poems?|poetry|tanka|haiku)(/|[-_.])"]
362
+ ja: { line: "^(?=.*[ぁ-ゖ])[ぁ-ゖゝゞァ-ヺー-ヾ一-鿿々〆]{3,20}$", min_lines: 40 }
363
+ en: { line: "^\\s{0,8}[A-Z][a-z’']*,? [^.#|*\\[\\]()<>:0-9]{6,50}[a-z,;!?’—-]$", min_lines: 80 }
310
364
  - id: literature/play
311
365
  name: { ja: 戯曲・脚本, en: Play and script }
312
366
  summary:
313
367
  ja: 戯曲・脚本
314
368
  en: Plays and scripts
369
+ # A speaker's name before the line: 妻  あたしは… (two ideographic spaces; a statute's 第一条  has one), ALGERNON.
315
370
  suggest:
316
371
  paths: ["(^|/)(plays?|screenplays?|kyakuhon)(/|[-_.])"]
372
+ ja: { line: "^[^\\s○◯●※・]{1,6}  \\S", min_lines: 20 }
317
373
  en: { line: "^[A-Z][A-Z '-]{2,}\\.$", min_lines: 10 }
318
374
  - id: speech/address
319
375
  name: { ja: スピーチ・挨拶, en: Speech }
@@ -349,6 +405,7 @@ genres:
349
405
  no-mixed-desumasu: off
350
406
  contraction-consistency: off
351
407
  doubled-word: off
408
+ agreement-slip: off
352
409
  sasete-itadaku: off
353
410
  double-keigo: off
354
411
  cushion-phrase-density: off
@@ -361,3 +418,4 @@ genres:
361
418
  undefined-acronym: off
362
419
  ai-tell: off
363
420
  ai-generated-composite: off
421
+ assistant-residue: off
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chaffjs",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Prose validation harness. Finds what is hard to read, and never rewrites it for you.",
5
5
  "keywords": [
6
6
  "chaff",
@@ -42,8 +42,10 @@
42
42
  "dist",
43
43
  "genres.yaml",
44
44
  "profiles",
45
+ "reference-headings.yaml",
45
46
  "rules",
46
47
  "skills",
48
+ "styles",
47
49
  "src"
48
50
  ],
49
51
  "engines": {
@@ -55,8 +57,8 @@
55
57
  },
56
58
  "dependencies": {
57
59
  "@anthropic-ai/sdk": "^0.125.0",
58
- "@chaffjs/lang-en": "0.14.0",
59
- "@chaffjs/lang-ja": "0.15.0",
60
+ "@chaffjs/lang-en": "0.16.0",
61
+ "@chaffjs/lang-ja": "0.17.0",
60
62
  "mdast-util-from-markdown": "^2.0.3",
61
63
  "mdast-util-frontmatter": "^2.0.1",
62
64
  "mdast-util-gfm-table": "^2.0.0",
@@ -0,0 +1,17 @@
1
+ # 文献一覧の見出し。言語の見当付け(どの言語パッケージを読むか)は、この見出しの下の一覧を数えない。
2
+ # 文献一覧は本文の言語ではなく、引いた文献の言語で書かれる。日本語の論文の英語の文献が多いと、文書が英語に見える。
3
+ # 見当付けは言語パッケージを読む前に動くので、どちらの言語の見出しもここに置く。大文字と小文字は区別しない。
4
+ headings:
5
+ - 参考文献
6
+ - 引用文献
7
+ - 参照文献
8
+ - 文献
9
+ - 文献一覧
10
+ - 引用・参考文献
11
+ - 参考・引用文献
12
+ - References
13
+ - Reference
14
+ - Bibliography
15
+ - Works Cited
16
+ - Literature Cited
17
+ - Cited Literature
@@ -26,3 +26,22 @@ how_to_fix:
26
26
  levels: { strict: 10, normal: 15, relaxed: 25 }
27
27
 
28
28
  use_for: [blog, business, legal, docs, academic, literature, speech]
29
+
30
+ group: readability
31
+ summary:
32
+ ja: 英語で、-ly の副詞が多すぎる所(弱い動詞の印になりやすい)
33
+ en: Too many -ly adverbs, which usually prop up a weak verb
34
+ example:
35
+ en:
36
+ pad: true
37
+ before: |
38
+ She quickly walked to the room and quietly opened the door. He really badly needed the report and angrily asked for it.
39
+ after: |
40
+ She hurried to the room and eased the door open. He needed the report and demanded it.
41
+
42
+ not_flagged:
43
+ ja: 短い文書(200 語より短いもの)は測りません。
44
+ en: Documents under 200 words are not measured.
45
+ level_meaning:
46
+ ja: 1000 語あたり {limit} 個まで
47
+ en: up to {limit} per 1000 words
@@ -26,3 +26,22 @@ how_to_fix:
26
26
  levels: { strict: 1, normal: 1, relaxed: 2 }
27
27
 
28
28
  use_for: [business, legal, docs, academic, literature, speech]
29
+
30
+ group: wording
31
+ summary:
32
+ ja: 「〜が決定されました」のように、受け身で書いて、誰がしたのかが書かれていない所
33
+ en: A passive sentence ("the budget was approved") that never says who did it
34
+ example:
35
+ ja:
36
+ before: 来期の予算が承認されました。
37
+ after: 取締役会が、来期の予算を承認しました。
38
+ en:
39
+ before: The budget for next year was approved.
40
+ after: The board approved the budget for next year.
41
+
42
+ not_flagged:
43
+ ja: 「〜によって」のように、した人が同じ文に書いてある受け身は指しません。法務のジャンルは、受け身が書き方そのものなので見ません。
44
+ en: A passive that names the actor in the same sentence ("by the board") is not reported. Legal genres, where the passive is the form, do not run this rule.
45
+ level_meaning:
46
+ ja: 一文に受け身が {limit} 個あれば指摘
47
+ en: reported when a sentence has {limit} passives with no actor
@@ -0,0 +1,49 @@
1
+ id: agreement-slip
2
+ layer: L3
3
+ status: experimental
4
+ how_to_find: agreement-slip
5
+ requires: [pos]
6
+ languages: [en]
7
+ extra_word_lists: [singular-determiner, plural-determiner, invariant-noun, count-adjective, dependent-possessive, finite-auxiliary, misnumbered-phrase]
8
+ severity: warning
9
+
10
+ name:
11
+ ja: 語の形が合っていない
12
+ en: Words that do not agree
13
+
14
+ why:
15
+ ja: 「a significant changes」「these new version」のように限定詞と名詞の単数・複数が食い違う文や、「Your can check」のように所有の語が主語の位置にある文は、書き換えの途中で片方だけ直した跡です。読み手はつまずき、急いで書いた文書に見えます。解析器の読みが一通りに決まる形だけを数え、単数と複数が同じ綴りの語(series / data)、代名詞にも読める this / these の直後の語、名詞を重ねた語(a sales team)は数えていません。
16
+ en: A determiner and a noun that differ in number ("a significant changes", "these new version"), or a possessive where the subject belongs ("Your can check"), is left over from an edit that fixed one word and not the other. The reader stumbles, and the document looks rushed. Only forms with one reading are counted; nouns spelled alike in both numbers ("series", "data"), a word right after "this" or "these" (which can stand alone), and nouns that modify another noun ("a sales team") are not.
17
+
18
+ message:
19
+ ja: 「{word}」で単数と複数が合っていません
20
+ en: '"{word}" mixes singular and plural'
21
+
22
+ messages:
23
+ number:
24
+ ja: 「{word}」で単数と複数が合っていません
25
+ en: '"{word}" mixes singular and plural'
26
+ possessive:
27
+ ja: 「{word}」で、所有の語が主語の位置にあります
28
+ en: '"{word}" puts a possessive where the subject belongs'
29
+
30
+ how_to_fix:
31
+ ja: 限定詞か名詞のどちらかに揃えてください(a significant change / significant changes)。所有の語なら、主語の語に直してください(Your can → You can、their is → there is)。
32
+ en: Make the determiner and the noun agree ("a significant change" or "significant changes"). For a possessive, write the subject you meant ("Your can" becomes "You can", "their is" becomes "there is").
33
+
34
+ levels: { strict: error, normal: warning, relaxed: info }
35
+
36
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
37
+
38
+ group: slips
39
+ summary:
40
+ ja: 英語で、「these new version」のように単数と複数が合っていない所
41
+ en: Words that no longer agree after an edit, as in "these new version"
42
+ example:
43
+ en:
44
+ before: These new version will ship in May.
45
+ after: This new version will ship in May.
46
+
47
+ not_flagged:
48
+ ja: 単数と複数で形が同じ名詞(series、data)、this や these の直後の語、名詞を修飾する名詞(a sales team)は指しません。
49
+ en: Nouns spelled alike in both numbers ("series", "data"), a word right after "this" or "these", and nouns that modify another noun ("a sales team") are not reported.
@@ -13,6 +13,11 @@ from:
13
13
  - padded-intro
14
14
  - closing-cliche
15
15
  - no-em-dash
16
+ - contrast-framing
17
+ - stock-transition
18
+ - assistant-residue
19
+ - announcing-opener
20
+ - colon-lead-in
16
21
 
17
22
  name:
18
23
  ja: 生成文の特徴がそろっている
@@ -34,3 +39,100 @@ how_to_fix:
34
39
  levels: { strict: 2, normal: 3, relaxed: 5 }
35
40
 
36
41
  use_for: [blog, business, legal, docs, academic, literature, speech]
42
+
43
+ group: ai-tells
44
+ summary:
45
+ ja: 生成された文章の特徴がいくつも一つの文書にそろっている所(生成だと決めつけはしません)
46
+ en: Several signals of generated text together in one document (a place to reread, not a verdict)
47
+ example:
48
+ ja:
49
+ config: { genre: blog/tech, rules: { ai-generated-composite: strict } }
50
+ before: |
51
+ # 在庫管理を見直す
52
+
53
+ 現代社会において、データは重要な役割を果たすと言えるでしょう。
54
+
55
+ - 正確さ
56
+ - 速さ
57
+ - 安さ
58
+
59
+ 毎日することです。
60
+
61
+ - 数える
62
+ - 記録する
63
+ - 見返す
64
+
65
+ よくある失敗です。
66
+
67
+ - 数え忘れ
68
+ - 記録の漏れ
69
+ - 見返さない
70
+ after: |
71
+ # 在庫管理を見直す
72
+
73
+ 当社では、在庫の数を毎朝データで確かめてから発注しています。
74
+
75
+ - 正確さ
76
+ - 速さ
77
+
78
+ 毎日することです。
79
+
80
+ - 数える
81
+ - 記録する
82
+ - 見返す
83
+ - 月末の棚卸しと突き合わせる
84
+
85
+ よくある失敗です。
86
+
87
+ - 数え忘れ
88
+ - 記録の漏れ
89
+ - 見返さない
90
+ en:
91
+ config: { genre: blog/tech, rules: { ai-generated-composite: strict } }
92
+ before: |
93
+ # Rethinking stock control
94
+
95
+ In today's fast-paced world, data plays a crucial role. Let us delve into why.
96
+
97
+ - Accuracy
98
+ - Speed
99
+ - Cost
100
+
101
+ Every day we:
102
+
103
+ - Count
104
+ - Record
105
+ - Review
106
+
107
+ Common mistakes:
108
+
109
+ - Missed counts
110
+ - Gaps in the record
111
+ - No review
112
+ after: |
113
+ # Rethinking stock control
114
+
115
+ We check stock levels every morning before placing orders.
116
+
117
+ - Accuracy
118
+ - Speed
119
+
120
+ Every day we:
121
+
122
+ - Count
123
+ - Record
124
+ - Review
125
+ - Match against the month-end count
126
+
127
+ Common mistakes:
128
+
129
+ - Missed counts
130
+ - Gaps in the record
131
+ - No review
132
+
133
+ not_flagged:
134
+ ja: 特徴が一つだけなら何も言いません。そろっても、生成された文章だとは言いません。読み返す場所の目印です。
135
+ en: One signal alone says nothing. Even several together do not say the text was generated; they mark a place to reread.
136
+ level_meaning:
137
+ ja: 特徴が {limit} 種そろえば指摘
138
+ en: reported once {limit} signals occur together
@@ -26,3 +26,26 @@ how_to_fix:
26
26
  levels: { strict: 10, normal: 18, relaxed: 30 }
27
27
 
28
28
  use_for: [blog, business, legal, docs, academic, literature, speech]
29
+
30
+ group: ai-tells
31
+ summary:
32
+ ja: 「重要な役割を果たす」「と言えるでしょう」のような、生成された文章にありがちな言い回しが重なった所
33
+ en: Phrases common in generated text ("delve into", "plays a crucial role") piling up
34
+ example:
35
+ ja:
36
+ before: |
37
+ 現代社会において、データは重要な役割を果たすと言えるでしょう。
38
+ after: |
39
+ 当社では、在庫の数を毎朝データで確かめてから発注しています。
40
+ en:
41
+ before: |
42
+ In today's fast-paced world, data plays a crucial role. Let us delve into why.
43
+ after: |
44
+ We check stock levels every morning before placing orders.
45
+
46
+ not_flagged:
47
+ ja: どの言い回しも、一つだけなら普通の文章にあります。重みの合計が上限を超えるまでは何も言いません。これだけで生成された文章だとは言いません。
48
+ en: Each phrase is ordinary on its own; nothing is said until the weights add up past the limit. This alone never says the text was generated.
49
+ level_meaning:
50
+ ja: 言い回しの重みの合計が {limit} 点まで
51
+ en: up to a score of {limit}
@@ -0,0 +1,57 @@
1
+ id: announced-count-mismatch
2
+ layer: L3
3
+ status: experimental
4
+ how_to_find: announced-count
5
+ severity: warning
6
+
7
+ name:
8
+ ja: 予告した数と箇条書きの数が合わない
9
+ en: A list that does not have the number of items announced
10
+
11
+ why:
12
+ ja: 「以下の3点」と書いたのに、すぐ下の箇条書きが2つや4つだと、読み手は抜けた項目があるのか、数え間違いなのかを確かめることになります。項目を足したり消したりしたあとに、予告の数を直し忘れると起きます。箇条書きのすぐ前の文が、「以下の」「次の」のような先を指す語か、終わりのコロン(:)と一緒に数(3点、2つ、4項目)を書いているときだけ、その数を箇条書きのいちばん外側の項目の数と比べます。
13
+ en: When a sentence says "the following three steps" and the list right below it has two or four, the reader has to check whether an item is missing or the count is wrong. It happens when an item is added or removed and the count is not updated. The number is compared with the items at the top level of the list only when the sentence right before the list announces it, with a word pointing ahead ("following", "below") or a colon at its end, and the number names what the list holds ("three steps", "two reasons").
14
+
15
+ message:
16
+ ja: 「{phrase}」と予告していますが、すぐ下の箇条書きは{listed}項目です
17
+ en: '"{phrase}" is announced, but the number of items in the list below is {listed}'
18
+
19
+ how_to_fix:
20
+ ja: 項目が抜けていないか確かめて、足りなければ足し、数が違うなら予告の数を直してください。
21
+ en: Check whether an item is missing. Add it, or correct the number in the announcement.
22
+
23
+ levels: { strict: error, normal: warning, relaxed: info }
24
+
25
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
26
+
27
+ group: facts
28
+ summary:
29
+ ja: 「以下の3点」と書いたのに、下の箇条書きの数が違う所
30
+ en: A list whose number of items differs from the number announced just before it
31
+ example:
32
+ ja:
33
+ before: |
34
+ 申し込みの前に、次の3点を確認してください。
35
+
36
+ - 本人確認の書類
37
+ - 振込先の口座
38
+ after: |
39
+ 申し込みの前に、次の2点を確認してください。
40
+
41
+ - 本人確認の書類
42
+ - 振込先の口座
43
+ en:
44
+ before: |
45
+ Before you apply, check the following three items:
46
+
47
+ - Your ID
48
+ - Your bank account
49
+ after: |
50
+ Before you apply, check the following two items:
51
+
52
+ - Your ID
53
+ - Your bank account
54
+
55
+ not_flagged:
56
+ ja: 目安の数(約3点、3つ以上)、順番(3つ目)、選ぶ数(以下から1つ選ぶ)、見出しや表の前の数、箇条書きがすぐ後ろに無い数は比べません。予告の文に数が二つあるときも比べません。
57
+ en: An estimate (about three, three or more), a rank (the first three), how many to pick (choose two), a number before a heading or a table, and a number with no list right after it are not compared. Nor is a sentence with two numbers in it.
@@ -0,0 +1,51 @@
1
+ id: announcing-opener
2
+ layer: L2
3
+ status: experimental
4
+ how_to_find: opener-pile
5
+ word_list: announcing-opener
6
+ uses: [pos]
7
+ severity: info
8
+
9
+ name:
10
+ ja: 予告で始まる文が多い
11
+ en: Too many sentences that announce before they say
12
+
13
+ why:
14
+ ja: 「重要なのは、」「ポイントは、」「正直に言うと、」は、中身の前に「これから大事なことを言う」と予告します。1 つなら目印ですが、重なるとどの文も同じ重さに見え、予告だけが残ります。生成文によく見られる癖として知られています。
15
+ en: '"The key point is", "Here''s the thing" and "Honestly," announce a point before making it. Once, that is a signpost; piled up, every sentence claims the same weight and the announcements are all that stand out. A habit well known in generated text.'
16
+
17
+ message:
18
+ ja: 「{matched}」など、予告で始まる文が {count} 個あります({limit} 個から)
19
+ en: '"{matched}" and other announcing openers start {count} sentences ({limit} needed)'
20
+
21
+ how_to_fix:
22
+ ja: 予告を消して、中身から書き始めてください。本当に一番大事な一つだけなら、予告を残してもかまいません。
23
+ en: Delete the announcement and start with the point. If it really is the one point that matters most, keep that one.
24
+
25
+ # 指摘に要る数。長さで割らない:人の記事は長くても 1 つ 2 つで、生成文は短くても重ねる。
26
+ levels: { strict: 2, normal: 3, relaxed: 5 }
27
+
28
+ use_for: [blog, business, legal, docs, academic, literature, speech]
29
+
30
+ group: ai-tells
31
+ summary:
32
+ ja: 「重要なのは、」「ポイントは、」「正直に言うと、」のように、中身の前に予告する文頭が重なっている所
33
+ en: 'Openers that announce a point before making it ("The key point is", "Here''s the thing", "Honestly,") piling up'
34
+ example:
35
+ ja:
36
+ before: |
37
+ 重要なのは、設定を先に確かめることです。ポイントは、ログを残すことです。正直に言うと、手順書は古くなっています。
38
+ after: |
39
+ まず設定を確かめ、そのときのログを残してください。手順書は去年の版のままなので、画面の名前が違います。
40
+ en:
41
+ before: |
42
+ The key point is that settings come first. Here's the thing: logs matter too. Honestly, the manual is out of date.
43
+ after: |
44
+ Check the settings first and keep the log of that check. The manual is last year's, so the screen names differ.
45
+
46
+ not_flagged:
47
+ ja: 文の途中の「このポイントは」と、指摘に要る数に届かない予告は言いません。「大事なのは」「結論から言うと」は、生成 AI 以前の人の記事にも同じくらいあるので数えません。
48
+ en: An announcing phrase inside a sentence, and fewer than the level needs, are not reported.
49
+ level_meaning:
50
+ ja: 予告で始まる文が {limit} 個あれば指摘
51
+ en: reported once {limit} sentences open with an announcement
@@ -0,0 +1,52 @@
1
+ id: assistant-residue
2
+ layer: L2
3
+ status: experimental
4
+ how_to_find: assistant-residue
5
+ word_list: assistant-residue
6
+ uses: [pos]
7
+ severity: warning
8
+
9
+ name:
10
+ ja: 会話の返事の名残
11
+ en: Chat-reply residue
12
+
13
+ why:
14
+ ja: 「私の知識は」「お役に立てれば幸いです」は、チャットの返事を文書に貼ったときに残る言葉です。知識の期限や AI としての断り書きは 1 つで言い、人も書く礼の言葉は 2 つ重なったときだけ言います。
15
+ en: '"As of my last knowledge update" and "I hope this helps" are what a chat reply leaves behind when pasted into a document. A knowledge-cutoff or AI disclaimer counts on its own; a courtesy people also write counts only when two come together.'
16
+
17
+ message:
18
+ ja: 「{matched}」は会話の返事の言葉です(点 {density}、{limit} から)
19
+ en: '"{matched}" is chat-reply wording (score {density}, from {limit})'
20
+
21
+ how_to_fix:
22
+ ja: 文書の読み手に向けた言葉に書き直すか、消してください。知識の期限を書いた文は、確かめた日付と出典に置き換えてください。
23
+ en: Rewrite it for the document's reader, or delete it. Replace a knowledge-cutoff line with the date you checked and the source.
24
+
25
+ # 語彙表の重みの合計を 10 倍した点。名残そのものは重み 1 で 1 つで届き、人も書く礼は 0.5 で 2 つ重なって届く。
26
+ # strict でも礼 1 つでは言わない。1 つなら人の書き方と区別がつかない。
27
+ levels: { strict: 10, normal: 10, relaxed: 20 }
28
+
29
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
30
+
31
+ group: ai-tells
32
+ summary:
33
+ ja: 「私の知識は」「お役に立てれば幸いです」のような、チャットの返事を貼ったときに残る言葉
34
+ en: What a pasted chat reply leaves behind ("As of my last knowledge update", "I hope this helps")
35
+ example:
36
+ ja:
37
+ before: |
38
+ 新しい棟の計画は検討中でした。私の知識は2023年時点のものです。
39
+ after: |
40
+ 新しい棟の計画は、2026年9月の議会資料では検討中でした。
41
+ en:
42
+ before: |
43
+ As of my last knowledge update, plans for a new wing were under discussion.
44
+ after: |
45
+ The council's minutes of September 2026 say plans for a new wing are under discussion.
46
+
47
+ not_flagged:
48
+ ja: 人も書く礼の言葉(「お役に立てれば幸いです」)が一つだけなら、何度書いてあっても指しません。同じ文の中の二つの言い回しは一つと数えます。
49
+ en: A single courtesy people also write ("I hope this helps"), however often it is repeated, is not reported. Two listed phrases in one sentence count as one.
50
+ level_meaning:
51
+ ja: 重みの合計が {limit} 点で指摘
52
+ en: reported from a score of {limit}
@@ -28,3 +28,34 @@ levels:
28
28
  relaxed: 40
29
29
 
30
30
  use_for: [blog, business, technical, legal, docs, academic, literature, speech]
31
+
32
+ group: readability
33
+ summary:
34
+ ja: 太字が多すぎて、どこが大事なのか分からなくなった所
35
+ en: So much bold text that nothing stands out any more
36
+ example:
37
+ ja:
38
+ before: |
39
+ ## 申し込み
40
+
41
+ **申し込み**は**今月末**までに、**専用の用紙**で**総務部**へ出してください。用紙は社内の共有フォルダにあり、印刷して手で書いても、画面で入力してから印刷してもかまいません。**上長の印**が要るので、締め切りの三日前までには上長に渡してください。**遅れた場合**は、どんな理由でも**受け付けません**。分からないことがあれば、総務部の窓口に電話で問い合わせてください。受付の時間は平日の午前九時から午後五時までです。書き方の見本も、同じ共有フォルダに置いてあります。
42
+ after: |
43
+ ## 申し込み
44
+
45
+ 申し込みは、専用の用紙で総務部へ出してください。**締め切りは今月末で、遅れた場合はどんな理由でも受け付けません。**用紙は社内の共有フォルダにあり、印刷して手で書いても、画面で入力してから印刷してもかまいません。上長の印が要るので、締め切りの三日前までには上長に渡してください。分からないことがあれば、総務部の窓口に電話で問い合わせてください。受付の時間は平日の午前九時から午後五時までです。書き方の見本も、同じ共有フォルダに置いてあります。
46
+ en:
47
+ before: |
48
+ ## How to apply
49
+
50
+ Send the **form** to **HR** by the **end of the month**. The form is in the shared folder. You can print it and fill it in by hand, or type into it on screen and then print it. It needs your **manager's signature**, so give it to your manager at least three days before the deadline. **Late forms** will **not** be **accepted**, whatever the reason. If you have a question, call the HR desk between nine and five on a weekday.
51
+ after: |
52
+ ## How to apply
53
+
54
+ Send the form to HR. **The deadline is the end of the month, and late forms will not be accepted, whatever the reason.** The form is in the shared folder. You can print it and fill it in by hand, or type into it on screen and then print it. It needs your manager's signature, so give it to your manager at least three days before the deadline. If you have a question, call the HR desk between nine and five on a weekday.
55
+
56
+ not_flagged:
57
+ ja: 200 字より短い節は、1 箇所で割合が跳ねるので測りません。
58
+ en: Sections under 200 characters are not measured, since one bold span would swing the rate.
59
+ level_meaning:
60
+ ja: 1000 字あたり太字 {limit} 箇所まで
61
+ en: up to {limit} bold spans per 1000 characters