paperlint 4.1.0 → 4.2.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 (113) hide show
  1. package/CLAUDE.md +24 -0
  2. package/CONTRIBUTING.md +7 -0
  3. package/dist/adapters/latex/document-class.d.ts +6 -5
  4. package/dist/adapters/latex/document-class.d.ts.map +1 -1
  5. package/dist/adapters/latex/document-class.js +18 -10
  6. package/dist/adapters/latex/document-class.js.map +1 -1
  7. package/dist/adapters/latex/includes.d.ts +12 -0
  8. package/dist/adapters/latex/includes.d.ts.map +1 -0
  9. package/dist/adapters/latex/includes.js +42 -0
  10. package/dist/adapters/latex/includes.js.map +1 -0
  11. package/dist/adapters/latex/index.d.ts +9 -5
  12. package/dist/adapters/latex/index.d.ts.map +1 -1
  13. package/dist/adapters/latex/index.js +8 -1
  14. package/dist/adapters/latex/index.js.map +1 -1
  15. package/dist/adapters/latex/nodes.d.ts +5 -1
  16. package/dist/adapters/latex/nodes.d.ts.map +1 -1
  17. package/dist/adapters/latex/nodes.js +6 -2
  18. package/dist/adapters/latex/nodes.js.map +1 -1
  19. package/dist/adapters/latex/parse.d.ts.map +1 -1
  20. package/dist/adapters/latex/parse.js +1 -0
  21. package/dist/adapters/latex/parse.js.map +1 -1
  22. package/dist/adapters/latex/prose.d.ts +8 -0
  23. package/dist/adapters/latex/prose.d.ts.map +1 -0
  24. package/dist/adapters/latex/prose.js +353 -0
  25. package/dist/adapters/latex/prose.js.map +1 -0
  26. package/dist/claim-provenance.d.ts +34 -0
  27. package/dist/claim-provenance.d.ts.map +1 -0
  28. package/dist/claim-provenance.js +146 -0
  29. package/dist/claim-provenance.js.map +1 -0
  30. package/dist/cli.d.ts.map +1 -1
  31. package/dist/cli.js +20 -0
  32. package/dist/cli.js.map +1 -1
  33. package/dist/domain/paper-source.d.ts +58 -0
  34. package/dist/domain/paper-source.d.ts.map +1 -0
  35. package/dist/domain/paper-source.js +109 -0
  36. package/dist/domain/paper-source.js.map +1 -0
  37. package/dist/domain/sentences.d.ts +26 -0
  38. package/dist/domain/sentences.d.ts.map +1 -0
  39. package/dist/domain/sentences.js +48 -0
  40. package/dist/domain/sentences.js.map +1 -0
  41. package/dist/domain/tex-document.d.ts +39 -4
  42. package/dist/domain/tex-document.d.ts.map +1 -1
  43. package/dist/domain/tex-document.js.map +1 -1
  44. package/dist/eslint-rules/paper-typography.d.ts +7 -0
  45. package/dist/eslint-rules/paper-typography.d.ts.map +1 -1
  46. package/dist/eslint-rules/paper-typography.js +53 -1
  47. package/dist/eslint-rules/paper-typography.js.map +1 -1
  48. package/dist/ports/latex.d.ts +12 -1
  49. package/dist/ports/latex.d.ts.map +1 -1
  50. package/dist/register.d.ts +40 -0
  51. package/dist/register.d.ts.map +1 -0
  52. package/dist/register.js +134 -0
  53. package/dist/register.js.map +1 -0
  54. package/dist/tex-paper.d.ts +19 -0
  55. package/dist/tex-paper.d.ts.map +1 -0
  56. package/dist/tex-paper.js +105 -0
  57. package/dist/tex-paper.js.map +1 -0
  58. package/dist/tex-venue-rules.d.ts +7 -2
  59. package/dist/tex-venue-rules.d.ts.map +1 -1
  60. package/dist/tex-venue-rules.js +31 -17
  61. package/dist/tex-venue-rules.js.map +1 -1
  62. package/docs/rules/tex/claim-provenance.md +83 -0
  63. package/docs/rules/tex/missing-input.md +58 -0
  64. package/docs/rules/tex/register.md +77 -0
  65. package/docs/rules/tex/required-section.md +3 -1
  66. package/docs/rules/tex/template.md +12 -0
  67. package/docs/rules/tex/venue-leftover.md +4 -2
  68. package/docs/rules.md +3 -0
  69. package/eslint-rules/paper-typography.test.mjs +48 -1
  70. package/eslint-rules/paper-typography.ts +72 -1
  71. package/eslint.config.mjs +1 -0
  72. package/fixtures/real-markdown-paper/baseline.ts +8 -7
  73. package/package.json +2 -1
  74. package/skills/cold-read-diff/SKILL.md +31 -10
  75. package/skills/cold-read-diff/SKILL.md.spec.ts +30 -9
  76. package/skills/draft-paper/SKILL.md +2 -2
  77. package/skills/draft-paper/SKILL.md.spec.ts +1 -1
  78. package/skills/grade-paper-writing/SKILL.md +109 -44
  79. package/skills/grade-paper-writing/SKILL.md.spec.ts +108 -43
  80. package/skills/harden-paper/SKILL.md +35 -36
  81. package/skills/harden-paper/SKILL.md.spec.ts +34 -35
  82. package/skills/paper-adversarial-review/SKILL.md +2 -2
  83. package/skills/paper-adversarial-review/SKILL.md.spec.ts +1 -1
  84. package/skills/paper-pipeline/SKILL.md +3 -3
  85. package/skills/paper-pipeline/SKILL.md.spec.ts +2 -2
  86. package/skills/paper-pipeline/grade-paper-writing-ablation.eval.mjs +6 -6
  87. package/skills/paper-pipeline/references/writing-craft.md +53 -18
  88. package/skills/pc-panel-review/SKILL.md +36 -11
  89. package/skills/pc-panel-review/SKILL.md.spec.ts +35 -10
  90. package/src/adapters/latex/document-class.ts +20 -12
  91. package/src/adapters/latex/includes.ts +66 -0
  92. package/src/adapters/latex/index.test.ts +175 -1
  93. package/src/adapters/latex/index.ts +14 -4
  94. package/src/adapters/latex/nodes.ts +11 -2
  95. package/src/adapters/latex/parse.ts +1 -0
  96. package/src/adapters/latex/prose.ts +484 -0
  97. package/src/claim-provenance.test.ts +352 -0
  98. package/src/claim-provenance.ts +217 -0
  99. package/src/cli.ts +20 -0
  100. package/src/domain/paper-source.test.ts +156 -0
  101. package/src/domain/paper-source.ts +233 -0
  102. package/src/domain/sentences.ts +67 -0
  103. package/src/domain/tex-document.ts +36 -3
  104. package/src/ports/latex.ts +13 -0
  105. package/src/register.test.ts +165 -0
  106. package/src/register.ts +177 -0
  107. package/src/rule-cases.test.ts +54 -4
  108. package/src/tex-paper.test.ts +131 -0
  109. package/src/tex-paper.ts +152 -0
  110. package/src/tex-venue-rules.test.ts +87 -5
  111. package/src/tex-venue-rules.ts +62 -30
  112. package/skills/harden-paper/fixtures/uncited-assertions-sample.md +0 -43
  113. package/skills/harden-paper/fixtures/uncited-assertions-sample.tex +0 -77
@@ -0,0 +1,353 @@
1
+ import { hasAtLeast, sortBy } from "remeda";
2
+ import { argumentsOf, inPlace, macroPlace, mandatory, placeOf, stringText, } from "./nodes.js";
3
+ import { CITATION_MACROS, DEFINITION_MACROS } from "./parse.js";
4
+ const BREAK = { kind: "break" };
5
+ const END = { kind: "end" };
6
+ /** Environments whose body is not running prose: floats, tables, algorithms, drawings, code. */
7
+ const SKIPPED_ENVS = new Set([
8
+ "figure",
9
+ "figure*",
10
+ "table",
11
+ "table*",
12
+ "tabular",
13
+ "tabular*",
14
+ "tabularx",
15
+ "longtable",
16
+ "wrapfigure",
17
+ "wraptable",
18
+ "subfigure",
19
+ "subtable",
20
+ "algorithm",
21
+ "algorithm*",
22
+ "algorithmic",
23
+ "tikzpicture",
24
+ "lstlisting",
25
+ "verbatim",
26
+ "Verbatim",
27
+ "minted",
28
+ "comment",
29
+ "CCSXML",
30
+ ]);
31
+ /** Macros that start the back matter: nothing after them is the body. */
32
+ const BACK_MATTER = new Set([
33
+ "appendix",
34
+ "bibliography",
35
+ "printbibliography",
36
+ ]);
37
+ /** Macros that point at a numbered place in the paper. */
38
+ const REFERENCE_MACROS = new Set([
39
+ "ref",
40
+ "cref",
41
+ "Cref",
42
+ "autoref",
43
+ "Autoref",
44
+ "eqref",
45
+ "pageref",
46
+ "nameref",
47
+ "vref",
48
+ "Vref",
49
+ "cpageref",
50
+ ]);
51
+ /** Macros that name a source outside the paper: a citation (`\nocite` prints nothing), or a link. */
52
+ const SOURCE_MACROS = new Set([
53
+ ...[...CITATION_MACROS].filter((m) => m !== "nocite"),
54
+ "url",
55
+ ]);
56
+ /** Macros that end a passage and whose arguments are not prose: headings, captions, the title block. */
57
+ const BREAK_MACROS = new Set([
58
+ "part",
59
+ "chapter",
60
+ "section",
61
+ "subsection",
62
+ "subsubsection",
63
+ "paragraph",
64
+ "subparagraph",
65
+ "caption",
66
+ "captionof",
67
+ "bibitem",
68
+ "maketitle",
69
+ "title",
70
+ "subtitle",
71
+ "author",
72
+ "date",
73
+ "newpage",
74
+ "clearpage",
75
+ ]);
76
+ /** Formatting macros whose last mandatory argument is prose, read where it stands. */
77
+ const INLINE_MACROS = new Set([
78
+ "emph",
79
+ "textbf",
80
+ "textit",
81
+ "texttt",
82
+ "textsc",
83
+ "textsf",
84
+ "textrm",
85
+ "textsl",
86
+ "textup",
87
+ "textmd",
88
+ "textnormal",
89
+ "underline",
90
+ "uline",
91
+ "mbox",
92
+ "hbox",
93
+ "text",
94
+ "enquote",
95
+ "textcolor",
96
+ "colorbox",
97
+ "fbox",
98
+ "textsuperscript",
99
+ "textsubscript",
100
+ ]);
101
+ /** Macros that typeset one character or a space. */
102
+ const CHARACTER_MACROS = new Map([
103
+ ["%", "%"],
104
+ ["&", "&"],
105
+ ["$", "$"],
106
+ ["#", "#"],
107
+ ["_", "_"],
108
+ ["{", "{"],
109
+ ["}", "}"],
110
+ ["S", "§"],
111
+ ["P", "¶"],
112
+ ["textpercent", "%"],
113
+ ["ldots", "…"],
114
+ ["dots", "…"],
115
+ ["textellipsis", "…"],
116
+ ["textendash", "–"],
117
+ ["textemdash", "—"],
118
+ ...[
119
+ ",",
120
+ " ",
121
+ ";",
122
+ ":",
123
+ "quad",
124
+ "qquad",
125
+ "enspace",
126
+ "thinspace",
127
+ "\\",
128
+ "newline",
129
+ ].map((m) => [m, " "]),
130
+ ]);
131
+ const piece = (p) => ({ kind: "piece", piece: p });
132
+ /** `s`, typeset where `n` starts. */
133
+ const textAt = (n, s) => inPlace(placeOf(n), (span) => [
134
+ piece({ kind: "text", segment: { text: s, at: span.start } }),
135
+ ]);
136
+ /**
137
+ * The character a macro typesets, placed at the macro's LAST source character: a sentence that ends
138
+ * on `\%` then spans the whole macro, not its backslash.
139
+ */
140
+ const characterAt = (m, ch) => inPlace(placeOf(m), (span) => [
141
+ piece({ kind: "text", segment: { text: ch, at: span.end - 1 } }),
142
+ ]);
143
+ /** A mark over a macro and its arguments. */
144
+ const mark = (m, owner) => inPlace(macroPlace(m), (span) => [piece({ kind: "owner", owner, span })]);
145
+ /** Math, as its source, where it stands. */
146
+ const math = (t, n) => inPlace(placeOf(n), (span) => [
147
+ piece({ kind: "math", tex: t.src.slice(span.start, span.end), span }),
148
+ ]);
149
+ /** The content of a macro's last mandatory argument: what a formatting macro or a footnote typesets. */
150
+ const lastArgument = (m) => mandatory(m).at(-1)?.content ?? [];
151
+ /**
152
+ * Whether a walk yielded a citation or a link. A footnote nested inside that cites has already left
153
+ * its own citation mark among these events, so the top level is enough.
154
+ */
155
+ const cites = (events) => events.some((e) => e.kind === "piece" &&
156
+ e.piece.kind === "owner" &&
157
+ e.piece.owner === "citation");
158
+ /**
159
+ * What a list item typesets: the parser hands an `\item` its text as the last argument (the
160
+ * `[label]` before it is not prose).
161
+ */
162
+ const itemBody = (m) => argumentsOf(m)
163
+ .slice(-1)
164
+ .flatMap((a) => a.content);
165
+ /** A footnote: its own passage, and a citation mark in the host sentence when it cites or links. */
166
+ function footnote(t, m) {
167
+ const inside = walkList(t, lastArgument(m));
168
+ const aside = { kind: "aside", events: inside };
169
+ return cites(inside) ? [...mark(m, "citation"), aside] : [aside];
170
+ }
171
+ /**
172
+ * Macros with events of their own: `\href{url}{text}` is a link whose text is prose; a footnote is a
173
+ * passage of its own; a list item ends a passage and opens the next with its text.
174
+ */
175
+ const OWN_EVENTS = new Map([
176
+ [
177
+ "href",
178
+ (t, m) => [
179
+ ...mark(m, "citation"),
180
+ ...walkList(t, lastArgument(m)),
181
+ ],
182
+ ],
183
+ ["footnote", footnote],
184
+ [
185
+ "item",
186
+ (t, m) => [BREAK, ...walkList(t, itemBody(m), true)],
187
+ ],
188
+ ]);
189
+ function macroEvents(t, m) {
190
+ const name = m.content;
191
+ if (DEFINITION_MACROS.has(name))
192
+ return [];
193
+ if (BACK_MATTER.has(name))
194
+ return [END];
195
+ if (REFERENCE_MACROS.has(name))
196
+ return mark(m, "reference");
197
+ if (SOURCE_MACROS.has(name))
198
+ return mark(m, "citation");
199
+ const own = OWN_EVENTS.get(name);
200
+ if (own !== undefined)
201
+ return own(t, m);
202
+ if (BREAK_MACROS.has(name))
203
+ return [BREAK];
204
+ if (INLINE_MACROS.has(name))
205
+ return walkList(t, lastArgument(m));
206
+ const ch = CHARACTER_MACROS.get(name);
207
+ return ch === undefined ? [] : characterAt(m, ch);
208
+ }
209
+ function environmentEvents(t, e) {
210
+ if (e.type === "mathenv")
211
+ return math(t, e);
212
+ if (e.env === "thebibliography")
213
+ return [END];
214
+ if (SKIPPED_ENVS.has(e.env))
215
+ return [BREAK];
216
+ return [BREAK, ...walkList(t, e.content, true), BREAK];
217
+ }
218
+ /**
219
+ * Inline and display math (an equation environment is typed as an environment, and read there),
220
+ * what ends a passage, and what holds no prose.
221
+ */
222
+ const isMath = (n) => n.type === "inlinemath" || n.type === "displaymath";
223
+ const isBreak = (n) => n.type === "parbreak" || n.type === "verbatim";
224
+ const isSilent = (n) => n.type === "comment" || n.type === "verb" || n.type === "root";
225
+ function nodeEvents(t, n) {
226
+ if (isMath(n))
227
+ return math(t, n);
228
+ if (isBreak(n))
229
+ return [BREAK];
230
+ if (isSilent(n))
231
+ return [];
232
+ switch (n.type) {
233
+ case "string":
234
+ return textAt(n, stringText(n.content));
235
+ case "whitespace":
236
+ return textAt(n, " ");
237
+ case "group":
238
+ return walkList(t, n.content);
239
+ case "environment":
240
+ case "mathenv":
241
+ return environmentEvents(t, n);
242
+ case "macro":
243
+ return macroEvents(t, n);
244
+ }
245
+ }
246
+ /** A macro whose `{…}` and `[…]` after it are its arguments, unattached: not a formatting or a character macro. */
247
+ const isUnsignedMacro = (n) => n.type === "macro" &&
248
+ n.args === undefined &&
249
+ !INLINE_MACROS.has(n.content) &&
250
+ !CHARACTER_MACROS.has(n.content);
251
+ const isString = (n, s) => n.type === "string" && n.content === s;
252
+ /** A `{…}` group, or digits glued to the macro (`\if\conference1`): an argument it takes. */
253
+ const isMandatoryArgument = (n) => n.type === "group" || (n.type === "string" && /^\d+$/u.test(n.content));
254
+ /** One node's step: whether it is skipped as an argument, and the state after it. */
255
+ function step(state, n) {
256
+ if (state === "optional")
257
+ return { skip: true, state: isString(n, "]") ? "arguments" : "optional" };
258
+ if (state === "arguments" && isMandatoryArgument(n))
259
+ return { skip: true, state: "arguments" };
260
+ if (state === "arguments" && isString(n, "["))
261
+ return { skip: true, state: "optional" };
262
+ return { skip: false, state: isUnsignedMacro(n) ? "arguments" : "prose" };
263
+ }
264
+ /**
265
+ * The nodes of a list that are prose: without the `{…}`, `[…]` and glued digits right after a
266
+ * macro the parser gave no signature — `\institution{…}`, `\ccsdesc[500]{…}`, `\tool{}`,
267
+ * `\if\conference1` — which are its arguments, not text. A formatting macro's group (`\enquote{…}` without csquotes' signature) stays prose.
268
+ */
269
+ const proseNodes = (list) => list.reduce((acc, n) => {
270
+ const next = step(acc.state, n);
271
+ return {
272
+ kept: next.skip ? acc.kept : [...acc.kept, n],
273
+ state: next.state,
274
+ };
275
+ }, { kept: [], state: "prose" }).kept;
276
+ /** Formatting macros a run-in heading is set in: `\textbf{Correctness gate.} Each task…`. */
277
+ const RUN_IN_MACROS = new Set([
278
+ "textbf",
279
+ "textit",
280
+ "emph",
281
+ "textsc",
282
+ "underline",
283
+ ]);
284
+ /** The text a list of events typesets, marks and math left out. */
285
+ const typeset = (events) => events
286
+ .map((e) => e.kind === "piece" && e.piece.kind === "text" ? e.piece.segment.text : "")
287
+ .join("");
288
+ /** A formatting macro whose phrase ends in `.` or `:` — a run-in heading, when it opens a paragraph. */
289
+ const isRunInHeading = (t, n) => n.type === "macro" &&
290
+ RUN_IN_MACROS.has(n.content) &&
291
+ /[.:]$/u.test(typeset(walkList(t, lastArgument(n))).trim());
292
+ /** Macros that typeset no text, and so leave a paragraph's opening where it was. */
293
+ const SILENT_AT_OPENING = new Set([
294
+ "noindent",
295
+ "label",
296
+ "vspace",
297
+ "smallskip",
298
+ "medskip",
299
+ "bigskip",
300
+ "phantomsection",
301
+ ]);
302
+ /** Nodes that leave a paragraph's opening where it was: spaces, comments, macros that typeset nothing. */
303
+ const keepsOpening = (n) => n.type === "whitespace" ||
304
+ n.type === "comment" ||
305
+ (n.type === "macro" && SILENT_AT_OPENING.has(n.content));
306
+ /** Nodes after which a paragraph opens: a paragraph break, and a macro that ends a passage (a heading). */
307
+ const opensAfter = (n) => n.type === "parbreak" || (n.type === "macro" && BREAK_MACROS.has(n.content));
308
+ /**
309
+ * A list's events. `opens` says the list starts a paragraph (the body, an environment's content);
310
+ * a run-in heading that opens a paragraph ends the passage before it and is left out, like a heading.
311
+ */
312
+ function walkList(t, list, opens = false) {
313
+ return proseNodes(list).reduce((acc, n) => ({
314
+ events: [
315
+ ...acc.events,
316
+ ...(acc.opening && isRunInHeading(t, n) ? [BREAK] : nodeEvents(t, n)),
317
+ ],
318
+ opening: opensAfter(n) || (acc.opening && keepsOpening(n)),
319
+ }), { events: [], opening: opens }).events;
320
+ }
321
+ /** The events before the back matter starts. */
322
+ const untilEnd = (events) => {
323
+ const end = events.findIndex((e) => e.kind === "end");
324
+ return end < 0 ? events : events.slice(0, end);
325
+ };
326
+ /** Events → passages: pieces between breaks, each footnote a passage of its own. */
327
+ function passagesOf(events) {
328
+ const { done, current } = events.reduce((acc, e) => e.kind === "piece"
329
+ ? { done: acc.done, current: [...acc.current, e.piece] }
330
+ : e.kind === "break"
331
+ ? { done: [...acc.done, acc.current], current: [] }
332
+ : acc, { done: [], current: [] });
333
+ const asides = events.flatMap((e) => e.kind === "aside" ? passagesOf(untilEnd(e.events)) : []);
334
+ const own = [...done, current].flatMap((pieces) => hasAtLeast(pieces, 1) ? [{ pieces }] : []);
335
+ return [...own, ...asides];
336
+ }
337
+ const isDocument = (n) => n.type === "environment" && n.env === "document";
338
+ /** A passage with something in it besides spaces. */
339
+ const hasProse = (p) => p.pieces.some((x) => x.kind !== "text" || x.segment.text.trim() !== "");
340
+ /** Where a passage starts in the source. */
341
+ const startOf = (p) => {
342
+ const first = p.pieces[0];
343
+ return first.kind === "text" ? first.segment.at : first.span.start;
344
+ };
345
+ /**
346
+ * The body's prose, in document order: the content of the `document` environment (the whole
347
+ * source when there is none), up to the first back-matter node.
348
+ */
349
+ export function bodyProse(t) {
350
+ const body = t.root.content.find(isDocument)?.content ?? t.root.content;
351
+ return sortBy(passagesOf(untilEnd(walkList(t, body, true))).filter(hasProse), startOf);
352
+ }
353
+ //# sourceMappingURL=prose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose.js","sourceRoot":"","sources":["../../../src/adapters/latex/prose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `tex/claim-provenance` — a sentence of the body that states a number says whose the number is.
3
+ *
4
+ * warn a sentence with a number and none of: a citation or a link, the authors (we, our, us), a
5
+ * place in the paper (`\ref` and its kin, "Section 3", "Table 2", "Appendix B", "§4"), a
6
+ * claimant named as one ("advertises 65%", "(claim 63%)"), or the sample it counts
7
+ * ("n = 134", "48 runs", "of 1,836 repositories")
8
+ *
9
+ * ── WHY ──────────────────────────────────────────────────────────────────────────
10
+ * A reviewer who cannot tell a property of the world from a cited finding from the authors' own
11
+ * measurement writes exactly that, and it costs the paper its soundness score. Standard academic
12
+ * prose carries the owner by default ("we found", "[12] report"); prose pushed toward a punchy
13
+ * register drops it first. The owner is a fact about the sentence, so a rule can ask for it.
14
+ *
15
+ * ── WHAT IT READS ────────────────────────────────────────────────────────────────
16
+ * The body's prose through the `LatexReader` port (`bodyProse`): the parse tree of `paper.tex`,
17
+ * never a search of its source. Citations, links and cross-references arrive as marks, math as math.
18
+ * The only text matched here is the rendered prose of one sentence — one lexeme at a time: a number,
19
+ * a pronoun, a word such as "Table" followed by its number, a count followed by what it counts.
20
+ *
21
+ * ── WHAT IT CANNOT KNOW ──────────────────────────────────────────────────────────
22
+ * Whether an owner is the RIGHT one (a citation that does not say the number, a "we" in a sentence
23
+ * about someone else) or what a custom macro prints. A year alone (1900–2099) is read as a date; a
24
+ * digit glued to a letter or a hyphen ("GPT-4", "10k"), or right after a capitalised word inside the
25
+ * sentence ("Claude 3", "Python 3.12"), as part of a name. Warn, never error: it asks the question; the author answers it.
26
+ */
27
+ import { type Passage } from "./domain/tex-document.ts";
28
+ import { type PaperDeps } from "./tex-paper.ts";
29
+ import { type Located, type TexRuleModule } from "./tex-venue-rules.ts";
30
+ /** Every sentence of the body that states a number and does not say whose it is. */
31
+ export declare const judgeClaimProvenance: (passages: readonly Passage[]) => readonly Located[];
32
+ /** The rule, over the body's prose of the whole paper, its includes spliced (`readPaper`). */
33
+ export declare const claimProvenanceRule: (deps: PaperDeps) => TexRuleModule;
34
+ //# sourceMappingURL=claim-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-provenance.d.ts","sourceRoot":"","sources":["../src/claim-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAGL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAwI9B,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,SAAS,OAAO,EAAE,KAC3B,SAAS,OAAO,EAAoC,CAAC;AAgBxD,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,GAAI,MAAM,SAAS,KAAG,aAgBpD,CAAC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * `tex/claim-provenance` — a sentence of the body that states a number says whose the number is.
3
+ *
4
+ * warn a sentence with a number and none of: a citation or a link, the authors (we, our, us), a
5
+ * place in the paper (`\ref` and its kin, "Section 3", "Table 2", "Appendix B", "§4"), a
6
+ * claimant named as one ("advertises 65%", "(claim 63%)"), or the sample it counts
7
+ * ("n = 134", "48 runs", "of 1,836 repositories")
8
+ *
9
+ * ── WHY ──────────────────────────────────────────────────────────────────────────
10
+ * A reviewer who cannot tell a property of the world from a cited finding from the authors' own
11
+ * measurement writes exactly that, and it costs the paper its soundness score. Standard academic
12
+ * prose carries the owner by default ("we found", "[12] report"); prose pushed toward a punchy
13
+ * register drops it first. The owner is a fact about the sentence, so a rule can ask for it.
14
+ *
15
+ * ── WHAT IT READS ────────────────────────────────────────────────────────────────
16
+ * The body's prose through the `LatexReader` port (`bodyProse`): the parse tree of `paper.tex`,
17
+ * never a search of its source. Citations, links and cross-references arrive as marks, math as math.
18
+ * The only text matched here is the rendered prose of one sentence — one lexeme at a time: a number,
19
+ * a pronoun, a word such as "Table" followed by its number, a count followed by what it counts.
20
+ *
21
+ * ── WHAT IT CANNOT KNOW ──────────────────────────────────────────────────────────
22
+ * Whether an owner is the RIGHT one (a citation that does not say the number, a "we" in a sentence
23
+ * about someone else) or what a custom macro prints. A year alone (1900–2099) is read as a date; a
24
+ * digit glued to a letter or a hyphen ("GPT-4", "10k"), or right after a capitalised word inside the
25
+ * sentence ("Claude 3", "Python 3.12"), as part of a name. Warn, never error: it asks the question; the author answers it.
26
+ */
27
+ import { runText, spanIn, } from "./domain/tex-document.js";
28
+ import { CITATION, REFERENCE, runOf, segmentOf, sentences, } from "./domain/sentences.js";
29
+ import { readPaper, reportInPaper } from "./tex-paper.js";
30
+ import { ruleDocsUrl, } from "./tex-venue-rules.js";
31
+ /**
32
+ * A number a reader sees: digits not glued to a letter, a hyphen or a point before them (a name, a
33
+ * version, a decimal without its zero), with an optional decimal part and a `%` or `×` after them,
34
+ * and no letter or digit after that.
35
+ */
36
+ const NUMBER = /(?<![\p{L}\p{N}_.,-])(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?(?:\s?%|×|x)?(?![\p{L}\p{N}])/gu;
37
+ /** A plain year, read as a date rather than a quantity. */
38
+ const YEAR = /^(?:19|20)\d\d$/u;
39
+ const FIRST_PERSON = /(?<!\p{L})(?:we|our|ours|us|ourselves)(?!\p{L})/giu;
40
+ /** A place in the paper named in words: "Section 4", "Table 2", "Fig. 3", "Appendix B", "§4". */
41
+ const PLACE = /(?<!\p{L})(?:Sections?|Sec\.|§|Tables?|Tab\.|Figures?|Figs?\.|Appendix|Appendices|App\.|Listings?|Algorithms?|Equations?|Eqs?\.|Chapters?)\s*(?:\d|[A-Z](?!\p{L}))/u;
42
+ /** "n = 134", in prose or in math. */
43
+ const SAMPLE_SIZE = /(?<![\p{L}\\])[nN]\s*=\s*\d/u;
44
+ /**
45
+ * A count followed by what it counts, with up to two modifiers that are not function words: "48
46
+ * runs", "1,836 repositories", "466 Boolean questions", "900 systematically collected questions" —
47
+ * and not "2 of the guards".
48
+ */
49
+ const COUNT = /(?<![\p{L}\p{N}.,])(?:\d{1,3}(?:,\d{3})+|\d+)(?![.,]?\d)\s+(?:(?!(?:of|the|and|or|to|in|for|on|at|by|a|an|with|from|than|as)\s)[\p{L}-]+\s+){0,2}\p{Ll}+s(?!\p{L})/gu;
50
+ /** A quotation (`` … '' or “ … ”): an example the paper quotes, not a claim it makes. */
51
+ const QUOTED = /``[^']*?''|“[^”]*?”/gu;
52
+ /**
53
+ * An inline list's enumerator: a whole number standing after the start, `:`, `,`, `;` or `(`, and
54
+ * closed by `.` or `)` — "are: 1. the challenge …, 2. …", "(3)"; not "(81.15%)".
55
+ */
56
+ const isEnumerator = (s, at, n) => /^\d+$/u.test(n) &&
57
+ /^[.)](?:\s|$)/u.test(s.slice(at + n.length)) &&
58
+ /(?:^|[:,;(])\s*$/u.test(s.slice(0, at));
59
+ /** The first number in `s` that is a quantity, or undefined. */
60
+ const quantityIn = (s) => {
61
+ const unquoted = s.replace(QUOTED, (q) => " ".repeat(q.length));
62
+ return [...unquoted.matchAll(NUMBER)]
63
+ .filter((m) => !CONFIDENCE.test(unquoted.slice(m.index + m[0].length)) &&
64
+ !isEnumerator(unquoted, m.index, m[0]) &&
65
+ !(isNamed(unquoted, m.index) && !m[0].endsWith("%")))
66
+ .map((m) => m[0])
67
+ .find((n) => !YEAR.test(n));
68
+ };
69
+ /**
70
+ * A capitalised word right before the number, and not the sentence's first word: the number is part
71
+ * of a name — "Claude 3", "Python 3.12", "Node 22" — not a quantity. A sentence-initial word ("Only 2
72
+ * of 46") is capitalised because it opens the sentence, and says nothing.
73
+ */
74
+ const NAMED_BY = /\S\s+\p{Lu}[\p{L}\p{N}.+-]*\s$/u;
75
+ /** Whether the number at `at` in the sentence `s` is part of a name (`NAMED_BY`). */
76
+ const isNamed = (s, at) => NAMED_BY.test(s.slice(s.length - s.trimStart().length, at));
77
+ /** What follows the level of an interval ("95% CI"): the level is not a result. */
78
+ const CONFIDENCE = /^\s*(?:CI|confidence)(?!\p{L})/u;
79
+ /** A claimant named as such: "advertises a 65% reduction", "(claim 63%)". */
80
+ const ATTRIBUTED = /(?<!\p{L})(?:advertis(?:e|es|ed|ing)|claim(?:s|ed)?)(?!\p{L})/iu;
81
+ /** Whether a sentence says whose its number is. `maths` is the source of its math. */
82
+ const isOwned = (s, maths) => s.includes(CITATION) ||
83
+ s.includes(REFERENCE) ||
84
+ [...s.matchAll(FIRST_PERSON)].some((m) => m[0] !== "US") ||
85
+ ATTRIBUTED.test(s) ||
86
+ PLACE.test(s) ||
87
+ SAMPLE_SIZE.test(s) ||
88
+ // "Claude 3 and fails" is a name and a verb, not a count.
89
+ [...s.matchAll(COUNT)].some((m) => !isNamed(s, m.index)) ||
90
+ // `$n{=}7$` and `$n = 7$` alike: braces are grouping in math, not text.
91
+ maths.some((m) => SAMPLE_SIZE.test(m.replace(/[{}]/gu, "")));
92
+ /** Each piece of a passage with the offset where it starts in the passage's text. */
93
+ const laidOut = (p) => p.pieces.reduce((acc, piece) => ({
94
+ laid: [...acc.laid, { from: acc.next, piece }],
95
+ next: acc.next + segmentOf(piece).text.length,
96
+ }), { laid: [], next: 0 }).laid;
97
+ /** The source of the math that starts inside `[from, to)` of the passage's text. */
98
+ const mathsIn = (laid, from, to) => laid.flatMap(({ from: at, piece }) => piece.kind === "math" && at >= from && at < to ? [piece.tex] : []);
99
+ /** Every unowned sentence of one passage that states a number, spanning its source. */
100
+ function judgePassage(p) {
101
+ const run = runOf(p);
102
+ const text = runText(run);
103
+ const laid = laidOut(p);
104
+ return sentences(text).flatMap(([from, to]) => {
105
+ const s = text.slice(from, to);
106
+ const number = quantityIn(s);
107
+ if (number === undefined || isOwned(s, mathsIn(laid, from, to)))
108
+ return [];
109
+ const lead = s.length - s.trimStart().length;
110
+ const trail = s.length - s.trimEnd().length;
111
+ return [
112
+ {
113
+ messageId: "noOwner",
114
+ data: { number: number.replace(/\s/gu, "") },
115
+ at: spanIn(run, from + lead, to - trail),
116
+ },
117
+ ];
118
+ });
119
+ }
120
+ /** Every sentence of the body that states a number and does not say whose it is. */
121
+ export const judgeClaimProvenance = (passages) => passages.flatMap(judgePassage);
122
+ const META = {
123
+ type: "suggestion",
124
+ docs: {
125
+ description: "a sentence of the body that states a number says whose it is: a citation, the authors, a place in the paper, or the sample it counts",
126
+ url: ruleDocsUrl("claim-provenance"),
127
+ },
128
+ schema: [],
129
+ messages: {
130
+ noOwner: "«{{number}}» — whose number is this? A reader cannot tell a cited finding from your own measurement from a general fact. Say it in the sentence: cite the work (\\cite), claim it (we measured, our census), point to where it is shown (\\ref, Section N, Table N), or name the sample it counts (n = 134, 48 runs)",
131
+ },
132
+ };
133
+ /** The rule, over the body's prose of the whole paper, its includes spliced (`readPaper`). */
134
+ export const claimProvenanceRule = (deps) => ({
135
+ meta: META,
136
+ create(context) {
137
+ return {
138
+ root() {
139
+ const sc = context.sourceCode;
140
+ const paper = readPaper(context.filename, sc.raw ?? sc.text, deps);
141
+ reportInPaper(context, META.messages, paper, judgeClaimProvenance(deps.latex.bodyProse(paper.text)));
142
+ },
143
+ };
144
+ },
145
+ });
146
+ //# sourceMappingURL=claim-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-provenance.js","sourceRoot":"","sources":["../src/claim-provenance.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAS7C,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQpE,OAAO,EAAyB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAcrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAkBnE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGL,IAAI,EAEL,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAqGtC,4GAA4G;AAC5G,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,YAAK,EAC1B,WAAW,EAAE,OAAO,GACnB,WAAW,EAAE,CAsHf;AAYD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAG5E;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAG7C,CAAC;AAEF,kGAAkG;AAClG,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAY7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAa/D;AAQD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAO9C,CAAC;AAmBF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAC9C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,CAAC;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,GAAG,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAoBnD;AA8ED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,eAAe,CAAC,CA8BzB;AAuBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAmFvD;AAaD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,YAAY,GAAE,MAAM,MAC+C,GAClE,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,IAAI,EACP,EACE,GAAiB,EACjB,GAAmB,EACnB,GAAmB,GACpB,GAAE;IACD,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,UAAU,CAgCZ;AAED,0GAA0G;AAC1G,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAG1D;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAEK,CAAC;AAEpD,4FAA4F;AAC5F,eAAO,MAAM,WAAW,GAAI,KAAK;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,KAAG,MAAM,EAC2D,CAAC;AAEtE,gGAAgG;AAChG,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAOjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,EACE,GAAmB,EACnB,GAAe,EAUf,OAC8C,GAC/C,GAAE;IACD,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,kGAAkG;IAClG,GAAG,CAAC,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;KAAE,KACnC;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/B,GACL,MAAM,CAiCR;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,EACE,GAAG,EACH,GAAG,EACH,GAAG,EACH,KAAY,GACb,EAAE;IACD,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACxB,GAAG,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B,GACA,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACtE,EACE,QAAQ,EACR,GAAG,EACH,WAAW,EACX,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC,GACA,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CA8CrC;AAuMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAYzD;AAoED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,IAAI,EACP,EACE,GAAG,EACH,GAAG,EACH,GAAG,GACJ,EAAE;IAAE,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IAAC,GAAG,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACtE,SAAS,GAAE,OAAO,YAA2B,GAC5C;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAA;CAAE,CAYvE;AAmDD,wBAAsB,GAAG,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EACE,GAAiB,EACjB,GAAmB,EACnB,GAAmB,EACnB,eAAkC,GACnC,GAAE;IACD,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CAC9B,GACL,OAAO,CAAC,MAAM,CAAC,CA+JjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -45,6 +45,9 @@ import { latexReader } from "./adapters/latex/index.js";
45
45
  import { hostDirs, nodeAdapters, nodeFiles } from "./adapters/node/index.js";
46
46
  import { VENUE_RULE_LEVELS, venueRules } from "./venue-rules.js";
47
47
  import { TEX_VENUE_RULE_LEVELS, texVenueRules } from "./tex-venue-rules.js";
48
+ import { claimProvenanceRule } from "./claim-provenance.js";
49
+ import { registerRule } from "./register.js";
50
+ import { missingInputRule } from "./tex-paper.js";
48
51
  import { paperRules, stringFields, } from "./paper-settings.js";
49
52
  import { referenceRules, REFERENCE_RULE_LEVELS } from "./reference-rules.js";
50
53
  import { onlineReferences } from "./adapters/references/index.js";
@@ -244,6 +247,18 @@ export function buildConfig(opts = {}, texLanguage) {
244
247
  venuesDir: presetsDir(),
245
248
  latex: latexReader,
246
249
  }),
250
+ "claim-provenance": claimProvenanceRule({
251
+ files: nodeFiles,
252
+ latex: latexReader,
253
+ }),
254
+ "missing-input": missingInputRule({
255
+ files: nodeFiles,
256
+ latex: latexReader,
257
+ }),
258
+ register: registerRule({
259
+ files: nodeFiles,
260
+ latex: latexReader,
261
+ }),
247
262
  },
248
263
  },
249
264
  paper: { rules: texPaperRules },
@@ -256,6 +271,11 @@ export function buildConfig(opts = {}, texLanguage) {
256
271
  "paper/figure-ref-style": "warn",
257
272
  "bib/reachable-entry": "warn",
258
273
  "tex/future-promise": "warn",
274
+ // A number with no owner: a prose rule, on beside the others above.
275
+ "tex/claim-provenance": "warn",
276
+ "tex/missing-input": "warn",
277
+ // Sentence-initial conjunctions over the whole body: register, not vocabulary.
278
+ "tex/register": "warn",
259
279
  "tex/acm-frontmatter-override": "error",
260
280
  // Silent for a paper whose paperlint.json names no venue (src/venue-rules.ts).
261
281
  ...VENUE_RULE_LEVELS,