aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/slug.ml8
-rw-r--r--lib/kernel/vocab.ml25
-rw-r--r--lib/kernel/vocab.mli25
3 files changed, 50 insertions, 8 deletions
diff --git a/lib/kernel/slug.ml b/lib/kernel/slug.ml
index 5139c99..25281f2 100644
--- a/lib/kernel/slug.ml
+++ b/lib/kernel/slug.ml
@@ -1,6 +1,10 @@
(* Stable celebration identifiers. Also the lectionary key: EF slugs are adopted
- verbatim from lectio so the Plan 3 lectionary bootstrap needs no mapping
- table (spec §4.4). *)
+ verbatim from lectio so the Plan 4 lectionary bootstrap needs no mapping
+ table (spec §4.4). CORRECTED (final fix wave, item 7): this comment said
+ "Plan 3" -- the SANCTORAL bootstrap (data/ef/sanctoral.sexp) is Plan 3 and
+ shipped in this branch; the LECTIONARY bootstrap (reading citations,
+ Liturgical_day.t's own [citations] field) is a separate, later Plan 4,
+ per that field's own doc comment ("always empty until Plan 4"). *)
type t = string
let valid_char c = (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c = '-'
diff --git a/lib/kernel/vocab.ml b/lib/kernel/vocab.ml
index 78729bb..bcb48b8 100644
--- a/lib/kernel/vocab.ml
+++ b/lib/kernel/vocab.ml
@@ -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_ef.ml} 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;
}
diff --git a/lib/kernel/vocab.mli b/lib/kernel/vocab.mli
index 78729bb..bcb48b8 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_ef.ml} 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;
}