<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/README.md, branch v0.6.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.6.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.6.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-12T09:19:51Z</updated>
<entry>
<title>docs: close the final review's four documentation residues</title>
<updated>2026-08-12T09:19:51Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-12T09:19:51Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=d0b78ca2ef533080d4621b22071718bb8d3a6158'/>
<id>urn:sha1:d0b78ca2ef533080d4621b22071718bb8d3a6158</id>
<content type='text'>
precedence_ef.mli said "there is no fifth, unclassified case" after the
same commit renumbered the disposition list from four cases to five; the
count is now six.

precedence.mli's physical-equality obligation described the failure mode
as counting a drop "a SECOND time (once because it is genuinely absent,
once because its identity no longer matches)" -- the same condition
stated twice. What actually happens to a rebuilt candidate record is
that the celebration surfaces in BOTH commemorations (the copy) and
omitted (the original), one admission double-reported. precedence_ef.ml
carried the same muddled sentence, which is where the kernel's copy came
from; both now say it plainly.

vocab.ml/.mli referenced {!Rite_ef.rite_ef.ml} -- a filename inside an
odoc reference, which is malformed. Now plain [Rite_ef.rite].

README documented only `dune test`, so the exhaustive 1583-9999 Validate
sweep was discoverable only by reading test_validate.ml's own comment.
With no CI in this repo, that line is what stands between a committed
artifact and one anyone runs.

No behaviour change: `colitur day` output is byte-identical across 1583,
1900, 1902, 2008, 2011, 2026, 2038 and 9999 (2921 days, both domain
edges). 259 tests by default, 260 with the sweep.
</content>
</entry>
<entry>
<title>docs+test: small factual corrections (item 7, part 1)</title>
<updated>2026-08-12T08:40:12Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-12T08:40:12Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=ac569e859be08320e47909e496d6e5e8f6057da7'/>
<id>urn:sha1:ac569e859be08320e47909e496d6e5e8f6057da7</id>
<content type='text'>
Six independent, small corrections found during the final review:

- dune (workspace root): the comment said the stanza used "(:standard)"
  to preserve dune's default `default` alias target; the stanza actually
  spells that out explicitly via (alias_rec install). Comment now matches
  the code.
- test_validate.ml's test_easter_extremes asserted `List.length ys = 2`
  where an identity check was called for -- the comment already named
  1598 and 1666, but nothing confirmed extreme_years() found THOSE two
  rather than some other pair with the right cardinality. Now asserts the
  identities directly (the project's "cardinality where identity was
  required" vacuity flavour, per the review).
- test_oracle.ml and expected-divergences-missalemeum.sexp both claimed
  "one entry (M13) is [verdict open]" -- M11 is open too (its own verdict
  changed from colitur to open in fix round 1); both now say "two entries
  (M11 and M13)".
- expected-divergences-missalemeum.sexp's M2 note attributed `band` to
  temporal_ef.ml; `band` is precedence_ef.ml's own function.
- lib/kernel/precedence.mli documented `dropped`/`admit`'s physical-
  equality obligation nowhere -- it lived only in one rite's own module
  (Rite_ef.Precedence_ef.admit's doc comment), but this signature is what
  an author of the next rite actually reads. Added the obligation here,
  cross-referencing the EF instance as precedent, not the only source.
- README's opam install line omitted sexplib and ppx_sexp_conv (both in
  dune-project's own depends; `dune build` fails without them for a
  contributor following the README verbatim) and documented only
  `colitur easter`, though `temporal` and `day` both exist and are the
  more useful entry points. Fixed both.

No behaviour change: comment/doc/test-assertion corrections only (the
easter-extremes fix strengthens an assertion, it does not change what
passes). Verified byte-identical `colitur day` output across 1583, 1900,
1902, 2008, 2011, 2026, 2038, 9999. 259/259 tests green.
</content>
</entry>
<entry>
<title>chore: scaffold dune project (kernel lib + cli + tests)</title>
<updated>2026-07-31T12:02:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-31T12:02:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=e94eeaa19627a9a0f235baf110780c9fb564ca2b'/>
<id>urn:sha1:e94eeaa19627a9a0f235baf110780c9fb564ca2b</id>
<content type='text'>
OCaml 5.2.0 local switch; colitur_kernel library, a colitur executable stub,
and an alcotest+qcheck test runner. AGPL LICENSE, README, generated colitur.opam.
</content>
</entry>
</feed>
