citefind: the references in a bibliography, and what could not be read off them

Cuts a reference list into entries — at the note numbers where there are any,
at the layout where there are not — and reads each as far as its punctuation
allows. Fields that would not parse are named in `unsettled` rather than
guessed at, and `--prompt` asks a model about exactly those and no others.

Over 202 real reference sections from the corpus: 8,566 references, 95% with
a title, 82% with a year, 46% settling every field with no model involved.
A title is refused where the entry was never divided, so no record reports
its own text back as the work it cites.

`ibid.` is flagged and left alone — it points at a work, and the entry does
not say which. A rule of dashes is filled in, because the style defines it as
the author above.

chunkmd gains `note_starts` and `cites_something`: recognising a page of
notes and splitting one are the same knowledge, and two copies of that
pattern would drift.
This commit is contained in:
funkpower
2026-09-20 10:38:48 -04:00
parent 30ff3361ee
commit c071f84829
22 changed files with 2612 additions and 6 deletions
Generated
+16
View File
@@ -254,6 +254,7 @@ version = "0.1.0"
dependencies = [
"booksniff",
"chunkmd",
"citefind",
"corpus-core",
"cuekit",
"cuepack",
@@ -328,6 +329,21 @@ dependencies = [
"inout",
]
[[package]]
name = "citefind"
version = "0.1.0"
dependencies = [
"catena-cli",
"chunkmd",
"clap",
"corpus-core",
"idnorm",
"regex",
"schemars",
"serde",
"serde_json",
]
[[package]]
name = "clap"
version = "4.6.7"