summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 22:11:17 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 22:11:17 +0200
commit1988d350242b47aa52aa07904c495e7e2c0eba82 (patch)
tree463254012c555da51aa976dbe350415070b80a63 /lang
parent2d8942e08edcbe5430f97270bdb1233e287600ee (diff)
downloadcolitur-1988d350242b47aa52aa07904c495e7e2c0eba82.tar.gz
colitur-1988d350242b47aa52aa07904c495e7e2c0eba82.zip
fix: audit findings — parser strictness, name ambiguity, and errors
Found by auditing the shipped program rather than the diff. The parser accepted OCaml integer-literal syntax, so "Luke 1_1:5" read as chapter ELEVEN and "+5" as 5 -- a typo silently becoming a different chapter, reachable through any user overlay. Numbers are now plain digits and positive, and a descending range is rejected: 1:20-10 is always a transcription error. No shipped citation changed. FOUR PAIRS OF DIFFERENT BOOKS SHARED A FULL TITLE. 1 and 2 Corinthians both rendered "Epistola ad Corinthios", as did Thessalonians, Timothy and Peter -- 108 citations in 2027 alone that a reader cannot resolve to a book. This is the Kings defect fixed earlier and not generalised. The titles now carry their volume numeral, marked CONSTRUCTED, and a test asserts no two books share a name -- while allowing the case where two ids ARE the same book under different numbering, which a tradition relates. Spec section 8.5 is now delivered rather than merely recorded. Shipped styles did not re-parse their own output: 32 of 52 Latin abbreviations and 49 of 52 full titles failed, so a citation copied from colitur's own output into an overlay was passed through untouched and printed in the wrong language, silently. Every shipped name is registered as a spelling and split_book learned multi-word titles by longest-token match. Now 0 of 52 fail beyond the same-book aliases. Overlay errors were written for a compiler author: they named an OCaml source file the reader does not have and buried the useful token. The existing five-path rewriter is replaced by a generic one, applied to every load path rather than one, so "rank: is not one of the allowed values (at Class9)" replaces the raw Of_sexp_error dump. Also: the new-overlay scaffold documented citations and layer without showing them, and its comment implied the wrong nesting -- the single easiest thing to get wrong; error messages echoed whole file lines, copying an unrelated file's contents into stderr when a flag pointed at one; and config --show validated partway down its table, exiting 2 after writing five rows to stdout.
Diffstat (limited to 'lang')
-rw-r--r--lang/la.ini56
1 files changed, 48 insertions, 8 deletions
diff --git a/lang/la.ini b/lang/la.ini
index 821acff..197ed64 100644
--- a/lang/la.ini
+++ b/lang/la.ini
@@ -2041,12 +2041,22 @@ romans.full = Epistola ad Romanos
; scan1.txt:5636-5637 "Lectio Epistolae beati Pauli Apostoli / ad Romanos."
romans.abbr = Rom
; scan1.txt:4878 "Rom. 13,", also 4972/6880.
-corinthians_1.full = Epistola ad Corinthios
+corinthians_1.full = Epistola I ad Corinthios
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; scan1.txt:5576 "Lectio Epistolae beati Pauli Apostoli / ad Corinthios." --
; see the header's UNDIFFERENTIATED INCIPITS note.
corinthians_1.abbr = 1 Cor
; scan1.txt:5576 "1 Cor. 4, 1-5", also 19561/21847.
-corinthians_2.full = Epistola ad Corinthios
+corinthians_2.full = Epistola II ad Corinthios
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; Shared incipit -- see corinthians_1.full's own citation.
corinthians_2.abbr = 2 Cor
; scan1.txt:22755 "2 Cor. 3, 4-9", also 8068/29417/31759.
@@ -2071,24 +2081,44 @@ colossians.full = Epistola ad Colossenses
; -- CORRECTS the sourcing note.
colossians.abbr = Col
; scan1.txt:6798 "Col. 3,", also 7234/15349.
-thessalonians_1.full = Epistola ad Thessalonicenses
+thessalonians_1.full = Epistola I ad Thessalonicenses
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; scan1.txt:8942-8944 "Lectio Epistolae beati Pauli Apostoli / ad
; Thessalonicenses. 1 Thess. 4,1-7" -- CORRECTS the sourcing note; see the
; header's UNDIFFERENTIATED INCIPITS note.
thessalonians_1.abbr = 1 Thess
; scan1.txt:8944, same line as the .full citation.
-thessalonians_2.full = Epistola ad Thessalonicenses
+thessalonians_2.full = Epistola II ad Thessalonicenses
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; scan1.txt:5498-5500 "Lectio Epistolae beati Pauli Apostoli / ad
; Thessalonicenses. 2 Thess. 2,1-8" -- CORRECTS the sourcing note.
thessalonians_2.abbr = 2 Thess
; scan1.txt:5500, same line as the .full citation.
-timothy_1.full = Epistola ad Timotheum
+timothy_1.full = Epistola I ad Timotheum
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; scan1.txt:25898-25899 "Lectio Epistolae beati Pauli Apostoli / ad
; Timotheum. 1 Tim. 6, 11-16" -- see the header's UNDIFFERENTIATED INCIPITS
; note.
timothy_1.abbr = 1 Tim
; scan1.txt:25899, same line as the .full citation.
-timothy_2.full = Epistola ad Timotheum
+timothy_2.full = Epistola II ad Timotheum
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; Shared incipit -- see timothy_1.full's own citation, plus scan1.txt:31361
; "Lectio Epistolae beati Pauli Apostoli / ad Timotheum. 2 Tim. 4, 1-8".
timothy_2.abbr = 2 Tim
@@ -2121,7 +2151,12 @@ james.abbr = Iac
; "Iacobi" above, matching the 3-4 letter convention every other abbreviated
; form in this section actually attests (Gal, Col, Phil, Hebr, ...), not a
; separately-sourced locator.
-peter_1.full = Epistola beati Petri Apostoli
+peter_1.full = Epistola I beati Petri Apostoli
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; scan1.txt:20021 "Lectio Epistolae beati Petri Apostoli.", also
; 20080/20264/20324/20784/22128/27337/30003/31627 -- CORRECTS the sourcing
; note; see the header's UNDIFFERENTIATED INCIPITS note (shared with
@@ -2131,7 +2166,12 @@ peter_1.abbr = 1 Petri
; Easter octave) -- the Missal's own locators for both Peter epistles use
; the unabbreviated genitive "Petri", not a further-truncated "Pet." form
; (checked: no "1 Pet."/"2 Pet." instance in either scan).
-peter_2.full = Epistola beati Petri Apostoli
+peter_2.full = Epistola II beati Petri Apostoli
+; CONSTRUCTED -- the Missal's incipit for this letter names the
+; recipient but not the volume, so on its own it does not identify WHICH
+; of the two and is not a valid full title for either. The numeral is the
+; sourced locator's own, in Roman to match this project's output
+; convention. Same reasoning as kings_3.full.
; Shared incipit -- see peter_1.full's own citation, plus scan1.txt:34670
; "Lectio Epistolae beati Petri Apostoli. / 2 Petri 1, 16-19" directly.
peter_2.abbr = 2 Petri