diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-03 21:13:33 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-03 21:13:33 +0200 |
| commit | fe136f0952284b9a339252926dfd4675c4a7c3c6 (patch) | |
| tree | 82e358bc2e7f95c7133481e6a5f6a347dbc605c5 | |
| parent | b14a3078c1a4db87010f5df955442bf1e440e0ec (diff) | |
| download | colitur-fe136f0952284b9a339252926dfd4675c4a7c3c6.tar.gz colitur-fe136f0952284b9a339252926dfd4675c4a7c3c6.zip | |
chore: 1.2.1
Ten wrong scripture references reached users; nothing else about the engine
changed and no output format moved. A patch bump.
README's status line and test count follow the release, as they have to: the
count is 917 under the exhaustive sweep, not 916.
| -rw-r--r-- | CHANGELOG.md | 6 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | bin/main.ml | 2 | ||||
| -rw-r--r-- | colitur.opam | 2 | ||||
| -rw-r--r-- | dune-project | 2 |
5 files changed, 12 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 73421b7..a8cc741 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ One line per release. Versions are git tags (`vX.Y.Z`). +## [1.2.1] - 2026-09-03 +- **Ten corrupt reading references in the OF lectionary, every one in a Year II entry.** Nine ended at verse 22 where the OLM ends them at 20 (`Mark 1:14-22`, `Mark 4:1-22`, `Mark 5:1-22`, `Matthew 7:15-22`, `Matthew 17:14-22`, `Matthew 18:15-22`, `1 Samuel 1:9-22`, `1 Samuel 3:1-10,19-22`, `James 5:13-22`); the tenth read `Matthew 17:9a,10-135`, a verse Matthew 17 does not have. Not one Year I entry was affected -- that distribution is what makes this a transcription fault rather than ten independent slips. Eight corrections are confirmed **verbatim in the Latin OLM 1981**, the primary source rather than a witness; the two the OCR does not yield are impossible on their face, since James ends at 5:20 and Matthew 17 has twenty-seven verses. Corrected **upstream in lectio** and this calendar regenerated from it, per the data file's own instruction not to hand-edit a generated artifact -- the diff is exactly the source SHA-256 pin plus the ten references. +- **Found by building the readings validation the OF had never had.** The litcal layer compared season, grade and identity and stopped there, so every reading colitur served had been validated by nothing except the lineage it arrived on. Two detections, neither sufficient alone: an **internal invariant** needing no external data at all -- in Ordinary Time the OF weekday Gospel does not depend on the year of the cycle, OLM n. 69 point 4 alternates only the First reading, so a `-i`/`-ii` pair whose Gospel differs is a defect by construction -- which catches six; and the **litcal comparison**, which catches three of those plus the four the invariant structurally cannot see, being First readings and an Advent entry that no such symmetry constrains. The invariant is scoped to Ordinary Time deliberately: unscoped it reports seventeen further pairs in Advent 4 and the Christmas octave, all of them correct, since those weekdays are keyed to the calendar date. Mutation-tested, and worth recording how: a first attempt changed *both* halves of a pair and passed for the wrong reason. Measured, the 20-vs-22 divergence class against litcal goes 26 to 0. +- **`--help` is one screen, not the manual.** It printed 374 lines -- every output format, the RFC 4180 quoting rule, the template scope hazard, the publish manifest semantics. All of it real documentation, all of it already in `colitur(1)` beside the binary. A help text nobody reads at the terminal is not more helpful than a short one, it is less, because the reader stops looking. Now 42 lines, and each dropped section was checked to have a man-page counterpart rather than assumed to. One check moved rather than died: `cli.t` pinned `rubrics`' documented field list against what it actually prints, because that count drifted once and stayed wrong for a whole review round; it now reads the worked example out of the man page, which `test/dune` gains as a cram dep. +- Also: `L6`/`L7`, the Sacred Heart / John the Baptist tie at an equal Tabula entry, gains the citation its own note said did not exist -- Tabula I.3 enumerates *"Sollemnitates Domini, beatae Mariae Virginis, et Sanctorum"*, an order rather than a bare category, which read that way settles the tie against colitur's alphabetical answer. Recorded with the counter-argument (entry 4 marks its internal order with explicit lettering; entry 2's list cannot be an ordering at all) and with what would settle it. Verdict stays open and behaviour is unchanged. 917 tests. + ## [1.2.0] - 2026-08-28 - **Reading the output yourself, rather than through `awk`.** `--pretty` draws each day as its own box instead of a row: a heading with the date and the liturgical colour, then the celebration, its rank and season, and any commemorations, each on its own line. The box art is **pure ASCII** -- only `+`, `-` and `|`, never Unicode box-drawing -- because this format exists to be pasted or piped into a document, a mail or a plain-text ordo, and U+2500 and its relatives survive that only when every stage agrees about encoding and font; alignment counts UTF-8 code points rather than bytes, so a name carrying a ligature still lines the right edge up. Colour is written only when stdout is a terminal, `NO_COLOR` is honoured on presence whatever its value (the convention's own rule -- reading it as a boolean is how tools get it wrong), and the colour column degrades to its initial rather than simply vanishing when piped. Nothing should be written to parse it: its layout is free to change, which is precisely what the default format is not. - **`--month N`, `--date YYYY-MM-DD` and `--today`** narrow a report to part of a year. They matter most under `--pretty`, whose boxes span seven lines and so survive no line-wise `grep` at all -- the nearest equivalent is a paragraph-mode `awk` incantation that works only because the boxes happen to be blank-line separated -- but they are **independent** of it and narrow the default format too. The three are **alternatives, not a stack**: naming two is an error rather than a silent win for one. `--date` and `--today` NAME a year, so on those two the year may be omitted (`colitur day --today` is a complete command) and must agree when given as well, the same rule the positional year and `--year` already follow; the disagreement message names the flag, because with `--today` the second year appears nowhere on the command line for the reader to find. `--month` names no year and so still needs one. `temporal` refuses `--year` yet accepts `--date`/`--today` including as its year source, which is not an inconsistency: `--year` is a second spelling of the positional year, which `temporal` deliberately does not offer, whereas `--date` selects a DAY and merely happens to determine which year contains it. @@ -152,9 +152,9 @@ sections, `lang/traditions.ini` in full, and all three `--sigla-*` flags. ## Status Releases through `v1.0.0` are EF only; `v1.1.0` added the OF module as a -peer rite (see above), and `v1.2.0` adds `--pretty` and the `--month`/ -`--date`/`--today` narrowing flags. -**916 tests**, of which the property suite runs against every year in +peer rite (see above), `v1.2.0` adds `--pretty` and the `--month`/`--date`/ +`--today` narrowing flags, and `v1.2.1` corrects ten OF reading references. +**917 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. The six layers below describe the EF's own validation specifically; the OF's own (also diff --git a/bin/main.ml b/bin/main.ml index b49a19e..ecc763e 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -1984,7 +1984,7 @@ let publish_report ~rite ~lang ~sigla ~from_y ~to_y ~out ~overlays ~dtstamp ~pru same reason. Deliberately NOT embedded in [help_text]: the cram test pins help's first line, and a version in it would make every release edit a test expectation for no gain. *) -let version = "1.2.0" +let version = "1.2.1" (* --help is a REMINDER, not a reference. It answers "what are the commands and which flag do I want", in one screen; every rule, format, hazard and diff --git a/colitur.opam b/colitur.opam index 4460ac4..69f4016 100644 --- a/colitur.opam +++ b/colitur.opam @@ -1,6 +1,6 @@ # This file is generated by dune, edit dune-project instead opam-version: "2.0" -version: "1.2.0" +version: "1.2.1" synopsis: "Deterministic liturgical calendar engine (computus liturgicus)" depends: [ "ocaml" diff --git a/dune-project b/dune-project index 9b47223..8287bf1 100644 --- a/dune-project +++ b/dune-project @@ -1,6 +1,6 @@ (lang dune 3.0) (name colitur) -(version 1.2.0) +(version 1.2.1) (generate_opam_files true) (cram enable) |
