1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
; A documented one-shot, not part of the build's normal product (spec §4.5):
; converts lectio's tridentine-calendar.ini into data/ef/sanctoral.sexp. Run
; via `dune exec tools/bootstrap_sanctoral.exe -- <source.ini> <dest.sexp>`.
; `unix` is the OCaml distribution's bundled library (already in the switch,
; not a new opam dependency) -- used only here, never by the kernel, to shell
; out to `sha256sum` for the provenance header; the kernel itself never reads
; the environment or a clock.
(executable
(name bootstrap_sanctoral)
(libraries colitur_kernel rite_ef unix sexplib))
; Converts lectio's tridentine-lectionary.ini into data/ef/lectionary.sexp.
; Run via `dune exec tools/bootstrap_lectionary.exe -- <source.ini> <dest.sexp>`.
; Same `unix` usage as bootstrap_sanctoral above: shells out to `sha256sum`
; for the provenance header only, never a new opam dependency.
;
; `rite_ef` added (task 8 fix round 1, coordinator review, Critical 2):
; the generator's own [assert_reachable] sweeps Rite_ef.Temporal_ef.temporal
; directly to catch a translation table entry that names a slug colitur
; never actually computes -- no new dependency, bootstrap_sanctoral above
; already links this same library for the identical "code, not data" reason.
(executable
(name bootstrap_lectionary)
(libraries colitur_kernel rite_ef unix sexplib))
; Task 6 (2026-08-21-colitur-celebrant-rubrics-phase1): turns pdftotext's
; -layout dump of the Latin Mass Society Ordo into test/fixtures/
; lms-ordo-2024-2025.sexp. Run via `dune exec tools/extract_lms_ordo.exe --
; <pdftotext-layout.txt> <source.pdf> <dest.sexp>`. Same `unix`-for-
; `sha256sum` usage as the two bootstrap executables above; `colitur_kernel`
; only, no `rite_ef` -- this tool validates dates through `Date.make` but
; reads no EF-specific vocabulary.
(executable
(name extract_lms_ordo)
(modules extract_lms_ordo)
(libraries colitur_kernel unix sexplib)
(preprocess
(pps ppx_sexp_conv)))
; check_citations.py's own self-test (test_check_citations.py). Python, not
; OCaml, so it cannot be a `(test ...)` stanza -- an alias rule invoking it
; directly is dune's own documented shape for a non-OCaml check. Wired into
; the `runtest` alias (what `dune test`/`make test`/`make check` all build)
; so this suite runs every time the rest of the project's tests do, not
; only when someone remembers to run it by hand -- the exact discipline
; missing when check_citations.py itself shipped with no tests and its own
; self-poisoning bug went uncaught. Depends on both .py files (the test
; imports check_citations as a plain module, found via its own directory,
; once dune copies both into the sandboxed build directory) and on nothing
; else -- the fixture is entirely synthetic, no docs/research/LT.txt or
; lang/la.ini involved, so this rule runs identically whether or not the
; gitignored research corpus is present locally.
(rule
(alias runtest)
(deps check_citations.py test_check_citations.py)
(action
(run python3 test_check_citations.py)))
; Witnesses task (2026-08-22-colitur-celebrant-rubrics-phase1): turns
; pdftotext's -layout dump of the FIUV universal Ordo into
; test/fixtures/fiuv-ordo-2025-2026.sexp. Run via `dune exec
; tools/extract_fiuv_ordo.exe -- <pdftotext-layout.txt> <source.pdf>
; <dest.sexp>`. Same `unix`-for-`sha256sum` usage as extract_lms_ordo.ml;
; `colitur_kernel` only, no `rite_ef` -- same reasoning, dates only.
(executable
(name extract_fiuv_ordo)
(modules extract_fiuv_ordo)
(libraries colitur_kernel unix sexplib)
(preprocess
(pps ppx_sexp_conv)))
|