(** Whether this celebration can be the observed day at all. The 1960 reform reduced many feasts to a bare commemoration; they retain a rank but can never be observed. NOT a fifth rank: RG 8 fixes the classes at four. What the retained rank is FOR (corrected 2026-08-12): this line formerly read "RG 111 orders admitted commemorations by dignity". Ordering is no longer done by rank at all -- it moved to the rite's own table of precedence (RG 113) in commit ea22ad2, and a bare commemoration has no row in that table. The rank remains load-bearing for ADMISSION: RG 111(b) reserves a II-class Sunday's single slot "de festo II classis", a floor read off this rank directly. *) type status = Feast | Commemoration_only [@@deriving sexp] (** A celebration. Parameterised by the rite's rank type only. *) type 'r t = { slug : Slug.t; names : Names.t; rank : 'r; status : status; colour : Colour.t; subject : Subject.t; citations : Citation.t list; layer : string; } [@@deriving sexp] (** [status] defaults to [Feast], [subject] to [Subject.Temporal], [names] to empty, [citations] to []. *) val make : slug:Slug.t -> ?names:Names.t -> rank:'r -> ?status:status -> colour:Colour.t -> ?subject:Subject.t -> ?citations:Citation.t list -> layer:string -> unit -> 'r t