aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/precedence_ef.mli
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rites/rite_ef/precedence_ef.mli')
-rw-r--r--lib/rites/rite_ef/precedence_ef.mli46
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/rites/rite_ef/precedence_ef.mli b/lib/rites/rite_ef/precedence_ef.mli
index 63fb0a1..9fe8789 100644
--- a/lib/rites/rite_ef/precedence_ef.mli
+++ b/lib/rites/rite_ef/precedence_ef.mli
@@ -56,3 +56,49 @@ val unclassified : int
including shapes the 1962 table itself does not describe (see
{!unclassified}). *)
val band : Vocab_ef.season Precedence.context -> Vocab_ef.rank Precedence.candidate -> int
+
+(** RG 33's marker: every Sunday slug this rite's temporal cycle produces
+ (temporal_ef.ml's [named] and [sunday_slug]) contains this substring;
+ nothing else {!band} classifies does. Also colitur's own convention, not
+ an RG citation -- see {!universal_layer} -- exposed for the same reason
+ as {!vigil_suffix}: a rename of temporal_ef's Sunday-slug format has
+ somewhere to be caught other than a silently-wrong RG 33 disposition. *)
+val sunday_marker : string
+
+(** The placeholder {!Precedence.privilege} every [Commemorate] disposition
+ below carries until Task 9 implements RG 109's closed list of privileged
+ commemorations and RG 108-111's admission counts. Exposed so Task 9 (and
+ any test wanting to assert on it explicitly) does not have to duplicate
+ the literal [Precedence.Ordinary]. *)
+val interim_privilege : Precedence.privilege
+
+(** [disposition ~winner ~loser]: RG 92-95, 33, 94 (docs/research/
+ rules-register.md ยง4, "Occurrence" and "Vigils"). What becomes of a
+ losing candidate, decided by the LOSER's own rank and status (RG 95),
+ except RG 33's vigil omission, which also reads the winner:
+ - a {!Celebration.status} of [Commemoration_only] is always
+ [Commemorate] (checked first: it can never win -- see
+ {!Precedence.resolve} -- and, by that same status's own definition,
+ already denotes an office with nothing left to translate, so it never
+ transfers either; not itself a further RG citation beyond RG 93's
+ general four-mechanism statement above);
+ - a [Class1] or [Class2] loser whose slug marks it a vigil ({!vigil_suffix})
+ is [Omit] when the winner is any Sunday ({!sunday_marker}) or itself
+ [Class1] (RG 33 -- entirely omitted, not merely commemorated);
+ - any other [Class1] loser is [Transfer] (RG 95 -- only I class has the
+ right of translation; this is also what moves All Souls, register
+ line 334, once it loses to an occurring Sunday -- WHERE it lands is
+ {!Rite.t.transfer_target}'s job, not this function's);
+ - everything else is [Commemorate], carrying {!interim_privilege} until
+ Task 9 replaces it with RG 109's real per-day computation.
+
+ Total over every winner/loser pair {!Precedence.resolve} or {!Calendar}
+ can construct: [Vocab_ef.rank] (RG 8) and {!Celebration.status} are both
+ closed variants, so the four cases above exhaust every representable
+ shape -- there is no fifth, "unclassified" case the way {!band} needs
+ one, because this function's own return type has no such slot to fall
+ into by accident. *)
+val disposition :
+ winner:Vocab_ef.rank Precedence.candidate ->
+ loser:Vocab_ef.rank Precedence.candidate ->
+ Precedence.disposition