; 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 -- `. ; `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 -- `. ; 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 -- ; `. 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) (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)))