paperlint 8.0.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/CLAUDE.md +22 -0
- package/.github/CLAUDE.md.spec.ts +20 -0
- package/CLAUDE.md +59 -531
- package/CONTRIBUTING.md +7 -6
- package/README.md +4 -3
- package/dist/CLAUDE.md.spec.d.ts +3 -0
- package/dist/CLAUDE.md.spec.d.ts.map +1 -0
- package/dist/CLAUDE.md.spec.js +62 -0
- package/dist/CLAUDE.md.spec.js.map +1 -0
- package/dist/adapters/bibtex/index.d.ts +3 -0
- package/dist/adapters/bibtex/index.d.ts.map +1 -0
- package/dist/adapters/bibtex/index.js +103 -0
- package/dist/adapters/bibtex/index.js.map +1 -0
- package/dist/adapters/latex/filecontents.d.ts +33 -0
- package/dist/adapters/latex/filecontents.d.ts.map +1 -0
- package/dist/adapters/latex/filecontents.js +65 -0
- package/dist/adapters/latex/filecontents.js.map +1 -0
- package/dist/adapters/latex/includes.d.ts +3 -3
- package/dist/adapters/latex/includes.d.ts.map +1 -1
- package/dist/adapters/latex/includes.js +18 -10
- package/dist/adapters/latex/includes.js.map +1 -1
- package/dist/adapters/latex/index.d.ts.map +1 -1
- package/dist/adapters/latex/index.js +2 -0
- package/dist/adapters/latex/index.js.map +1 -1
- package/dist/adapters/latex/nodes.d.ts +12 -0
- package/dist/adapters/latex/nodes.d.ts.map +1 -1
- package/dist/adapters/latex/nodes.js +39 -0
- package/dist/adapters/latex/nodes.js.map +1 -1
- package/dist/adapters/latex/parse.d.ts +7 -1
- package/dist/adapters/latex/parse.d.ts.map +1 -1
- package/dist/adapters/latex/parse.js +55 -6
- package/dist/adapters/latex/parse.js.map +1 -1
- package/dist/adapters/memory/index.d.ts +3 -0
- package/dist/adapters/memory/index.d.ts.map +1 -1
- package/dist/adapters/memory/index.js +9 -0
- package/dist/adapters/memory/index.js.map +1 -1
- package/dist/adapters/references/index.d.ts.map +1 -1
- package/dist/adapters/references/index.js +27 -24
- package/dist/adapters/references/index.js.map +1 -1
- package/dist/adapters/sources-record/index.d.ts +9 -0
- package/dist/adapters/sources-record/index.d.ts.map +1 -0
- package/dist/adapters/sources-record/index.js +68 -0
- package/dist/adapters/sources-record/index.js.map +1 -0
- package/dist/adapters/tex-output/blg.d.ts +9 -0
- package/dist/adapters/tex-output/blg.d.ts.map +1 -0
- package/dist/adapters/tex-output/blg.js +20 -0
- package/dist/adapters/tex-output/blg.js.map +1 -0
- package/dist/adapters/tex-output/fls.d.ts +8 -0
- package/dist/adapters/tex-output/fls.d.ts.map +1 -0
- package/dist/adapters/tex-output/fls.js +16 -0
- package/dist/adapters/tex-output/fls.js.map +1 -0
- package/dist/adapters/tex-output/index.d.ts +7 -0
- package/dist/adapters/tex-output/index.d.ts.map +1 -0
- package/dist/adapters/tex-output/index.js +7 -0
- package/dist/adapters/tex-output/index.js.map +1 -0
- package/dist/bib-rules.d.ts +47 -0
- package/dist/bib-rules.d.ts.map +1 -0
- package/dist/bib-rules.js +127 -0
- package/dist/bib-rules.js.map +1 -0
- package/dist/build.d.ts +29 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +41 -25
- package/dist/build.js.map +1 -1
- package/dist/claim-provenance.d.ts +2 -2
- package/dist/cli.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +30 -26
- package/dist/cli.js.map +1 -1
- package/dist/domain/paper-source.d.ts +1 -10
- package/dist/domain/paper-source.d.ts.map +1 -1
- package/dist/domain/paper-source.js +34 -24
- package/dist/domain/paper-source.js.map +1 -1
- package/dist/domain/paper-sources.d.ts +72 -0
- package/dist/domain/paper-sources.d.ts.map +1 -0
- package/dist/domain/paper-sources.js +18 -0
- package/dist/domain/paper-sources.js.map +1 -0
- package/dist/domain/sources-record.d.ts +102 -0
- package/dist/domain/sources-record.d.ts.map +1 -0
- package/dist/domain/sources-record.js +38 -0
- package/dist/domain/sources-record.js.map +1 -0
- package/dist/domain/tex-run.d.ts +25 -0
- package/dist/domain/tex-run.d.ts.map +1 -0
- package/dist/domain/tex-run.js +79 -0
- package/dist/domain/tex-run.js.map +1 -0
- package/dist/eslint-rules/CLAUDE.md.spec.d.ts +3 -0
- package/dist/eslint-rules/CLAUDE.md.spec.d.ts.map +1 -0
- package/dist/eslint-rules/CLAUDE.md.spec.js +39 -0
- package/dist/eslint-rules/CLAUDE.md.spec.js.map +1 -0
- package/dist/eslint-rules/install-path-literals.d.ts +1 -1
- package/dist/eslint-rules/install-path-literals.js +4 -4
- package/dist/eslint-rules/install-path-literals.js.map +1 -1
- package/dist/eslint-rules/paper-context.d.ts.map +1 -1
- package/dist/eslint-rules/paper-context.js +4 -3
- package/dist/eslint-rules/paper-context.js.map +1 -1
- package/dist/eslint-rules/paper-typography.d.ts +0 -9
- package/dist/eslint-rules/paper-typography.d.ts.map +1 -1
- package/dist/eslint-rules/paper-typography.js +12 -5
- package/dist/eslint-rules/paper-typography.js.map +1 -1
- package/dist/eslint-rules/pdf-last-page-balance.js +1 -1
- package/dist/latex-log.d.ts +10 -0
- package/dist/latex-log.d.ts.map +1 -1
- package/dist/latex-log.js +10 -0
- package/dist/latex-log.js.map +1 -1
- package/dist/latex-loop.d.ts +2 -0
- package/dist/latex-loop.d.ts.map +1 -1
- package/dist/latex-loop.js.map +1 -1
- package/dist/lib/agent-cli-version.js +1 -1
- package/dist/lib/agent-cli-version.js.map +1 -1
- package/dist/package-dirs.d.ts.map +1 -1
- package/dist/package-dirs.js +3 -2
- package/dist/package-dirs.js.map +1 -1
- package/dist/paper-includes.d.ts +4 -7
- package/dist/paper-includes.d.ts.map +1 -1
- package/dist/paper-includes.js +29 -21
- package/dist/paper-includes.js.map +1 -1
- package/dist/paper-prose.d.ts +2 -2
- package/dist/paper-record.d.ts +25 -0
- package/dist/paper-record.d.ts.map +1 -0
- package/dist/paper-record.js +39 -0
- package/dist/paper-record.js.map +1 -0
- package/dist/paper-sources.d.ts +66 -0
- package/dist/paper-sources.d.ts.map +1 -0
- package/dist/paper-sources.js +92 -0
- package/dist/paper-sources.js.map +1 -0
- package/dist/ports/bib-reader.d.ts +18 -0
- package/dist/ports/bib-reader.d.ts.map +1 -0
- package/dist/ports/bib-reader.js +2 -0
- package/dist/ports/bib-reader.js.map +1 -0
- package/dist/ports/check-references.d.ts +9 -4
- package/dist/ports/check-references.d.ts.map +1 -1
- package/dist/ports/latex.d.ts +15 -0
- package/dist/ports/latex.d.ts.map +1 -1
- package/dist/ports/sources-codec.d.ts +11 -0
- package/dist/ports/sources-codec.d.ts.map +1 -0
- package/dist/ports/sources-codec.js +2 -0
- package/dist/ports/sources-codec.js.map +1 -0
- package/dist/ports/tex-output.d.ts +17 -0
- package/dist/ports/tex-output.d.ts.map +1 -0
- package/dist/ports/tex-output.js +2 -0
- package/dist/ports/tex-output.js.map +1 -0
- package/dist/recorded-bibliography.d.ts +89 -0
- package/dist/recorded-bibliography.d.ts.map +1 -0
- package/dist/recorded-bibliography.js +136 -0
- package/dist/recorded-bibliography.js.map +1 -0
- package/dist/reference-rules.d.ts +5 -5
- package/dist/reference-rules.d.ts.map +1 -1
- package/dist/reference-rules.js +150 -77
- package/dist/reference-rules.js.map +1 -1
- package/dist/references.d.ts +71 -16
- package/dist/references.d.ts.map +1 -1
- package/dist/references.js +110 -26
- package/dist/references.js.map +1 -1
- package/dist/register-bands.d.ts +3 -3
- package/dist/register-bands.d.ts.map +1 -1
- package/dist/register-bands.js.map +1 -1
- package/dist/register.d.ts +2 -2
- package/dist/sources-record.d.ts +38 -0
- package/dist/sources-record.d.ts.map +1 -0
- package/dist/sources-record.js +123 -0
- package/dist/sources-record.js.map +1 -0
- package/dist/sources-rules.d.ts +44 -0
- package/dist/sources-rules.d.ts.map +1 -0
- package/dist/sources-rules.js +76 -0
- package/dist/sources-rules.js.map +1 -0
- package/dist/tex-paper.d.ts +10 -15
- package/dist/tex-paper.d.ts.map +1 -1
- package/dist/tex-paper.js +24 -40
- package/dist/tex-paper.js.map +1 -1
- package/dist/tex-requirements.js +1 -1
- package/dist/tex-venue-rules.d.ts +3 -3
- package/dist/tex-venue-rules.d.ts.map +1 -1
- package/dist/tex-venue-rules.js.map +1 -1
- package/dist/toolchain.js +1 -1
- package/docs/configuration.md +12 -4
- package/docs/design/paper-sources.md +197 -0
- package/docs/e2e.md +1 -1
- package/docs/incidents.md +5 -5
- package/docs/package-shape-options.md +1 -1
- package/docs/references.md +34 -8
- package/docs/rules/bib/reachable-entry.md +64 -0
- package/docs/rules/paper/sources-fresh.md +81 -0
- package/docs/rules.md +62 -57
- package/eslint-rules/CLAUDE.md +44 -0
- package/eslint-rules/CLAUDE.md.spec.ts +43 -0
- package/eslint-rules/install-path-literals.harness.mjs +1 -1
- package/eslint-rules/install-path-literals.ts +4 -4
- package/eslint-rules/paper-context.ts +4 -3
- package/eslint-rules/paper-typography.test.mjs +12 -72
- package/eslint-rules/paper-typography.ts +13 -6
- package/eslint-rules/pdf-last-page-balance.ts +1 -1
- package/eslint.config.mjs +28 -3
- package/fixtures/build-e2e/aidc/paper.tex +1 -1
- package/fixtures/build-e2e/anon-ack/paper.tex +1 -1
- package/fixtures/build-e2e/anon-author/paper.tex +1 -1
- package/fixtures/build-e2e/anon-bib/paper.tex +1 -1
- package/fixtures/build-e2e/anon-href/paper.tex +1 -1
- package/fixtures/build-e2e/anon-macro/paper.tex +1 -1
- package/fixtures/build-e2e/anon-pdfauthor/paper.tex +1 -1
- package/fixtures/paper-sources/p1/paper.tex +30 -0
- package/fixtures/paper-sources/p1/refs.bib +6 -0
- package/fixtures/paper-sources/p1/sections/dead.tex +6 -0
- package/fixtures/paper-sources/p1/sections/intro.tex +7 -0
- package/fixtures/paper-sources/p1/sections/parked.tex +6 -0
- package/fixtures/paper-sources/p1/tex-truth.json +37 -0
- package/fixtures/paper-sources/p1/versions/2026-01-01-review.tex +4 -0
- package/fixtures/paper-sources/v1-stale/paper.tex +14 -0
- package/fixtures/paper-sources/v1-stale/refs.bib +6 -0
- package/fixtures/paper-sources/v1-stale/tex-truth.json +32 -0
- package/fixtures/paper-sources/v10-ifthenelse/anon.bib +1 -0
- package/fixtures/paper-sources/v10-ifthenelse/paper.tex +9 -0
- package/fixtures/paper-sources/v10-ifthenelse/real.bib +1 -0
- package/fixtures/paper-sources/v10-ifthenelse/tex-truth.json +28 -0
- package/fixtures/paper-sources/v11-two-blocks/paper.tex +12 -0
- package/fixtures/paper-sources/v11-two-blocks/tex-truth.json +30 -0
- package/fixtures/paper-sources/v13-percent-text/paper.tex +6 -0
- package/fixtures/paper-sources/v13-percent-text/refs.bib +3 -0
- package/fixtures/paper-sources/v13-percent-text/tex-truth.json +30 -0
- package/fixtures/paper-sources/v15-after-end/paper.tex +6 -0
- package/fixtures/paper-sources/v15-after-end/refs.bib +1 -0
- package/fixtures/paper-sources/v15-after-end/tex-truth.json +17 -0
- package/fixtures/paper-sources/v16-included-block/bibblock.tex +3 -0
- package/fixtures/paper-sources/v16-included-block/paper.tex +7 -0
- package/fixtures/paper-sources/v16-included-block/refs.bib +1 -0
- package/fixtures/paper-sources/v16-included-block/tex-truth.json +35 -0
- package/fixtures/paper-sources/v17-include-order/bibsetup.tex +1 -0
- package/fixtures/paper-sources/v17-include-order/first.bib +1 -0
- package/fixtures/paper-sources/v17-include-order/later.bib +1 -0
- package/fixtures/paper-sources/v17-include-order/paper.tex +7 -0
- package/fixtures/paper-sources/v17-include-order/tex-truth.json +40 -0
- package/fixtures/paper-sources/v2-overwrite/paper.tex +14 -0
- package/fixtures/paper-sources/v2-overwrite/refs.bib +6 -0
- package/fixtures/paper-sources/v2-overwrite/tex-truth.json +30 -0
- package/fixtures/paper-sources/v22-parked-thebibliography/paper.tex +7 -0
- package/fixtures/paper-sources/v22-parked-thebibliography/tex-truth.json +17 -0
- package/fixtures/paper-sources/v23-parked-include/old.bib +1 -0
- package/fixtures/paper-sources/v23-parked-include/paper.tex +7 -0
- package/fixtures/paper-sources/v23-parked-include/parked.tex +1 -0
- package/fixtures/paper-sources/v23-parked-include/refs.bib +1 -0
- package/fixtures/paper-sources/v23-parked-include/tex-truth.json +28 -0
- package/fixtures/paper-sources/v24-quoted-fields/paper.tex +6 -0
- package/fixtures/paper-sources/v24-quoted-fields/refs.bib +5 -0
- package/fixtures/paper-sources/v24-quoted-fields/tex-truth.json +32 -0
- package/fixtures/paper-sources/v25-string-differs/paper.tex +10 -0
- package/fixtures/paper-sources/v25-string-differs/refs.bib +2 -0
- package/fixtures/paper-sources/v25-string-differs/tex-truth.json +32 -0
- package/fixtures/paper-sources/v26-comment-in-names/one.bib +1 -0
- package/fixtures/paper-sources/v26-comment-in-names/paper.tex +7 -0
- package/fixtures/paper-sources/v26-comment-in-names/tex-truth.json +32 -0
- package/fixtures/paper-sources/v26-comment-in-names/two.bib +1 -0
- package/fixtures/paper-sources/v27-shared-string/abbreviations.bib +2 -0
- package/fixtures/paper-sources/v27-shared-string/paper.tex +6 -0
- package/fixtures/paper-sources/v27-shared-string/references.bib +6 -0
- package/fixtures/paper-sources/v27-shared-string/tex-truth.json +31 -0
- package/fixtures/paper-sources/v28-shared-string-block/abbreviations.bib +2 -0
- package/fixtures/paper-sources/v28-shared-string-block/paper.tex +14 -0
- package/fixtures/paper-sources/v28-shared-string-block/tex-truth.json +33 -0
- package/fixtures/paper-sources/v29-generated-input/paper.tex +9 -0
- package/fixtures/paper-sources/v29-generated-input/tex-truth.json +24 -0
- package/fixtures/paper-sources/v3-declared/paper.bib +6 -0
- package/fixtures/paper-sources/v3-declared/paper.tex +6 -0
- package/fixtures/paper-sources/v3-declared/tex-truth.json +28 -0
- package/fixtures/paper-sources/v30-name-next-line/paper.tex +14 -0
- package/fixtures/paper-sources/v30-name-next-line/tex-truth.json +30 -0
- package/fixtures/paper-sources/v4-commented/paper.tex +14 -0
- package/fixtures/paper-sources/v4-commented/refs.bib +6 -0
- package/fixtures/paper-sources/v4-commented/tex-truth.json +28 -0
- package/fixtures/paper-sources/v5-percent-entry/paper.tex +20 -0
- package/fixtures/paper-sources/v5-percent-entry/tex-truth.json +37 -0
- package/fixtures/paper-sources/v6-unclosed/paper.tex +6 -0
- package/fixtures/paper-sources/v6-unclosed/refs.bib +5 -0
- package/fixtures/paper-sources/v6-unclosed/tex-truth.json +37 -0
- package/fixtures/paper-sources/v8-jobname/paper.tex +9 -0
- package/fixtures/paper-sources/v8-jobname/tex-truth.json +30 -0
- package/fixtures/paper-sources/v9-two-bibliographies/one.bib +1 -0
- package/fixtures/paper-sources/v9-two-bibliographies/paper.tex +7 -0
- package/fixtures/paper-sources/v9-two-bibliographies/tex-truth.json +35 -0
- package/fixtures/paper-sources/v9-two-bibliographies/two.bib +1 -0
- package/fixtures/paper-typography/clean-paper/paper.tex +1 -1
- package/fixtures/paper-typography/messy-paper/paper.tex +1 -1
- package/hooks/CLAUDE.md +34 -0
- package/hooks/CLAUDE.md.spec.ts +30 -0
- package/lib/agent-cli-version.ts +1 -1
- package/package.json +3 -11
- package/plugin/CLAUDE.md +22 -0
- package/plugin/CLAUDE.md.spec.ts +22 -0
- package/scripts/check.test.ts +23 -1
- package/scripts/check.ts +7 -3
- package/scripts/coverage-config.test.ts +21 -11
- package/scripts/layer-legacy-frozen.test.ts +41 -2
- package/scripts/layer-legacy-frozen.ts +31 -2
- package/skills/CLAUDE.md +19 -0
- package/skills/CLAUDE.md.spec.ts +18 -0
- package/skills/grade-paper-writing/SKILL.md +4 -3
- package/skills/grade-paper-writing/SKILL.md.spec.ts +3 -2
- package/skills/grade-paper-writing/prose-lint.mjs +11 -2
- package/skills/grade-paper-writing/prose-lint.test.ts +52 -4
- package/skills/paper-pipeline/scripts/extract-ref-facts.harness.mjs +83 -33
- package/skills/paper-pipeline/scripts/extract-ref-facts.mjs +67 -115
- package/skills/paper-pipeline/scripts/extract-ref-facts.test.mjs +128 -121
- package/skills/plan-paper-timeline/plan-paper-timeline.effects.harness.mjs +21 -102
- package/skills/verify-citations/SKILL.md +7 -4
- package/skills/verify-citations/SKILL.md.spec.ts +6 -3
- package/skills/verify-citations/scripts/bib-authors.check.test.mjs +17 -19
- package/skills/verify-citations/scripts/bib-authors.cli.test.ts +129 -46
- package/skills/verify-citations/scripts/bib-authors.d.mts +22 -2
- package/skills/verify-citations/scripts/bib-authors.mjs +57 -111
- package/skills/verify-citations/scripts/verify-cites.cli.test.ts +16 -0
- package/skills/verify-citations/scripts/verify-cites.d.mts +19 -3
- package/skills/verify-citations/scripts/verify-cites.mjs +42 -108
- package/skills/verify-citations/scripts/verify-cites.test.mjs +23 -36
- package/src/CLAUDE.md +23 -1
- package/src/CLAUDE.md.spec.ts +72 -0
- package/src/adapters/bibtex/index.test.ts +163 -0
- package/src/adapters/bibtex/index.ts +155 -0
- package/src/adapters/latex/filecontents.ts +114 -0
- package/src/adapters/latex/includes.ts +18 -10
- package/src/adapters/latex/index.test.ts +73 -0
- package/src/adapters/latex/index.ts +2 -0
- package/src/adapters/latex/nodes.ts +64 -0
- package/src/adapters/latex/parse.test.ts +38 -0
- package/src/adapters/latex/parse.ts +67 -6
- package/src/adapters/memory/index.ts +17 -0
- package/src/adapters/references/index.test.ts +75 -21
- package/src/adapters/references/index.ts +37 -32
- package/src/adapters/sources-record/index.test.ts +87 -0
- package/src/adapters/sources-record/index.ts +82 -0
- package/src/adapters/tex-output/blg.ts +27 -0
- package/src/adapters/tex-output/fls.ts +24 -0
- package/src/adapters/tex-output/index.test.ts +171 -0
- package/src/adapters/tex-output/index.ts +12 -0
- package/src/bib-rules.test.ts +356 -0
- package/src/bib-rules.ts +228 -0
- package/src/bibliography-at.test.ts +286 -0
- package/src/build.test.ts +210 -0
- package/src/build.ts +101 -36
- package/src/claim-provenance.test.ts +33 -7
- package/src/claim-provenance.ts +2 -2
- package/src/cli.harness.mjs +20 -10
- package/src/cli.test.ts +14 -10
- package/src/cli.ts +37 -28
- package/src/domain/paper-source.test.ts +58 -20
- package/src/domain/paper-source.ts +38 -42
- package/src/domain/paper-sources.ts +94 -0
- package/src/domain/sources-record.test.ts +71 -0
- package/src/domain/sources-record.ts +136 -0
- package/src/domain/tex-run.test.ts +228 -0
- package/src/domain/tex-run.ts +139 -0
- package/src/heading-case.test.ts +24 -10
- package/src/latex-log.ts +20 -0
- package/src/latex-loop.harness.ts +1 -0
- package/src/latex-loop.ts +2 -0
- package/src/linted-set.test.ts +9 -1
- package/src/new-paper.harness.mjs +3 -2
- package/src/new-paper.test.ts +9 -5
- package/src/package-dirs.ts +3 -2
- package/src/paper-includes.test.ts +157 -38
- package/src/paper-includes.ts +39 -35
- package/src/paper-prose.test.ts +34 -5
- package/src/paper-prose.ts +2 -2
- package/src/paper-record.test.ts +173 -0
- package/src/paper-record.ts +66 -0
- package/src/paper-settings-commands.test.ts +5 -2
- package/src/paper-sources.ts +151 -0
- package/src/ports/bib-reader.ts +27 -0
- package/src/ports/check-references.ts +7 -3
- package/src/ports/latex.ts +19 -0
- package/src/ports/sources-codec.ts +11 -0
- package/src/ports/tex-output.ts +17 -0
- package/src/recorded-bibliography.ts +297 -0
- package/src/reference-rules.ts +217 -104
- package/src/references.test.ts +520 -177
- package/src/references.ts +185 -37
- package/src/register-bands.test.ts +5 -1
- package/src/register-bands.ts +3 -5
- package/src/register.test.ts +6 -1
- package/src/register.ts +2 -2
- package/src/rule-cases.test.ts +68 -12
- package/src/rule-docs.test.ts +0 -1
- package/src/sources-record.test.ts +308 -0
- package/src/sources-record.ts +231 -0
- package/src/sources-rules.test.ts +152 -0
- package/src/sources-rules.ts +117 -0
- package/src/tex-paper.test.ts +148 -78
- package/src/tex-paper.ts +31 -61
- package/src/tex-requirements.ts +1 -1
- package/src/tex-venue-rules.test.ts +36 -8
- package/src/tex-venue-rules.ts +3 -5
- package/src/toolchain.ts +1 -1
- package/dist/eslint-rules/bib-reachable-entry.d.ts +0 -22
- package/dist/eslint-rules/bib-reachable-entry.d.ts.map +0 -1
- package/dist/eslint-rules/bib-reachable-entry.js +0 -75
- package/dist/eslint-rules/bib-reachable-entry.js.map +0 -1
- package/eslint-rules/bib-reachable-entry.ts +0 -76
package/dist/tex-paper.d.ts
CHANGED
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
import { type PaperSource } from "./domain/paper-source.ts";
|
|
2
2
|
import type { LatexReader } from "./ports/latex.ts";
|
|
3
3
|
import type { Files } from "./ports/files.ts";
|
|
4
|
-
import type
|
|
4
|
+
import { type RecordReadDeps } from "./paper-record.ts";
|
|
5
5
|
import type { Located, TexRuleContext } from "./tex-venue-rules.ts";
|
|
6
6
|
/** What reading a paper needs: the disk, and the LaTeX reader. */
|
|
7
7
|
export interface PaperDeps {
|
|
8
8
|
readonly files: Files;
|
|
9
9
|
readonly latex: LatexReader;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
12
|
-
export
|
|
13
|
-
/** An include that resolved nowhere: the file that wrote it, and the path as written. */
|
|
14
|
-
export interface Unread {
|
|
15
|
-
readonly file: string;
|
|
16
|
-
readonly target: string;
|
|
11
|
+
/** What `readPaper` needs: the disk, the LaTeX reader (where an include stands), and the record's schema. */
|
|
12
|
+
export interface ProseDeps extends PaperDeps, RecordReadDeps {
|
|
17
13
|
}
|
|
14
|
+
/** The text of a file read from the disk, or null when there was none. */
|
|
15
|
+
export declare const decoded: (b: Uint8Array | null) => string | null;
|
|
18
16
|
/**
|
|
19
|
-
* The
|
|
20
|
-
*
|
|
21
|
-
* preamble include (macros are not the body), and not a file found only in paperlint's inputs (not
|
|
22
|
-
* the author's text). `missing` is every include, anywhere, that resolved nowhere.
|
|
17
|
+
* The paper whose main file is `filename` with the text `src`: the files the last build's record lists
|
|
18
|
+
* spliced where their includes stand. No record, or one the paper has outgrown, is `src` alone.
|
|
23
19
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
20
|
+
export declare function readPaper(filename: string, src: string, deps: ProseDeps): PaperSource;
|
|
21
|
+
/** Line and column (1-based) of an offset in a text. */
|
|
22
|
+
export declare function lineColumn(text: string, at: number): string;
|
|
28
23
|
/**
|
|
29
24
|
* Each finding reported in the main file: at its own place, or at the include that brought its text
|
|
30
25
|
* in, named in the message (`sections/results.tex:12:3: …`). Offsets are the assembled text's.
|
package/dist/tex-paper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tex-paper.d.ts","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tex-paper.d.ts","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"AAkBA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpE,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,6GAA6G;AAC7G,MAAM,WAAW,SAAU,SAAQ,SAAS,EAAE,cAAc;CAAG;AAE/D,0EAA0E;AAC1E,eAAO,MAAM,OAAO,GAAI,GAAG,UAAU,GAAG,IAAI,KAAG,MAAM,GAAG,IACP,CAAC;AAElD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GACd,WAAW,CAgBb;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAI3D;AA6BD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,IAAI,CAiBN"}
|
package/dist/tex-paper.js
CHANGED
|
@@ -7,59 +7,43 @@
|
|
|
7
7
|
* file at the include in `paper.tex` that brought it in — the one place ESLint can point to in this
|
|
8
8
|
* file — with the included file, line and column at the front of the message.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* 🔴 WHICH FILES ARE THE PAPER'S IS TEX'S ANSWER, NOT THIS MODULE'S (docs/design/paper-sources.md §1).
|
|
11
|
+
* `readPaper` splices only the files the build's record lists (`_build/sources.json`, `paperRecord`):
|
|
12
|
+
* the files of the paper directory TeX read. An include of a file the record does not list — behind
|
|
13
|
+
* `\iffalse`, never reached — contributes nothing, as it did to TeX. With no
|
|
14
|
+
* record, or a stale one, the paper is `paper.tex` alone, and `paper/sources-fresh` says the files it
|
|
15
|
+
* includes went unlinted. Where an include stands in the text is the only thing read from the text:
|
|
16
|
+
* whether the file it names is part of the paper is the record's to say, never the disk's.
|
|
13
17
|
*/
|
|
14
18
|
import { basename, dirname, join } from "node:path";
|
|
15
19
|
import { assemblePaper, originOf, } from "./domain/paper-source.js";
|
|
16
20
|
import { callerPath } from "./caller-path.js";
|
|
17
|
-
import {
|
|
18
|
-
|
|
21
|
+
import { paperRecord } from "./paper-record.js";
|
|
22
|
+
import { spelledIn } from "./domain/sources-record.js";
|
|
23
|
+
/** The text of a file read from the disk, or null when there was none. */
|
|
24
|
+
export const decoded = (b) => b === null ? null : new TextDecoder().decode(b);
|
|
25
|
+
/**
|
|
26
|
+
* The paper whose main file is `filename` with the text `src`: the files the last build's record lists
|
|
27
|
+
* spliced where their includes stand. No record, or one the paper has outgrown, is `src` alone.
|
|
28
|
+
*/
|
|
19
29
|
export function readPaper(filename, src, deps) {
|
|
20
30
|
const dir = dirname(filename);
|
|
31
|
+
const record = paperRecord(dir, deps);
|
|
32
|
+
const listed = record.kind === "fresh" ? record.record.inputs.map((i) => i.path) : [];
|
|
21
33
|
return assemblePaper(basename(filename), src, {
|
|
22
|
-
|
|
34
|
+
// No record: no include is looked at, so there is nothing to splice.
|
|
35
|
+
includes: record.kind === "fresh" ? deps.latex.includes : () => [],
|
|
23
36
|
documentBody: deps.latex.documentBody,
|
|
24
37
|
read: (rel) => {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
const recorded = spelledIn(listed, rel);
|
|
39
|
+
return recorded === null
|
|
40
|
+
? null
|
|
41
|
+
: decoded(deps.files.readBytes(callerPath(join(dir, recorded))));
|
|
28
42
|
},
|
|
29
43
|
});
|
|
30
44
|
}
|
|
31
|
-
/** `rel` in the first directory of the paper's TeX search path that holds it, or null. */
|
|
32
|
-
const located = (dir, rel, files) => texSearchPath(dir)
|
|
33
|
-
.map((d) => callerPath(join(d, rel)))
|
|
34
|
-
.find((p) => files.isFile(p)) ?? null;
|
|
35
|
-
/**
|
|
36
|
-
* The files of the body of the paper whose main file is `filename`: every file an include inside its
|
|
37
|
-
* `document` environment brings in, nested ones too, found in the paper's own directory. Not a
|
|
38
|
-
* preamble include (macros are not the body), and not a file found only in paperlint's inputs (not
|
|
39
|
-
* the author's text). `missing` is every include, anywhere, that resolved nowhere.
|
|
40
|
-
*/
|
|
41
|
-
export function bodyFiles(filename, src, deps) {
|
|
42
|
-
const dir = dirname(filename);
|
|
43
|
-
const paper = readPaper(filename, src, deps);
|
|
44
|
-
const body = deps.latex.documentBody(src);
|
|
45
|
-
const inBody = (via) => via !== null &&
|
|
46
|
-
(body === null || (via.start >= body.start && via.end <= body.end));
|
|
47
|
-
const own = (rel) => {
|
|
48
|
-
const at = located(dir, rel, deps.files);
|
|
49
|
-
return at === callerPath(join(dir, rel)) ? at : null;
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
files: [
|
|
53
|
-
...new Set(paper.segments
|
|
54
|
-
.filter((s) => s.file !== paper.main && inBody(s.via))
|
|
55
|
-
.map((s) => own(s.file))
|
|
56
|
-
.filter((f) => f !== null)),
|
|
57
|
-
],
|
|
58
|
-
missing: paper.missing.map(({ file, target }) => ({ file, target })),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
45
|
/** Line and column (1-based) of an offset in a text. */
|
|
62
|
-
function lineColumn(text, at) {
|
|
46
|
+
export function lineColumn(text, at) {
|
|
63
47
|
const line = text.slice(0, at).split("\n").length;
|
|
64
48
|
const column = at - text.lastIndexOf("\n", at - 1);
|
|
65
49
|
return `${String(line)}:${String(column)}`;
|
package/dist/tex-paper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tex-paper.js","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tex-paper.js","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"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"}
|
package/dist/tex-requirements.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* of every violation, it is never read as "no packages".
|
|
18
18
|
*
|
|
19
19
|
* Where the profiles live is answered by `presetsDir()` in `package-dirs.ts` — the one module
|
|
20
|
-
* allowed to know where this package's data is installed (
|
|
20
|
+
* allowed to know where this package's data is installed (root CLAUDE.md).
|
|
21
21
|
*/
|
|
22
22
|
// eslint-disable-next-line boundaries/dependencies -- legacy I/O, moves behind a port in #76
|
|
23
23
|
import { readFileSync, readdirSync } from "node:fs";
|
|
@@ -2,6 +2,7 @@ import { type ClassLine, type LayoutOverride, type Outline, type Span, type Text
|
|
|
2
2
|
import type { LatexReader } from "./ports/latex.ts";
|
|
3
3
|
import { type Preset } from "./presets.ts";
|
|
4
4
|
import type { NamedVenue } from "./domain/venue-name.ts";
|
|
5
|
+
import { type ProseDeps } from "./tex-paper.ts";
|
|
5
6
|
import type { Finding, VenueRuleDeps } from "./venue-rules.ts";
|
|
6
7
|
/** A finding and where it points; null points at the top of the file. */
|
|
7
8
|
export interface Located extends Finding {
|
|
@@ -92,9 +93,8 @@ export declare const FORMAT_RULE_LEVELS: Readonly<Record<"format/layout-override
|
|
|
92
93
|
* it extends.
|
|
93
94
|
*/
|
|
94
95
|
export declare function otherVenues(preset: Pick<Preset, "chain">, deps: VenueRuleDeps): readonly OtherVenue[];
|
|
95
|
-
/** What the venue-conformance rules are built with: the preset store, and the
|
|
96
|
-
export interface TexVenueRuleDeps extends VenueRuleDeps {
|
|
97
|
-
readonly latex: LatexReader;
|
|
96
|
+
/** What the venue-conformance rules are built with: the preset store, the LaTeX reader, and the paper's files as the build recorded them. */
|
|
97
|
+
export interface TexVenueRuleDeps extends VenueRuleDeps, ProseDeps {
|
|
98
98
|
}
|
|
99
99
|
/** The venue-conformance rules, as rules of the `tex` plugin (beside `tex/future-promise`). */
|
|
100
100
|
export declare function texVenueRules(deps: TexVenueRuleDeps): Readonly<Record<TexVenueRuleName, TexRuleModule>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tex-venue-rules.d.ts","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"AA+BA,OAAO,EAOL,KAAK,SAAS,EAGd,KAAK,cAAc,EACnB,KAAK,OAAO,EAEZ,KAAK,IAAI,EACT,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tex-venue-rules.d.ts","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tex-venue-rules.js","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tex-venue-rules.js","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/toolchain.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* declare, into paperlint's own cache, and banal (the page-geometry script HotCRP runs) at its pinned
|
|
4
4
|
* commit (`adapters/banal/`). `paperlint build` offers the TeX Live install on a terminal.
|
|
5
5
|
*
|
|
6
|
-
* 🔴 WHY paperlint INSTALLS TeX AT ALL (
|
|
6
|
+
* 🔴 WHY paperlint INSTALLS TeX AT ALL (root CLAUDE.md: installing must be smooth). "Install TeX Live yourself" was a manual step with a
|
|
7
7
|
* trap in it: the distribution packages cost 2.1 GB, and a smaller hand-picked set silently typeset
|
|
8
8
|
* acmart papers in Computer Modern. The engine decision (2026-09-24) is TeX Live's pdflatex,
|
|
9
9
|
* installed the way Playwright installs browsers: one command, a cache directory, idempotent.
|
package/docs/configuration.md
CHANGED
|
@@ -79,7 +79,8 @@ where your papers are, and writes `{ "papersDir": … }` only when that is not `
|
|
|
79
79
|
`papersDir` already declared is kept, and nothing is measured or asked.
|
|
80
80
|
|
|
81
81
|
**Under `papersDir`, only the files paperlint's own rules are written for are linted:**
|
|
82
|
-
`PIPELINE-STATUS.md`, `paper.tex` (and the files it
|
|
82
|
+
`PIPELINE-STATUS.md`, `paper.tex` (and the files TeX read for it in the last build), `reviews/*.md`
|
|
83
|
+
and `siblings/*.md`.
|
|
83
84
|
Everything else — a paper's `repro/` scripts, vendored JavaScript, data files — is never handed to
|
|
84
85
|
ESLint, so it cannot fail the run. A file you name on the command line that is not one of these is
|
|
85
86
|
refused by name. `node_modules/`, `.git/` and `<papers>/.template/` are skipped.
|
|
@@ -387,14 +388,21 @@ papers/my-paper
|
|
|
387
388
|
- **inputs** — `TEXINPUTS` is the paper's directory, then paperlint's own venue files
|
|
388
389
|
(`paper-guards.tex`, `<venue>.tex`), so `\input{paper-guards}` in a preamble resolves with no
|
|
389
390
|
setup and a file of the paper's own wins over paperlint's of the same name. The system tree still
|
|
390
|
-
resolves after them. `paperlint lint`
|
|
391
|
-
|
|
391
|
+
resolves after them. `paperlint lint` does not look for included files at all: it reads which files
|
|
392
|
+
TeX read from the record the build writes (`_build/sources.json`).
|
|
393
|
+
- **compile** — `pdflatex -interaction=nonstopmode -halt-on-error -file-line-error -recorder`, then `bibtex`
|
|
392
394
|
when the `.aux` names a bibliography, then pdflatex again until the `.aux`, `.toc`, `.out` and
|
|
393
395
|
`.bbl` stop changing and the log stops asking for a rerun. bibtex runs again only when the cited
|
|
394
396
|
keys or a `.bib` file changed. After that, one **final** pass defines `\finalpass`, which arms
|
|
395
397
|
the reference guards in `paper-guards.tex`: an undefined `\ref` or `\cite` fails the build
|
|
396
398
|
there instead of printing `??`. A document that still changes after five passes fails, naming
|
|
397
|
-
the file that kept changing.
|
|
399
|
+
the file that kept changing. After a green compile the step also writes
|
|
400
|
+
`_build/sources.json`, the record of what TeX read: every file of the paper directory its passes
|
|
401
|
+
opened (from the `.fls` that `-recorder` makes), whether each came before or after
|
|
402
|
+
`\begin{document}`, the `.bib` files TeX itself wrote, the databases and keys bibtex read, and a
|
|
403
|
+
SHA-256 of each file. Rules read that record instead of reading TeX source, and
|
|
404
|
+
[`paper/sources-fresh`](rules/paper/sources-fresh.md) reports a paper whose record is missing or
|
|
405
|
+
older than its files.
|
|
398
406
|
- **measure** — after a green compile, the PDF is read with pdf.js and what it measures is written
|
|
399
407
|
to `_build/paper.facts.json`: the page count, every font the pages draw text with (and whether
|
|
400
408
|
its program is embedded, and whether it is Type 3), and the heights of the last page's two
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Paper sources — TeX answers "which files, which bibliography"
|
|
2
|
+
|
|
3
|
+
As built in PR #174. Everything that asks which files make up a paper, or which bibliography TeX reads,
|
|
4
|
+
reads the record the last build wrote from TeX's own files; nothing in paperlint reads TeX source to
|
|
5
|
+
decide either, and nothing reads a `.bib` but one adapter. TeX's own answer for each planted paper is
|
|
6
|
+
recorded beside it (§8), and the consumers are tested against that, not against prose.
|
|
7
|
+
|
|
8
|
+
## 1. TeX is the one source of truth
|
|
9
|
+
|
|
10
|
+
Which files make up the paper, and which bibliography it uses, are answered by TeX, from the last
|
|
11
|
+
build — never by reading TeX by hand. There is no static decision: no declaration scan, no
|
|
12
|
+
`filecontents` runs, no include ordering. Lint never runs TeX; it reads what the build recorded.
|
|
13
|
+
|
|
14
|
+
**What the build records — `_build/sources.json`, schema 1.** Written by the compile step, after
|
|
15
|
+
the last pdflatex pass and bibtex, from TeX's own files in the paper directory:
|
|
16
|
+
|
|
17
|
+
| field | from | holds |
|
|
18
|
+
| --------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `inputs` | `paper.fls` (`-recorder`) | every file in the paper directory TeX read, in first-read order, each `role: preamble` or `body` — before or after TeX opens `paper.aux` for writing (`\begin{document}`, measured) |
|
|
20
|
+
| `written` | `paper.fls` `OUTPUT` | the `.bib` and `.tex` files TeX wrote (a `filecontents` block) |
|
|
21
|
+
| `bibdata` | `paper.aux` `\bibdata{…}` | the databases bibtex was told to read, after every switch, macro and `\input` |
|
|
22
|
+
| `bibtex` | `paper.blg`, `paper.bbl` | the database files bibtex opened, the keys it typeset, its exit and errors |
|
|
23
|
+
| `sha256` | the files themselves | every `inputs` file and every database bibtex opened (one TeX wrote too), by path and bytes |
|
|
24
|
+
|
|
25
|
+
A file TeX wrote is an input only when it is a `.tex`: a `filecontents` block that writes `body.tex` the
|
|
26
|
+
body `\input`s puts that text in the PDF, so the file is hashed and spliced like any other (measured:
|
|
27
|
+
pass 1 `OUTPUT body.tex` then `INPUT ./body.tex` after `\begin{document}`). Every other file a pass
|
|
28
|
+
wrote — `.aux`, `.out`, `.toc`, a block's `.bib` — is TeX's bookkeeping or a database, not an input.
|
|
29
|
+
The written `.tex` is not handed to ESLint as a file of its own: its words are the block's, and the
|
|
30
|
+
block's body is no prose to the rules, so the text is judged once, where `readPaper` splices it.
|
|
31
|
+
|
|
32
|
+
Every path is relative to the paper directory and spelled as the directory entries spell it: TeX
|
|
33
|
+
logs the name it opened, which on a file system that ignores case is the source's spelling, so the
|
|
34
|
+
record takes each segment's spelling from the disk and one paper gets one record on every platform.
|
|
35
|
+
|
|
36
|
+
A record of its own, not `references.json`: it is written by every build (the references step is
|
|
37
|
+
optional and may record "not checked"), it is read by rules that have nothing to do with references,
|
|
38
|
+
and it goes stale when the SOURCES change, not when one `.bib` does — one staleness key per file.
|
|
39
|
+
`references.json` keeps its verdicts, one per entry of `sources.json`'s databases, and loses its
|
|
40
|
+
`bibtex` field.
|
|
41
|
+
|
|
42
|
+
**Staleness.** A rule recomputes `sha256` over the files the record lists. No record, or a different
|
|
43
|
+
hash (a file edited, added to an `\input`, deleted), is one finding of a new rule,
|
|
44
|
+
`paper/sources-fresh` — "not built" / "the paper changed since the last build — run
|
|
45
|
+
`npx paperlint build`" — and every rule below is silent until a build records the paper again.
|
|
46
|
+
|
|
47
|
+
**The consumers.**
|
|
48
|
+
|
|
49
|
+
| consumer | reads | no record / stale |
|
|
50
|
+
| ---------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
51
|
+
| `bib/reachable-entry`, `paper/author-list`, `paper/cite-exists` | the entries of the databases bibtex opened, through the `BibReader` | silent (`paper/sources-fresh` speaks) |
|
|
52
|
+
| `paper/refs-checked` | keys bibtex typeset that the reader did not read (`%`, `@comment`) | silent |
|
|
53
|
+
| `extract-ref-facts`, `bib-authors`, `verify-cites` (dir, `.tex`) | `bibliographyAt` → the record's databases | refused: "run `npx paperlint build` first" |
|
|
54
|
+
| `bibliographyAt` with a `.bib` | that file alone, unchanged | — |
|
|
55
|
+
| `paperlint lint`'s files (`paper-includes.ts`), `paper-context` | the `body` `.tex` files of `inputs` TeX did not write | `paper.tex` only; `paper/sources-fresh` says the rest is unlinted |
|
|
56
|
+
| the prose rules' text (`readPaper`) | `paper.tex` with the files of `inputs` spliced where they stand | `paper.tex` alone; `paper/sources-fresh` says the rest is unlinted |
|
|
57
|
+
|
|
58
|
+
An entry in a `.bib` TeX wrote is reported at the `filecontents` block whose body bibtex takes as
|
|
59
|
+
the same database (`sameDatabase`) — a lookup of where the text stands, not a decision of what TeX
|
|
60
|
+
reads; an entry in any other `.bib` at the top of `paper.tex`, `refs.bib:12:1:` first.
|
|
61
|
+
|
|
62
|
+
**What stays syntactic: where an include stands, and nothing else.** The prose rules read
|
|
63
|
+
`paper.tex` with the files of `inputs` spliced in (`readPaper`): a projection of the text for rules to
|
|
64
|
+
read in context, which decides nothing above. Which files are spliced is the record's answer — an
|
|
65
|
+
include of a file `inputs` does not list (behind `\iffalse`, or past `\end{document}`) contributes
|
|
66
|
+
nothing, as it did to TeX, and no include is looked for on disk. Where the macro stands in the text
|
|
67
|
+
is the one thing read from the text, because `.fls` records no position: files are spliced in the
|
|
68
|
+
order the text names them, which is the order TeX read them, each ended the way TeX ends the last
|
|
69
|
+
line of a file it reads (a newline when the file has none — measured: `a\input{f}b` with `f` holding
|
|
70
|
+
`foo` typesets "afoo b"). With no record, or a stale one, the text is `paper.tex` alone. A file the
|
|
71
|
+
record lists that no include macro in the text stands for (an `\input` inside a macro's body, #177)
|
|
72
|
+
is linted as a file of its own and is absent from the whole-paper text.
|
|
73
|
+
|
|
74
|
+
**Ground truth.** `test/e2e/tex/paper-sources.e2e.ts` runs the build's own record step on each
|
|
75
|
+
planted paper and snapshots its `sources.json` as `tex-truth.json`; the unit tests run the
|
|
76
|
+
consumers on the fixture with that record. TeX is the expectation and the input at once.
|
|
77
|
+
|
|
78
|
+
## 4. One bibtex reader
|
|
79
|
+
|
|
80
|
+
The port is `BibReader` (`src/ports/bib-reader.ts`: `read(path, text, body, inherited?)` for a block,
|
|
81
|
+
`readFile(path, text, inherited?)` for a `.bib`). bibtex reads a paper's databases in sequence with one
|
|
82
|
+
table of `@string`s, so a `@string` of `abbrev.bib` expands an entry of `refs.bib` under
|
|
83
|
+
`\bibliography{abbrev,refs}` (measured; in the other order bibtex warns it is undefined).
|
|
84
|
+
`recordedBibliography` reads the databases in the order bibtex opened them, each with the `strings` the
|
|
85
|
+
one before it left in force (`inherited`), and reads a block with the `@string`s its database was read
|
|
86
|
+
with; each database is still parsed as its own text, so each entry keeps its place in its own file.
|
|
87
|
+
|
|
88
|
+
The adapter, `src/adapters/bibtex/`, is the only code that knows `@retorquere/bibtex-parser`. It reads each database twice:
|
|
89
|
+
|
|
90
|
+
- **`entries`** — LaTeX read into text (`{\"u}` → `ü`, `\url{x}` → a link), names split into parts,
|
|
91
|
+
`@string`s expanded where they are used. What the checks judge.
|
|
92
|
+
- **`written`** — `raw: true`, every field verbatim, no outer braces dropped: each field as bibtex
|
|
93
|
+
takes it, `@string`s expanded where used, LaTeX as written. What `sameDatabase` compares, with the
|
|
94
|
+
`@preamble` commands, so `{\"o}` and `ö` stay two values, as they are in the `.bbl`.
|
|
95
|
+
|
|
96
|
+
**The fence is lint, not prose.** `eslint.config.mjs` sets `n/no-restricted-import` on
|
|
97
|
+
`@retorquere/bibtex-parser` (and its subpaths) for every file but `src/adapters/bibtex/**`
|
|
98
|
+
(`test/eslint-bib-parser.test.ts` plants imports in the app, the domain, another adapter and a
|
|
99
|
+
skill's script).
|
|
100
|
+
|
|
101
|
+
## 5. A path a person gave → `bibliographyAt`
|
|
102
|
+
|
|
103
|
+
`extract-ref-facts`, `bib-authors` and `verify-cites` (its `.bib` input) take a path on the command
|
|
104
|
+
line. All three ask `bibliographyAt(path, deps)`: a `.bib` is read alone, as named; a `.tex`, or a
|
|
105
|
+
directory holding `paper.tex`, is the bibliography the last build's bibtex opened for that paper
|
|
106
|
+
(`recordedBibliography`) — for a database TeX wrote, the text of the `filecontents` block (or included
|
|
107
|
+
file) that holds it, so an entry stands where the author edits it. A refusal is a `BibliographyUnread`
|
|
108
|
+
(`missing`, `not-bib-or-tex`, `no-paper`, `not-built`, `no-database`, `outside-paper`), and
|
|
109
|
+
`bibliographyUnreadWhy` is its one sentence; `outside-paper` is a paper whose bibtex also opened a
|
|
110
|
+
database the paper directory does not hold (BIBINPUTS) — refused rather than read in part;
|
|
111
|
+
`not-built` covers a missing, unreadable and stale record alike: run `npx paperlint build` first. Each script keeps its own CLI frame around it.
|
|
112
|
+
|
|
113
|
+
## 6. The references a build checks
|
|
114
|
+
|
|
115
|
+
The build's references step (`src/references.ts`) checks entries, not keys: two databases may each
|
|
116
|
+
define a key with other metadata.
|
|
117
|
+
|
|
118
|
+
- **What is checked is `readBibliography`**: the databases the build's bibtex opened, in the order it
|
|
119
|
+
opened them, each once, read by the bibtex reader — a view over `recordedBibliography`, the one reader
|
|
120
|
+
of the record's databases. Without a fresh record the step checks nothing and its note names the
|
|
121
|
+
reason; a database bibtex opened that is not in the paper directory (bibtex found it on its search
|
|
122
|
+
path, `BIBINPUTS`) is named, not skipped. One removed after the build — a `.bib` TeX wrote, then a
|
|
123
|
+
clean — makes the record stale: every database bibtex opened is hashed.
|
|
124
|
+
- **One verdict per entry, in order.** The `CheckReferences` port returns verdict `i` for entry `i`;
|
|
125
|
+
the adapter runs verify-cites and bib-authors per entry and pairs them by position.
|
|
126
|
+
- **`_build/references.json`, schema 3**: `bib {sources, sha256}`, `status`, `entries`. `sources` are
|
|
127
|
+
the database names as bibtex names them and `sha256` covers their text. Lint lays the verdicts on the
|
|
128
|
+
entries of the same databases and reports each at its entry (`entryReports`); a record that is not one
|
|
129
|
+
verdict per entry, in order, about the bytes the databases hold now, is not about this bibliography
|
|
130
|
+
(`paper/refs-fresh`).
|
|
131
|
+
|
|
132
|
+
## 7. The post-build check — where bibtex reads differently
|
|
133
|
+
|
|
134
|
+
bibtex has no comment syntax and recovers from malformed text as no parser does, so the reader does
|
|
135
|
+
not emulate it. Each difference has an owner:
|
|
136
|
+
|
|
137
|
+
| shape | answered by |
|
|
138
|
+
| -------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
139
|
+
| malformed: an entry or brace never closed, `%` inside an entry | the build — bibtex exits 2, and `paperlint build` fails with its lines |
|
|
140
|
+
| an entry behind `%`, or inside `@comment{…}` | `paper/refs-checked`, from the keys bibtex typeset |
|
|
141
|
+
| `@`, `)` or `{"}` inside a quoted field | the reader, which reads it as bibtex does |
|
|
142
|
+
|
|
143
|
+
`paper/refs-checked` names every key bibtex typeset (`paper.bbl`) that no entry of the databases it
|
|
144
|
+
opened has (`unseenKeys`; keys compare case-insensitively, as bibtex's do), and every database bibtex
|
|
145
|
+
opened that is not in the paper directory.
|
|
146
|
+
|
|
147
|
+
## 8. Ground truth — `tex-truth.json`
|
|
148
|
+
|
|
149
|
+
Each planted paper of `fixtures/paper-sources/` carries `tex-truth.json`, written by TeX:
|
|
150
|
+
`test/e2e/tex/paper-sources.e2e.ts` builds it with `pdflatex -recorder` and `bibtex` and snapshots the
|
|
151
|
+
record the build writes. `-u` re-records; a TeX that answers differently fails. The unit tests of the
|
|
152
|
+
consumers lay that file at `_build/sources.json` (`test/recorded-fixture.ts`). The accepted papers of
|
|
153
|
+
`fixtures/accepted-papers/` carry theirs the same way (`test/e2e/tex/accepted-papers-record.e2e.ts`).
|
|
154
|
+
The files are the numbers; this document does not copy them.
|
|
155
|
+
|
|
156
|
+
## 9. Decisions
|
|
157
|
+
|
|
158
|
+
- **The record, not a reading** — which files and databases a paper has is what TeX did on the last
|
|
159
|
+
build; a static reading of the text agrees only on the cases its author thought of.
|
|
160
|
+
- **No record, no verdict** — a rule that needs the record is silent without a current one, and one
|
|
161
|
+
rule (`paper/sources-fresh`) says so once; a stale answer is worse than none.
|
|
162
|
+
- **Prose rules splice only the files the record lists** — an include behind `\iffalse` contributes
|
|
163
|
+
nothing; without a record the text is `paper.tex` alone and `paper/sources-fresh` says the rest went
|
|
164
|
+
unlinted.
|
|
165
|
+
- **A lookup of where a text stands is not a decision of what TeX reads** — `filecontents` blocks are
|
|
166
|
+
found in the text only to put a finding on the line that holds an entry (`sameDatabase`).
|
|
167
|
+
- **One verdict per entry, not per key** — a key does not identify an entry; a verdict that cannot say
|
|
168
|
+
which entry it is about reports at the wrong one.
|
|
169
|
+
- **"Same database" is what bibtex takes** — raw bytes and the final `@string` map are a proxy that
|
|
170
|
+
misses a `@string` redefined after use; the text between entries reaches no `.bbl`.
|
|
171
|
+
- **One `.bib` reader, fenced by lint** — three readers grew before there was one; the parser's name
|
|
172
|
+
may appear in one folder only.
|
|
173
|
+
- **One path → bibliography function** — three scripts each resolved it by hand, each with its own
|
|
174
|
+
refusals.
|
|
175
|
+
- **Recorded TeX truth, not hand-written expectations** — the consumers' tests compare with what TeX
|
|
176
|
+
did, so a wrong belief about TeX cannot be written into both the code and its test.
|
|
177
|
+
- **The post-build check, not emulation** — no parser recovers as bibtex does; bibtex's own output
|
|
178
|
+
is compared instead.
|
|
179
|
+
|
|
180
|
+
## 10. Scope: what this PR does not decide
|
|
181
|
+
|
|
182
|
+
- A finding for a `filecontents` block without `[overwrite]` (#176).
|
|
183
|
+
- A listed body file that no include macro in the text stands for (an `\input` inside a macro's body,
|
|
184
|
+
#177): linted as a file of its own, absent from the whole-paper text.
|
|
185
|
+
- `eslint --cache`: `bib/reachable-entry` depends on files other than the linted one, so a cached
|
|
186
|
+
result can be stale after a `.bib` changes. `paperlint lint` does not cache.
|
|
187
|
+
- Reading past `\end{document}` in `headings.ts`, `layout.ts` and `rendered.ts` (#178).
|
|
188
|
+
- A file a `filecontents` block writes under another extension than `.tex` (a `.pgf` the body
|
|
189
|
+
`\input`s) is not an input: its text reaches the PDF, but the record neither hashes nor splices it.
|
|
190
|
+
- A database TeX wrote is read from the file it left on disk, which the record does not hash: edited
|
|
191
|
+
after a build, that file is not detected as stale.
|
|
192
|
+
- Two copies compared where bibtex and the parser differ in what no check reads: a `@preamble` is
|
|
193
|
+
compared as written, so a `@string` it uses that is redefined between the copies is not seen; and
|
|
194
|
+
`keywords` are compared as the parser splits, dedupes and sorts them — it does so for that field
|
|
195
|
+
name unconditionally, with no option to keep it as written.
|
|
196
|
+
- Q3 (one projection of the live text, replacing `paper-typography`'s `skippedRanges` and
|
|
197
|
+
`texToMdast`'s own parse), the hooks, and an enforcement rule for Q1–Q3: later PRs.
|
package/docs/e2e.md
CHANGED
|
@@ -137,7 +137,7 @@ be paperlint's own cache, because the runner has no other.
|
|
|
137
137
|
within seconds; `--check` must exit 0; then the `acmart` fixture is built with PATH holding `node`
|
|
138
138
|
only, so no other TeX Live and no PDF tool can stand in, and the PDF must carry Libertine and Biolinum
|
|
139
139
|
and no Computer Modern face. Without `PAPERLINT_TEXLIVE_DIR` its tests are skipped: installing ~270 MB
|
|
140
|
-
into a home directory as a side effect of `npm run check` is the unasked install
|
|
140
|
+
into a home directory as a side effect of `npm run check` is the unasked install the root `CLAUDE.md` forbids.
|
|
141
141
|
`src/toolchain.harness.mjs` covers the installer's logic (mirror fallback, archive check, time
|
|
142
142
|
limit, verification, idempotence) against a fake mirror on disk, without the network.
|
|
143
143
|
|
package/docs/incidents.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
else. The measurement that produced a rule lives here, and is read only when someone argues
|
|
5
5
|
with the rule or wants to know how it was found.
|
|
6
6
|
|
|
7
|
-
Two things never move into this file: a measurement that **is** the rule (
|
|
7
|
+
Two things never move into this file: a measurement that **is** the rule (the root `CLAUDE.md`'s table of
|
|
8
8
|
claims that fell to one command — without it the rule reads "measure things", which nobody
|
|
9
9
|
obeys), and evidence that already lives in a code comment beside the code it explains. Those
|
|
10
10
|
get a pointer, never a copy.
|
|
@@ -13,7 +13,7 @@ Entries are append-only and dated. A superseded entry is marked, not deleted.
|
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
## 2026-09-17 — four fixes proposed and withdrawn in one session (
|
|
16
|
+
## 2026-09-17 — four fixes proposed and withdrawn in one session (measure the defect first)
|
|
17
17
|
|
|
18
18
|
Each was proposed before the defect it claimed to fix had been exhibited, and each fell to a
|
|
19
19
|
single command:
|
|
@@ -33,7 +33,7 @@ make the path resolve.
|
|
|
33
33
|
|
|
34
34
|
Cost of the pattern: the four proposals took more of the session than the work they proposed.
|
|
35
35
|
|
|
36
|
-
## 2026-09-17 — the install-location class, four silent breakages (
|
|
36
|
+
## 2026-09-17 — the install-location class, four silent breakages (where paperlint is installed)
|
|
37
37
|
|
|
38
38
|
One class — _code that knows where it is on disk_ — has broken this repository four times, and
|
|
39
39
|
not one of the four announced itself:
|
|
@@ -50,8 +50,8 @@ The first three are documented in the code they broke, and that is where the det
|
|
|
50
50
|
`skills/paper-pipeline/scripts/consumer.mjs` (`ledgerPath`, three steps).
|
|
51
51
|
|
|
52
52
|
🔴 The load-bearing observation is not the count. All four repetitions happened **while
|
|
53
|
-
comments explaining the exact hazard sat directly above the code** — which is why rule
|
|
54
|
-
a lint rule and not another paragraph.
|
|
53
|
+
comments explaining the exact hazard sat directly above the code** — which is why that rule got
|
|
54
|
+
a lint rule (`eslint-rules/install-path-literals.ts`) and not another paragraph.
|
|
55
55
|
|
|
56
56
|
A fifth instance of the same class was measured the same day and is not yet fixed: the guard
|
|
57
57
|
in `ledgerPath` asks `insideNodeModules(hereDir)`, and a plugin cache is not `node_modules`, so
|
|
@@ -138,7 +138,7 @@ lockfile in that array was not.
|
|
|
138
138
|
zero: `pipeline-check.mjs`, `extract-ref-facts.mjs` and `bib-authors.mjs`, all reaching
|
|
139
139
|
`markdown-it`. Which retires a number this note carried: the closure is **two** third-party
|
|
140
140
|
packages over **eight** referenced scripts, not one over seven — `extract-ref-facts.mjs` reaches
|
|
141
|
-
`@retorquere/bibtex-parser
|
|
141
|
+
`@retorquere/bibtex-parser`, now through `#src/adapters/bibtex/index`.
|
|
142
142
|
|
|
143
143
|
⏳ **Not measured, recorded as such:** the documented 60-second install timeout; the personal
|
|
144
144
|
`~/.claude/skills` and `--add-dir` channels (2 of 4 locations verified); and a genuine
|