summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 17:37:40 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 17:37:40 +0200
commitc63e37b8cbef1480b6f5677420425d22fe7061d9 (patch)
tree9e6108a58da67fcd94ce057a196f70c47ec49677
parentf389e57e965e7bc7ea46ad1f37203d00f22e25a7 (diff)
downloadcolitur-c63e37b8cbef1480b6f5677420425d22fe7061d9.tar.gz
colitur-c63e37b8cbef1480b6f5677420425d22fe7061d9.zip
docs: an invented Caput, a list that was not closed, and a blind spot
Three corrections from the fix-round re-review, none changing behaviour. RG 431(e) was attributed to "Caput XX, De hymno Gloria in excelsis". There is no Caput XX -- the Rubricae Generales' Caput series ends at XIX. The paragraph number, letter and subsection title were all right; only the containing division was invented. It sits under "VIII -- De diversis Missae partibus", subsection "C) De hymno Gloria in excelsis". Shipping a new invented structural citation in the very round that corrected a source-fidelity overclaim is what the gate exists to catch. marian_slugs claimed TWO entries found and deliberately excluded after individual consideration, "not merely omitted". There was a third: vigil-of-the-assumption, 14 August, which is de B. Maria Virg. and whose collect implores her protection. It was merely omitted. Added to the list -- behaviourally inert, verified: it wins 7196 times domain-wide, always with the non-Marian eusebius-confessor as its only commemoration, and never loses -- but a closed list's whole value is its enumeration claim, and that claim was false as written. And the new rule has no comparison-layer witness at all. Reverting it reddens three tests, none of them a comparison layer: the differential's row type carries no commemorations, and the oracle's window has no 16-July Saturday. Worse, lectio's fixture DOES carry commemorations and prints +our-lady-of-mt-carmel on all 8 in-window dates where colitur now prints nothing -- a real divergence, neither fixed nor cited, swallowed by a blind spot, which binding decision 1 forbids. Recorded, with the note that colitur's reading here has no reference confirmation anywhere and only extending the oracle fixture to 2033 or later would settle it. Also records the RG 112(d) branch's ordering constraint: it precedes RG 95's Transfer branch, which it does not need to, and must move below it if a Class1 Marian entry is ever added.
-rw-r--r--data/ef/expected-divergences.sexp2
-rw-r--r--lib/rites/rite_ef/precedence_ef.ml41
-rw-r--r--lib/rites/rite_ef/temporal_ef.ml8
3 files changed, 44 insertions, 7 deletions
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 444f55e..f5d5381 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -75,5 +75,5 @@
((id C17)
(citation "RG 91 entry 27 (\"Officium sanctae Mariae in sabbato\") + RG 78 (Caput IX, \"De sancta Maria in sabbato\", both photographic scans and the electronic transcription word for word): \"In sabbatis, in quibus occurrit Officium de feria IV classis, fit de sancta Maria in sabbato\" -- on Saturdays on which the Office of a IV-class feria occurs, [the Office] is made of Holy Mary on Saturday instead + RG 120(b) (\"Adhibetur color albus in Officio et Missa de festis: ... b) B. Mariae Virg.\") for the white colour, unconditional regardless of season")
(verdict colitur)
- (note "ef-bvm-saturday task: colitur now builds RG 91 entry 27's votive Office of the BVM on every otherwise-unoccupied IV-class Saturday (Rite_ef.Temporal_ef's own [bvm_saturday_names] citation has the full argument) -- white (RG 120(b)), unconditionally, overriding the season's own colour (violet in Septuagesima, green in Time after Epiphany/Time after Pentecost; Christmastide and ordinary Paschaltide already happened to be white). lectio builds no equivalent office at all -- checked directly against its own tridentine-calendar.ini/generator, no comparable rule exists there, the same genuine upstream gap C15/C16 above document for their own gaps, not a colitur bootstrap miss -- so it keeps showing the plain season colour on every one of these Saturdays. Season, slug and rank all still agree: temporal_ef.ml's own [bvm_saturday_names] citation (\"Slug\" paragraph) deliberately REUSES the ordinary <season>-<week>-saturday ferial slug rather than minting a new one (partly BECAUSE a bespoke uniform slug would itself have broken Colitur_kernel.Validate's own slug-uniqueness invariant, sighted on every otherwise-unoccupied Saturday in a year), so [Colour_f] alone is the complete diff set every one of these rows carries -- never [Slug_f] too. Gated on colitur's own [rank]=class-4, [weekday]=saturday and [colour]=white (test_differential.ml's own [is_bvm_saturday_row]) rather than a date list, unlike C14/C15/C16 above: RG 78's own condition (\"otherwise unoccupied IV-class Saturday\") reduces exactly to this triple, and the population is large (a substantial fraction of all Saturdays in the 2005-2050 window) and entirely formulaic, not a short, individually-interesting list. Derived directly from the OCaml comparator's own failure output (test_layer_c_counts_match_citations), not hand-counted first and cross-checked after.")
+ (note "ef-bvm-saturday task: colitur now builds RG 91 entry 27's votive Office of the BVM on every otherwise-unoccupied IV-class Saturday (Rite_ef.Temporal_ef's own [bvm_saturday_names] citation has the full argument) -- white (RG 431(e) -> RG 121(a) -> RG 120(b); RG 120(b) alone reads \"de festis\" and this Office is not a festum), unconditionally, overriding the season's own colour (violet in Septuagesima, green in Time after Epiphany/Time after Pentecost; Christmastide and ordinary Paschaltide already happened to be white). lectio builds no equivalent office at all -- checked directly against its own tridentine-calendar.ini/generator, no comparable rule exists there, the same genuine upstream gap C15/C16 above document for their own gaps, not a colitur bootstrap miss -- so it keeps showing the plain season colour on every one of these Saturdays. Season, slug and rank all still agree: temporal_ef.ml's own [bvm_saturday_names] citation (\"Slug\" paragraph) deliberately REUSES the ordinary <season>-<week>-saturday ferial slug rather than minting a new one (partly BECAUSE a bespoke uniform slug would itself have broken Colitur_kernel.Validate's own slug-uniqueness invariant, sighted on every otherwise-unoccupied Saturday in a year), so [Colour_f] alone is the complete diff set every one of these rows carries -- never [Slug_f] too. Gated on colitur's own [rank]=class-4, [weekday]=saturday and [colour]=white (test_differential.ml's own [is_bvm_saturday_row]) rather than a date list, unlike C14/C15/C16 above: RG 78's own condition (\"otherwise unoccupied IV-class Saturday\") reduces exactly to this triple, and the population is large (a substantial fraction of all Saturdays in the 2005-2050 window) and entirely formulaic, not a short, individually-interesting list. Derived directly from the OCaml comparator's own failure output (test_layer_c_counts_match_citations), not hand-counted first and cross-checked after.")
(expected_rows 416))
diff --git a/lib/rites/rite_ef/precedence_ef.ml b/lib/rites/rite_ef/precedence_ef.ml
index 302df98..7b64b83 100644
--- a/lib/rites/rite_ef/precedence_ef.ml
+++ b/lib/rites/rite_ef/precedence_ef.ml
@@ -458,9 +458,18 @@ let band (ctx : Vocab_ef.season Precedence.context) (c : Vocab_ef.rank Precedenc
"eiusdem Divinae Personae" (read as simply "both [subject = Lord]",
that branch's own comment: "safe at today's data's own granularity") --
here read as "titled a feast of the BVM", not verified oration-by-
- oration, and said so explicitly rather than overclaimed. TWO entries
- found and deliberately EXCLUDED after individual consideration, not
- merely omitted: "dedication-of-the-basilica-of-st-mary-major" (5
+ oration, and said so explicitly rather than overclaimed. THREE entries found
+ and considered individually rather than merely omitted -- the third,
+ "vigil-of-the-assumption" (14 August, Class2, Feast), was MISSED by the
+ original enumeration and is recorded here by the fix-round re-review: it
+ is unambiguously de B. Maria Virg. and its collect implores her
+ protection ("sua nos defensione munitos"), so it BELONGS on the list on
+ the same reasoning as the rest. It is behaviourally inert either way --
+ measured domain-wide, it wins 7196 times, always with the non-Marian
+ [eusebius-confessor] as its only commemoration, and never loses, since
+ no Class1 Marian falls on 14 August -- but a closed list's whole value is
+ its enumeration claim, and that claim was false as first written. The
+ other two were genuinely excluded after consideration: "dedication-of-the-basilica-of-st-mary-major" (5
August, Class3, Feast) -- a DEDICATION feast (of the building, "In
Dedicatione S. Mariae ad Nives"), whose own oration could not be found
in either scan under this exact heading to confirm it invokes her
@@ -517,6 +526,11 @@ let marian_slugs =
"most-holy-name-of-mary";
"nativity-of-the-blessed-virgin-mary";
"our-lady-of-lourdes";
+ (* Added by the fix-round re-review: missed by the original enumeration,
+ behaviourally inert (it never loses; no Class1 Marian falls 14 Aug),
+ but it is de B. Maria Virg. and its collect implores her protection,
+ so it belongs on the list by the same test as every other member. *)
+ "vigil-of-the-assumption";
"our-lady-of-mt-carmel";
"our-lady-of-ransom";
"our-lady-of-the-rosary";
@@ -753,7 +767,26 @@ let disposition ~(winner : Vocab_ef.rank Precedence.candidate)
let is_temporal = loser.Precedence.origin = Precedence.Temporal in
if is_bvm_office winner && is_bvm_office loser then
(* RG 112(d) -- see [marian_slugs]'s own citation above for the full
- argument. Checked FIRST, even ahead of the [Commemoration_only]
+ argument.
+
+ ON THIS BRANCH'S POSITION (fix-round re-review, finding 5): it sits
+ ahead of RG 33's vigil branch and RG 95's Class1 Transfer branch as
+ well as ahead of [Commemoration_only], and only the last of those
+ three is a position it NEEDS. RG 112(d) governs commemorations, not
+ translations, so if a Class1 Marian celebration ever lost to a Marian
+ winner it would be silently [Omit]ed here instead of reaching RG 95
+ and transferring. That is unreachable on shipped data -- the
+ re-review swept the whole domain and found ZERO Marian-winner /
+ Marian-loser pairs other than the 16 July case this branch exists
+ for, which is [Commemoration_only] and so could never transfer
+ anyway -- and it is left in place rather than moved, because
+ reordering a disposition branch is a behavioural change that deserves
+ its own measurement and review rather than a late edit. Recorded here
+ and in the register so the next task that touches this chain knows
+ the constraint: if a Class1 Marian entry is ever added, this branch
+ must move BELOW the Transfer branch.
+
+ Checked FIRST, then, ahead of the [Commemoration_only]
branch immediately below, because the one live witness
(Mt Carmel, 16 July) IS [Commemoration_only] -- that branch's own
"always Commemorate, nothing overrides it" previously had no
diff --git a/lib/rites/rite_ef/temporal_ef.ml b/lib/rites/rite_ef/temporal_ef.ml
index cf0d22c..4add824 100644
--- a/lib/rites/rite_ef/temporal_ef.ml
+++ b/lib/rites/rite_ef/temporal_ef.ml
@@ -631,8 +631,12 @@ let weekday_word d = Date.weekday_to_string (Date.weekday d)
citation -- its own text reads "in Officio et Missa DE FESTIS" (of
FEASTS), and this Office is not itself a festum (RG 91's own table
position, entry 27, sits outside the Festa rows 11-13/16/19/20/23/24
- entirely). The tighter chain, found on the same scan: RG 431(e) (Caput
- XX, "De hymno Gloria in excelsis") is the Missal's OWN classification of
+ entirely). The tighter chain, found on the same scan: RG 431(e) ("VIII -- De diversis
+ Missae partibus", subsection "C) De hymno Gloria in excelsis" -- NOT
+ "Caput XX", which does not exist: the Rubricae Generales' Caput series
+ ends at XIX. Corrected by the fix-round re-review; the paragraph number,
+ letter and subsection title were right, only the containing division was
+ invented) is the Missal's OWN classification of
this exact Mass, word for word: "431. Hymnus Gloria in excelsis
dicitur: ... e) in Missis votivis IV classis de Angelis, quocumque die,
et de B. Maria Virg. QUAE IN SABBATO CELEBRANTUR" -- the Gloria is said