<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/data/ef, branch v0.9.0</title>
<subtitle>deterministic OCaml engine to compute and validate liturgical calendars for multiple rites, template-driven output to year 9999</subtitle>
<id>https://git.labunix.xyz/colitur.git/atom?h=v0.9.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.9.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-18T15:35:53Z</updated>
<entry>
<title>test(differential): C14 and C15 closed -- only slug vocabulary remains</title>
<updated>2026-08-18T15:35:53Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T15:35:53Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=897c274fd28402159ca6d45eedc1257b1ce98696'/>
<id>urn:sha1:897c274fd28402159ca6d45eedc1257b1ce98696</id>
<content type='text'>
lectio adopted the last two Missal corrections colitur argued:

  C14  3 -&gt; 0   RG 96(a)/97/98. lectio resolved each impeded I-class feast's
                transfer independently, so in 2008, 2035 and 2046 St Joseph and
                the Annunciation both walked onto the Monday after Low Sunday
                and Joseph, losing there, was observed on no day of those years
                at all. It now resolves the year's transfers as a set: the
                Annunciation takes the Monday as its sedes propria, Joseph the
                Tuesday.
  C15  7 -&gt; 0   The Holy Family propers' own 13-January rubric, "sine
                commemoratione Baptismatis D.N.I.C.". lectio kept the Baptism
                as the observed office on all seven such years in 2005-2050.

Those were the last two BEHAVIOUR classes. What is left is C1 (138) and C6
(119), both pure slug vocabulary.

Measured across the whole fixture, applying only the season normalisation the
test already applies: 579 of 16801 days differ, and every one of them differs
on the SLUG ALONE. Zero days differ on season, rank, colour, Epistle or Gospel.
(The test's own norm_slug table already maps 322 of the 579; the 257 left are
C1 and C6. The field profile is the same either way.)

So the two engines now agree on every liturgically meaningful field on every
day of 2005-2050. The residue is what the two projects call things --
ef-christmas-2-friday against ef-time-after-epiphany-1-friday for the same day,
same Mass. Aligning it means renaming lectio's slugs, and those are keys: its
lectionary, clectio's generated tables and any user overlay are built on them.
Left as vocabulary rather than forced.

Fixture refreshed against lectio e713da2; 13 rows changed, colitur agrees with
all of them. 24 divergence classes at the start of this work, 2 now.
</content>
</entry>
<entry>
<title>test(differential): C31 closed -- 4 classes left, 257 of 267 rows are naming</title>
<updated>2026-08-18T15:18:16Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T15:18:16Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=5773d603a2936638654f8e6bd8e595240de4203a'/>
<id>urn:sha1:5773d603a2936638654f8e6bd8e595240de4203a</id>
<content type='text'>
The ferias between Epiphany and the first Sunday after it repeat Epiphany's
own Mass in lectio now; they had been taking the Mass of the Sunday that
follows them.

  C31  98 -&gt; 0
  C1   40 -&gt; 138   grew, and changed character

C1 is now SLUG VOCABULARY ONLY, and its note says so. Season, rank, colour and
both citations agree with colitur on every day of the January window; what
differs is the identifier -- ef-christmas-2-thursday against
ef-time-after-epiphany-1-thursday for the same day with the same Mass. C6 is
the same shape.

That is 257 of the 267 remaining rows. Aligning the vocabularies would mean
renaming lectio's slugs, and those are keys: its own lectionary, clectio's
generated tables and any user overlay are built on them. Recorded as
vocabulary rather than closed, because the rows do differ -- just not in
anything a reader of either engine's output sees.

Measured for 2026: season, rank and colour agree on all 365 days; 14 days
differ and every one differs on the slug alone.

5 classes -&gt; 4, agreement 98.4%.
</content>
</entry>
<entry>
<title>test(differential): C20 and C38 closed -- agreement 98.4%</title>
<updated>2026-08-18T15:13:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T15:13:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=60db67eb2246d748d1e8e55047cef7d3d7843c4e'/>
<id>urn:sha1:60db67eb2246d748d1e8e55047cef7d3d7843c4e</id>
<content type='text'>
lectio carries the readings of the nine Common-routed saints and of three more
that had proper Masses but no reading at all. Every day of 2005-2050 now
resolves a reading there; four days used to come back empty.

C38's own note said it could not close without lectio gaining a Commons
concept. The readings arrived instead of the abstraction, which was enough:
each Common resolves to one first/gospel pair for the saint that names it, so
a table plus assignment layer would have bought indirection and nothing else.

  C20  14 -&gt; 0
  C38  70 -&gt; 0

7 classes -&gt; 5, 351 rows -&gt; 267, agreement 97.9% -&gt; 98.4%.
</content>
</entry>
<entry>
<title>test(differential): seven classes closed -- agreement 93.9% to 97.1%</title>
<updated>2026-08-18T14:51:45Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T14:51:45Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=3c770951011d2fd4911cd98793683bef69ac2d27'/>
<id>urn:sha1:3c770951011d2fd4911cd98793683bef69ac2d27</id>
<content type='text'>
lectio gained the Passiontide week split and thirteen lectionary entries.

  C23  230 -&gt; 0   Holy Week's own six Masses
  C32   99 -&gt; 0
  C35   60 -&gt; 0   the first weeks after Epiphany and Pentecost (RG 299)
  C33   46 -&gt; 0   Corpus Christi
  C34   46 -&gt; 0   the Sacred Heart
  C26   43 -&gt; 0   Passion Tuesday
  C19    7 -&gt; 0   the Holy Family week-index residue

  C1    75 -&gt; 40
  C31   63 -&gt; 98  GREW

The Passiontide split is the one that carried most of this. efWeek had no
Passiontide case, so both weeks numbered 0 and every day of Holy Week took the
slug of its Passion-week namesake -- one set of readings for two weeks with
entirely different Masses. Good Friday was reading Passion Friday's.

C31 growing is the same bookkeeping as C1's earlier growth and is recorded in
its own note: C32 and C35 closed, and rows that carried several causes now
carry only this one. Nothing new disagrees.

17 classes -&gt; 10, 1019 rows -&gt; 488, agreement 93.9% -&gt; 97.1%.

What remains is almost entirely NAMING rather than disagreement: C6 (119) is
colitur's ef-nativity-octave-day-N against lectio's ef-christmas-N-weekday on
days where both now read the same Mass, and C1 (40) is the same shape in the
January window.
</content>
</entry>
<entry>
<title>test(differential): C8 closed, C6 narrowed to naming</title>
<updated>2026-08-18T14:38:15Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T14:38:15Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=71054def597178f8143ed121e33460558456cce6'/>
<id>urn:sha1:71054def597178f8143ed121e33460558456cce6</id>
<content type='text'>
lectio gained Rogation Monday and Tuesday (RG 87, violet under RG 128(d)) and
the Missal's own Mass for the weekdays within the Octave of the Nativity
("Diebus infra octavam Nativitatis Domini", Titus 3:4-7 / Luke 2:15-20).

  C8   26 -&gt; 0    CLOSED
  C6  119 -&gt; 119  narrowed: the cause halved, the count did not

C6 is worth reading carefully rather than skimming the number. Its rows no
longer differ on First_f or Gospel_f at all -- the two engines now read the
SAME Mass on 29-31 December, where lectio previously served the Sunday's. What
is left is Slug_f alone, colitur's ef-nativity-octave-day-N against lectio's
ef-christmas-N-weekday. That is vocabulary, not disagreement. The count did not
move because the entry's gate already admitted a Slug_f-only subset, which is
exactly the case where a row count is a misleading summary.

17 classes, 1019 rows, agreement 93.9%.
</content>
</entry>
<entry>
<title>test(differential): C17 closed -- the largest divergence class is gone</title>
<updated>2026-08-18T14:29:22Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T14:29:22Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=1528d6533bbce035f78b92128fd9b2bb13e05db4'/>
<id>urn:sha1:1528d6533bbce035f78b92128fd9b2bb13e05db4</id>
<content type='text'>
lectio built the votive Office of Our Lady on Saturday (RG 78) and then said
RG 309(a)'s own Mass for it. Both halves were needed: RG 78 keeps the office
and gives it white, RG 309(a) picks among the Missal's five seasonal
formularies. Fixing only the first leaves the day announcing Our Lady and
reading the feria's Mass -- the bug colitur itself shipped briefly and fixed
in its v0.3.0.

  C17  439 -&gt; 0     CLOSED -- the largest class between the two engines
  C31  103 -&gt; 63    Saturdays that carried both causes; only this one left
  C35   69 -&gt; 60    same
  C1    35 -&gt; 75    GREW

C1 growing is not a regression and is recorded as such in its own note: the
January Saturdays C17 used to absorb now differ only on the slug vocabulary
C1 already covers, so they land there instead. Rows moved between entries as
the larger cause was removed.

Also in this refresh, from the same session: weeks after Epiphany now count
from the first Sunday after it rather than from 6 January, which took C19
from 35 to 7 -- what remains there is the Holy Family interaction, a different
cause needing RG 17(b) in lectio.

19 classes -&gt; 18, 1493 rows -&gt; 1045, agreement 91.1% -&gt; 93.8%.
</content>
</entry>
<entry>
<title>test(differential): refresh the fixture -- three more corrections adopted</title>
<updated>2026-08-18T14:05:28Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T14:05:28Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=80096d1227ea7406a88a774bf258bc3ac603eb8f'/>
<id>urn:sha1:80096d1227ea7406a88a774bf258bc3ac603eb8f</id>
<content type='text'>
lectio has taken three further corrections colitur argued from the Missal: the
twelve RG 124 colours (red is for Apostles, Evangelists and Martyrs, and
missalemeum had the rule inverted in both directions), Good Friday's black
under RG 128(b) with RG 132, and RG 72's Christmas Time boundary at 13 January
inclusive.

864 rows changed. Two classes closed outright and two moved:

  C18  450 -&gt; 0    the RG 124 colours -- the LARGEST single class in this file
  C36   46 -&gt; 0    Good Friday's colour
  C1   159 -&gt; 35   the season boundary stopped differing
  C23  184 -&gt; 230  Good Friday's rows fold back, the split no longer needed

C36 is closed rather than kept at zero because the split it represented has
dissolved: it existed only to hold Good Friday apart while its diff set had a
third member, and with the colour agreeing the rows are the exact pair C23 has
always gated on. Restoring 230 is not a regression, it is the number returning
to what it was before the split.

Cited classes 24 -&gt; 19, divergent rows 2252 -&gt; 1521, agreement 86.6% -&gt; 90.9%.

The percentage is again the least interesting part. C18 alone was 450 days on
which the two engines agreed about nothing and now agree because both apply
RG 124 the same way round.
</content>
</entry>
<entry>
<title>test(differential): refresh the lectio fixture -- the lineage inverted</title>
<updated>2026-08-18T12:37:34Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T12:37:34Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=906a84e626ed49c6bd995c6fad7d53355baf582a'/>
<id>urn:sha1:906a84e626ed49c6bd995c6fad7d53355baf582a</id>
<content type='text'>
Every previous refresh of this fixture carried lectio's answers TO colitur,
because colitur's data was bootstrapped from lectio. This one carries
colitur's answers BACK. lectio has merged eight field corrections colitur
argued from the 1962 Missal: ubaldus and didacus promoted from commemoration
to III-class feast on the Missal's own calendarium, both August vigils
recoloured violet under RG 128, and both Ember Saturdays' readings, which
lectio had carrying St Thomas's and St Matthew's Masses respectively.

227 of the 16801 rows changed. Three cited classes went to zero and are
CLOSED and REMOVED, citations preserved in the register, the same discipline
C2-C5, C7, C9-C13, C21, C22 and C25 already record:

  C27  40 -&gt; 0   the Advent Ember Saturday's readings
  C28  40 -&gt; 0   the September Ember Saturday's readings
  C37  77 -&gt; 0   the two vigil colours

C37 is worth noting by name: its own note called the shared lineage "the
sharpest demonstration in the project", colitur and lectio and missalemeum all
carrying the same two wrong colours. Two of the three now carry the right one.

C38 NARROWED rather than closed, and the distinction matters. Its identity
half is gone -- lectio ranks both saints class-3 now -- but the same 70 rows
still differ on readings, because both saints take their Mass from a Common
and lectio has no Commons concept to resolve one. It is gated on
diffs = [First_f; Gospel_f] exactly, which is C18's shape. It cannot close
without lectio gaining a capability, which is a feature rather than a fix.

Net: 24 cited classes to 21, 2252 divergent rows to 2095, agreement 86.6% to
87.5%. The number that matters is not the percentage though -- it is that
those 227 days now agree BECAUSE BOTH ENGINES FOLLOW THE MISSAL, where before
they agreed because both inherited the same errors from Divinum Officium.
That is the failure mode CLAUDE.md's lineage note describes, resolved rather
than documented, for the first time in this project.
</content>
</entry>
<entry>
<title>fix(examples): pin the three Polish classes from the source, one was wrong</title>
<updated>2026-08-18T12:32:59Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T12:32:59Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=84b1ccba5ea352653eaa52dbf0b14102da37eb2c'/>
<id>urn:sha1:84b1ccba5ea352653eaa52dbf0b14102da37eb2c</id>
<content type='text'>
The first version of poland.ini marked three classes INFERRED because the
ordo's class column sits several lines below its own date row and the first
extraction pass did not reach it. All three are now read from the source:
Our Lady Queen of Poland class-1 (line 1114), St Stanislaus class-1 (1233),
Our Lady of Czestochowa class-1 (2398).

One of the three inferences was WRONG. Czestochowa was written class-2 as
"the conservative reading"; the ordo gives class-1. The mistake was treating
the ordo's "part." marker -- particular, proper to certain places rather than
universal in Poland -- as implying a lower rank. Those are different axes.

The extraction method was validated before being trusted, against two entries
whose class was already known from a clean single-line row: St Adalbert
class-1 and St Andrew Bobola class-2. It reproduced both.

Visible consequence, and it is correct: at class-1 Czestochowa no longer
commemorates St Zephyrinus, because RG 111(a) admits no ordinary
commemoration on a I-class day.

The ordo also names the particular sees each patron is proper to -- Stanislaus
for four archdioceses and three dioceses, Queen of Poland for Czestochowa and
Przemysl and the military ordinariate -- which is now recorded beside them,
and which reinforces the header's existing warning that a diocesan calendar
is not a national one.
</content>
</entry>
<entry>
<title>feat(examples): ship two real local calendars, with their limits stated</title>
<updated>2026-08-18T12:14:09Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T12:14:09Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=c47d59cbc5f73a4a695757b93e6d8c7709e0b5e8'/>
<id>urn:sha1:c47d59cbc5f73a4a695757b93e6d8c7709e0b5e8</id>
<content type='text'>
Poland and the Benedictines, in the flat INI form, installed beside the
invented diocesan example.

poland.ini -- 17 entries from the Calendarium Perpetuum pro Dioecesium
Poloniae (1964), promulgated under Rubricarum instructum and applying to the
1962 Missal. Transcribed from a published Polish EF ordo that names that same
calendar, cross-checked against missalemeum's supplement page for the two
formularies 1964 added (13 and 15 July). Date, Latin name and class were read
from the source for every entry; three classes could not be recovered from
the PDF's column layout and are marked INFERRED where they appear, with the
reasoning. The header carries an edition warning that is a real trap here:
the Proprium Poloniae of 1921 and 1934 is still bound into many missals and
carries an outdated arrangement of dioceses and ranks. It is not this
calendar, and it is exactly the kind of plausible wrong-edition source that
has cost this project time before.

benedictine.ini -- two entries, and the comment explaining why is the point of
shipping it. Counted across the Norcia ordo: 86 "I cl.", 43 "II cl.", ZERO
"III cl." and ZERO "IV cl.", against 103 "Semidup." and ~96 "Dup.". The
monastic rite uses the Roman classes at the top and the older Duplex /
Semiduplex grades below, exactly where the Roman calendar has III and IV
class. colitur's rank vocabulary cannot express those, so most Benedictine
propers cannot be written here at all -- a mismatch of vocabularies between
related rites, not a gap in the data. Rather than invent a Duplex -&gt; Class3
mapping the source never states, that file ships only what its ordo gives in
Roman terms and lists roughly two dozen excluded feasts BY NAME, so the
omission is visible instead of silent.

Both headers say plainly that they are examples and not authorities: they are
transcriptions from published ordines, none of the five test layers can vouch
for either, and both should be checked against the reader's own ordo. The
cram test asserts only what we control -- that they parse, convert and apply
-- and says so.

They also demonstrate the precedence engine on real data: the Benedictine
Transitus is I class and takes 21 March with the Lenten feria commemorated,
and Maurus is II class and takes 15 January with Paul the First Hermit
commemorated.
</content>
</entry>
</feed>
