aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_of/rite_of.mli
blob: eeb38d542df542031e484c0232a73e3f523761b9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(** The OF (post-1970) rite, bundled: this library's top-level module (its
    filename matches the library's own name "rite_of", so dune uses it as
    the library's entry point directly rather than generating one -- see the
    .ml's own comment). Re-exports every sibling module this library
    defines, so [Rite_of.Vocab_of], [Rite_of.Temporal_of],
    [Rite_of.Precedence_of], [Rite_of.Rubrics_of] and [Rite_of.Lectionary_of]
    keep resolving exactly as they did before this module existed.

    Task 5 (2026-08-25-colitur-of-phases-3-5): assembles Tasks 1-4's
    separately-built pieces into a {!Colitur_kernel.Rite.t}, with NO kernel
    change -- the spec's own central claim for this module. *)

module Vocab_of = Vocab_of
module Temporal_of = Temporal_of
module Precedence_of = Precedence_of
module Rubrics_of = Rubrics_of
module Lectionary_of = Lectionary_of

(** The OF rite (design spec's [RITE] signature, realised as a
    {!Colitur_kernel.Rite.t} value, the same shape {!Rite_ef.Rite_ef.context}
    already establishes):
    - [id], [vocab], [year_start], [temporal], [anchors]: {!Temporal_of}
      unchanged (Normae n. 35-44's seasons and named movable/fixed days).
    - [easter]: {!Colitur_kernel.Computus.gregorian_easter} -- the Roman
      rite's own computus, supplied by the rite rather than assumed by the
      kernel, so a Julian-reckoning rite can differ (see the .ml's own
      citation).
    - [fixed_key]: identity. The OF carries no bissextile (kalends-doubling)
      convention the way the 1962 Missal does -- see the .ml's own citation
      for the primary-source check this rests on.
    - [rules]: {!Precedence_of}'s Tabula/Normae n. 60 functions, wrapped as
      one {!Colitur_kernel.Precedence.rules} record.
    - [season_runs]: NOT {!Vocab_of.seasons} -- see the .ml's own citation:
      Ordinary Time runs in two separate blocks over one liturgical year
      (Normae n. 43-44), so the expected run-length-compressed sequence
      names it twice.
    - [transfer_target]: {!Precedence_of.transfer_target}, Normae n. 60/n. 5.
      Known incomplete on one named date shape (Normae n. 56(f), St
      Joseph's backward anticipation onto Palm Sunday) -- documented on that
      value's own .mli, not repeated or silently worked around here.
    - [readings]: {!Lectionary_of.readings} partially applied to the
      caller's own [~lectionary] and {!Temporal_of.year_start} (the OF
      reading-cycle arithmetic's own Advent anchor) -- no [~commons]
      parameter, unlike EF: the OF lectionary chain has no Commons
      indirection to thread through.
    - [creed], [gloria], [preface]: {!Rubrics_of}, IGMR n. 53/67-68/364-365.

    [~lectionary] is a caller-supplied parameter, not a value closed over an
    internal load -- {!Rite_ef.Rite_ef.context}'s own .ml comment records
    the exact startup failure this shape avoids (a command touching no
    lectionary data, like `colitur easter <year>`, dying at load time the
    moment the data file is merely absent from a bare build). Follow that
    same seam here: a caller loads data/of/lectionary.sexp however suits it
    (bin/main.ml's own loader is the one this module ships with), and a
    future diocesan/proper OF lectionary overlay has the identical seam to
    attach to. *)
val context : lectionary:Colitur_kernel.Lectionary.t -> (Vocab_of.season, Vocab_of.rank) Colitur_kernel.Rite.t