summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-25 20:51:12 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-25 20:51:23 +0200
commit0a85280b0588629a05149e07934759f83f7bd83e (patch)
treea219f50d0ebab05f9512b2a9564990fda5262e22 /test
parente611e90b0b5433ddc9afdcf26cbf98a5c3a7be28 (diff)
downloadcolitur-0a85280b0588629a05149e07934759f83f7bd83e.tar.gz
colitur-0a85280b0588629a05149e07934759f83f7bd83e.zip
fix(of): correct season citation, note All Souls gap, guard transfer search
Fix wave from the final whole-branch review of OF Phase 2 (0 Critical, 5 Important, 8 Minor). Applies the five items ruled in-scope and records two more, per the controller's R7/R8/R9 rulings. Fixes: - temporal_of.ml: season-boundary header cited "Normae n. 71-77", a range that does not exist (the Normae end at n. 61) and collides with real IGMR nn. 71-77 (Preparation of the Gifts) in the same PDF -- EF leakage from RG 71-77. Corrected to Normae Titulus II, nn. 17-47, with a note against reintroducing the wrong range. - precedence_of.ml entry 3: added the Tabula's second clause (Commemoratio omnium fidelium defunctorum / All Souls) to the comment, and recorded the Phase 3 hazard -- Vocab_of.rank has no constructor for it yet, and every natural tagging choice gets 2 November's precedence wrong in a different way. No code change; nothing can construct the entity yet. - precedence_of.ml transfer_target's search: added a domain_max_date guard (following Rite_ef.Precedence_ef's existing shape and reasoning) so the walk can no longer probe Computus past 9999-12-31, and it now returns the last date visited on bound exhaustion instead of failwith-ing. .mli updated to drop the @raise Failure clause. - precedence_of.ml is_privileged_sunday: added its own inline Tabula I.2 citation, matching its sibling helpers. - precedence_of.ml entry 10: trimmed the reused "universal or temporal-origin" comment -- Temporal_of never constructs a Memoria_obligatoria candidate, so the temporal-origin half was vacuous there. Recorded without fixing (both comment-only, per explicit scope ruling): - test_precedence_of.ml: corrected the entry-3 Nativity Vigil test's characterisation. The pinned band-30 assertion (2026-12-24, a Thursday) is correct, but is not the value on a 24-December Sunday (e.g. 2028, 2034), where is_privileged_sunday instead bands the same candidate 20. Named the underlying Phase 1 defect this exposes -- named() claims 24 December unconditionally and is matched before sunday_slug, so the Fourth Sunday of Advent gets no office at all in those years, invisible to the litcal layer -- as known and carried to the next task. - precedence_of.mli transfer_target: documented Normae n. 56(f) (St Joseph on Palm Sunday anticipates backward to 18 March) as a known, cited, unimplemented fourth transfer rule, and named the underlying kernel constraint (Rite.t.transfer_target's strictly-later obligation, justified only by the EF's RG 96) as the reason a real fix needs a kernel change. dune test: 799 tests, exit 0. make check (exhaustive sweep): 805 tests, exit 0, 224.7s. No kernel/rite_ef/data changes (git diff empty).
Diffstat (limited to 'test')
-rw-r--r--test/test_precedence_of.ml21
1 files changed, 20 insertions, 1 deletions
diff --git a/test/test_precedence_of.ml b/test/test_precedence_of.ml
index db217e8..4de9f9a 100644
--- a/test/test_precedence_of.ml
+++ b/test/test_precedence_of.ml
@@ -153,7 +153,26 @@ let part2_cases =
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. *)
+ exactly what this row guards against a silent branch-reorder.
+ (d) CORRECTED (fix wave, 2026-08-25): band 30 is NOT the value for
+ every 24 December -- this row's own [ctx] is 2026-12-24, a THURSDAY.
+ When 24 December falls on a SUNDAY (e.g. 2028-12-24, 2034-12-24),
+ [is_privileged_sunday] fires instead (Sunday + Advent + temporal
+ origin) and the SAME slug/rank/origin bands 20 via entry 2, not 30 via
+ entry 3. The pinned assertion above is still correct for the Thursday
+ it names; only the earlier "band 30" framing read as unconditional,
+ which it is not.
+ There is a real, KNOWN, UNFIXED Phase 1 defect behind this: [named]
+ (temporal_of.ml) claims 24 December unconditionally and is matched
+ BEFORE [sunday_slug] in [temporal]'s dispatch, so on a 24-December
+ Sunday the Fourth Sunday of Advent gets NO office at all -- it is
+ silently replaced by [of-nativity-vigil]. 2028-12-24 and 2034-12-24
+ both fall inside the litcal fixture window, and that layer cannot see
+ the gap: it compares season and Ordinary-Time week only, and colitur
+ still says "advent" on that date either way. NOT fixed in this wave
+ (final review Important #4, ledger ruling R8) -- it changes Phase 1
+ behaviour, needs its own tests, and needs the litcal layer re-run.
+ Carried as the first item of the next task. *)
( "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,