aboutsummaryrefslogtreecommitdiff
path: root/test/test_oracle.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:38 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:38 +0200
commit4ab0e8aeb83dfc41d03ee8e4dabea018b74a22bd (patch)
treed121f9c7611271519d39c2a856d166ee1f6e50d3 /test/test_oracle.ml
parentf0c0c7a04a3022934fbec68e142362030cb42b77 (diff)
downloadcolitur-4ab0e8aeb83dfc41d03ee8e4dabea018b74a22bd.tar.gz
colitur-4ab0e8aeb83dfc41d03ee8e4dabea018b74a22bd.zip
test(oracle): close M4, M6, M7, M9 and M14 -- the five now-fixed data gaps
Each was recorded as a genuine data gap "traced upstream into lectio, unfixable without touching lectio". That constraint is gone: all five commemorations (St Agnes secundo 28 Jan, St Eusebius Confessor 14 Aug, St Evaristus 26 Oct, St Theodore 9 Nov, St Boniface Martyr 14 May) are now present in the re-bootstrapped sanctoral.sexp, and each divergence stops occurring in the 2026-2027 oracle fixture -- verified by re-running the comparator and confirming zero rows for all five ids, not assumed from the data change alone. Removed rather than kept as dead 0-row citations, matching the M17 precedent already in this file: the count pin (test_layer_m_counts_match_citations) now enforces that none of these five divergences can silently reappear. Corresponding dead code (m4_dates .. m14_dates and their layer_m_reason branches) removed from test_oracle.ml; a short pointer comment left at each id's old location.
Diffstat (limited to 'test/test_oracle.ml')
-rw-r--r--test/test_oracle.ml89
1 files changed, 21 insertions, 68 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 2624664..a86fd76 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -438,19 +438,11 @@ let bvm_saturday_title = "Salve, Sancta Parens"
colitur, same citation as lectio's own C8. *)
let m3_dates = [ "2027-05-03" ]
-(* M4 -- a genuine DATA GAP, primary-source-confirmed: the 1962 calendarium
- itself lists, under 28 January, "S. Petri Nolasci Conf., III classis. /
- Com. S. Agnetis Virg. et Mart., secundo" -- a second commemoration of
- St Agnes (distinct from her main 21 January feast) that data/ef/
- sanctoral.sexp does not carry at all. Traced upstream: lectio's own
- tridentine-calendar.ini has no 01-28 entry beyond [peter-nolasco]
- either, so colitur inherited the gap from its bootstrap source, not
- from the bootstrap tool mis-reading a present entry. Cannot be fixed in
- this task (data/ef/sanctoral.sexp is bootstrapped from lectio, per
- CLAUDE.md's binding decision 3; lectio itself needs the entry first,
- and this task does not touch ~/git/projects/lectio) -- verdict
- missalemeum, tracked as a register §6 open item. *)
-let m4_dates = [ "2026-01-28"; "2027-01-28" ]
+(* M4 -- REMOVED, ef-rebootstrap (2026-08-12): see data/ef/expected-
+ divergences-missalemeum.sexp's own "FIVE MORE REMOVED" note for the
+ full account (agnes-secundo now present in data/ef/sanctoral.sexp,
+ sourced from lectio's independently-fixed generator; the divergence no
+ longer occurs on either 2026-01-28 or 2027-01-28). *)
(* M5 -- register §6's OWN already-open item, independently confirmed by
the oracle: "Major Litanies (25 April, RG 80) are not yet computed" --
@@ -471,41 +463,15 @@ let m4_dates = [ "2026-01-28"; "2027-01-28" ]
report). *)
let m5_dates = [ "2026-04-25" ]
-(* M6 -- CORRECTED 2026-08-12, transcription-audit task (branch ef-rg16a):
- the previous version of this comment read the ELECTRONIC TRANSCRIPTION
- (1962-06-23,_SS_Ioannes_XXIII,_Missale_Romanum,_LT.pdf), which silently
- drops calendarium commemorations, and mistook its silence for the
- calendarium's own -- "reads, in full, 'Vigilia, II classis.' -- nothing
- else" was true of the TRANSCRIPTION only. A photographic scan
- (missale-romanum-1962.pdf), 14 August row: "Vigilia, II classis,
- Commemoratio S. Eusebii Conf.", with its own proper immediately
- following ("Eodem die ... Et fit commemoratio S. Eusebii Conf.") --
- independently confirmed in the second scan, Missale Romanum 1962_text
- .pdf. The same shape as M4/M7/M9/M14, NOT their reverse: a genuine
- commemoration is present in the calendarium and in missalemeum's own
- data, but absent from data/ef/sanctoral.sexp and lectio's own
- tridentine-calendar.ini (no 08-14 entry beyond [vigil-of-the-assumption]).
- This Eusebius Confessor (14 Aug) is a genuinely DIFFERENT saint from
- Eusebius Bishop and Martyr (16 Dec, already correctly in data/ef/
- sanctoral.sexp, matching lectio's own [eusebius] entry at THAT date) --
- both exist, at their own separate dates. Verdict missalemeum (flipped
- from colitur): colitur is missing this commemoration, a genuine data gap
- not fixable without touching ~/git/projects/lectio -- see
- docs/research/rules-register.md, Decisions item 4 and the
- transcription-audit record in section 6, for the full account and the
- wider calendarium sweep this correction came from. The diff SHAPE this
- predicate matches (Comm_presence, both dates) is unchanged by the
- verdict flip -- only which side is right, and why, changed. *)
-let m6_dates = [ "2026-08-14"; "2027-08-14" ]
+(* M6 -- REMOVED, ef-rebootstrap (2026-08-12): see data/ef/expected-
+ divergences-missalemeum.sexp's own "FIVE MORE REMOVED" note. Eusebius
+ Confessor (14 Aug) is now present in data/ef/sanctoral.sexp
+ (eusebius-confessor), so the divergence no longer occurs. *)
-(* M7 -- a genuine DATA GAP, primary-source-confirmed, the same shape as
- M4: the calendarium's own 26 October row reads "Com. S. Evaristi Papæ
- et Mart." (Commemoration of St Evaristus, Pope and Martyr) -- absent
- from data/ef/sanctoral.sexp, and absent from lectio's own tridentine-
- calendar.ini for 10-26 (no entry at all for that date), so this is
- another bootstrap-source gap, not fixable without touching lectio.
- Verdict missalemeum, register §6 open item. *)
-let m7_dates = [ "2026-10-26"; "2027-10-26" ]
+(* M7 -- REMOVED, ef-rebootstrap (2026-08-12): see data/ef/expected-
+ divergences-missalemeum.sexp's own "FIVE MORE REMOVED" note. St
+ Evaristus (26 Oct) is now present in data/ef/sanctoral.sexp
+ (evaristus), so the divergence no longer occurs. *)
(* M8 -- RG 109(a) ("of a Sunday" is always privileged) + RG 111(a) ("on
I-class days... none save one privileged"): when a FIXED I-class feast
@@ -518,23 +484,15 @@ let m7_dates = [ "2026-10-26"; "2027-10-26" ]
colitur. *)
let m8_dates = [ "2026-11-01"; "2027-08-15" ]
-(* M9 -- a genuine DATA GAP, the same shape as M4/M7: the calendarium's own
- 9 November row reads, alongside the Dedication of the Archbasilica (II
- class), "Com. S. Theodori Mart." (Commemoration of St Theodore,
- Martyr) -- absent from data/ef/sanctoral.sexp and from lectio's own
- 11-09 entry (dedication-of-the-archbasilica-of-our-holy-savior alone,
- no second entry for that date). Verdict missalemeum, register §6 open
- item. *)
-let m9_dates = [ "2026-11-09"; "2027-11-09" ]
+(* M9 -- REMOVED, ef-rebootstrap (2026-08-12): see data/ef/expected-
+ divergences-missalemeum.sexp's own "FIVE MORE REMOVED" note. St
+ Theodore (9 Nov) is now present in data/ef/sanctoral.sexp (theodore),
+ so the divergence no longer occurs. *)
-(* M14 -- a genuine DATA GAP, the same shape as M4/M7/M9: the calendarium's
- own 14 May row reads "Com. S. Bonifatii Mart." (a commemoration-only St
- Boniface, Martyr -- DIFFERENT from the II-class St Boniface, Bishop and
- Martyr, of 5 June, which data/ef/sanctoral.sexp and lectio both already
- carry correctly) -- absent from data/ef/sanctoral.sexp and from lectio's
- own tridentine-calendar.ini for 05-14 (no entry at all for that date).
- Verdict missalemeum, register §6 open item. *)
-let m14_dates = [ "2027-05-14" ]
+(* M14 -- REMOVED, ef-rebootstrap (2026-08-12): see data/ef/expected-
+ divergences-missalemeum.sexp's own "FIVE MORE REMOVED" note. St
+ Boniface Martyr (14 May) is now present in data/ef/sanctoral.sexp
+ (boniface-martyr), so the divergence no longer occurs. *)
(* M10 -- RG 109(e), unqualified text ("de feriis Adventus, Quadragesimae
et Passionis" -- OF THE FERIAS OF ADVENT, not "of the Advent ferias 17-
@@ -705,13 +663,8 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
else if List.mem c.c_date m1_dates && subset diffs [ Rank; Colour_f; Comm_presence ] then Some "M1"
else if contains_substring o.o_title ~needle:bvm_saturday_title && diffs = [ Colour_f ] then Some "M2"
else if List.mem c.c_date m3_dates && diffs = [ Colour_f ] then Some "M3"
- else if List.mem c.c_date m4_dates && diffs = [ Comm_presence ] then Some "M4"
else if List.mem c.c_date m5_dates && diffs = [ Comm_presence ] then Some "M5"
- else if List.mem c.c_date m6_dates && diffs = [ Comm_presence ] then Some "M6"
- else if List.mem c.c_date m7_dates && diffs = [ Comm_presence ] then Some "M7"
else if List.mem c.c_date m8_dates && diffs = [ Comm_presence ] then Some "M8"
- else if List.mem c.c_date m9_dates && diffs = [ Comm_presence ] then Some "M9"
- else if List.mem c.c_date m14_dates && diffs = [ Comm_presence ] then Some "M14"
else if List.mem c.c_date m10_dates && diffs = [ Comm_presence ] then Some "M10"
else if List.mem c.c_date m11_dates && diffs = [ Comm_presence ] then Some "M11"
else if List.mem c.c_date m12_dates && diffs = [ Comm_count ] then Some "M12"