aboutsummaryrefslogtreecommitdiff
path: root/test/test_golden.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 10:40:40 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 10:40:40 +0200
commitb5dcdd8d4048295cfbdf1606f4cafd39b3c433e6 (patch)
tree3c49919b87fb33059506528441473806c316a18e /test/test_golden.ml
parent59fbda87d565ad9b98c2493e9703390cd988609d (diff)
downloadcolitur-b5dcdd8d4048295cfbdf1606f4cafd39b3c433e6.tar.gz
colitur-b5dcdd8d4048295cfbdf1606f4cafd39b3c433e6.zip
temporal(ef): Holy Name of Jesus, RG 17(a) -- fallback + Lord subject
RG 17(a): "festum Ss.mi Nominis Iesu, celebrandum dominica quae occurrit a die 2 ad 5 ianuarii (secus die 2 ianuarii)" -- both photographic scans, confirmed on the calendarium's own January table and the Mass propers' own heading. Two defects closed together, since they interact through RG 91 entry 14/RG 16(a): 1. The Sunday shape (2-5 January) now tags subject = Lord, matching RG 91 entry 14 ("Festa Domini II classis") -- previously subject = Temporal, the same defect shape Holy Family had before it. 2. The fallback (RG 17(a)'s own "secus die 2 ianuarii", the calendarium's "vel, ea deficiente, die 2 ianuarii") is now built: 2 January carries the feast whenever no Sunday falls 2-5 January that year. Before this fix colitur emitted no Holy Name office at all in such a year -- a real II-class feast simply missing, on 3,619 of 8,417 years in the domain (43%; 20 of the 46 years 2005-2050, independently re-derived against `date -d`). Both shapes band identically at RG 91 entry 14's MOVABLE half (Precedence_ef.entry_14_movable_band) -- one feast, not two differently classified ones, per the Mass propers' own single heading covering both dates. No live collision exists in the current sanctoral data (nothing fixed-date falls 2-5 January besides a Commemoration_only entry on 5 Jan), so the RG 16(a)/RG 112(a) interaction is proved with synthetic precedence-level fixtures mirroring Holy Family's own precedent, not a live-data regression. One asymmetry the synthetic tests found and kept honest rather than forced: a losing Holy-Name-Sunday is privileged (RG 109(a), "of a Sunday") and survives RG 111(a)'s cap; a losing Holy-Name-fallback is not (2 January is not a Sunday, and no other RG 109(a)-(f) category applies to it), so it gets no commemoration at all if ever outranked -- both individually correct readings of RG 109/111's closed lists. Golden pins follow the brief's own vacuity warning: the Sunday shape already emitted the right slug/rank/colour before this fix (an ordinary Sunday and Holy Name coincide on those fields), so its pin asserts subject explicitly rather than pinning the whole line uncritically; the fallback pin (2029-01-02) is the one with teeth against the larger defect, reddening on slug/rank/subject together if reverted. Mutation-tested: each half of the fix reverted separately reddens exactly its own tests (Sunday subject: the dedicated unit test, the golden pin's subject field, one precedence end-to-end test; fallback: the fallback unit/anchor/golden tests, the new C16 differential count, and both shapes of the precedence end-to-end tests) and nothing else. Adds data/ef/expected-divergences.sexp's C16 (lectio has no fallback for this window at all) -- the lectio differential's own count, independently re-derived against `date -d` for the fixture's 2005-2050 span, not transcribed from the domain-wide figure. The missalemeum oracle window (2026-2027) exercises only the Sunday shape and needed no new entry: subject is not one of its compared fields, and both years' rows already corroborate the Sunday-shape ranking (missalemeum's own 2026-01-04 and 2027-01-03 rows: rank 2, white, title "Holy Name of Jesus").
Diffstat (limited to 'test/test_golden.ml')
-rw-r--r--test/test_golden.ml53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/test_golden.ml b/test/test_golden.ml
index 1724375..c5aa65a 100644
--- a/test/test_golden.ml
+++ b/test/test_golden.ml
@@ -634,6 +634,53 @@ 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=[]"
+
(* 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 +840,12 @@ 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
"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)"