summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md54
1 files changed, 44 insertions, 10 deletions
diff --git a/README.md b/README.md
index 165f2da..d1b2ed2 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,22 @@
# colitur
**Download:** [colitur-latest.tar.gz](https://git.labunix.xyz/colitur-latest.tar.gz)
-— always the current release. Older tags are listed on the
-[tags page](https://git.labunix.xyz/colitur.git/refs/tags) but are not offered
-for download: running a stale liturgical calendar is worse than running none.
+— a stable URL that always serves the current release, so a script can fetch it
+without knowing the version. Per-tag tarballs are on the
+[tags page](https://git.labunix.xyz/colitur.git/refs/tags) if you want a
+specific one.
*computus liturgicus* — a safe, highly-tested, deterministic engine that computes
-and validates liturgical calendars for multiple rites, with template-driven output.
+and validates liturgical calendars, with template-driven output.
-Starting with the Roman EF (1962) and OF forms; extensible to other traditions.
-Computes day-identity (season, celebration, rank, colour, cycle, precedence) and
-reading citations, correct to year 9999. See the design and rules research under
-`docs/` (local).
+Computes day-identity (season, celebration, rank, colour, precedence) and reading
+citations, correct to year 9999.
+
+**What is built today is the Roman EF (1962) — that rite alone.** `lib/rites/`
+contains `rite_ef` and nothing else. The kernel is rite-agnostic and the OF is
+the next module, which is what will prove the abstraction generalises; until
+then, treat any claim of multi-rite support as a design goal rather than a
+feature. See the design and rules research under `docs/` (local).
## Build
@@ -19,8 +24,8 @@ reading citations, correct to year 9999. See the design and rules research under
opam switch create . 5.2.0 -y # first time: local OCaml switch
opam install -y dune alcotest qcheck qcheck-alcotest sexplib ppx_sexp_conv
dune build
-dune test # fast suite (~3s)
-COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force # + every year 1583-9999 (~50s)
+dune test # fast suite, 568 tests (~8s)
+COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force # + every year 1583-9999 (~80s)
dune exec colitur -- easter 2026 # Easter and its Easter-relative anchors
dune exec colitur -- temporal 2026 # the EF temporal cycle only, one line per day
dune exec colitur -- day 2026 # the full resolved EF calendar (temporal + sanctoral)
@@ -134,6 +139,35 @@ $ dune exec colitur -- readings 2026 --raw | grep ^2026-02-25
See `colitur(1)`'s `SIGLA` section for the `[bible]`/`[sigla]` language-file
sections, `lang/traditions.ini` in full, and all three `--sigla-*` flags.
+## Status
+
+v0.9.0, EF only. **569 tests**, of which the property suite runs against every
+year in 1583-9999 rather than a sample — that is how confidence extends past
+the ~2050 horizon of any reference to check against.
+
+Five validation layers, each blind to something the others catch:
+
+| | |
+|---|---|
+| types | illegal states unrepresentable; resolution total |
+| properties | invariants over all 8 417 years (QCheck) |
+| differential | 16 801 days compared against the sibling `lectio` engine |
+| oracle | three captured years compared against missalemeum |
+| golden | 11 pinned template outputs |
+
+Knowing what each layer *cannot* see is load-bearing here: the differential and
+the oracle share one data lineage (Divinum Officium → missalemeum → lectio →
+colitur), so an error inherited by both is invisible to either. That is written
+up in full in `docs/` rather than left implied.
+
+**Chants are deliberately absent.** Psalm, Tract, Alleluia and Sequence have no
+source and no oracle, so `Validate` rejects any citation part outside
+First/Gospel — one appearing would be a defect, not a feature arriving early.
+
+A companion X11 viewer lives in
+[colitur-x](https://git.labunix.xyz/colitur-x.git/): it reads
+`colitur emit --format csv` on stdin and draws the month.
+
## License
AGPL-3.0-or-later. See `LICENSE`.