summaryrefslogtreecommitdiff
path: root/test/test_oracle.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 10:21:39 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 10:21:39 +0200
commite25558fee984837389d0e53cd6e17a3820f8e5ea (patch)
treeeea56c56f173e59fb8b4c0e68e251cdbf0166a22 /test/test_oracle.ml
parentd8f4bece5480cfb94088fae62fa875a66b5b4e7e (diff)
downloadcolitur-e25558fee984837389d0e53cd6e17a3820f8e5ea.tar.gz
colitur-e25558fee984837389d0e53cd6e17a3820f8e5ea.zip
fix(ef): days within the Octave of the Nativity, and RG 69 for 29-31 Dec
M11 was the one entry in the missalemeum allow-list adjudicated against colitur, and it was right to be. The calendarium directs "Com. octavae Nativitatis" under each of 26, 27 and 28 December (LT.txt:5454-5459) and RG 109(c) makes a commemoration of the days within the Octave privileged. colitur emitted none. The cause was a reasoning error stated in Temporal_ef's own comment: "26-28 Dec are Stephen, John and the Innocents, hence sanctoral". Their office is sanctoral -- those II-class feasts win the day -- but they remain days WITHIN the Octave (RG 67, "Dies infra octavam sunt II classis"), and colitur built them as generic Class4 ferias. With no octave-day candidate there was nothing for the feast to be commemorated over. Building days 2-4 exactly as days 5-7 always were makes the commemoration fall out of the existing machinery rather than needing a special case: the feast wins on rank, the octave day loses, RG 109(c) privileges it, RG 111(c)'s single slot goes to it. A second, independent defect surfaced while fixing it. The octave-day branch covered 29-31 December unconditionally, so a Sunday falling there got a feria identity -- where RG 69 says a Sunday occurring 26-31 December SEMPER keeps its own office and commemorates the feast. Confirmed against the oracle rather than argued: missalemeum shows "Sunday in the Octave of Christmas" on 2035-12-30, a Sunday, where colitur showed a feria. Both named and anchors now exclude Sundays; anchors had asserted the octave slugs unconditionally and was wrong the same way. Blast radius, full sweep against the pre-change binary: 25251 days, every one 26-31 December, exactly two shapes, zero unclassified -- 21653 carrying an octave-day slug and 3598 that are all Sundays, the RG 69 correction. Allow-lists: M11 closed and removed. C6 narrowed 138 to 119, nineteen of its days having changed temporal identity rather than verdict. M15 widened 18 to 22 -- both streams now commemorate the octave, but the candidate is temporal-origin and carries no English name to match against missalemeum's own, this entry's documented limit on four more dates. Stated rather than glossed: this trades a substantive divergence, colitur omitting a commemoration the Missal directs, for a comparator limit, the commemoration existing but not being name-matchable. That is a real improvement, but what the oracle now proves is that both streams commemorate something on those days; the identity rests on the rubric and the calendarium. Register: section 6.17.
Diffstat (limited to 'test/test_oracle.ml')
-rw-r--r--test/test_oracle.ml18
1 files changed, 14 insertions, 4 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index df56bcc..5177716 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -983,7 +983,17 @@ let m15_dates =
[ "2026-02-24"; "2026-03-19"; "2026-03-25"; "2026-12-02"; "2026-12-03"; "2026-12-04";
"2026-12-07"; "2026-12-11"; "2026-12-21"; "2027-02-22"; "2027-02-24"; "2027-12-02";
"2027-12-03"; "2027-12-04"; "2027-12-06"; "2027-12-07"; "2027-12-11"; "2027-12-13";
- "2027-12-16"; "2027-12-21" ]
+ "2027-12-16"; "2027-12-21";
+ (* WIDENED (Nativity-Octave fix, 2026-08-18): the four days on which
+ colitur now commemorates the day within the Octave of the Nativity
+ (RG 67/109(c), the calendarium's own "Com. octavae Nativitatis"
+ under 26/27/28 December). Both streams commemorate it -- this fix
+ closed M11, which existed because colitur commemorated NOTHING
+ there -- but the candidate is TEMPORAL-origin, so Temporal_ef sets
+ no English name and the comparator cannot resolve its identity
+ against missalemeum's "For Octave of the Nativity". Exactly this
+ entry's own limit, on four more dates. *)
+ "2026-12-26"; "2026-12-28"; "2027-12-27"; "2027-12-28" ]
(* M16 -- Task B: a genuine IDENTITY mismatch, both sides otherwise agreeing
on rank/colour/count/presence. 27 March 2026 (Friday of Passion Week):
@@ -1892,7 +1902,7 @@ let classify_2038 (c : colitur_row) (o : oracle_row) diffs =
dedicated task rather than settled by whichever answer happens to match
the oracle. *)
else if has_comm "rogation-wednesday" then
- Some "COMM-ONLY-TIE-BREAK (alphabetical, arbitrary -- see register 6.16)"
+ Some "COMM-ONLY-TIE-BREAK (RG-under-determined convention -- register 6.16)"
(* The documented comparator LIMIT, not a calendar disagreement: colitur
resolves a commemoration's identity through its own English name, and a
TEMPORAL-origin commemoration (an impeded feria, an Ember or Rogation
@@ -2029,11 +2039,11 @@ let test_2038_class_counts () =
("CHRISTMAS-MULTI-MASS (M27)", 1);
("COLOUR (M21)", 7);
("COMM-NAME-FORM (same entity, different English name)", 2);
- ("COMM-ONLY-TIE-BREAK (alphabetical, arbitrary -- see register 6.16)", 1);
+ ("COMM-ONLY-TIE-BREAK (RG-under-determined convention -- register 6.16)", 1);
("JOSEPH-ANNUNCIATION-TRANSFER-ORDER (C14's own collision)", 2);
("JUDITH (M28, register 6.6)", 2);
("MISSAL-TWO-PART-CITATION (register 6.9)", 1);
- ("NATIVITY-OCTAVE-COMM-MISSING (M11, colitur's own gap, verdict open)", 2);
+ ("COMM-IDENTITY-UNRESOLVED (temporal-origin, no English name -- M15's limit)", 2);
("PERPETUA-COMMON (register 6.8)", 1);
("PETER-COMPANION-ABSENT-UPSTREAM (M19)", 1)
]