| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The .mli promised said is "the slug whose Mass is said". For Votive
(RG 78/309(a), the Saturday votive Mass of Our Lady) it was set to the
day's own ferial slug -- whose Mass is exactly the one NOT said. A
consumer joining rubrics to readings on that slug would silently get
the wrong Mass: 2026-01-03 reports ef-christmas-1-saturday, which has
zero entries in data/ef/lectionary.sexp, because the citations
actually come from bvm_saturday_citations, a season-keyed function
with no slug of its own anywhere in the shipped data.
Chose the type-honest fix over the interim documentation one: said is
now Slug.t option, None exactly for Votive, because there is
genuinely no slug in the shipped data this field could report for
that one source. Adding real ids for the five seasonal BVM Masses
(the reviewer's first option) is out of scope -- a data restructuring
this round explicitly does not carry. Threading the office slug
through a second field was considered and rejected as redundant: the
day's own office is already available on the same Liturgical_day.t
via observed.slug, which every caller already has in scope regardless
of via, so said does not need to duplicate it.
colitur rubrics stays byte-identical: rubrics_line already has
d.observed in scope and falls back to its slug when said is None,
printing the exact value it always printed for a Votive row (verified
directly, diffed against pre-fix output across four years). colitur
day/readings are unaffected (neither reads Mass_formulary at all).
colitur emit --format sexp's pretty-printed line count for 2027 moved
9011 -> 9025: every day's formulary record widened by said's own
extra option wrapping, and to_string_hum wraps by column width.
Cosmetic only, diffed line by line to confirm every change is this
shape or a consequent wrap shift; recorded in test/cli.t alongside the
476(f) note it now sits next to.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test_lms_ordo.ml's formulary-override check only asked WHETHER a
Preceding_sunday day showed a "Mass of ..." override line, never WHICH
Sunday it named. colitur could have resumed the wrong Sunday on all
66 such days and this layer would have stayed green -- resuming the
right Sunday is precisely what step 3 of the reading chain exists to
do.
test_formulary_override_matches now derives the Ordo's own expected
prose from Mass_formulary.t.said's own resolved slug (parsed directly,
no Str/regex) and compares it against the Ordo's real text. Two
narrow, evidenced exceptions, both counted rather than silently
absorbed:
- Christ the King's own Sunday reaches this population under a
NAMED slug (ef-christ-the-king) that carries no embedded ordinal;
its position among the Sundays after Pentecost varies by year, so
Temporal_ef.week is read for that one slug specifically, not
called generically (an earlier version of this fix read [week]
for every day and was wrong -- caught by its own assertion on the
very first run, because Time_after_pentecost's own last-Sunday and
surplus-Sunday renumbering diverge from the raw week count. Reading
the number back out of the already-resolved slug sidesteps both
special cases and is not tautological with the wrong-Sunday
failure mode this fix exists to catch).
- Three real days between Ascension and the following Sunday
(2025-05-30, 2025-06-02, 2025-06-03) are a genuine, newly-found
defect: colitur resumes the nearest calendar Sunday, but the
Missal, and the Ordo, keep saying Ascension's own Mass through
this stretch instead. Structural (Ascension is a fixed Easter+39),
not a fixture artefact, and not fixed here -- it needs a
lectionary-data change out of this fix round's own scope.
Documented in expected-divergences-lms.sexp as a prose-only note
(no active sexp record: this file's id-lookup machinery is scoped
to the Creed axis, and a second axis reusing it would let one
test's "declared but never fired" check spuriously trip on the
other's entry) and enforced directly by this test's own count
assertion instead.
Mutation-proved: offsetting step 3's Sunday lookup by an extra 7 days
reddens this test (23 failures total across the suite: layers 3-6,
golden pins, and lectionary_ef's own unit tests), confirmed via the
compiled test binary directly; reverted clean, full suite green again.
|
|
|
An independent lineage -- neither Divinum Officium, missalemeum nor
lectio -- covering the Mass formulary and the Creed. Characterised
before use, per the discipline the extraordinaryform.org Ordo's
blanket St Lawrence vigil gap taught this session: five opposite-
prediction Creed probes (Sunday/feria, octave-override vs plain
II-class, I-class) all confirmed against the raw extracted text
before a single divergence was adjudicated, recorded in the
fixture's own provenance header.
tools/extract_lms_ordo.ml hand-parses pdftotext -layout output (no
Str/regex, frozen deps) into test/fixtures/lms-ordo-2024-2025.sexp,
400 day-rows (2024-11-27..2025-12-31). Gl/Cr print per Mass-option,
not per day; the extractor takes the first pair in reading order,
which the source's own layout guarantees is the universal entry's,
since a diocesan variant always follows it, never precedes it. The
Ordo's I-V roman numeral ("Missae de sancta Maria in sabbato", RG
309(a)) is matched whole-line only, never by substring -- "V Mass of
BVM" is a substring of "IV Mass of BVM".
test/test_lms_ordo.ml compares two axes 1:1 by date:
- the Creed (RG 475-476): 399 of 400 days comparable (Good Friday
has no Mass at all, asserted as the only such day); one genuine
divergence, adjudicated to the ORDO, not colitur -- All Souls'
Day 2025-11-03 is a Requiem Mass, and colitur's own creed
predicate has no notion of one, a pre-existing scope gap
rubrics_ef.ml already documented in its own header before this
task existed.
- the BVM-Saturday seasonal Mass selection, the addendum's own
"sharper check": all 14 Votive days in the window match their
season's own numeral exactly, both directions, independently
re-derived from RG 309(a) rather than calling colitur's private
function.
- the formulary override, for the three sources it can honestly
discriminate (Proper 179, Preceding_sunday 66, Common 2, all
clean); Own_slug (139) is excluded with evidence, not silently --
several ferial slugs carry citations byte-identical to their
Sunday's own, so the Ordo's override line cannot distinguish the
two representations.
data/ef/expected-divergences-lms.sexp carries the one adjudicated
entry (L1), cited to RG 476(f).
Mutation-tested: inverting RG 475(a)'s Sunday clause reddens 10
existing Rubrics_ef unit tests AND this new layer's own comparator,
independently, on a data source none of the other five layers touch.
Reverted after confirming.
No lib/ changes. day/readings/rubrics output re-confirmed byte-
identical (1583, 2026, 2038, 9999) after this task; all three gates
green (dune test, exhaustive sweep, make check).
|