From 8885c9af2f69b81b9aefcf3ab6c4da641338b71d Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 25 Aug 2026 19:21:33 +0200 Subject: test(of): pin the Nativity Vigil at entry 3, not entry 9 Fix round 1 (coordinator review). The Nativity Vigil (24 December, Sollemnitas) bands at entry 3 (30) rather than entry 9 (90) as a direct consequence of this task's ruling, but nothing pinned it -- a future branch-reorder (e.g. inserting an entry between 3 and 9, or loosening entry 9's date guard) could silently revert it to 90 with the suite green. Adds one row to part2_cases with a comment recording: the Tabula's own entry 9 textually covers 24 December as a late-Advent feria, yet Phase 1 gives that civil day the of-nativity-vigil identity at Sollemnitas because the Vigil Mass is celebrated that evening -- the same civil-day-granularity shape Holy Thursday already settles (entry 2, not entry 1); Phase 2 classifies Phase 1's emitted identity rather than overriding it. Unobservable on the universal calendar today (no competing candidate on 24 December); live under a proper/diocesan overlay, where a proper solemnity (entry 4, band 40) loses to the Vigil at 30 but would beat it at the textually-arguable 90. No production code change -- test-only, per the coordinator's ruling to pin current behaviour rather than alter it. --- test/test_precedence_of.ml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test/test_precedence_of.ml') diff --git a/test/test_precedence_of.ml b/test/test_precedence_of.ml index a06fb25..0d2db63 100644 --- a/test/test_precedence_of.ml +++ b/test/test_precedence_of.ml @@ -135,6 +135,31 @@ let part2_cases = ctx ~iso:"2026-06-04" ~season:Vocab_of.Ordinary_time, mk ~slug:"of-corpus-christi" ~rank:Vocab_of.Sollemnitas ~origin:Precedence.Temporal (), 30 ); + (* Fix round 1 (coordinator review, 2026-08-25). (a) THE TENSION: the + Tabula's own entry 9 reads "Feriae Adventus a die 17 ad 24 decembris + INCLUSIVE" -- 24 December is textually a late-Advent feria -- yet + Phase 1's temporal_of.ml gives that civil day the identity + [of-nativity-vigil] at rank Sollemnitas, because the Vigil Mass is + celebrated that evening; at colitur's one-office-per-civil-day + granularity only one identity can hold the day. (b) THE RESOLUTION: + Phase 2 classifies whatever identity Phase 1 already chose to emit, it + does not reach back and override that choice -- the same shape, and + the same settlement, as Holy Thursday (entry 2, not entry 1) above. + So this candidate's rank (Sollemnitas) and layer (temporal, hence + [not (is_proper layer)]) correctly route it to entry 3, band 30, not + entry 9's 90. (c) OBSERVABILITY: on the universal calendar nothing + else competes for 24 December, so this value can never be OBSERVED + today -- it is unobservable, not untested. It becomes live the moment + a proper/diocesan overlay places a proper solemnity (entry 4, band 40) + on 24 December: at 30 the Vigil beats it, but at the textually-arguable + 90 the proper solemnity would beat the Vigil instead. That reversal is + exactly what this row guards against a silent branch-reorder. *) + ( "entry 3, not 9: the Nativity Vigil is a solemnity, though 24 December \ + is also a late-Advent feria", + ctx ~iso:"2026-12-24" ~season:Vocab_of.Advent, + mk ~slug:"of-nativity-vigil" ~rank:Vocab_of.Sollemnitas + ~origin:Precedence.Temporal (), + 30 ); ( "entry 5: the Baptism of the Lord is a feast OF THE LORD", ctx ~iso:"2026-01-11" ~season:Vocab_of.Christmas, mk ~subject:Subject.Lord ~slug:"of-baptism-of-the-lord" ~rank:Vocab_of.Festum -- cgit v1.3