aboutsummaryrefslogtreecommitdiff
path: root/data/ef
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 20:15:28 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 20:15:28 +0200
commit3364e23fc49dc5b49576a97315326de030376e31 (patch)
treedf8a1e731f3c0a10c7587fcb15e077415f37840a /data/ef
parent7c3964be29a8902ec6fa3965a67586483313dc4e (diff)
downloadcolitur-3364e23fc49dc5b49576a97315326de030376e31.tar.gz
colitur-3364e23fc49dc5b49576a97315326de030376e31.zip
feat(ef): the Major Litanies -- entity, RG80 transfer, RG109(f) privilege
RG 80 (Caput X, "De Litaniis maioribus et minoribus", A): the Major Litanies are assigned to 25 April, transferred to the following Tuesday (always Easter+2) when that date is Easter Sunday or Easter Monday. RG 81, same division: nothing is done in the Office, only in the Mass. RG 109(f) (Caput XVI): a privileged commemoration. Entity: Commemoration_only, Fixed(4,25), via data/ef/adjustments.sexp's `Add major-litanies` -- RG 81 denies it Office standing entirely, which is exactly what Commemoration_only already means to Precedence.resolve (held out of the observed contest by construction). Rank Class4 deliberately, not Class1, to keep the new RG109(f) privilege branch live rather than shadowed by privilege_of's existing "of a I-class day" branch. Colour Violet by consistency with the sibling Minor Litanies; subject Saint, the same "no special exclusion" default this codebase's other Commemoration_only entries use. Names not primary-sourced, flagged as such in the data file's own comment. Transfer: reuses the existing RG 96 placement machinery (Precedence.disposition's Transfer constructor + Calendar's place_transfers/resolve_with_injected) rather than a new candidate channel -- RG 80's own transfer is structurally the same operation RG 96 already performs for an impeded I-class feast. disposition gains a branch, checked before the Commemoration_only catch-all: the Litanies losing to winner slug "ef-easter-sunday" or "ef-easter-1-monday" is Transfer, not Commemorate. transfer_target gains a branch, checked before the general RG 96 search is even computed, returning Easter+2 directly with no search at all -- necessary, not merely simpler, since Easter+2 is itself I-class and a search from there would walk past the exact day RG 80 names (a commemoration needs no unoccupied day the way a displaced feast does). Privilege: privilege_of's previously-dead RG 109(f) branch now recognises the Litanies' own slug. No other code change -- admit's existing Class1/Class2-Sunday branches already implement "a privileged commemoration categorically takes the slot" correctly, from an earlier task. Full blast-radius measurement, adjudication of the resulting missalemeum divergence, and the mutation proofs are in the task's own report, .superpowers/sdd/2026-08-12-colitur-rg16a/major-litanies-report.md.
Diffstat (limited to 'data/ef')
-rw-r--r--data/ef/adjustments.sexp88
1 files changed, 88 insertions, 0 deletions
diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp
index 740180c..a5e7c6f 100644
--- a/data/ef/adjustments.sexp
+++ b/data/ef/adjustments.sexp
@@ -165,6 +165,87 @@
; (Commemoration_only entries are never the OBSERVED celebration, so this
; entry's OWN colour is never printed by the current pipeline, the same
; note `Edit eusebius-confessor` above makes for its own colour field).
+;
+; `Add major-litanies` -- NEW (ef-major-litanies task). RG 80 (Caput X, "De
+; Litaniis maioribus et minoribus", §A "De Litaniis maioribus"; all three
+; primary documents -- both photographic scans AND the electronic
+; transcription -- word for word, no divergence to adjudicate): "80.
+; Litaniae maiores assignatae sunt diei 25 aprilis; si vero eo die
+; occurrit dominica Paschatis vel feria II post Pascha, transferuntur in
+; sequentem feriam III." RG 81, same division: "81. De Litaniis maioribus
+; nihil fit in Officio, sed tantum in Missa. Earum autem commemoratio non
+; est habenda commemoratio 'de Tempore'." RG 109(f) (Caput XVI, "De
+; Commemorationibus"): "f) de Litaniis maioribus, in Missa" -- a
+; privileged commemoration. The calendarium's own April table (all three
+; documents, e.g. the transcription: "iv c vii 25 Litania Maior. - S.
+; MARCI EVANGELISTAE, II classis.") prints "Litania Maior" as part of 25
+; April's own descriptive line, alongside St Mark, not as a second,
+; separately class-numbered row -- corroborating RG 81's "nihil fit in
+; Officio" the same way Maurice's own "Commemoratio ... " line (no class
+; number) corroborates a demoted feast elsewhere in this project (see
+; precedence_ef.ml's [band], top-of-function guard).
+;
+; MODELLING DECISION: `Commemoration_only`, `Fixed(4, 25)`, the same shape
+; as `commemoration-of-st-peter` above -- because RG 81 denies the
+; Litanies any Office standing at all ("nihil fit in Officio"), so they
+; can never be the OBSERVED day (RG 91's table enumerates "dies
+; liturgici", Office days, and this is explicitly none), only ever a Mass
+; commemoration. `Precedence_ef.disposition`/`.privilege_of` wire RG
+; 109(f)'s privilege and RG 80's own transfer condition (both cited in
+; full at `Precedence_ef.major_litanies_slug` and its two call sites); see
+; that module for the reasoning and precedence_ef.ml's own comments for
+; why the transfer reuses the existing RG 96 placement machinery
+; ({!Colitur_kernel.Precedence.Transfer}) rather than new machinery.
+;
+; `rank Class4`: RG 91's Table of Precedence has NO row for the Major
+; Litanies at all (RG 81 denies them Office standing; the calendarium's
+; own printed line above confirms it), so there is no class this data
+; field could faithfully report -- the same situation `band`'s own
+; top-of-function guard already documents for every `Commemoration_only`
+; entry ("never had a row in the table for that occasion to begin with").
+; `Class4` is chosen as the lowest/inertest value available, deliberately
+; NOT `Class1` (which would make `Precedence_ef.privilege_of`'s branch (b),
+; "of a I-class day", grant this entry Privileged status for the WRONG
+; cited reason, silently making the (f) branch this task wires dead code
+; again). `band` ignores rank entirely for any `Commemoration_only`
+; candidate (checked first, unconditionally); `admit`'s only rank-keyed
+; test for an ordinary (non-privileged) II-class-Sunday commemoration
+; never applies here either, since this entry is always Privileged. No
+; live behavioural consequence either way -- recorded as a deliberate,
+; honestly-flagged placeholder, not a citation.
+;
+; `colour Violet`: NOT independently scan-verified for this specific
+; entry (out of this task's scope -- Mass propers are Plan 4, `citations`
+; stays `()`). Matches, by internal consistency, the colour this same
+; codebase already assigns the sibling Minor Litanies/Rogation days
+; (`rite_ef/temporal_ef.ml`'s own Rogation branch: `~colour:Colour.Violet`
+; for RG 87's Monday/Tuesday before Ascension) -- both are "Litaniae",
+; major and minor, sharing the same penitential/processional character;
+; RG 80/81/109(f) themselves say nothing about colour. Inert today
+; regardless (`Commemoration_only` entries are never OBSERVED, so this
+; field is never printed by the current pipeline -- the same note `Edit
+; eusebius-confessor` above makes for its own colour field).
+;
+; `subject Saint`: no clean fit among {Lord, Bvm, Saint, Temporal} -- the
+; Litanies are tied to no particular Divine Person or to the BVM (RG 80/81
+; name no one), and are far from an ordinary saint's feast either, but
+; `Subject.Temporal` is reserved for the temporal cycle's OWN office
+; (`subject.mli`), which this Fixed, sanctoral-origin entry structurally
+; is not. `Saint` is the same "no special exclusion applies" default this
+; codebase's own other `Commemoration_only` sanctoral entries already use
+; (RG 110's own Peter/Paul companion entries, `commemoration-of-st-peter`
+; immediately below) -- its only live behavioural consequence anywhere in
+; this codebase, RG 112(a)/(d)'s Lord/BVM mutual-exclusion rules, is one
+; this entry should NOT trigger either way, so `Saint` is safe as well as
+; consistent.
+;
+; `names`: English ("The Major Litanies") is a plain translation of RG
+; 80's own "Litaniae maiores", not independently primary-sourced (no
+; English title exists in any of the three documents, all Latin). Polish
+; ("Litanie Większe") likewise a plain vernacular rendering, not verified
+; against any external Polish liturgical reference -- flagged here rather
+; than presented as sourced, the same honesty this file's own
+; `commemoration-of-st-peter` entry gives its own colour field above.
((id ef-adjustments)
(directives
((Suppress vigil-of-christmas)
@@ -177,4 +258,11 @@
(names
((en "St. Peter") (pl "\197\155w. Piotra, Aposto\197\130a")))
(rank Class3) (status Commemoration_only) (colour Red)
+ (subject Saint) (citations ()) (layer ef-universal)))))
+ (Add
+ ((date (Fixed (month 4) (day 25)))
+ (cel
+ ((slug major-litanies)
+ (names ((en "The Major Litanies") (pl "Litanie Większe")))
+ (rank Class4) (status Commemoration_only) (colour Violet)
(subject Saint) (citations ()) (layer ef-universal))))))))