You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
verify.py: add ERROR verdict kept distinct from NOT-FOUND so a transient
rate-limit/network failure can't masquerade as "does not exist" and drop a
real paper; prefetch arXiv ids in batches (id_list) to avoid the 429 bans
that caused 8 false NOT-FOUNDs on a ~90-paper run; accept int expect_year
(was a mid-run crash); degrade a malformed row to ERROR instead of aborting
the batch.
references.py: fix audit venue check false-flagging titles that end in ?/!
as "empty venue" (the title/venue splitter only recognized ". ").
families.py: accept assignment values case-insensitively and by display
name, so re-running off rows.json's stamped `family` field works.
docs: sync PLAYBOOK.md (Phase 3 verdicts + lessons incl. the strict-APA
sentence-case decision), tools/README.md, docs/phases.md, docs/tools.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`Model` lowercase), and a mechanical caser silently mis-cases proper nouns —
714
+
which the audit can't catch. So after canon, **sentence-case new preprint titles
715
+
in a reviewed pass** (auto-protect all-caps acronyms, camelCase/digit model
716
+
names, and hyphen parts; keep a small proper-noun allowlist; eyeball every
717
+
changed title, e.g. a product name like `Matrix-Game`). This is a post-canon
718
+
hand-fix like the mojibake and compound-surname fixes below.
685
719
686
720
### On contextualizing a lab review (lab mode L4c)
687
721
-**The outward search is a FULL topic-mode review, not a "context" add-on.**
@@ -824,7 +858,7 @@ outputs JSON/files. Run `python3 tools/<script>.py --help` for flags.
824
858
825
859
| Script | Purpose |
826
860
|--------|---------|
827
-
|`tools/verify.py`| Verify a list of citations via PMC/PubMed/CrossRef + arXiv. Reports mismatches. |
861
+
|`tools/verify.py`| Verify a list of citations via PMC/PubMed/CrossRef + arXiv (arXiv ids batched). Verdicts OK / MISMATCH / NOT-FOUND / ERROR — re-run ERROR, chase NOT-FOUND. |
828
862
|`tools/references.py`| Phase 3f. Rebuild every `apa` from the verified DOI (CrossRef) or arXiv id into canonical APA-7; `--audit` gates the build (exit 1 on any defect). Both modes. |
829
863
|`tools/citations.py`| Phase 5b. Fetch per-paper citation counts from OpenAlex (primary) + Semantic Scholar (secondary) by DOI. Google Scholar is not usable (no API / CAPTCHA). |
830
864
|`tools/families.py`| Phase 6b. Validate an (agent-proposed, human-approved) family taxonomy, stamp `family` onto rows, emit `families.json` + `families.md`. `--digest` prints a corpus digest for the proposal step. |
Copy file name to clipboardExpand all lines: docs/tools.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ JSON I/O, DOI/arXiv parsing, APA building). Run any with `--help`.
10
10
11
11
| Script | Phase | Purpose |
12
12
|---|---|---|
13
-
|[`verify.py`](https://github.com/gallantlab/literature-review-toolkit/blob/main/tools/verify.py)| 3 | Verify every citation via PMC/PubMed/CrossRef **+ the arXiv API** (preprints get a real verdict, not a misleading `NOT-FOUND`). Catches ~25% search-agent fabrications. |
13
+
|[`verify.py`](https://github.com/gallantlab/literature-review-toolkit/blob/main/tools/verify.py)| 3 | Verify every citation via PMC/PubMed/CrossRef **+ the arXiv API** (arXiv ids batched to dodge rate-limit bans). Verdicts `OK` / `MISMATCH` / `NOT-FOUND` / `ERROR` — re-run `ERROR` (transient), chase `NOT-FOUND` (likely fake). Catches ~25% search-agent fabrications. |
14
14
|[`references.py`](https://github.com/gallantlab/literature-review-toolkit/blob/main/tools/references.py)| 3f | Rebuild every reference from its verified DOI/arXiv id into canonical APA-7 (full authors, particles, casing, real venue incl. bioRxiv/PsyArXiv). `--audit` is a **hard gate**. Both modes. |
15
15
|[`spreadsheet.py`](https://github.com/gallantlab/literature-review-toolkit/blob/main/tools/spreadsheet.py)| 5 | Build/rebuild the `.xlsx` from the accumulated JSON rows; auto-adds `Cite` / `Family` columns when present. |
16
16
|[`citations.py`](https://github.com/gallantlab/literature-review-toolkit/blob/main/tools/citations.py)| 5b | Per-paper citation counts from OpenAlex (primary) + Semantic Scholar by DOI, with undercount reconciliation. |
0 commit comments