(** 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. 56(f)/ n. 60/n. 5 (St Joseph's backward anticipation onto Palm Sunday, resolved [of-normae-56f]/W1, 2026-08-26, together with the general forward search) -- 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. - [citation_shapes]: TWO well-formed shapes, not EF's one -- [[First; Gospel]] on a feria, feast or memorial, and [[First; Second; Gospel]] on a Sunday or solemnity (OLM 1981 Praenotanda n. 66.1/n. 69.1, n. 84(b)/(c)) -- see this file's own [context] for the full citation and {!Colitur_kernel.Rite.t.citation_shapes}'s own doc comment for why this field is rite-supplied at all. - [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 `, 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