aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/vocab.mli
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 11:38:35 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 11:38:35 +0200
commite19adb9c7ea369cafe76e7eff50e9248a4a954d0 (patch)
tree57824e121606286ebdf8fff68439986dd3300eae /lib/kernel/vocab.mli
parent0506388da160a15ceddb0cea1a697d737103d5c4 (diff)
parent36df2bd0af9a555a09334e14b0d89118be1dbbc0 (diff)
downloadcolitur-e19adb9c7ea369cafe76e7eff50e9248a4a954d0.tar.gz
colitur-e19adb9c7ea369cafe76e7eff50e9248a4a954d0.zip
Merge branch 'ef-plan3': Plan 3, the EF resolution engine
Adds the rite-parameterised Precedence resolver, Liturgical_day, Rite, and Calendar (year as the primitive, because transfers need whole-year knowledge), the full EF precedence ruleset (RG 91's 28-entry table, occurrence RG 92-95, commemorations RG 108-111, transfers RG 96-98), 322 bootstrapped sanctoral entries, colitur day <year>, and validation layers 3-5. Layer 3 diffs 16801 days against lectio; layer 4 diffs 730 days against missalemeum; layer 5 pins ~30 dates on the known-tricky years. Both comparison layers carry cited allow-lists that name the governing RG paragraph and which engine is right. The oracle layer earned its place immediately: Holy Thursday was violet in colitur and lectio alike, because colitur's data was bootstrapped from lectio and both carried the same error. Only an independent source could see it. RG 128(b) and RG 122 name it white.
Diffstat (limited to 'lib/kernel/vocab.mli')
-rw-r--r--lib/kernel/vocab.mli25
1 files changed, 22 insertions, 3 deletions
diff --git a/lib/kernel/vocab.mli b/lib/kernel/vocab.mli
index 78729bb..a4e61a3 100644
--- a/lib/kernel/vocab.mli
+++ b/lib/kernel/vocab.mli
@@ -7,13 +7,32 @@
parametric types natively. *)
type ('s, 'r) t = {
seasons : 's list;
- (** canonical liturgical-year order; Validate's contiguity check reads this *)
+ (** canonical liturgical-year order. CORRECTED (final fix wave, item
+ 7): this used to say "Validate's contiguity check reads this" --
+ false since validate.ml's own "seasons" check switched to
+ {!Colitur_kernel.Rite.t}.season_runs in this branch (Plan 2
+ carried item 1: EF has each season in one run, but the modern
+ form's Ordinary Time does not, so the expected run sequence had
+ to become rite-supplied rather than derived from this field).
+ For EF specifically [Rite_ef.rite] sets season_runs to
+ this very list, so the two happen to agree there, but Validate
+ itself no longer reads [seasons] to build its expectation. *)
season_to_string : 's -> string;
season_of_string : string -> 's option;
ranks : 'r list;
(** documentation order, highest first. Plan 2 uses it only for the
- closure check -- it is not a precedence relation until Plan 3
- defines one. *)
+ closure check. CORRECTED (final fix wave, item 7): this used to
+ say "it is not a precedence relation until Plan 3 defines one" --
+ Plan 3 did define one (RG 111's dignity ordering, Rite_ef.
+ Precedence_ef.dignity/compare_dignity), but as its OWN small,
+ separately-hardcoded function, not one derived from this field:
+ [admit] needs Vocab_ef.rank's dignity as plain data (RG 8's four
+ classes), and reusing this field's own [int list] position would
+ couple that meaning to documentation order the way {!band} is
+ explicitly NOT allowed to (precedence_ef.ml's own file comment).
+ This field therefore still carries no precedence relation of its
+ own; a rite that wanted one derived from it would have to build
+ it itself. *)
rank_to_string : 'r -> string;
rank_of_string : string -> 'r option;
}