| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Assumption's epistle is Iudith 13, 22-25 et 15, 10 -- two chapters. It was
recorded as "Judith 13:22-25; 13:15; 13:10", carrying chapter 13 across the
boundary and inventing two verses that are not in the Mass at all, on a
I-class feast.
The Seven Sorrows' is Iudith 13, 22 et 23-25. It was recorded as
"Judith 13:22; 13:25", keeping only the range's endpoint.
Both verified in the photographic scans of the 1962 Missal:
Assumption IN ASSUMPTIONE B.M.V. "Iudith 13, 22-25; 15, 10"
Seven Sorrows SEPTEM DOLORUM B.M.V. "Iudith 13, 22 et 23-25",
printed identically at its Mass and
in the votive Mass of the same feast.
Found by comparing a full liturgical year (2028-12-03 .. 2029-12-01) against
missalemeum's live API, day by day, while giving colitur a lectionary of its
own. 333 of 364 days already agreed; these were two of three genuine
divergences in the remainder.
The third was St Monica (4 May): missalemeum serves Prov 31:10-17, this data
serves 1 Tim 5:3-10. The Missal gives her a proper epistle -- "Lectio
Epistolae beati Pauli Apostoli ad Timotheum", 1 Tim 5, 3-10, "Carissime:
Viduas honora, quae vere viduae sunt" -- in both scans. No change: the oracle
is wrong there, not this data.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test, Anastasia
Second external re-review returned Spec pass on round 2 (all ten prior
findings addressed, C1/C2 fixed at the root, mechanism claims held
under mutation) and found two blocking items in the I3 guard itself,
plus three recommended hardenings. All verified independently before
fixing.
BLOCKING 1: refYearExplainsAbsence's own doc comment said the id-rank
exclusion covers "6-31 December"; the code implemented `Day() >= 26`.
A typo (26 -> 6), but the wrong kind to have on the one comment this
whole review chain exists to keep honest -- fixed as part of the
rewrite below, not left as an isolated one-character correction.
BLOCKING 2: the guard covered only 6 of the 13 MM-DD values round 1's
own temporal_ef.go changes actually made refYearExplainsAbsence
couple to. Measured, not just reasoned about: running the function's
body against the branch-point engine versus HEAD over the six
reference years flips its verdict on 50 dates across 12-17 through
12-23 (round 1's late-Advent promotion, RG 91 entry 18, a 140-day
change) AND 12-26 through 12-31 (the Nativity-octave promotion, RG
67/68, already guarded). The late-Advent half was unguarded.
No live bug today -- confirmed by regenerating: the ini is
BYTE-IDENTICAL before and after this fix. The only sanctoral entry in
17-23 December is `thomas` (21 December), reached via harvestDate's
`obs` (observed-office) path, never refYearExplainsAbsence's
commemoration-id-trust path at all. Widened the guard to 17-31
December anyway, on the side of the known-safe default
(RankCommemoration) rather than wait for the first real entry in that
range to repeat I3's exact failure shape. The two sub-ranges are NOT
the same strength of evidence, and the doc comment says so explicitly
now: 26-31 December rests on a positive RG 68(d)/(e) citation naming
Thomas Becket and Silvester directly as bare "Commemoratio, no
class"; 17-23 December is a precautionary exclusion with no equivalent
citation -- RG 91 entry 18 ranks the FERIA, not any commemoration
that might coincide with it, and (per defect 2's own finding) a
genuine class-2 feast there would actually WIN against the ferias's
own privilege, so "the day is class-2" does not reliably explain a
class-2 saint's absence here the way it does for the Nativity octave's
two named cases. Recorded as a real asymmetry, not smoothed over.
RECOMMENDED 3: rank = commemoration is now pinned for all four entries
this task's two review rounds touched -- romanus, eusebius-confessor
(C2), thomas-becket, silvester (I3) -- not just their presence and
date. `git grep` before this commit returned zero hits for
thomas-becket or silvester rank anywhere in *_test.go; a future
regeneration could have rewritten either back to class-4, the exact
I3 failure mode, with the suite green throughout.
RECOMMENDED 4: TestTridentineNamesPreservedAcrossRegeneration
rewritten on both axes the review found loose. It counted name.pl
only -- a hardcoded single language, the identical "whitelist of two"
mistake C1's own generator fix exists to stop repeating, just moved
into the test instead. Now DISCOVERS every name.<lang> key actually
present in the data (so a regeneration dropping name.la, or losing a
future name.de, is caught the same way as name.pl) and asserts the
discovered language set is exactly {en, pl} -- not just each count.
The >= 315 floor had 7 entries of slack (the review proved 6 missing
Polish names still passed it); tightened to the exact, independently
verified true count (322), zero slack.
RECOMMENDED 5: the 25 December Anastasia gap and its cause are now
recorded, not just her absence. Two compounding, independently
checked causes: fetchOnce reads only `data[0]`, missalemeum's FIRST
of Christmas Day's three Masses, so a commemoration attached to a
second or third Mass (the calendarium's own "In secunda Missa:
Commemoratio S. Anastasiae Mart.") is structurally invisible to this
harvester for ANY date, not just this one -- but ALSO, checked live,
missalemeum's own "commemorations" list is empty on all three of the
date's records, not just the first, so a fetchOnce rewritten to merge
all of a date's Masses would still not recover her. Documented at
both fetchOnce's own definition and the PRIMARY-SOURCE NOTE, since
the two facts belong to different questions (a real code limitation
worth fixing someday vs. an upstream data gap this generator cannot
close at all).
Witnesses: TestTridentineCommemorationRanksPinned (new),
TestTridentineRomanusAndEusebiusPresent (extended with rank),
TestTridentineNamesPreservedAcrossRegeneration (rewritten). No pre-fix
failure to report for the two new/tightened tests specifically --
these are regression GUARDS against a bug class already fixed in
round 2, not fixes for a currently-red state; their value is in what
they would now catch, not what they catch today. internal/caldata/
tridentine-calendar.ini is NOT regenerated by this commit -- confirmed
byte-identical before and after re-running the generator, exactly as
"no live bug today" predicts.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
External review of the seven-defect fix (round 1) confirmed all seven
correctly and structurally fixed, then found five further problems in
what shipped alongside, two of them critical. All five verified
independently before being fixed, not applied on the review's say-so
alone -- see each item below for the primary-source check performed.
CRITICAL 1: the regeneration destroyed all 322 Polish display names.
main() preserved name.la across a regeneration (missalemeum has no
Latin titles) but had no equivalent for name.pl, and never emitted
one -- name.pl count went 322 -> 0 (confirmed: `git show
2386a45:internal/caldata/tridentine-calendar.ini | grep -c
'^name.pl'` = 322; the pre-round-2 file = 0). naming.CelebrationName's
own name[lang] -> name.en fallback then silently substituted English
for every Polish EF display, reaching mobile.Day(date, "ef", version,
"pl") -- a shipped dlectio entry point -- with no error anywhere in
the chain, and nothing in this repo's test suite asserting any
name.* field at all. Fixed at the root, not by re-adding name.pl
specifically: `entry.la` (one hardcoded language) is replaced by
`entry.otherNames map[string]string`, populated from every
"name.<lang>" field already present except name.en (English always
comes fresh from missalemeum) and re-emitted verbatim, sorted for
deterministic output -- a third or fourth language added later
survives a regeneration without this function changing again.
CRITICAL 2: St Romanus was deleted, and St Eusebius (14 August)
excluded, on a primary-source claim the primary source itself
contradicts. The exclusion cited the calendarium's 9 August row as
reading only "Vigilia, III classis.", no "Com." line -- checked
against ONE of the three local Missal scans,
"1962-06-23,...LT.pdf", an ELECTRONIC TRANSCRIPTION. The other two,
PHOTOGRAPHIC scans of the actual 1962 Missale Romanum, both carry it:
"missale-romanum-1962.pdf" calendarium, 9 August: "XVI d V 9
Vigilia, III classis, Commemoratio S. Romani Mart.", with the
saint's own proper text elsewhere in the same scan ("Et fit
commemoratio S. Romani Mar-") and its own back-of-book index
("Romani Mart., 9 augusti ... 621"). The transcription silently
drops vigil commemorations generally (also missing there, present in
both photographic scans: 7 August Donatus, 25 December Anastasia).
14 August's "St. Eusebius" is the identical shape (calendarium: "XI
b XIX 14 Vigilia, II classis, Commemoratio S. Eusebii Conf.") and
genuinely a DIFFERENT person from 16 December's "St. Eusebius, Ep.
et Mart." (calendarium: "V XVII S. Eusebii Ep. et Mart., III
classis.") -- a Confessor and a Bishop-and-Martyr, not the same
saint duplicated. knownSpuriousComm (both entries) is removed
outright; slugOverride gains "08-14/eusebius" -> "eusebius-confessor"
so the two no longer collide by slug. Going forward: the
photographic scans are the primary source; the electronic
transcription is a convenience index only; where they disagree, the
scan wins -- recorded in the generator's own comments, not just here.
IMPORTANT 3+4: Thomas Becket (29 Dec) and Silvester (31 Dec) were
silently promoted to class-4 by a hidden coupling. RG 68(d)/(e): "die
29 decembris, fit commemoratio S. Thomae Episcopi et Mart.; die 31
decembris, fit commemoratio S. Silvestri I Papae et Conf." -- both a
bare "Commemoratio" with NO class of their own; the DAY they fall on
(within the Nativity Octave) is II class, confirmed in the same
calendarium row. refYearExplainsAbsence calls calendar.Compute and
trusts a commemoration's own id-rank when the temporal day looks
class-1/2-strong; after this task's own earlier fix promoted 26-31
December from class-4 to class-2 (RG 67/68), that trust flipped for
these two from "not explained" to "explained" purely as a side
effect of an unrelated temporal_ef.go change -- the generator's data
inference reads the engine's own computed ranks, so a temporal_ef.go
rank change can silently rewrite generated data. Fixed narrowly (6-31
December excluded from ever trusting the id-rank, citing RG 68(d)/(e)
directly) and the coupling itself documented in
refYearExplainsAbsence's own doc comment as a standing hazard for the
next temporal_ef.go rank change, not just this one instance.
Separately, the SAME function's doc comment overstated its own
guarantee ("ANY class-1..4 saint would lose there") -- false for its
Lent/Passiontide limb, where a III-class privileged feria does not
beat a I- or II-class feast (RG 109(e) is privilege over an
equal-or-lower class only) -- and the "commemoration id names the
saint's TRUE rank" claim at the call site was falsified by its own
worked example (St Blaise's id claims rank 4, and he is still
correctly ruled RankCommemoration). Both rewritten to describe this
as the rank-blind sampling heuristic it actually is, not a rubric
evaluator.
IMPORTANT 5: the Purification's own citation, strengthened. Three
fixes to classOf's doc comment, no data change (the tag stays
"lord", per round 1's own decision): the colitur cross-reference is
removed (colitur bootstraps from lectio and was reading the same
oracle a second time, not independent corroboration, and citing a
sibling project's in-flight branch is not itself an argument); the
rule that actually makes the occurrence pattern diagnostic is now
named -- RG 91 entry 14 ("Festa Domini II classis") above entry 15
("Dominicae II classis") above entry 16 ("Festa II classis... quae
non [sunt Domini]"), each verified directly against the scan, not
paraphrased; RG 120(b) is recorded as genuine primary-text
counter-evidence ("Adhibetur color albus... b) B. Mariae Virg.,
etiam in benedictione et processione candelarum die 2 februarii" --
2 February filed under the white-colour rule's OWN "B. Mariae Virg."
heading, separate from 120(a)'s "Domini" heading), and RG 112(b)
("Officium, Missa aut commemoratio de dominica excludit
commemorationem... de festo vel mysterio Domini, et vicissim") is
cited as independently backing the empty commemoration list. A new
committed fixture test replaces reliance on the report alone, since
the deciding years (2 February on a Sunday) fall outside this repo's
committed 2026-2027 oracle snapshot: TestPurificationBeatsFebruarySunday
(internal/calendar/precedence_ef_repro_test.go), five independently
fetched years. One of the years this reasoning is sometimes quoted
against, 2036, is corrected in passing: 2 February 2036 is in fact a
Saturday, not a Sunday (`date -d 2036-02-02 +%A`) -- checked here
rather than repeated, 2042 used instead.
Witnesses (internal/caldata/caldata_test.go):
TestTridentineNamesPreservedAcrossRegeneration,
TestTridentineRomanusAndEusebiusPresent (replaces
TestTridentineNoSpuriousRomanus, whose own name asserted the
now-corrected wrong claim). Pre-fix failures (captured against the
committed pre-round-2 state, commit 50e3970):
name.pl coverage = 0 entries, want >= 315
assumption-of-the-blessed-virgin-mary: name.pl = "", want the preserved Polish name
romanus missing: the calendarium's photographic scans both carry "Commemoratio S. Romani Mart." on 9 August
missing "eusebius-confessor" (08-14)
internal/caldata/tridentine-calendar.ini regenerated from the ORIGINAL
branch-point data (`git show 2386a45:...`), not from this session's
own already-damaged intermediate file -- regenerating from an
already-corrupted source would have preserved nothing, since the
preservation mechanism can only preserve what is actually on disk
when it runs. Verified directly (not merely re-tested): all 322
name.en/name.pl values byte-identical to the branch point; 15 rank
fields and 2 class fields differ (the round-1 Lenten-rank and
class-tag fixes, unchanged by this round); 5 new slugs added
(agnes-secundo, boniface-martyr, eusebius-confessor, evaristus,
theodore); 0 slugs removed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Disagreement with the task brief, found and corrected before landing,
not after: the brief's defect 7 named the Purification (2 February) as
"wrongly tagged lord... a BVM feast", citing the calendarium's own
title, "IN PURIFICATIONE B. MARIAE VIRG." That citation is accurate --
but the tag's actual job is not naming or colour categorisation, it
exists solely to drive one occurrence rule ("a II-class feast of the
Lord takes an occurring Sunday's place outright"), and on THAT
question the title is not the decisive evidence.
Checked directly against missalemeum (this data's own oracle, live,
not archival): the Purification takes a II-class Sunday's place
OUTRIGHT, commemorations EMPTY (2014-02-02, 2020-02-02, 2025-02-02,
all fetched fresh) -- the exact "festum Domini" pattern. Control: the
Nativity of the BVM (8 September, an undisputed ordinary Marian
feast) on a Sunday (2019-09-08) shows the opposite shape, the Sunday
observed and the feast merely commemorated. The Purification's
occurrence behaviour does not match an ordinary BVM feast's.
Independent corroboration, found while comparing lectio's output
against colitur's (the sibling engine this task's brief points to):
colitur's own git history shows the identical retag, made and then
reversed within the same review cycle it landed in -- cab8b07 "retag
the Purification... as BVM, not Lord" (the brief's own reading),
followed by 7d3b5ec "follow the oracle on the Purification" (the
reversal, on the same live evidence independently re-derived here).
That commit records the calendarium-title counter-evidence too and
calls it "a genuinely contested point... a different project could
reasonably rule the other way" -- not a clean-cut error either
direction, but the weight of evidence for THIS tag's actual purpose
favours keeping it lord.
most-holy-name-of-mary (the OTHER entry the brief named) is untouched
by this reversal and stays retagged away from lord -- its own
occurrence behaviour matches the ordinary-BVM pattern, not contested
by either project.
internal/caldata/tridentine-calendar.ini regenerated; only the
Purification's class field changes back (empty -> lord), 6 civil days
2005-2050 (every year 2 February falls on a Sunday: 2014, 2020, 2025,
2031, 2042, 2048) revert to matching what the branch point (and
colitur's own current state) already had -- net zero change to
PUBLISHED output on this specific point relative to before this task
started, despite the intermediate wrong-then-reverted state along the
way.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(defect 7)
Six root-cause fixes to the generator, all in scripts/gen-sanctoral-ef.go,
then a full regeneration of internal/caldata/tridentine-calendar.ini
(323 -> 325 entries) against live missalemeum data:
1. Rank misinferred as "commemoration". A saint never OBSERVED in any
of the six reference years was unconditionally hardcoded to
RankCommemoration. 15 III-class feasts, all falling 6 March - 5
April, were always demoted by Lent's own privileged ferias in
every reference year -- a sampling artifact, not their true rank.
Fixed properly, not by hardcoding the 15: the commemoration
object's own id names the SAINT's true rank (idParts already
extracted it; only the colour half was kept before). But trusting
that rank unconditionally for every commemoration-only entry
over-corrected: some saints (St Blaise, St Canute, and others)
really are without an independent Mass in the 1960-reformed books,
demoted even on an ordinary, unprivileged day -- live-confirmed
against missalemeum, not inferred. refYearExplainsAbsence
distinguishes the two: the id's rank is trusted only when every
reference year's OWN temporal day (ignoring sanctoral data
entirely) was already strong enough to explain the demotion --
I/II class, an Ember day, or a privileged Lent/Passiontide feria.
A single unprivileged-day counter-example keeps RankCommemoration.
2. Two silent slug collisions. entries (the generator's global map)
is keyed by slug alone; two different fixed dates whose English
titles are identical ("St. Agnes" 21 Jan and 28 Jan; "St.
Boniface" 5 June and 14 May) silently dropped the second one add()
ever saw. Fixed at the dedup itself: a same-slug collision on a
DIFFERENT date is now disambiguated (a small curated slugOverride
for these two -- 28 January is the traditional "secundo"
commemoration of the same saint; 14 May's Boniface is a different
martyr from 5 June's Boniface of Mainz) rather than dropped.
3. Two early-exit bugs in harvestDate, both replaced with `continue`:
returning on the FIRST reference year that showed an observed
office discarded commemorations only visible in a LATER year (St
Theodore, 9 November, missing only from 2025, the first year
tried); the Christ-the-King skip used to abandon the whole date
outright instead of only that one movable year (St Evaristus, 26
October, invisible because 2025 -- tried first -- happens to be
the one reference year Christ the King lands there).
4. A new class of artifact the fix for (2) exposed rather than
caused: a movable-transfer feast displayed on whatever civil date
it actually landed on in one reference year (St Joseph pushed to
20 March by a Sunday of Lent; the Annunciation deferred past Holy
Week; All Souls moved to the Monday; St Matthias shown on the 25th
in a leap year) was being harvested as if it were a genuine
fixed-date office for THAT transferred date. idHomeDate compares
info.id's own embedded date against the mmdd being queried
(live-confirmed: 2023-03-20's id is "sancti:03-19:1:w") and skips
a mismatch.
5. classOf's substring matching, checked against the calendarium's
own verbatim titles: "purification" was never a Lord check at all
(calendarium "IN PURIFICATIONE B. MARIAE VIRG.", a BVM feast) and
is removed; "holy name" alone matched both "Holy Name of Jesus"
and "Most Holy Name of MARY" (calendarium "Sanctissimi Nominis
Mariae") and is now conditioned on the title not also naming Mary;
"baptism" is a new case -- "Commemoration of the Baptism of the
Lord" (13 January) ends "of THE Lord", not "of OUR Lord", the only
suffix classOf checked, so it was missing the marker entirely.
6. One curated exclusion, NOT a generator bug: missalemeum's own "St.
Romanus" commemoration on 9 August has no calendarium support (the
row there reads only "Vigilia, III classis.", no "Com." line) --
an upstream data quirk, recorded in knownSpuriousComm rather than
silently reproduced. "St. Eusebius" on 14 August (already known,
register M6) gets the same treatment for the same reason.
Witnesses (internal/caldata/caldata_test.go): TestTridentineClassOfLord,
TestTridentineLentRankNotCommemoration,
TestTridentineGenuineCommemorationStaysCommemoration,
TestTridentineNoMissingEntries, TestTridentineNoSpuriousRomanus,
TestTridentineNoTransferArtifacts, plus TestTridentineLoads' own
Purification class assertion corrected from its previous (wrong)
"lord" expectation. All fail against the pre-fix ini with messages
such as:
purification-of-the-blessed-virgin-mary: class = "lord", want ""
sts-felicitas-perpetua: rank = "commemoration", want class-3 (not commemoration)
missing "theodore" (11-09)
romanus present: the calendarium's 9 August row has no Com. line to support it
See the report for the full set.
internal/caldata/tridentine-calendar.ini is regenerated output
(go run scripts/gen-sanctoral-ef.go against live missalemeum data),
not hand-edited.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Per the review, the apostle title was split ("św. X, apostoła" vs
", Apostoła") and the evangelist title too (Mark/Matthew already
"Ewangelisty", John/Luke lowercase). Standardise both high author-ranks
to uppercase -- all apostles "Apostoła"/"Apostołów", all four evangelists
"Ewangelisty" -- matching the entries that were already capitalised. The
functional titles (biskupa, prezbitera, męczennika, doktora, dziewicy...)
stay lowercase, as they consistently were.
|
| |
|
|
|
|
|
|
|
|
|
| |
The universal [saints-philip-and-james-apostles] entry carried
name.pl = "Najświętszej Maryi Panny, Królowej Polski" -- Our Lady Queen
of Poland, the Polish NATIONAL feast that supersedes Philip & James on
that date, pasted in during the pl backfill instead of translating the
universal celebration. name.la and the readings correctly say Philip &
James. Set name.pl = "świętych Apostołów Filipa i Jakuba" (matching the
"świętych Apostołów Piotra i Pawła" style). Scanned the rest of both
universal calendars for other national-feast contamination -- none.
|
| |
|
|
|
|
|
|
|
|
| |
Reviewed the four EF names missalemeum never returns. George (Martyr),
Stanislaus (Bishop and Martyr), and Zephyrinus (Pope and Martyr) were
correct as best-guessed -- flags cleared as-is. Alexander & Companions
had enumerated only three of the martyrs (omitting Juvenal); since the
English name is the shortened "& Companions", match it with the faithful
Polish "śś. Aleksandra i Towarzyszy, Męczenników". No more # review-pl
flags; all 322 EF names stand.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The EF (traditional) calendar showed English memorial names even with
the UI switched to Polish, because tridentine-calendar.ini carried only
name.en. Add name.pl to all 322 sanctoral entries.
Source: missalemeum.com's Polish propers (/pl/api/v5/proper/DATE), the
authoritative Polish traditional-calendar naming -- paired to each entry
by the celebration id shared across its /en/ and /pl/ responses, fetched
across two years so saints superseded by a Sunday in one year are still
resolved. 318 entries matched that way; a missalemeum source typo
("Dokotra" -> "Doktora") is corrected in the two it affected.
The remaining 4 -- George, Alexander & Companions, Stanislaus,
Zephyrinus -- are never returned by missalemeum in the fetched years
(superseded every time); they carry a best-guess Polish name tagged with
a "# review-pl" comment for a human to verify.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The universal calendar of saints can now be refreshed or replaced without a
rebuild: if ~/.config/lectio/sanctorale/of.ini (OF) or ef.ini (EF) is present
and parses, caldata.Base uses it instead of the embedded calendar; a missing or
malformed file falls back to the embedded default, so the binary stays
self-contained and correct out of the box. Local diocesan/national additions
keep layering on top via calendars/ + `use` (unchanged). The temporal cycle and
precedence rules stay in code -- only the sanctorale is data.
- caldata.SetSanctoraleDir hook (mirrors bible/naming/i18n); Base() prefers the
external file per form. config.SanctoraleDir(); wired in the CLI, TUI and web
entry points. Tests cover override, no-file, and malformed-file fallback.
- README: new "Calendar of saints" section (two tiers: overlay via `use`,
replace via sanctorale/<form>.ini); config comment notes the override.
|
| |
|
|
|
|
|
|
|
|
|
| |
Add name.pl to the 132 universal-calendar celebrations that lacked it, so all
212 now carry Polish names (was 80). They follow the existing liturgical style
-- genitive case, "św. <name>, <title>" / "świętych ...", feast events in the
genitive -- hand-curated from standard Polish nomenclature and keyed to each
entry's name.en/name.la. Polish patrons use their Polish forms (Adalbert ->
św. Wojciech, John of Kanty -> św. Jana Kantego, Hedwig -> św. Jadwigi
Śląskiej). Verified: feast/solemnity saints render their Polish name as the
day header, optional memorials appear as Polish options in the day's others.
|
| |
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes found by validating the offline engine per-day vs the LiturgicalCalendar
API (OF) and missalemeum (EF) across 2005-2050. OF calendar is now 0 real
errors in the forward window (season/cycle already perfect).
OF precedence/transfer (calendar):
- Ash Wednesday and Holy Week Mon-Wed are band-2 privileged, so a coinciding
feast (Chair of St Peter on Ash Wednesday) is suppressed, not observed.
- Solemnities transfer out of Holy Week / the Easter octave: the Annunciation
defers to the Monday after the 2nd Sunday of Easter; St Joseph is anticipated
to the Saturday before Palm Sunday; the Nativity of St John the Baptist moves
to Jun 23 when a Lord's solemnity (Sacred Heart / Corpus Christi) falls Jun 24.
- Within a precedence band, a solemnity of the Lord/BVM outranks a saint's
(dignity tiebreak) rather than losing an alphabetical slug tie.
- Perpetua & Felicity corrected optional -> obligatory memorial.
OF readings resolution (bible.OFRef + lectionary data):
- Verse-accurate Hebrew->Vulgate psalm mapping incl. the split psalms
(9/10, 114/115, 116, 147); "+" verse joins and abbreviated ranges ("127-28")
normalized; single-chapter books (2/3 John, Jude) get chapter 1.
- Cleaned harvest artifacts from of-lectionary.ini (descriptive-suffix gospels,
"or Year A" alternates, "*"/"[Vulg.]"/bracket markers, slash abbreviations);
Joel/Malachi/Zechariah/Esther book-versification citations fixed to Vulgate.
- Split a merged Ps 15:10/11 row in vul.tsv. Result: 0 unresolvable OF readings
over 2557 rendered days (cycles A/B/C, varied Easters).
EF: the Octave of Pentecost (Whit Monday-Saturday) is red, not white.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A memorial marked 'PROPER Gospel' (Guardian Angels, Mary Magdalene, Our Lady of
Sorrows, Joseph the Worker, the Passion of John the Baptist, Sts Martha/Mary/
Lazarus) uses the FERIAL first reading + its proper gospel; one marked 'PROPER
First Reading' (Barnabas) uses its proper first + the ferial gospel. Previously we
imported catholic-resources' *suggested* first for the gospel-proper ones, which
differs from what USCCB publishes.
- readings.go: when the observed's inline Mass has only a proper gospel (or only a
proper first), fill the missing reading/psalm from the day's ferial and sort into
canonical order. A fully-proper feast is untouched. Factored out ofFerial().
- gen-of-sanctoral-readings.py: keep only the strictly-proper part per the CR
source-note.
Verified vs USCCB: Guardian Angels (2025-10-02) now = Nehemiah 8 / Ps 19 /
Matt 18:1-5,10 exactly. Updates TestUniversalSanctoralReadings.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(date-based)
Completes the seasonal weekday lectionary. The Christmas-season weekdays sit on
the AdventChristmas page in a SHIFTED 6-column layout (Day in c[1], not c[2] like
Advent's 7-column) -- the generator now finds the Day column wherever it is. Adds
date-based slugs to temporal.go: christmas-dec-<29..31> (octave), christmas-jan-<2..7>
(before Epiphany), christmas-after-epiphany-<weekday> (before the Baptism). Fixes
the christmas-octave-fri coverage gap and the by-date/by-week collision.
362/362 seasonal ferial-days render across 2026-2029 with 0 gaps. Extends
TestOFSeasonalFerials. All of Advent/Lent/Easter/Christmas weekdays now CR-sourced;
only the Commons remain (optional -- memorials default to the ferial).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
late Advent
Re-sources the proper weekdays of Advent (weeks 1-3), Lent, and Eastertide from
catholic-resources.org (scripts/genlect-of-season-ferials-cr.py; single-cycle, so
both -I/-II keys get the same readings). The diff caught real niedziela defects:
- Easter weekday first readings contaminated (easter-3-mon had 1 Cor 15 instead
of Acts 6:8-15; easter-4-thu had Rev 12 instead of Acts 13:13-25).
- The Easter octave weekdays (Easter Mon-Sat) had no readings at all.
- Stray psalm-numbering artifacts (147A(146), Ps42(41)) cleared.
Late Advent (Dec 17-24) is proper to the DATE, not the Advent week, so temporal.go
now keys those days 'advent-dec-<day>' (fixing the same by-date/by-week collision
as the OT numbering) and the generator supplies them (Dec 17 = the genealogy
Matt 1:1-17; Dec 24 = the Benedictus).
157 seasonal ferial-days render across 2026-2028 with 1 residual gap
(christmas-octave-fri). Adds TestOFSeasonalFerials, credits the source, bumps to
0.43.0. Christmas-season weekdays (Dec 29-31, Jan 2-5) remain niedziela-sourced
(CR's shifted layout + Epiphany-dependent assignment -- a documented follow-up).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2nd readings)
The niedziela harvest had dropped the SECOND reading on 271 of ~299 Sunday-cycle
entries (a Sunday Mass is first/psalm/second/gospel). scripts/genlect-of-sundays-cr.py
re-sources the temporal Sunday & solemnity lectionary (Ordinary Time, Advent,
Christmas, Lent, Easter, Trinity, Corpus Christi, Sacred Heart, Christ the King;
all three cycles A/B/C) from catholic-resources.org, keyed by liturgical position,
and merges the complete readings into of-lectionary.ini.
- Also corrects ~6 contaminated Sunday first readings the niedziela by-date
harvest had picked up (ordinary-sunday-21-B had a Marian Prov 8; advent-2-A had
the Immaculate Conception's Gen 3; Christ the King B/C, Trinity C, Pentecost,
Ascension/7th-of-Easter were wrong).
- Content-validated: every changed first reading verified against the old one
(all changes are correct fixes or the identical passage, book spelling aside).
- Handles source quirks: hyphen/en-dash/ABC cycle markers, verbose Year-A
solemnity names, 'opt:' cycle-proper alternates, '[2025: Corpus Christi]'
displacement notes appended to names, Palm Sunday (cycle-independent
first/second, per-cycle Passion gospel kept), and abbreviation variants
(Jon/Is/Mt/Act/Zac...).
157/157 Sundays render first+psalm+second+gospel across 2026-2028. Adds
TestOFSundayCompleteReadings, credits the source in NOTICE, bumps to 0.42.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
OF feasts, solemnities, and proper-reading memorials had no readings of their own
and fell back to the day's ferial (Barnabas showed the ferial instead of Acts 11;
Our Lady of Sorrows / the Guardian Angels showed the ferial instead of their
proper gospel). scripts/gen-of-sanctoral-readings.py scrapes catholic-resources.org's
Proper of Saints table and inlines reading.first/psalm/second/gospel into
roman-calendar.ini for the 41 universal-calendar celebrations marked PROPER (plus
every feast/solemnity); memorials that draw on a Common keep the ferial, which is
the OF default. Handles the source quirks: 'or' alternatives (takes the first),
cycle-specific A:/B:/C: gospels (takes A), lectionary # refs, and vigil-vs-day
(keeps the day Mass). All 41 render; citations only. Adds
TestUniversalSanctoralReadings, credits the source in NOTICE, bumps to 0.41.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Ordinary Form ferial lectionary had two linked defects, both from harvesting
niedziela.pl by date: (1) post-Pentecost Ordinary-Time ferial WEEK NUMBERS were
one too high (temporal.go counted back from Christ the King using the weekday
itself, not its preceding Sunday, so a ferial took the next week's number), and
(2) ~17 ferial keys held a SAINT's readings (stored when a saint displaced the
ferial on the queried date, e.g. week 22 smeared with a Marian Prov 8/John 2),
plus 16 weekday slots were missing entirely.
- temporal.go: number a span-2 ferial from its preceding Sunday. Verified
388/388 ferial-week agreement with calapi across 2026-2028.
- scripts/genlect-of-cr.py: regenerate the Ordinary-Time ferial lectionary
(first/psalm/gospel, both years, all 34 weeks) from catholic-resources.org
(Fr. Felix Just, S.J.), which is keyed by liturgical position (immune to
by-date contamination) and complete. Citations only; text still rendered from
the public-domain corpora. of-lectionary.ini OT ferials now 408 (was 392).
Fixes ~17 contaminated entries + 16 gaps + the week-numbering audit item. Psalms
already share modern numbering, so no conversion. Adds TestOFOrdinaryTimeFerialWeek.
Credits catholic-resources.org in NOTICE. Bumps to 0.40.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Audit of the OF sanctoral vs calapi's full celebration list (2026-2028) found
saints that calapi only ever shows as 'commemoration' in a privileged season
(Lent, late Advent, the Christmas octave) were dropped by the generator, and
'first-year-wins' froze a stale rank.
- gen-sanctoral.go: map calapi 'commemoration' -> optional memorial; keep the
HIGHEST rank per saint across an expanded 2025-2029 reference span (so a saint
is seen at its true rank on an ordinary weekday, e.g. Polycarp as a memorial
when Feb 23 falls in Ordinary Time).
- Recovers 15 saints: Polycarp, Perpetua & Felicity, John of God, Frances of
Rome, Patrick, Cyril of Jerusalem, Turibius, Isidore, Vincent Ferrer, Peter
Canisius, John of Kanty, Thomas Becket, Sylvester I, and others (197->212).
- Corrects St Irenaeus (June 28) optional -> obligatory memorial (2022 change).
Verified vs calapi per-day 2026-2028: remaining diffs are only the 3 skipped
movable memorials and name-phrasing of temporal days.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Generate internal/caldata/tridentine-calendar.ini from missalemeum's per-date
proper API (Divinum Officium 1962 data) via scripts/gen-sanctoral-ef.go: each
fixed date's observed saint with rank, colour, English name and proper
Epistle/Gospel citations, plus sancti commemorations. Multiple reference years
are tried per date so a saint occulted by a Sunday in one year is still captured
observed in another; saints never observed are ranked commemoration. Feasts of
the Lord are marked class=lord. Latin names hand-curated (missalemeum has none).
Adds TestTridentineLoads, credits missalemeum in NOTICE, bumps to 0.38.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
transferred-fixed
- Skip ALL dates the temporal engine owns (Sundays + its solemnities/feasts), so
Christ the King / Trinity no longer leak into the sanctoral as duplicate
fixed-date entries; saints are captured on their weekday occurrences.
- Explicit skip-list for genuinely movable memorials (Mary Mother of the Church,
Immaculate Heart, BVM-on-Saturday) that a fixed-date calendar cannot represent
-- a documented gap needing temporal-engine support.
- 'first year wins' keeps a transferred-but-fixed feast (Annunciation Mar 25) on
its proper date. Lord-feast class inference fixed earlier.
Calendar rank vs calapi: 2026 1/86, 2027 2/86, 2028 2/92 mismatches (~98-99%);
residual = the skipped movable memorials.
|
| |
|
|
|
|
|
| |
More true-ferial years per position; 359/365 days of 2026 now resolve. The 6
residual gaps are rare pre-Lent Ordinary-Time positions (weeks 3/4/9) that never
occurred as a true ferial in the harvestable past (niedziela publishes no future
years) -- an irreducible limit of date-based harvesting, documented.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Validation vs USCCB (Catholic Readings API) caught two bugs:
- Obligatory memorials were keyed by their own slug, freezing ONE year's ferial
(a memorial's fixed date lands in a different Ordinary-Time week each year), so
most weekday memorials showed the wrong week's reading. Now memorials are
skipped in the harvest and fall back to the day's ferial slug at runtime -> the
correct week's reading. (Proper-reading memorials show the permitted ferial;
their propers are a later refinement.)
- gen-sanctoral classOf missed feasts of the Lord whose title says 'Holy Cross'
(not 'of the Cross') etc., so the Exaltation of the Cross (and Transfiguration,
Presentation) did not displace an Ordinary Sunday. Fixed the Lord/BVM class
inference; the Cross now correctly displaces the Sunday and shows its proper.
USCCB agreement on the sampled 2025 window rose to ~92%; residual diffs are
proper-reading memorials (Guardian Angels/Sorrows gospels), citation-granularity
(same reading, different verse range), and week numbering around feast-displaced
Sundays -- documented as known refinements.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Populate the OF General Roman Calendar sanctoral and extend the OF readings to
weekdays and sanctoral days.
Sanctoral calendar (roman-calendar.ini: 29 -> 202 celebrations):
- scripts/gen-sanctoral.go generates it from calapi.inadiutorium.cz (authoritative
General Roman Calendar) -- English name/rank/colour from general-en, Latin from
general-la, Polish from niedziela DayInfo (obligatory celebrations). Fixed dates
the temporal engine already computes are excluded. VALIDATED: my engine's
observed rank agrees with calapi on all 86 obligatory sanctoral days of 2026
(0 mismatches).
Precedence fix (precedence.go): an optional memorial no longer displaces the
weekday as the DEFAULT observed celebration (it sorts below the ferial, shown as
an option) -- matching the General Roman Calendar / calapi.
Readings (of-lectionary.ini: 254 -> 1018 entries) via genlect-of.go:
- Weekday (ferial) 2-year cycle I/II, keyed <ferial-slug>-<WeekdayCycle>, harvested
from niedziela over 2020-2025 (multiple years per cycle; retry-on-failure so a
glitch year never poisons a key; only TRUE ferials + optional-memorial days,
where niedziela shows the ferial).
- Obligatory memorials keyed by their OWN slug (niedziela shows their proper, e.g.
Barnabas -> Acts 11, or the ferial for memorials without a proper) -- never
miskeyed to a ferial position.
- caldata.Readings: OF resolves slug+SundayCycle | slug+WeekdayCycle, else a
memorial falls back to the day's ferial readings.
- Source-glitch normalisation (1J->1 J, PnP->Pnp).
books.ini: canonical names "Song of Solomon" and "The Acts" added as their own
[en] forms (ToEnglishRef emits the canonical; it must resolve). Fixes ~32
cross-chapter Song-of-Songs/Acts citations.
Coverage: 359/365 days of 2026 render (98.4%); 6 residual ferial positions never a
true-ferial in 2020-2025. EF sanctoral and OF psalm renumbering still pending.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Task 2. scripts/genlect-of.go harvests niedziela over the PAST cycle-equivalent
years 2023(A)/2024(B)/2025(C) -- niedziela only publishes ~6 weeks ahead, so the
future 2025-2027 span was unfetchable; the 3-year cycle repeats, so a liturgical
position's cycle-A readings are identical whether they fall in 2023 or 2026.
Produces internal/caldata/of-lectionary.ini: 254 entries (A=86, B=87, C=81),
keyed <slug>-<cycle>, citations English-canonical via ToEnglishRef.
Also: books.ini [en] Matthew gains "Mat" (ToEnglishRef maps Polish Mt->Mat; now
resolves and displays as Matt). of_test.go assertion relaxed to accept either
spelling.
KNOWN GAP: 8 cross-chapter range citations (e.g. Sirach 27:30-28:7, John
18:1-19:42) don't yet resolve -- the bible ref parser handles semicolon groups
but not a dash-range spanning a chapter boundary. Fix next.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
normalizeSigla treats ';' as a group separator so SplitRef resolves each
chapter; FormatRef renders multi-chapter refs per chapter in the dialect's
sigla. Restored the full Assumption (Judith 13:22-25; 15:10) and St Lucy
(2 Cor 10:17-18; 11:1-2) epistles.
|
| |
|
|
|
|
|
| |
Added 1962 Epistle+Gospel citations (from missalemeum) to the 15 EF feasts;
--liturgy now resolves + renders the reading text via the corpora (drb/wuj),
incl. deuterocanon (Assumption's Judith epistle). Cross-chapter citations use
their primary range pending multi-chapter parser support.
|
| |
|
|
|
|
|
|
| |
computes EF
caldata.Tridentine()/Base(form); Stack(form,dir,use); runLiturgy drops the EF
guard and uses the form's base; rankLabel shows I-IV class; display omits OF
cycles + strips ef- slug prefix for EF.
|
| | |
|
| |
|
|
|
| |
Uses the pure engine + embedded universal calendar; UI-language names, rank,
colour, cycles, and inline proper readings. Added the Assumption's propers.
|
|
|
coverage)
|