aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/calendar.ml15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/kernel/calendar.ml b/lib/kernel/calendar.ml
index f2a03a7..cffdf69 100644
--- a/lib/kernel/calendar.ml
+++ b/lib/kernel/calendar.ml
@@ -384,7 +384,20 @@ let build_day (rite : ('s, 'r) Rite.t) (idx : 'r Layer.by_date)
{!Precedence.resolution}'s own [observed]/[commemorations]/[omitted]
fields -- THREE of {!Precedence.resolution}'s four fields (the fourth,
[deferred], denotes a candidate that has NOT yet settled at this date,
- by definition, so it is correctly never consulted here). *)
+ by definition, so it is correctly never consulted here).
+ A SIGNAL TRADED AWAY, named because it is real (fix-round re-review):
+ channel (3) accepts both shapes of [omitted] -- the admission cap, and
+ a rite whose own [disposition] omits the candidate AT the target its
+ own [transfer_target] named. For the cap this is unambiguously
+ "settled". For the second it is a judgement: before this change that
+ shape produced a loud, if mislabelled, [Validate] "unconverged"
+ failure; now it is silent at the origin and honestly reported at the
+ target. The kernel cannot tell "the rite deliberately omitted it
+ there" from "the rite chose a bad target" without rite knowledge it
+ must not have, so accepting it is the right call -- but the diagnostic
+ it used to give up is gone. Unreachable in [Rite_ef] today: only the
+ Major Litanies transfer as [Commemoration_only], and RG 96's search
+ guarantees a transferred FEAST an unblocked target. *)
let settled_at target slug =
let _, _, target_resolution = resolve_with_injected rite idx injected target in
let matches (c : 'r Precedence.candidate) =