<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/test/fixtures/lms-ordo-2024-2025.sexp, branch main</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=main</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-23T21:01:42Z</updated>
<entry>
<title>feat(ordo): wire the LMS preface column into the witness suite</title>
<updated>2026-08-23T21:01:42Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-23T21:01:42Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=8faf89f89bd6783a518b6fc0b48c6ee452ba2e94'/>
<id>urn:sha1:8faf89f89bd6783a518b6fc0b48c6ee452ba2e94</id>
<content type='text'>
Extends tools/extract_lms_ordo.ml's row type with a praef field (the
first "Pr of ..." / "Common Pr" match in each day's universal block,
same first-in-reading-order discipline already used for Gl/Cr) and
regenerates all three LMS fixtures. Also brings lms-ordo-2024-2025.sexp
under the generalised, probe-verified provenance template the Witnesses
task previously added only for the two newer editions -- it had kept
Task 6's original hand-written header.

Characterisation finding: this Ordo prints OPTION LISTS ("Pr of X or Pr
of Y or Common Pr"), not a single value per day, and several named
options (Martyrs, All Saints and Patron Saints, the Dedication of a
Church, the Most Holy Sacrament, St John the Baptist, the Angels) are
genuinely absent from RG 484-497's own fourteen named prefaces. Every
instance found in the universal block pairs such an extra with a
genuine RG-482 answer, so test/test_lms_ordo.ml compares by membership
(classify_praef_options, a 15-entry prefix table split on the
standalone token "or"), not string equality.

Opposite-prediction probes (Nativity/Apostles/Requiem) are hard-
verified inside the extractor itself before any fixture is trusted, the
same discipline already used for the Creed column.

Result: 396/396, 399/399, 398/398 comparable rows agree across the
three editions (Good Friday excluded per edition, no Mass that day),
zero allow-list entries needed.

extraordinaryform.org's own three editions were characterised but
deliberately not wired in this pass -- see
.superpowers/sdd/2026-08-21-colitur-celebrant-rubrics-phase1/preface-witnesses-report.md
for the full account (the field is genuinely per-day, contrary to a
naive header-count read, but carries its own classification anomaly
during Advent and reconfirms the corpus's known St Lawrence vigil
defect, and building a full extractor for it is a separate, comparably
large task not needed to decide the RG 497 question this same report
settles).

Claude-Session: https://claude.ai/code/session_017ZBxCCRM2ojnBupp3SBxV9
</content>
</entry>
<entry>
<title>test(ef): the LMS Ordo as a sixth validation layer</title>
<updated>2026-08-22T10:58:15Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-22T10:58:15Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=3bfa0c459e3c0b5bfa962b7dbb0227db5a8ba09f'/>
<id>urn:sha1:3bfa0c459e3c0b5bfa962b7dbb0227db5a8ba09f</id>
<content type='text'>
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).
</content>
</entry>
</feed>
