Commit 7d88940
fix(audit): close two Citation Audit coverage holes
Two regressions surfaced when the Citation Audit GitHub workflow turned
red on the v1.15.6 release commit (run 26375546484, exit 1: "476 ok /
1 mismatch / 1 unresolved").
Root causes — both in tools/audit_citations.py, both pre-existing
(workflow has been red since at least v1.15.5):
1. DOI regex captured markdown autolink closers.
``docs/joss_validation_dossier.md:9`` writes the Zenodo concept DOI
as ``<https://doi.org/10.5281/zenodo.19933900>``. The DOI character
class ``[^\s()"'\`,;}\]\[]+`` did NOT exclude ``<`` / ``>``, so the
match captured the trailing ``>``, then Crossref + DataCite both
404'd on ``10.5281/zenodo.19933900>``. RFC 3986 reserves angle
brackets in URIs (must be percent-encoded), so adding ``<>`` to the
exclusion class and to the trailing-boundary lookahead is safe.
2. ``_bibtex_markers`` missed ``@software{`` (and adjacent valid
BibTeX types ``@unpublished{`` / ``@incollection{``).
``src/statspai/_citation.py:26`` defines ``_CONCEPT_DOI``; four
lines below sits a Python string template ``"@software{{...``
carrying the canonical author list. The ±3 claim-block window
captured the template but the marker set didn't recognise
``@software{`` as a BibTeX block, so the script ran the missing-
author check and flagged "missing author(s): Rozelle, Scott".
Adding the three types to the marker tuple lets the script trust
the structured ``author={...}`` field for software / unpublished /
incollection entries the same way it does for ``@article`` etc.
Verification (all four gates, locally, cache cleared):
- Gate 0: 32/32 auditor unit tests pass
- Gate 1: paper.bib has 0 duplicate keys / DOIs / arXiv ids
- Gate 2: 0 dangling refs across src/ docs/ paper.md
- Gate 3: 478 ok / 0 mismatch / 0 unresolved, exit 0
No package source touched — pure tooling fix, no version bump needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 4b8ebe0 commit 7d88940
1 file changed
Lines changed: 11 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
96 | 101 | | |
97 | 102 | | |
98 | 103 | | |
99 | 104 | | |
100 | 105 | | |
101 | 106 | | |
102 | | - | |
103 | | - | |
| 107 | + | |
| 108 | + | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
107 | | - | |
| 112 | + | |
108 | 113 | | |
109 | 114 | | |
110 | 115 | | |
| |||
645 | 650 | | |
646 | 651 | | |
647 | 652 | | |
648 | | - | |
| 653 | + | |
| 654 | + | |
649 | 655 | | |
650 | 656 | | |
651 | 657 | | |
| |||
0 commit comments