aboutsummaryrefslogtreecommitdiff
path: root/data/ef
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-22 12:58:15 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-22 12:58:15 +0200
commit3bfa0c459e3c0b5bfa962b7dbb0227db5a8ba09f (patch)
tree04eb619e3b8de656364a2de808865ab229052219 /data/ef
parent89b6cfbc8c2a9f5921c19543f893decc2497ef69 (diff)
downloadcolitur-3bfa0c459e3c0b5bfa962b7dbb0227db5a8ba09f.tar.gz
colitur-3bfa0c459e3c0b5bfa962b7dbb0227db5a8ba09f.zip
test(ef): the LMS Ordo as a sixth validation layer
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).
Diffstat (limited to 'data/ef')
-rw-r--r--data/ef/expected-divergences-lms.sexp55
1 files changed, 55 insertions, 0 deletions
diff --git a/data/ef/expected-divergences-lms.sexp b/data/ef/expected-divergences-lms.sexp
new file mode 100644
index 0000000..96c9e50
--- /dev/null
+++ b/data/ef/expected-divergences-lms.sexp
@@ -0,0 +1,55 @@
+; data/ef/expected-divergences-lms.sexp -- Task 6 (2026-08-21-colitur-
+; celebrant-rubrics-phase1)'s cited allow-list for the LMS Ordo comparison
+; (test/test_lms_ordo.ml), fixture window 2024-11-27..2025-12-31.
+;
+; A SEPARATE file from data/ef/expected-divergences.sexp (the lectio
+; allow-list) and data/ef/expected-divergences-missalemeum.sexp (the
+; missalemeum/Divinum-Officium-lineage allow-list): this Ordo is a THIRD,
+; independent lineage (a printed England & Wales diocesan book, ISBN
+; 9781739209636, compiled directly from the 1962 Missal/1960 rubrics --
+; never passed through Divinum Officium, missalemeum or lectio), so its
+; own divergences are kept apart rather than tangled into either existing
+; file's own provenance.
+;
+; [verdict] names which side this task's own primary-source research
+; backs, the SAME convention the missalemeum file's own header states:
+; not always "colitur".
+;
+; L1 -- 2025-11-03 (All Souls' Day, transferred from 2 November, a Sunday
+; that year, to the next available day -- RG's own transfer of a
+; Commemoration when it falls on a Sunday). colitur (Rite_ef.Rubrics_ef.
+; creed) says the Creed IS said (true): observed.rank = Class1, so RG
+; 475(b)'s "in festis I classis" branch fires with nothing to stop it.
+; The Ordo says it is NOT said (false): "Mon 3 ALL SOULS' DAY I Cl B / No
+; Gl Sequence No Cr Pr of the Dead No Blessing" -- confirmed directly
+; against the extracted pdftotext text, not merely the fixture row.
+;
+; The Ordo is right and colitur is not, on the rubric itself: RG 476(f),
+; "Non dicitur symbolum ... f) in Missis defunctorum" -- the Creed is
+; never said at a Requiem Mass, and All Souls' Day is definitionally one
+; (colour black in colitur's own output on this very date). This is NOT a
+; new defect this task found and is choosing to leave open -- it is
+; rubrics_ef.ml's OWN documented scope limit, stated in that file's header
+; comment before this task existed: "476(f) (Requiem Masses, also not
+; modelled) ... genuinely inapplicable to this implementation -- a
+; documented scope limit, not a defect." [creed] has no notion of "this
+; Mass is a Requiem" anywhere in its own inputs (temporal/observed/date),
+; so it cannot express 476(f) without a signature change this task's own
+; constraints do not authorise (lib/ is read-only here except for this
+; allow-list). Recorded here as the SPECIFIC real-world day the scope
+; limit is finally witnessed on, rather than left as an abstract note in
+; a doc comment nobody's data ever exercised.
+;
+; Domain-wide count: unmeasured (out of this task's scope -- would need a
+; sweep of every I-class Requiem-shaped day 1583-9999, which does not
+; exist as a distinct predicate in this codebase to sweep on). The two
+; days this WOULD also apply to in principle -- 2 November itself in any
+; year it does not fall on a Sunday, and the plain All Souls' Day office
+; whenever it is not transferred -- are outside this fixture's own
+; window's reach for a second occurrence, so only the one real day above
+; is witnessed and adjudicated here.
+((id L1)
+ (citation "RG 476(f): \"Non dicitur symbolum ... f) in Missis defunctorum\" -- the Creed is never said at a Mass of the dead; rubrics_ef.ml's own header already documents this Mass-type as unmodelled")
+ (verdict lms_ordo)
+ (note "colitur's [creed] has no notion of a Requiem Mass in its inputs (temporal/observed/date), so RG 475(b)'s I-class branch fires unopposed on All Souls' Day (Class1, black). A pre-existing, self-documented scope limit (rubrics_ef.ml's own header), witnessed here for the first time on a real date rather than left as an abstract note: 2025-11-03, All Souls' Day transferred from Sunday 2 November. The Ordo (\"No Gl Sequence No Cr Pr of the Dead\") is correct on the rubric.")
+ (expected_rows 1))