aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 12:36:07 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 12:36:07 +0200
commit12edb255c0a2559a59578fd6b5d7784ef04bc386 (patch)
treedac3a618fe63e91f4cf9cae4e17b264f25b8a7dc /lib
parentca4287a6e99e14846f3560106156ef2b1c4b8cf2 (diff)
parente07d0b1f49e1bb006b12a5e612453101d9e641a7 (diff)
downloadcolitur-12edb255c0a2559a59578fd6b5d7784ef04bc386.tar.gz
colitur-12edb255c0a2559a59578fd6b5d7784ef04bc386.zip
merge: sanctoral status audit and RG 113's first sentence
Two corrections argued from the Missal's own calendarium and rubrics, both found by consulting primary sources the project already had but had not fully read.
Diffstat (limited to 'lib')
-rw-r--r--lib/rites/rite_ef/precedence_ef.ml41
1 files changed, 40 insertions, 1 deletions
diff --git a/lib/rites/rite_ef/precedence_ef.ml b/lib/rites/rite_ef/precedence_ef.ml
index dd75765..b69ee52 100644
--- a/lib/rites/rite_ef/precedence_ef.ml
+++ b/lib/rites/rite_ef/precedence_ef.ml
@@ -1532,6 +1532,45 @@ let rg110_find_companion comms companion_slug =
codebase's test suite where commemoration order is asserted at all --
flagged here, and in CLAUDE.md's own "know what each layer cannot see"
section, as a genuine, permanent limit, not merely this fix's own gap. *)
+(* RG 113, sentence ONE -- "Commemoratio de Tempore fit primo loco" (the
+ commemoration of the Season is made in the first place), verified in the
+ electronic transcription docs/research/LT.txt and in both photographic
+ scans; register §6.26.
+
+ §4 of the register and this file's own {!admit} already implement RG 113's
+ SECOND sentence ("In admittendis et ordinandis ALIIS commemorationibus,
+ servetur ordo tabellae praecedentiae") as the admission/ordering criterion,
+ adopted on the ef-rg16a branch. The first sentence was never implemented:
+ ordering was by {!band} alone, for every commemoration including the
+ seasonal one.
+
+ RECONCILED WITH RG 110(c), which says the inseparable Peter/Paul pair is
+ added "ante omnes alias commemorationes". The two rubrics share a technical
+ term: RG 113's own sentence fixes the sense of *aliae commemorationes* as
+ "the ones other than the de Tempore commemoration it has just placed primo
+ loco", and RG 110(c) sits three paragraphs earlier in the same code. Read
+ consistently, RG 110(c) puts the pair at the head of the OTHERS, not ahead
+ of the season. Hence this runs AFTER {!rg110_additions}, not before:
+ RG 110(c)'s own "immediate" adjacency (trigger then companion, fix round 1,
+ register §6.3) is preserved by {!List.partition}'s stability, and the
+ seasonal commemoration then steps in front of the pair rather than
+ splitting it.
+
+ [origin] is the exact discriminator the kernel already carries -- a
+ candidate is {!Precedence.Temporal} iff it came from the rite's temporal
+ cycle, which is what "de Tempore" means. Measured over 1583-9999, no day
+ ever carries more than one such commemoration (RG 112(c), "an Office, Mass
+ or commemoration of the season excludes another seasonal commemoration",
+ holding empirically), so this promotes at most one entry; [partition] is
+ used rather than a find-and-move so the zero case and the never-observed
+ many case are both total without a special branch. *)
+let rg113_season_first
+ (comms : (Vocab_ef.rank Precedence.candidate * Precedence.privilege) list) :
+ (Vocab_ef.rank Precedence.candidate * Precedence.privilege) list =
+ let de_tempore (c, _) = c.Precedence.origin = Precedence.Temporal in
+ let seasonal, others = List.partition de_tempore comms in
+ seasonal @ others
+
let rg110_additions (comms : (Vocab_ef.rank Precedence.candidate * Precedence.privilege * int) list)
~(observed : Vocab_ef.rank Precedence.candidate)
(normal : (Vocab_ef.rank Precedence.candidate * Precedence.privilege) list) :
@@ -1702,7 +1741,7 @@ let admit ~(observed : Vocab_ef.rank Precedence.candidate)
as the non-Sunday II-class case, just with room for two. *)
List.map drop_band (take 2 sorted)
in
- rg110_additions comms ~observed normal
+ rg113_season_first (rg110_additions comms ~observed normal)
(* Task 11: RG 96 -- where an impeded I-class feast lands (docs/research/
rules-register.md §4, "Transfer/translation"). [band] decides who is