summaryrefslogtreecommitdiff
path: root/scripts/genlect-of.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 00:57:07 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 00:57:07 +0200
commit6b7e8dbd26cc34a19a858794a02f1c0ba577a58b (patch)
treef935704d83c555a31a9297e091272983a1fb6fb9 /scripts/genlect-of.go
parente829b48b08c683d9dcef5e4b9502c1c42bc895f1 (diff)
downloadlectio-6b7e8dbd26cc34a19a858794a02f1c0ba577a58b.tar.gz
lectio-6b7e8dbd26cc34a19a858794a02f1c0ba577a58b.zip
fix(of): correct memorial readings (ferial fallback) + Lord-feast class
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.
Diffstat (limited to 'scripts/genlect-of.go')
-rw-r--r--scripts/genlect-of.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/scripts/genlect-of.go b/scripts/genlect-of.go
index 00d0992..32a8525 100644
--- a/scripts/genlect-of.go
+++ b/scripts/genlect-of.go
@@ -115,14 +115,16 @@ func main() {
// A true ferial (incl. optional-memorial days, where the ferial is the
// observed default): niedziela shows the ferial readings.
key = full.Observed.Slug + "-" + full.WeekdayCycle
- } else if full.Observed.Rank == calendar.RankMemorial {
- // An obligatory memorial: niedziela shows its PROPER readings (e.g. St
- // Barnabas, Acts 11) or, for memorials without proper readings, the
- // ferial. Either way it is keyed by the memorial's OWN slug, so it is
- // correctly attributed and never miskeyed to a ferial position.
- key = full.Observed.Slug + "-" + full.WeekdayCycle
} else {
- continue // (unreachable: optional memorials are ferial-observed)
+ // Obligatory memorial: SKIP. Most memorials read the ferial of the
+ // DAY, which varies year to year (the fixed feast date lands in a
+ // different Ordinary-Time week each year) -- so keying by the saint
+ // slug would freeze one year's ferial and be wrong in others. At
+ // runtime the resolver falls the memorial back to the day's ferial
+ // slug, which resolves to the correct week's reading. (Proper-reading
+ // memorials therefore show the ferial, a permitted OF option; their
+ // propers are a later refinement.)
+ continue
}
if seen[key] {
continue // already stored from an earlier year