<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/colitur.opam, branch v0.8.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.8.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.8.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-18T12:28:21Z</updated>
<entry>
<title>release: v0.7.0</title>
<updated>2026-08-18T12:28:21Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T12:28:21Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=e1f6ba9322012edb57171ac306045f54a83aaad5'/>
<id>urn:sha1:e1f6ba9322012edb57171ac306045f54a83aaad5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v0.6.0</title>
<updated>2026-08-18T11:24:48Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T11:24:48Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=f979aedcc8a11d2c5a175064526a6821e11c2c0c'/>
<id>urn:sha1:f979aedcc8a11d2c5a175064526a6821e11c2c0c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v0.5.0</title>
<updated>2026-08-18T10:37:36Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T10:37:36Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=d5386c2121cfd5c6b73b573aa7db05b8ef21dff0'/>
<id>urn:sha1:d5386c2121cfd5c6b73b573aa7db05b8ef21dff0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v0.4.0</title>
<updated>2026-08-18T09:44:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T09:44:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=ca4287a6e99e14846f3560106156ef2b1c4b8cf2'/>
<id>urn:sha1:ca4287a6e99e14846f3560106156ef2b1c4b8cf2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v0.3.1</title>
<updated>2026-08-18T07:11:53Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T07:11:53Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=4fc8afc45a7371fdfe32f0683f7f0e26ab766faa'/>
<id>urn:sha1:4fc8afc45a7371fdfe32f0683f7f0e26ab766faa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test(cli): the 3 January pin is a BVM Saturday, not a feria</title>
<updated>2026-08-17T20:27:11Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T20:27:11Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=1fa4017a20dea1843e08afd257fc7798560659c4'/>
<id>urn:sha1:1fa4017a20dea1843e08afd257fc7798560659c4</id>
<content type='text'>
3 January 2026 is an unoccupied IV-class Saturday, so its office is Our
Lady's and now its Mass is too -- the second of the Missal's five, assigned
to Christmas through the Purification. The pin held the Christmastide
feria's readings, which is what colitur said before RG 309(a) was
implemented. Caught by make check on the 0.3.0 release, which is what that
gate is for.
</content>
</entry>
<entry>
<title>test(cli): pin the version's shape, not its literal</title>
<updated>2026-08-17T19:00:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T19:00:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=d8ce8c3806111e1d1ba54d2ef99a8ae550c7567b'/>
<id>urn:sha1:d8ce8c3806111e1d1ba54d2ef99a8ae550c7567b</id>
<content type='text'>
The release target bumps bin/main.ml and dune-project, but cli.t pinned
the literal too, so cutting 0.2.0 failed `make check` on a cram diff that
was purely the bump working correctly. Every release would have had to
edit a test for no gain.

The shape is asserted here instead. The value is already checked where it
can actually drift: the release target requires the freshly built binary
to report the version it just wrote.
</content>
</entry>
<entry>
<title>feat(cli): --version, a CHANGELOG, and a release target</title>
<updated>2026-08-17T14:19:02Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T14:19:02Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=cc6655134e155dd0879ecb8eb009271e17488834'/>
<id>urn:sha1:cc6655134e155dd0879ecb8eb009271e17488834</id>
<content type='text'>
Groundwork for tagging. The project had no version anywhere: not in
dune-project, not in the binary, no CHANGELOG, no tags.

The version lives in two places -- dune-project, which generates
colitur.opam, and a constant in bin/main.ml, which is what --version
prints. Two rather than one because dune's watermarking only substitutes
in a release tarball, so a binary built the ordinary way from a checkout
would report a placeholder. The release target rewrites both and then
re-checks both, and finally requires the freshly built binary to report
the version it just wrote: a release that bumped one and not the other
would ship a binary disagreeing with its own package metadata.

--version is deliberately not embedded in the help text. cli.t pins
help's first line, and a version there would mean editing a test
expectation every release for no gain.

The release target mirrors lectio's, refusals included: no release from a
dirty tree, none without a CHANGELOG entry for that version, none whose
version bump silently failed to apply, and `make check` -- the full
1583-9999 sweep, not the sampling suite -- must pass before the tag is
created.
</content>
</entry>
<entry>
<title>kernel(date): ISO-8601 rendering, validating parse, sexp converters</title>
<updated>2026-08-11T09:15:18Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-11T09:15:18Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=d532c3b2cf941d2fe0c3c84f2c4090f14e869ef0'/>
<id>urn:sha1:d532c3b2cf941d2fe0c3c84f2c4090f14e869ef0</id>
<content type='text'>
Adds sexplib and ppx_sexp_conv to the project and wires the ppx into the
kernel library. Date's sexp form is an ISO-8601 atom rather than the opaque
rata die, so data files stay human-editable and parsing revalidates the
1583..9999 domain.
</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>
