aboutsummaryrefslogtreecommitdiff
path: root/test/test_golden.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_golden.ml')
-rw-r--r--test/test_golden.ml121
1 files changed, 118 insertions, 3 deletions
diff --git a/test/test_golden.ml b/test/test_golden.ml
index 1724375..0f90ee7 100644
--- a/test/test_golden.ml
+++ b/test/test_golden.ml
@@ -434,11 +434,21 @@ let test_ember_ferias_commemorated_when_impeded () =
comms=[ef-advent-ember-fri:privileged] in=- out=[]";
(* 1902-02-22: Lent Ember Saturday (RG91 entry 18, II class) impeded by
the Chair of St Peter (II class, universal, entry 16). Same RG24/
- RG109(e) mandate. *)
- check ~msg:"1902-02-22: Lent Ember Saturday, impeded, MUST be commemorated (RG24) and is privileged (RG109e)"
+ RG109(e) mandate. ALSO, ef-holyname-rg110 task: RG 110's own
+ inseparable Peter/Paul commemoration -- "in Officio ... S. Petri semper
+ fit commemoratio S. Pauli" -- fires unconditionally whenever
+ [chair-of-st-peter] is observed, uncapped by RG 111's own admission
+ count, so `+paul` now rides alongside the Ember feria's own
+ commemoration rather than being displaced by it (precedence_ef.ml's own
+ [rg110_additions]). This pin's own [ef-lent-ember-sat:privileged] half
+ is UNCHANGED from before this task -- only [paul:ordinary] is new,
+ confirming RG 110 adds a genuinely SEPARATE, uncapped slot rather than
+ competing for the Ember feria's own privileged one. *)
+ check ~msg:"1902-02-22: Lent Ember Saturday, impeded, MUST be commemorated (RG24) and is privileged (RG109e) -- \
+ AND RG110's Paul companion rides alongside it, uncapped"
1902 2 22
"1902-02-22 saturday season=lent week=1 slug=chair-of-st-peter rank=class-2 colour=white subject=saint \
- comms=[ef-lent-ember-sat:privileged] in=- out=[]"
+ comms=[ef-lent-ember-sat:privileged,paul:ordinary] in=- out=[]"
let test_iv_class_ferias_never_commemorated () =
(* 2026-07-22: an ordinary Time-after-Pentecost feria (Class4, RG91 entry
@@ -634,6 +644,98 @@ let test_holy_family_earliest_possible_date_2024 () =
"2024-01-07 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \
colour=white subject=lord comms=[] in=- out=[]"
+(* Most Holy Name of Jesus (RG 17(a), scan-verified, docs/research/rules-
+ register.md §6.2/§4): "festum Ss.mi Nominis Iesu, celebrandum dominica
+ quae occurrit a die 2 ad 5 ianuarii (secus die 2 ianuarii)" -- unlike Holy
+ Family (RG 17(b), immediately above), this window CAN be, and routinely
+ is, empty of a Sunday (3,619 of 8,417 years domain-wide) -- the
+ calendarium's own fallback, "vel, ea deficiente, die 2 ianuarii", is what
+ the SECOND pin below exercises.
+
+ *** THIS FILE'S OWN VACUITY WARNING, APPLIED DIRECTLY ***
+
+ [test_holy_name_sunday_shape_2026] pins a year where the Sunday shape
+ fires -- slug/rank/colour/season/comms here are ALL already what
+ [T.sunday_slug]'s Christmastide branch computed before this task's fix
+ (the identical accident Holy Family's own [describe] note above already
+ explains for its shape): an unnamed Sunday and Holy Name of Jesus share
+ every one of those fields on this date. Reverting the fix leaves this
+ pin GREEN except for [subject] -- the ONE field it actually tests, same
+ discipline as Holy Family's own "coordinator finding 4" fix. This pin
+ earns its place only by asserting [subject] explicitly, not by pinning
+ the whole line uncritically.
+
+ [test_holy_name_fallback_2029] is the pin that actually has teeth against
+ the LARGER of the two defects this task closed: before the fix, colitur
+ emitted NO Holy Name office at all in a fallback year -- not merely an
+ unnamed generic Sunday (Holy Family's own pre-fix shape), but the
+ ordinary Christmastide ferial slug (`ef-christmas-1-tuesday`, class-4)
+ the task brief's own example names. Reverting the fallback half of the
+ fix reddens this pin on EVERY field (slug, rank, subject), not only one --
+ the shape this file's header calls "the whole line moved", the opposite
+ of the Sunday pin's own narrow, single-field teeth. *)
+let test_holy_name_sunday_shape_2026 () =
+ check ~msg:"2026-01-04: Holy Name of Jesus, Sunday shape -- oracle-corroborated (missalemeum's own \
+ 2026-01-04 row: rank 2, white, title \"Holy Name of Jesus\")"
+ 2026 1 4
+ "2026-01-04 sunday season=christmastide week=- slug=ef-holy-name-sunday rank=class-2 colour=white \
+ subject=lord comms=[] in=- out=[]"
+
+let test_holy_name_fallback_2029 () =
+ check ~msg:"2029-01-02: Holy Name of Jesus, FALLBACK shape (RG 17(a)'s own \"secus die 2 ianuarii\", the \
+ calendarium's \"vel, ea deficiente, die 2 ianuarii\") -- no Sunday falls 2-5 January 2029 \
+ (`date -d 2029-01-0{2,3,4,5} +%u` = 2,3,4,5, independently confirmed), so 2 January itself \
+ carries the feast; before this task's fix colitur emitted `ef-christmas-1-tuesday class-4` \
+ here instead -- a real, II-class office simply missing, not merely misnamed"
+ 2029 1 2
+ "2029-01-02 tuesday season=christmastide week=- slug=ef-holy-name rank=class-2 colour=white \
+ subject=lord comms=[] in=- out=[]"
+
+(* RG 110 (docs/research/rules-register.md §4, Caput XIV), fix round 1
+ (coordinator findings F1/F2): two golden pins neither existed before this
+ round -- F2 named 30 June's own total absence of golden coverage
+ directly ("no golden pin on any 30 June date"), and F1 named the
+ shape-(c) collision as a real day this suite otherwise never exercises
+ end-to-end against real data (both new [admit_cases] rows are synthetic
+ candidates, not `Calendar.day` over the real committed layer).
+
+ *** BOTH PINS ARE BLIND TO COMMEMORATION ORDER -- STATED HONESTLY, NOT
+ CLAIMED AS PROOF OF F1's OWN FIX ***
+
+ [describe]'s own `comms` field (this file's header, above) sorts the
+ commemoration list alphabetically before rendering
+ (`List.sort compare`) -- deliberately, so a golden pin's own STRING
+ comparison is not accidentally order-sensitive where nothing textual
+ requires it to be. That means this file, like the differential and the
+ oracle's own [identity_diff] (test_oracle.ml), CANNOT see whether
+ [rg110_additions] emits `chair-of-st-peter, paul` or `paul,
+ chair-of-st-peter` -- both sort to the same string. The ONLY place in
+ this codebase's test suite that asserts commemoration ORDER at all is
+ `test_precedence_ef.ml`'s own [admit_cases] table (`Alcotest.(check
+ (list string))`, not a sorted string) -- see precedence_ef.ml's own
+ [rg110_additions] comment for the citation this uses to fix the order,
+ and CLAUDE.md's "know what each layer cannot see" section for this as a
+ permanent, structural limit, not a gap this task's own pins happened not
+ to close. These two pins prove PRESENCE and IDENTITY of both
+ commemorations on a real, `Calendar.day`-resolved date -- genuine
+ ground no other pin in this file currently covers -- not order. *)
+let test_rg110_june_30_2026 () =
+ check ~msg:"2026-06-30: RG 110's 30-June direction -- In Commemoratione Sancti Pauli Apostoli observed, \
+ +commemoration-of-st-peter (data/ef/adjustments.sexp's own `Add` directive) the sole \
+ commemoration -- missalemeum shows neither (M19, verdict colitur)"
+ 2026 6 30
+ "2026-06-30 tuesday season=time-after-pentecost week=5 slug=in-commemoratione-sancti-pauli-apostoli \
+ rank=class-3 colour=red subject=saint comms=[commemoration-of-st-peter:ordinary] in=- out=[]"
+
+let test_rg110_shape_c_2004 () =
+ check ~msg:"2004-02-22: RG 110 shape (c) -- Chair of St Peter itself loses the day to an ordinary \
+ (Septuagesima, not I-class) II-class Sunday and is admitted only as a commemoration under \
+ RG 111(b)'s own rank floor; Paul rides along too, uncapped (`date -d 2004-02-22 +%A` = \
+ Sunday, independently confirmed)"
+ 2004 2 22
+ "2004-02-22 sunday season=septuagesima week=3 slug=ef-septuagesima-sunday-3 rank=class-2 colour=violet \
+ subject=temporal comms=[chair-of-st-peter:ordinary,paul:ordinary] 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).
@@ -793,6 +895,19 @@ let suite =
`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 "Holy Name of Jesus (RG17(a)), Sunday shape, subject asserted (2026-01-04)" `Quick
+ test_holy_name_sunday_shape_2026;
+ Alcotest.test_case
+ "Holy Name of Jesus, fallback shape (RG17(a) \"secus die 2 ianuarii\", 2029-01-02 -- no Sunday in \
+ the window)"
+ `Quick test_holy_name_fallback_2029;
+ Alcotest.test_case
+ "RG110: 30 June, In Commemoratione S. Pauli Apostoli + commemoration-of-st-peter (2026-06-30)" `Quick
+ test_rg110_june_30_2026;
+ Alcotest.test_case
+ "RG110 shape (c): Chair of St Peter admitted only as a commemoration of an ordinary Sunday, Paul \
+ rides along (2004-02-22)"
+ `Quick test_rg110_shape_c_2004;
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)"