From 8baabbd7e0b070197657d4d358ce5684dcda6255 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Thu, 13 Aug 2026 08:22:55 +0200 Subject: test(golden): pin Holy Family in three shapes (RG 17(b)) An ordinary year (2026-01-11, no fixed-date competitor), the latest possible date and the one 13-January collision (2030-01-13, the fixed Baptism of the Lord excluded entirely by RG91 e14 + RG112(a)), and the earliest possible date (2024-01-07, Epiphany a Saturday) -- proving RG 17(b)'s own 7-13 January window at both ends, not only its middle. Every field independently traced against the primary text before typing it in, per this file's own header rule: season stays christmastide (RG 72-73, unaffected by which Sunday of it this is), week stays unset (Christmastide has no numbered weeks at all), slug is unchanged from the plain Sunday key this date always carried (temporal_ef.ml's own comment on why RG 17(b) needs no new lectionary key), rank II class, colour white. Each weekday independently cross-checked against "date -d +%A" (GNU coreutils). --- test/test_golden.ml | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/test/test_golden.ml b/test/test_golden.ml index 5292427..259b81a 100644 --- a/test/test_golden.ml +++ b/test/test_golden.ml @@ -552,6 +552,72 @@ let test_rg16a_lord_feast_no_sunday_commemoration_2028 () = colour=white comms=[] in=- out=[]" (describe d) +(* Holy Family (RG 17(b), scan-verified, docs/research/rules-register.md + §4/§6.0): "festum S. Familiae Iesu, Mariae, Ioseph, celebrandum dominica + prima post Epiphaniam" -- first Sunday after Epiphany, II class, EVERY + year, taking the Sunday's own place "cum omnibus iuribus et privilegiis" + (RG 17(b)'s own closing clause, the same formula RG 16(a) uses above). + Three shapes, each independently verified against the primary text + BEFORE being typed in here, per this file's own header rule: + + 1. AN ORDINARY YEAR (2026, 11 January): no fixed-date competitor in the + 7-13 January window besides St Hyginus (11 Jan, Class3, + Commemoration_only per data/ef/sanctoral.sexp) -- excluded from the + day's single Sunday slot outright by RG 111(b)'s own rank floor ("de + festo II classis"), the SAME mechanism test_precedence_ef.ml's own + "II-class Sunday admits only a de-festo-II-classis commemoration" pin + already proves for a different date -- so comms=[] is not itself new + ground, only Holy Family's own slug/rank/colour/season are. + `date -d 2026-01-11 +%A` = Sunday, independently confirmed. + 2. THE 13-JANUARY COLLISION (2030, the latest possible date -- Epiphany + itself a Sunday, 6 January): the fixed Commemoration of the Baptism + of the Lord (13 Jan, Class2, subject Lord, data/ef/sanctoral.sexp) + would otherwise contest the day directly, not merely lose a + commemoration slot -- RG 91 entry 14's own "primum mobilia, deinde + fixa" (precedence_ef.ml's own [entry_14_movable_band]) is what keeps + Holy Family observed, and RG 112(a) -- directly confirmed by the Holy + Family Mass propers' own more specific 13-January rubric, both + photographic scans, word for word: "Si festum S. Familiae occurrerit + die 13 ianuarii, Missa dicitur de festo S. Familiae, sine + commemoratione Baptismatis D.N.I.C., et sine commemoratione + dominicae" -- is what keeps comms=[] rather than admitting the + Baptism as an ordinary Class2 commemoration. `date -d 2030-01-13 + +%A` = Sunday, independently confirmed; 2030 is one of the seven + years in the 2005-2050 window this collision occurs (register §6.0's + own list, test_differential.ml's own C15). + 3. THE EARLIEST POSSIBLE DATE (2024, 7 January -- Epiphany a Saturday): + the OTHER end of RG 17(b)'s own 7-13 January range, proving the + window's own boundary, not only its middle and its latest instance. + No fixed-date competitor exists this early in the window either. + `date -d 2024-01-07 +%A` = Sunday, independently confirmed. + + All three: season=christmastide (RG 72-73's own 1-13 January boundary, + unaffected by Holy Family), week=- (Christmastide carries no numbered + weeks at all, [T.week_origin]'s own [None] case -- unaffected by which + Sunday of it this is), slug=ef-time-after-epiphany-sunday-1 (unchanged + from the plain Sunday key this date always carried -- temporal_ef.ml's + own comment on why RG 17(b) does not need a new lectionary key), rank + =class-2, colour=white. *) +let test_holy_family_ordinary_year_2026 () = + check ~msg:"2026-01-11: Holy Family, ordinary year -- Hyginus (Class3, Commemoration_only) has no \ + standing for the day's II-class-only Sunday slot" + 2026 1 11 + "2026-01-11 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \ + colour=white comms=[] in=- out=[]" + +let test_holy_family_excludes_baptism_2030 () = + check ~msg:"2030-01-13: Holy Family on the latest possible date -- RG91 e14 \"primum mobilia\" keeps it \ + observed over the fixed Baptism, RG112(a) excludes the Baptism entirely, not merely demotes it" + 2030 1 13 + "2030-01-13 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \ + colour=white comms=[] in=- out=[]" + +let test_holy_family_earliest_possible_date_2024 () = + check ~msg:"2024-01-07: Holy Family on the earliest possible date (Epiphany a Saturday)" + 2024 1 7 + "2024-01-07 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \ + colour=white comms=[] in=- out=[]" + (* 2025-02-02, the other real instance of the SAME pattern -- not a contrasting second direction, per this task's fix round 1 (CRITICAL finding, item 1, reverted; see register §6.0 for the full account). @@ -704,6 +770,13 @@ let suite = Alcotest.test_case "RG16(a), the Purification (oracle-ruled): observed outright, the Sunday not commemorated (2025-02-02)" `Quick test_purification_on_a_sunday_2025; + Alcotest.test_case "Holy Family (RG17(b)), ordinary year (2026-01-11)" `Quick + test_holy_family_ordinary_year_2026; + Alcotest.test_case + "Holy Family excludes the Baptism entirely on the latest possible date (RG91 e14 + RG112(a), 2030-01-13)" + `Quick test_holy_family_excludes_baptism_2030; + Alcotest.test_case "Holy Family, earliest possible date (2024-01-07)" `Quick + test_holy_family_earliest_possible_date_2024; Alcotest.test_case "ef-rebootstrap: RG91 entry24 (III-class feast) outranks entry28 (class-4 feria) -- the six dates \ deferred since 2038's own Easter-extreme pin (2008-04-02/04/05, 2038-03-06/08/09)" -- cgit v1.3