aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/precedence_ef.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-11 23:41:33 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-11 23:41:33 +0200
commit3583448631c1f1cf0767728d605a858fcb810cfc (patch)
tree83975a3e6afde5b4bae42e3649bb03940716f928 /lib/rites/rite_ef/precedence_ef.ml
parent2ad350e0f97a99f76ac1d2d95cfa210f7393c777 (diff)
downloadcolitur-3583448631c1f1cf0767728d605a858fcb810cfc.tar.gz
colitur-3583448631c1f1cf0767728d605a858fcb810cfc.zip
rite(ef): an impeded I-class Sunday commemorates, not transfers
disposition's Class1 branch was unconditional on rank, so an impeded I-class Sunday (Advent/Lent/Passiontide/Low Sunday) currently transferred like a feast. RG 95 (register lines 323, 363) restricts the right of translation to I-class FEASTS -- RG 91's own table lists Sundays as a separate row (entry 6, line 332) from feasts (entries 11-13, lines 337-339) -- and RG 109(a) (line 374) lists "of a Sunday" as a privileged commemoration category, which presupposes an impeded Sunday stays put rather than moving to another day. Excludes is_sunday_slug losers from the Transfer branch so they fall through to the existing Commemorate (privilege_of loser) branch, which already tags them Privileged via RG 109(a) with no further change. Fires on real dates in the 2005-2050 differential window: 24 December on Advent IV in 2023, 2028, 2034, 2045; 8 December on an Advent Sunday in 2024, 2030, 2041. Verified no previously-passing Transfer assertion used a Sunday-shaped loser (grepped test_precedence_ef.ml, test_calendar.ml -- which uses its own synthetic rite unrelated to Precedence_ef.disposition -- test_colitur.ml, test_validate.ml); confirmed by mutation-reverting the fix and observing exactly the one new test fail, nothing else.
Diffstat (limited to 'lib/rites/rite_ef/precedence_ef.ml')
-rw-r--r--lib/rites/rite_ef/precedence_ef.ml36
1 files changed, 25 insertions, 11 deletions
diff --git a/lib/rites/rite_ef/precedence_ef.ml b/lib/rites/rite_ef/precedence_ef.ml
index 06bbf7c..ff6f991 100644
--- a/lib/rites/rite_ef/precedence_ef.ml
+++ b/lib/rites/rite_ef/precedence_ef.ml
@@ -383,20 +383,34 @@ let disposition ~(winner : Vocab_ef.rank Precedence.candidate)
I-class vigil (Nativity, Pentecost) impeded on its own Sunday/
I-class-feast terms would wrongly transfer instead of vanishing. *)
Precedence.Omit
- else if cel.Celebration.rank = Class1 then
- (* RG 95: only I-class feasts have the right of translation. This is the
+ else if
+ cel.Celebration.rank = Class1
+ && not (is_sunday_slug (Slug.to_string cel.Celebration.slug))
+ then
+ (* RG 95 (register lines 323, 363): only I-class FEASTS have the right
+ of translation -- RG 91's own table lists Sundays as a separate row
+ (entry 6, register line 332) from feasts (entries 11-13, register
+ lines 337-339), so a Sunday is never a "feast" in RG 95's sense, and
+ [is_sunday_slug] (the same marker RG 33's [impedes_vigil] and RG
+ 109(a)'s [privilege_of] already use) excludes it here. This is the
branch that completes Task 7's All Souls fix (register line 334, RG
- 91 entry 8): All Souls is I class and not a vigil, so once it loses
- to an occurring Sunday it reaches here and transfers -- to 3
- November per the register, but WHERE it lands is
- Rite.transfer_target's job (RG 96), not this function's; disposition
- only says THAT it moves. *)
+ 91 entry 8): All Souls is I class, not a vigil, and not a Sunday
+ slug, so once it loses to an occurring Sunday it still reaches here
+ and transfers -- to 3 November per the register, but WHERE it lands
+ is Rite.transfer_target's job (RG 96), not this function's;
+ disposition only says THAT it moves. *)
Precedence.Transfer
else
- (* RG 95's other branch, for everything below I class: "aut
- commemorantur aut penitus omittuntur" -- commemorated or wholly
- omitted. Which of the two survives is RG 108-111's admission count
- ([admit], below), not this function's decision; this only opens the
+ (* RG 95's other branch: "aut commemorantur aut penitus omittuntur" --
+ commemorated or wholly omitted. Reached by everything below I class,
+ AND by an impeded I-class Sunday (excluded from the [Transfer] branch
+ above): RG 109(a) (register line 374) lists "of a Sunday" as a
+ privileged commemoration category, which presupposes an impeded
+ Sunday stays put rather than moving to another day the way a feast
+ does -- [privilege_of] tags it [Privileged] via the same
+ [is_sunday_slug] marker, with no further code needed here. Which of
+ commemorate/omit survives is RG 108-111's admission count ([admit],
+ below), not this function's decision; this only opens the
commemoration, tagged with its real RG 109 privilege via
[privilege_of].