aboutsummaryrefslogtreecommitdiff
path: root/tools/extract_of_calendar.py
Commit message (Collapse)AuthorAgeFilesLines
* fix(of): correct subject over-match, provenance truth, and stale hazard commentLukasz Kasprzak2026-08-251-29/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Four fixes from fix round 2 review: classify_subject's "maria"/"b.m.v" substring test over-matched 12 saints who merely carry "Maria" in their own name (Maximilian Mary Kolbe, John Mary Vianney, Mary Magdalene among them) as Bvm. Replaced with an explicit BVM_DATES table of the 13 genuinely Marian entries. Bvm 25 -> 13. The provenance header claimed lectio is "never a source", which omitted that slugs and English names both come from it. Corrected to state exactly what does (slugs, en names) and does not (every substantive field) come from lectio. A missing lectio file used to degrade silently to a different SHA-256 with no en names and no warning; it now fails loudly. lectio's own SHA-256 is now pinned alongside the Missal PDF's. Four more entries carried a second pdftotext artifact distinct from the letter-spacing already handled -- a combining diacritic rendered as a stray spacing character (Kim Taegŏn/Chŏng Ha-sang, Đũng Lạc, Makhlūf, Kęty). Hand-repaired the same way Peter Damian was, each corroborated by the identical corruption recurring in the Missal's own index. precedence_of.ml's PHASE 3 HAZARD comment about All Souls (2 November) was asserting a gap that no longer exists now that OF sanctoral data ships. Added test_all_souls_beats_an_ordinary_sunday, which resolves the shipped All Souls entry against a real per-annum Sunday (2025-11-02) through the actual Precedence.resolve pipeline, and updated the comment to record the resolution instead of demanding it.
* fix(of): add the Sacred Heart of Jesus and Immaculate Heart of MaryLukasz Kasprzak2026-08-251-51/+208
| | | | | | | | | | | | | | | | | | | | Both are printed in the 2002 calendar table, immediately after 30 June, as prose headings rather than (kalends, day) rows -- the shape parse_rows' generic movable-heading skip branch was built for, which is why the first pass silently dropped them. They belong in the transcription, not in Temporal_of: adding them completes the table this file transcribes rather than amending the temporal cycle. Produced as Date_spec.Easter_offset entries (68 and 69 respectively), the same variant already used for EF's Rogation Wednesday and needing no kernel change. Pentecost is Easter+49, so the Friday and Saturday after the Second Sunday after Pentecost are Easter+68/+69 -- verified against three real Easter dates (2026, 2027, 2035), not merely computed on paper. The extractor now recognises these two headings specifically among the seven "Dominica/Feria/Sabbato ... :" headings the table contains; a full audit of the other five confirms each is already covered by Temporal_of and correctly stays excluded here. 206 -> 208 entries.
* feat(of): transcribe the 2002 General Roman CalendarLukasz Kasprzak2026-08-251-0/+677
Extracted from the Latin typical edition, which is the authority; lectio's roman-calendar.ini is a cross-check only and every divergence is adjudicated against the Missal in the provenance header. A blank grade column means Memoria ad libitum, per the calendar's own footnote, rather than a missing value. 206 entries; 1 January, 6 January and 25 December are deliberately excluded because Temporal_of.named already computes them, and shipping them here too would create a duplicate candidate for the same day. Colour is derived from IGMR n. 346, cited per class in the extractor; the lectio cross-check surfaces one rank divergence (22 July, Mary Magdalene -- lectio reflects the 2016 post-2002 elevation decree, out of scope here) and 17 colour divergences, all adjudicated in the provenance header.