| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both ini headers described this data as generated from missalemeum, and the
generator described its own output as the file. Neither is true since the
eight corrections landed, and the gap is not cosmetic: missalemeum does not
carry any of them, so running scripts/gen-sanctoral-ef.go would silently
revert all four calendar fields, with nothing to notice it.
The two ini headers and the generator's own doc comment now each carry the
list of hand-corrected fields, the rubric behind each, and the warning that a
regeneration reverts them. Deliberately repeated in both places rather than
cross-referenced from one: either can rot, and repeating the list means the
other still shows it.
Also records what the six allow-listed oracle days actually mean now. The
oracle is not wrong to flag them -- missalemeum is simply the party that
disagrees with the Missal, which is a different situation from the one that
test was written for.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lectio's EF data has been the upstream for colitur, whose data was
bootstrapped from this ini. colitur has since validated that data against the
1962 Missal itself, and these eight fields are where the two now disagree and
the Missal decides against us. Each carries the rubric.
Calendar. St Ubaldus (16 May) and St Didacus (13 November) become III-class
feasts rather than commemorations: the Missal's own universal calendarium
ranks both "III classis" outright with no commemoration rubric, and each has
its own Mass entry in the Proprium taking its readings from a Common with
only its Oratio proper -- which a bare commemoration never has. Found by
auditing all 290 of colitur's fixed-date entries against that calendarium;
these two were the only status defects in the file. The Vigil of the
Assumption becomes violet from white and the Vigil of St Lawrence violet from
red: RG 128 gives violet to vigils of II and III class outside Paschaltide,
and its sole exception is the Ascension's vigil, inside Paschaltide, which is
white and is untouched here.
Lectionary. Both Ember Saturdays carried the wrong saint's Mass entirely --
St Thomas the Apostle's under ef-advent-ember-sat and St Matthew's under
ef-september-ember-sat, in both cases because 21 December and 21 September
fall on a Saturday in the same six years and a bootstrap generalised one
year's coincidence into a template value.
Two oracle allow-list entries, both placed ahead of the BVM-Saturday entry
deliberately. When 16 May or 13 November falls on a Saturday, that entry's
predicate also matches and would absorb the divergence under a reason no
longer true of it -- it says both engines agree the day is unimpeded, and the
point here is that the day IS impeded. The vigil entry excludes Sundays for
the mirror reason: RG 33 omits a vigil falling on one, and without the guard
2026-08-09 is stolen from the RG 33 entry that actually explains it.
Six days of the 730-day oracle window are affected. Readings are untouched by
that test, so the two lectionary corrections cost it nothing.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Three lectionary sections were keyed ef-lent-1-{wednesday,friday,saturday}
while temporal_ef.go's efEmberSlug computes ef-lent-ember-{wed,fri,sat}. The
lookup in caldata.Readings takes the observed slug and has no alias table, so
it missed the entries entirely and fell through to the preceding-Sunday
fallback. Every Lenten Ember day since the data was added has served Lent I
Sunday's Mass -- three days a year, in a season that prints a proper Mass daily.
The values were already right; only the keys were wrong, and they were stale
rather than mistaken: they predate Lent being added to efEmberSlug, and
scripts/genlect.go keys off day.Observed.Slug, so re-running it would already
write the correct names. Advent and September were never affected -- both
already use the -ember- form.
Renamed, and verified the whole file: every one of the 119 section names is now
a slug the calendar actually computes, checked by sweeping 2005-2050. Those
three were the only dead keys.
Added TestEFLectionaryKeysAreReachableSlugs to make the class detectable rather
than just this instance. Mutation-tested: reverting the three keys fails it,
naming all three.
Found by differencing against colitur, the sibling OCaml engine, while giving
it a lectionary of its own. Worth recording how nearly it escaped: colitur
inherited the same wrong keys from this file during its bootstrap, so both
engines produced the same wrong Mass and the differential between them was
silent. It only surfaced when colitur's data was checked against the Missal
itself. Two implementations agreeing is not evidence when one was seeded from
the other.
|
| |
|
|
|
|
|
|
|
|
|
| |
In early-Easter years there are more than 24 Sundays after Pentecost. Per the
1960 Rubrics the surplus Sundays resume the Sundays after Epiphany that
Septuagesima cut short (highest-numbered first) and the last Sunday keeps the
24th (Last) Mass. temporalEF now routes those Sundays to the resumed Epiphany
slug for readings while keeping the calendrical time-after-pentecost season;
the mis-harvested tail entries (post-Pentecost sundays 24-28) are corrected to
the true 24th Mass and the surplus removed. Validated: 88/88 tail/resumed
Sunday gospels match missalemeum 2025-2050; EF oracle green.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EF readings had ~1.8% of days with no readings (major feasts falling back to
the wrong Sunday, feria-repeats broken when the preceding Sunday was a feast).
Now 0 gaps over 9496 days (2025-2050); reading correctness spot-checks match
missalemeum except the resumed-Epiphany-Sunday edge (next commit).
- calendar.TemporalSlug: the green-season weekday-repeats-the-Sunday rule uses
the Sunday's TEMPORAL slug, so a Monday still finds its Sunday Mass when that
Sunday was displaced by a feast (e.g. the Purification on Feb 2).
- Add the missing EF temporal Masses (from missalemeum): the Nativity Day Mass
(Heb 1:1-12 / John 1:1-14), Epiphany (Isa 60:1-6 / Matt 2:1-12), the Octave
Day of Christmas (Titus 2:11-15 / Luke 2:21), the 6th Sunday after Epiphany
(1 Thess 1:2-10 / Matt 13:31-35), and the last Sunday after Pentecost
(Col 1:9-14 / Matt 24:15-35).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
transfers)
Ordinary Form:
- Add the movable Marian memorials that have no fixed date: Mary, Mother of the
Church (Monday after Pentecost) and the Immaculate Heart (Saturday after the
Sacred Heart), computed in computeOF.
- General Norms 60: two coinciding obligatory memorials both become optional and
the ferial is observed -- except Mary, Mother of the Church, which keeps
precedence per its 2018 decree.
Extraordinary Form:
- Capture fixed-date vigils in the sanctoral harvest (Christmas, the Nativity of
St John the Baptist, Sts Peter & Paul, St Lawrence, the Assumption, All Saints,
the Immaculate Conception) -- previously filtered out.
- temporalEF: the movable vigils of the Ascension (I class eve) and Pentecost
(Whitsun Eve), and the September/Advent Ember days (II class violet ferias).
- transferIfImpededEF: the Annunciation transfers past Holy Week/the Easter
octave to the Monday after Low Sunday; All Souls moves to Nov 3 when Nov 2 is a
Sunday.
- genlect harvests proper Masses for the new Ember/vigil days.
Adds TestEFCoverage + TestOFMovableMemorials. Bumps to 0.39.0.
Verified per-day: OF 0 real errors vs calapi (2026-2028, 100% correct-observed);
EF 0 real errors vs missalemeum (2025-2027), residual = deep-tail vigil-occurrence
and St Joseph Passiontide-transfer edges (~1-2 days/yr, documented).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Latin fallback
Finish the Extraordinary Form (1962) offline Mass readings so every day of
the year resolves in both English and Polish.
Temporal engine (temporal_ef.go):
- Unique ferial slugs "ef-<season>-<week>-<weekday>" so penitential-season
weekdays (Lent, Advent, Passiontide, Easter octave) can key their own
proper Masses; green-season ferias have no entry and fall back to the
preceding Sunday (the 1962 rule).
- Special "ef-lent-after-ashes-<weekday>" case for the days between Ash
Wednesday and Lent I, which have their own propers.
Lectionary (tridentine-lectionary.ini, 55 -> 143 entries) via genlect.go:
- Generator now fetches proper-season weekdays and stores a feria only when
its Mass differs from the preceding Sunday's.
- cleanCite() normalises two missalemeum data glitches: a stray comma
between book and chapter ("4 Kings, 5:1" -> "4 Kings 5:1") and a
period-as-separator ("John 20. 19-31" -> "John 20:19-31"), both guarded so
legitimate multi-chapter citations are untouched.
Citations & corpora:
- books.ini: Douay abbreviations in the [en] dialect (Ex, Ezech, Jonas, and
3/4 Kings -> canonical 1/2 Kings), so the EF Lenten epistles resolve while
the display keeps modern sigla.
- drb.tsv: +205 rows backfilling the deuterocanonical Daniel 13-14 (Susanna,
Bel) and Esther 11-16 (Greek additions) from get.bible douayrheims, which
the base corpus omitted; scripts/gen-deutero.py documents the fetch.
Rendering (liturgy.go):
- readingLine() falls back to the Latin Vulgate (complete) when the
vernacular corpus lacks a passage, with a clear note. Covers the Polish
Wujek deuterocanon gap (no clean public-domain source exists) and any
future vernacular gap; faithful to the EF as a Latin rite.
Result: 730/730 days resolve for both EN (native) and PL (native + Latin
fallback for 3 deuterocanon days). Version 0.32.0 -> 0.33.0.
|
|
|
Unique temporal-day slugs (season-sunday-week); scripts/genlect.go generates
tridentine-lectionary.ini from missalemeum keyed by slug (55 entries: the
Sundays of the whole EF year). caldata.TemporalReadings(form,slug) lookup;
--liturgy resolves proper-of-feast else the temporal cycle and renders the text.
bible.ParseRef strips abbreviation dots (1 Cor. -> 1 Cor). 52/53 Sundays fully
resolve offline.
|