<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/lib/kernel/celebration.ml, branch v0.7.0</title>
<subtitle>deterministic OCaml engine to compute and validate liturgical calendars for multiple rites, template-driven output to year 9999</subtitle>
<id>https://git.labunix.xyz/colitur.git/atom?h=v0.7.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.7.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-11T17:02:08Z</updated>
<entry>
<title>kernel(celebration): distinguish a feast from a commemoration-only entry</title>
<updated>2026-08-11T17:02:08Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-11T17:02:08Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=8ab24da337a10993b98696df5d499706318beb8e'/>
<id>urn:sha1:8ab24da337a10993b98696df5d499706318beb8e</id>
<content type='text'>
The 1960 reform reduced many feasts to a bare commemoration. They keep a rank,
because RG 111 orders admitted commemorations by dignity, but they can never be
the observed day. Modelled as a separate status rather than a fifth rank: RG 8
fixes the classes at four.
</content>
</entry>
<entry>
<title>kernel: correct false compiler-constraint claim in Celebration comment</title>
<updated>2026-08-11T10:10:49Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-11T10:10:49Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=1512df6514f0e656d734f2bf03d050355d0dd0b7'/>
<id>urn:sha1:1512df6514f0e656d734f2bf03d050355d0dd0b7</id>
<content type='text'>
The comment explaining Celebration's single type parameter claimed OCaml
rejects a type variable that appears in no field. That is false: a phantom
season parameter compiles cleanly. The real reason is a design choice, not a
compiler constraint -- a celebration has no season of its own (season is
contextual to the day, and lives in Temporal.t), and a phantom parameter
would carry no information while forcing every consumer to thread a
meaningless variable.
</content>
</entry>
<entry>
<title>kernel: Vocab, Celebration and Temporal parametric types</title>
<updated>2026-08-11T09:59:43Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-11T09:59:43Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=abade24943f2f77c058b5ff768093b8babc9a8c3'/>
<id>urn:sha1:abade24943f2f77c058b5ff768093b8babc9a8c3</id>
<content type='text'>
Rite specificity is carried by type parameters plus a vocab record of
operations rather than by functors: the same guarantee that a rite cannot name
another rite's season, without threading module plumbing through every kernel
module. Celebration takes only the rank parameter, since it has no season
field and OCaml rejects a type variable that appears in no field.
</content>
</entry>
</feed>
