aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/oracle_ef_test.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 16:35:41 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 16:35:41 +0200
commit25aa1fa687ec714e145a998714c29a5f5728a603 (patch)
tree7dde727167a0fc50ba79f1ffd8e7500af02cd653 /internal/calendar/oracle_ef_test.go
parent5ee75098e1c86fdce195df2e37784c18a2b081a5 (diff)
downloadlectio-25aa1fa687ec714e145a998714c29a5f5728a603.tar.gz
lectio-25aa1fa687ec714e145a998714c29a5f5728a603.zip
feat(ef): Rogation Monday and Tuesday (RG 87)
RG 87: "Litaniae minores seu Rogationes, per se, assignantur feriis II, III et IV ante festum Ascensionis Domini." Easter+36 and +37 are that Monday and Tuesday. RG 128(d) gives them violet -- "for the procession and Mass of the Greater and Lesser Litanies" -- a penitential note inside white Paschaltide. lectio computed no Rogation days at all and showed a plain paschaltide feria. The WEDNESDAY is deliberately not built, and the test asserts its absence. Easter+38 is by construction the Vigil of the Ascension, II class, which wins the day outright; what the rubric asks for there is a COMMEMORATION, and this function returns one office per day. colitur reaches it through a movable-date entry in its sanctoral overlay. Extending the Rogation branch to +38 to "complete" the rubric would silently displace the Vigil, so the test pins the Vigil rather than leaving the omission to a comment. Rank is left as the feria's: these are IV-class days and any III-class saint displaces them, which is what makes the office rare. In 2026 all three are impeded and none appears; 2027 has the Monday unimpeded, and lectio and colitur are byte-identical across 2-5 May that year. One oracle allow-list entry: missalemeum builds no Rogation days either and shows a white feria, so it is the outlier here rather than lectio.
Diffstat (limited to 'internal/calendar/oracle_ef_test.go')
-rw-r--r--internal/calendar/oracle_ef_test.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/internal/calendar/oracle_ef_test.go b/internal/calendar/oracle_ef_test.go
index b765a34..79b31a5 100644
--- a/internal/calendar/oracle_ef_test.go
+++ b/internal/calendar/oracle_ef_test.go
@@ -128,6 +128,26 @@ type efAllow struct {
var efAllowList = []efAllow{
{
+ // RG 87: "Litaniae minores seu Rogationes, per se, assignantur feriis
+ // II, III et IV ante festum Ascensionis Domini." The Monday and
+ // Tuesday before the Ascension are Rogation days, and RG 128(d) gives
+ // violet to "the procession and Mass of the Greater and Lesser
+ // Litanies" -- a penitential note inside white Paschaltide.
+ //
+ // missalemeum builds no Rogation days and shows a plain white
+ // paschaltide feria. It is the outlier here, not lectio: colitur has
+ // had these since its own v0.1 and the two engines now agree day for
+ // day. Rare in practice, because a III-class saint displaces them --
+ // in 2026 all three are impeded and none appears.
+ match: func(date string, day time.Time, o efOracleDay) bool {
+ e := calendar.Easter(day.Year())
+ off := int(day.Sub(e).Hours() / 24)
+ return off == 36 || off == 37
+ },
+ field: "colour",
+ reason: "RG 87 + RG 128(d): the Rogation Monday and Tuesday before the Ascension are violet; missalemeum builds no Rogation days (colitur C8)",
+ },
+ {
// RG 124, "De coloribus paramentorum", section C "De colore rubro",
// both photographic scans word for word: 124(b) gives red to
// "Sanctorum Apostolorum et Evangelistarum, in eorum die natalicio,