diff options
Diffstat (limited to 'CHANGELOG.md')
| -rw-r--r-- | CHANGELOG.md | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 89b2281..73421b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ One line per release. Versions are git tags (`vX.Y.Z`). +## [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. +- Both are accepted by `day`, `readings`, `rubrics` and `temporal`, and **refused** by every other command rather than accepted and quietly ignored -- `emit`/`table`/`render`/`publish` already choose their shape through `--format` or `--template`, and `easter` prints six key/value lines rather than a day grid. `--pretty` had shipped undocumented in both `--help` and `colitur(1)`; both now describe it, alongside a new NARROWING A REPORT section. Default output is byte-identical to 1.1.0 across seven years, five commands and both rites, and across all five emit formats and the shipped templates. 916 tests. + +## [1.1.0] - 2026-08-27 +- **The Ordinary Form, as a peer rite.** `--rite of` on every command that a rite can affect. This release exists as much for what it tested as for what it adds: the `Rite` abstraction was designed against a single rite, and until now nothing had shown it generalised. It does -- `rite_of` satisfies `Rite.t` with no kernel special-casing. Six modules (vocab, temporal, precedence, rubrics, lectionary, and the bundle); the calendar transcribed from the **2002 Latin typical edition**, 209 entries, with **one independently citable overlay per post-2002 decree** rather than a merged file, so every change since the typical edition can be read, cited and reverted on its own; 1 725 reading citations. Where `--rite` cannot affect a command, the refusal says why in substance rather than reporting a scope boundary. EF output is byte-identical to 1.0.0, verified across `day`, `readings`, `rubrics`, `temporal` and `easter` for 2026, 1583 and 9999, and across all five emit formats. +- **Building a second rite found five places the kernel had absorbed EF assumptions.** Two are fixed: `Validate`'s hardcoded `[First; Gospel]` reading set is now rite-supplied, and `transfer_target`'s "strictly later" obligation became "must differ from origin", which is the real invariant. The other three are documented with the rule that forced them. +- **The known limitation, stated plainly**: the OF has no published-ordo witness, where the EF has three. Its external validation rests on litcal -- a second *implementation*, not a second *publication* -- whose identity comparison reaches about 12% of non-Triduum days. A wrong-saint-same-grade defect would not be caught today. +- *(This entry was backfilled on 2026-08-28; 1.1.0 was tagged without one. Its content is taken from the v1.1.0 tag message, not reconstructed.)* + ## [1.0.0] - 2026-08-24 - **colitur now prints what a real ordo prints for the Mass.** That is the whole of this release, and the scoping rule it was built to: nothing more, nothing less. `colitur rubrics <year>` gives, per day, which Mass formulary is said and how that was reached (`proper`/`own`/`preceding-sunday`/`common`/`votive`), the Gloria, the Creed and the preface; commemorations gained their Low-Mass/sung distinction. **The Creed** is RG 475-476, whose clause (a) reads the TEMPORAL cycle rather than the observed day — *"in qualibet dominica, etsi eius Officium alicui festo locum cedat"*, a Sunday impeded by a feast still says it — and whose clause (e) turns on *natalicia*, which is why the rubric must name the Chair of St Peter and St Barnabas explicitly and why the Conversion of St Paul is excluded; the Apostle list was derived from the shipped data and verified entry by entry rather than transcribed. **The Gloria** is RG 431-432, whose clause (a) defers a Mass question to the Breviary — *"quotiescumque ad Matutinum dictus est hymnus Te Deum"* — so the Te Deum is implemented as its own cited predicate from Breviary nn. 237-238 rather than collapsed into a colour heuristic. **The preface** is RG 482-499's chain, proper else seasonal else common, with RG 483 bounding it: no commemoration ever induces a proper preface. **Chants are deliberately absent** and always will be: a priest has the Missal open, and an ordo's job is what the book cannot tell you when you open it. - **Four rubrical defects, every one found by an external witness rather than by inspection.** *The Creed was said at Requiem Masses* — RG 476(f) forbids it, and All Souls had been wrong every year; closed via a `Colour.Black` proxy sound because black occurs exactly twice in the whole engine. *The bissextile shift was missing entirely* — the calendarium's own February footnote moves St Matthias to 25 February and St Gabriel to 28 February in a leap year, *"et bis dicitur sexto calendas"*; 2 041 leap years, 6 983 days, and it surfaced only because a witness year covering 2024 was added. *Rogation Monday and Tuesday were violet* — RG 119(b) makes Paschaltide white and RG 128 does not list Rogations at all; the violet belongs to the votive Rogation Mass, not the day's office, and fixing it cascaded correctly into the Gloria. *The ferias after the Ascension resumed the preceding Sunday's Mass* — the Missal's own marginal rubric repeats the Ascension's through the week; 16 350 days. |
