diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-28 01:05:56 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-28 01:05:56 +0200 |
| commit | b12d59b094246163a75f4a4f5ce7f9fb487614bf (patch) | |
| tree | 089e8b060dbf676e433edbb6eb5f10413c9bdae0 /scripts | |
| parent | a3e1781363ab708b25dfa87b39d29e2c4324f5cb (diff) | |
| download | lectio-b12d59b094246163a75f4a4f5ce7f9fb487614bf.tar.gz lectio-b12d59b094246163a75f4a4f5ce7f9fb487614bf.zip | |
fix(of): sanctoral generation — exclude temporal & movable, keep 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.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/gen-sanctoral.go | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/scripts/gen-sanctoral.go b/scripts/gen-sanctoral.go index 561bec0..6d81d66 100644 --- a/scripts/gen-sanctoral.go +++ b/scripts/gen-sanctoral.go @@ -112,6 +112,15 @@ func main() { entries := map[string]entry{} // slug -> entry (first year wins per slug) + // Genuinely MOVABLE celebrations tied to the temporal cycle (no fixed date): + // a fixed-date sanctoral cannot represent them; they need temporal-engine + // support. Skipped here (tracked as a known gap). + movableSkip := map[string]bool{ + "mary-mother-of-the-church": true, // Monday after Pentecost + "the-immaculate-heart-of-mary": true, // Saturday after the Sacred Heart + "the-memorial-of-the-blessed-virgin-mary-on-saturday": true, // any free Saturday + } + // Reference years: cover every weekday so a saint whose date is a Sunday in // one year is captured in another. 2025 is past -> niedziela gives pl names. for _, y := range []int{2025, 2026, 2027} { @@ -134,10 +143,12 @@ func main() { // Christmas, Easter cycle, etc.). Sanctoral dates are ferial (or a // plain Sunday) in the pure temporal. temp := calendar.Compute(t, sel, nil) - if temp.Observed.Rank == calendar.RankSolemnity && t.Weekday() != time.Sunday { - continue - } - if temp.Observed.Rank == calendar.RankFeast { + // Skip dates the temporal engine owns: Sundays and its own + // solemnities/feasts (Christmas & Easter cycles, Christ the King, + // Trinity, Corpus Christi, …). Sanctoral saints are captured on their + // weekday (ferial) occurrences -- and since a fixed date lands on a + // weekday in most years, one reference year suffices per saint. + if temp.Observed.Rank == calendar.RankSolemnity || temp.Observed.Rank == calendar.RankFeast { continue } // Polish name for the observed (obligatory) celebration, 2025 only. @@ -153,7 +164,7 @@ func main() { continue // "ferial" or unknown -> not a sanctoral saint } slug := slugify(c.Title) - if slug == "" { + if slug == "" || movableSkip[slug] { continue } if _, seen := entries[slug]; seen { |
