diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 04:12:41 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 04:12:41 +0200 |
| commit | 079e332e0a797105588787f7e5fdabd95ba1fa12 (patch) | |
| tree | 1cf2881355296a5e8ee43583e52185247977ece1 /lib/kernel/computus.mli | |
| parent | efc1b303417388c75f27403952b506dc4d4e03d7 (diff) | |
| download | colitur-079e332e0a797105588787f7e5fdabd95ba1fa12.tar.gz colitur-079e332e0a797105588787f7e5fdabd95ba1fa12.zip | |
kernel(precedence): three RG-verified EF precedence bugs, found via oracle
Task 16's missalemeum oracle comparison (2026-2027) surfaced three
distinct precedence-engine bugs, each confirmed against the primary
1962 Missale Romanum text and cross-checked against the oracle:
1. RG 33 (vigil omission) was transcribed backwards. The primary text
reads "Vigilia II AUT III classis penitus omittitur" (a II OR III
class vigil is entirely omitted on any Sunday or I-class feast) --
not "I aut II" as the register and this module's own rank check
(Class1 || Class2) previously had it. I-class vigils (Nativity,
Pentecost) can never actually lose in this engine (band always
ranks them above anything that could coincide with their dates), so
the Class1 half was dead code; the real bug was that Class3 (St
Lawrence's vigil, the sole III-class vigil) was MISSING, so it fell
through to an ordinary commemoration instead of RG 33's mandatory
omission whenever 9 August landed on a Sunday.
2. RG 93/95/109/113 read together: an ordinary, non-privileged
TEMPORAL-cycle office (a bog-standard green-season feria, a plain
Advent/Lent Ember day, a Minor Rogation day) has no standing to be
commemorated at all when impeded -- RG 109's six-item list is a
CLOSED set of the only temporal circumstances that generate a
commemoration, not a floor under which anything ordinary still
gets one. The engine previously commemorated the losing feria
itself in this situation; confirmed wrong against ~190 independent
missalemeum days (2026-2027) showing zero commemorations for the
exact shape. Vigils are explicitly excluded from this new rule --
RG 31/32 give them their own "if impeded, commemorated" mandate,
independent of RG 109's list.
3. RG 111(b)'s Sunday admission slot is restricted to "de festo II
classis" -- a rank restriction, not merely the best available
ordinary candidate. A III/IV-class ordinary saint competing for a
II-class Sunday's single commemoration slot had no such restriction
applied before; confirmed wrong via St Hyginus (11 Jan, Class3)
losing to Holy Family, which missalemeum shows entirely displaced,
never commemorated.
All three fixes are pure disposition/admission changes -- they never
touch band, so the observed day (season/slug/rank/colour) is
unaffected in every case; the lectio differential (which never
compares commemorations) stays green untouched. test_precedence_ef.ml
updated throughout: two previously-wrong test expectations corrected
(the RG33 III-class-vigil boundary row, the IV-class-feria totality
row), three privilege boundary rows sharpened from "commemorated but
unprivileged" to "omitted entirely" now that temporal+ordinary
means omission, and a new contrast row added to keep the SANCTORAL
side of rule 2 covered separately from the TEMPORAL side.
Diffstat (limited to 'lib/kernel/computus.mli')
0 files changed, 0 insertions, 0 deletions
