aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 10:21:39 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 10:21:39 +0200
commite25558fee984837389d0e53cd6e17a3820f8e5ea (patch)
treeeea56c56f173e59fb8b4c0e68e251cdbf0166a22 /data
parentd8f4bece5480cfb94088fae62fa875a66b5b4e7e (diff)
downloadcolitur-e25558fee984837389d0e53cd6e17a3820f8e5ea.tar.gz
colitur-e25558fee984837389d0e53cd6e17a3820f8e5ea.zip
fix(ef): days within the Octave of the Nativity, and RG 69 for 29-31 Dec
M11 was the one entry in the missalemeum allow-list adjudicated against colitur, and it was right to be. The calendarium directs "Com. octavae Nativitatis" under each of 26, 27 and 28 December (LT.txt:5454-5459) and RG 109(c) makes a commemoration of the days within the Octave privileged. colitur emitted none. The cause was a reasoning error stated in Temporal_ef's own comment: "26-28 Dec are Stephen, John and the Innocents, hence sanctoral". Their office is sanctoral -- those II-class feasts win the day -- but they remain days WITHIN the Octave (RG 67, "Dies infra octavam sunt II classis"), and colitur built them as generic Class4 ferias. With no octave-day candidate there was nothing for the feast to be commemorated over. Building days 2-4 exactly as days 5-7 always were makes the commemoration fall out of the existing machinery rather than needing a special case: the feast wins on rank, the octave day loses, RG 109(c) privileges it, RG 111(c)'s single slot goes to it. A second, independent defect surfaced while fixing it. The octave-day branch covered 29-31 December unconditionally, so a Sunday falling there got a feria identity -- where RG 69 says a Sunday occurring 26-31 December SEMPER keeps its own office and commemorates the feast. Confirmed against the oracle rather than argued: missalemeum shows "Sunday in the Octave of Christmas" on 2035-12-30, a Sunday, where colitur showed a feria. Both named and anchors now exclude Sundays; anchors had asserted the octave slugs unconditionally and was wrong the same way. Blast radius, full sweep against the pre-change binary: 25251 days, every one 26-31 December, exactly two shapes, zero unclassified -- 21653 carrying an octave-day slug and 3598 that are all Sundays, the RG 69 correction. Allow-lists: M11 closed and removed. C6 narrowed 138 to 119, nineteen of its days having changed temporal identity rather than verdict. M15 widened 18 to 22 -- both streams now commemorate the octave, but the candidate is temporal-origin and carries no English name to match against missalemeum's own, this entry's documented limit on four more dates. Stated rather than glossed: this trades a substantive divergence, colitur omitting a commemoration the Missal directs, for a comparator limit, the commemoration existing but not being name-matchable. That is a real improvement, but what the oracle now proves is that both streams commemorate something on those days; the identity rests on the rubric and the calendarium. Register: section 6.17.
Diffstat (limited to 'data')
-rw-r--r--data/ef/expected-divergences-missalemeum.sexp21
-rw-r--r--data/ef/expected-divergences.sexp4
2 files changed, 16 insertions, 9 deletions
diff --git a/data/ef/expected-divergences-missalemeum.sexp b/data/ef/expected-divergences-missalemeum.sexp
index 280ecf5..d5d16a3 100644
--- a/data/ef/expected-divergences-missalemeum.sexp
+++ b/data/ef/expected-divergences-missalemeum.sexp
@@ -209,11 +209,18 @@ WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel
(verdict colitur)
(note "colitur commemorates the losing early-Advent feria (Monday after Advent I, 30 Nov; Tuesday/Wednesday after Advent II, 8 Dec) when a saint wins. missalemeum shows nothing on these 4 rows specifically, even though it DOES show equivalent later-Advent-feria commemorations elsewhere in the SAME window (2-21 December, matching colitur exactly there) -- read as a missalemeum-side inconsistency on these particular rows, not a textually narrower rule.")
(expected_rows 4))
- ((id M11)
- (citation "CORRECTED, fix round 1 (F3): RG 67 (\"Dies infra octavam sunt II classis\" -- days within the Octave are II class) + RG 109(c) (\"de diebus infra octavam Nativitatis Domini\" -- privileged) + the 1962 calendarium's own explicit note under 26/27/28 December, primary-source-verified 2026-08-12: \"S. STEPHANI PROTOMARTYRIS, II classis. / Com. octavae Nativitatis.\" (same pattern, verbatim, under 27 and 28 December for John the Evangelist and the Holy Innocents) -- \"Commemoration of the Octave of the Nativity\", named explicitly, alongside each of the three named feasts")
- (verdict open)
- (note "This entry previously read \"No RG paragraph found to support this\" and verdict colitur -- WRONG, found by fix-round-1 review: RG 67/109(c) and the calendarium's own \"Com. octavae Nativitatis\" note both confirm a real commemoration is due here. It is ALSO a genuine REGRESSION Task 16's own commemoration-eligibility fix introduced: before that fix, colitur unconditionally commemorated the day's own losing temporal candidate (\"ef-christmas-0-<weekday>\", the generic Christmastide ferial slug 26-28 December falls through to since temporal_ef.ml's [named] does not cover those three dates), which happened to keep commemoration PRESENCE agreeing with missalemeum even though the underlying reasoning was wrong (a Task 16 review-round-1 finding elsewhere, F1/F2 fixed it for the general case) -- and Task 16's fix (and this fix round's RG 23-26 correction of it) both correctly stop commemorating that generic candidate, since [ferial_rank]'s Christmastide catch-all gives it Class4, which RG 26 never commemorates. The catch: RG 67 says days WITHIN the octave are II class, not IV -- the generic ferial construction 26-28 December falls through to has the WRONG rank for this specific window (a rank bug, not merely a missing-candidate one; 29-31 December already get the correct Class2 via [named]'s own \"ef-nativity-octave-day-{5,6,7}\" branch, so this is narrowly a 26-28-December gap). Fixing it properly also has to get RG 69 right (\"De dominica infra octavam Nativitatis Domini... semper fit Officium cum commemoratione FESTI FORTE OCCURRENTIS\" -- when the Sunday falls in this window, the SUNDAY is observed with a commemoration of THE FEAST ITSELF, Stephen/John/the Innocents by name -- NOT the generic octave placeholder), so a naive \"treat the octave commemoration as one more competing candidate\" fix would get the Sunday case backwards (confirmed by working through it: it would make the octave placeholder outrank the named saint for the Sunday's own privileged slot, when RG 69 names the SAINT, not the octave, for that slot). This needs either new architecture (a commemoration that attaches to whichever of Stephen/John/the Innocents is observed, not a competing candidate the way RG 92-95's occurrence framework models everything else) or a more careful RG-69-aware fix than this task attempted -- out of scope for this fix round. Verdict changed from colitur to open: neither side is confidently right without that fix, and the previous entry's \"colitur is correct, nothing to implement\" framing was itself the risk this review flagged. Register §6 open item.")
- (expected_rows 4))
+ ; M11 -- CLOSED, Nativity-Octave fix (2026-08-18), REMOVED not
+ ; re-adjudicated: 0 of 730 rows. This was the ONE entry in this file
+ ; adjudicated against colitur rather than the oracle, and it was right to be.
+ ; The calendarium directs "Com. octavae Nativitatis" under each of 26, 27 and
+ ; 28 December (LT.txt:5454-5459) and RG 109(c) makes a commemoration "de
+ ; diebus infra octavam Nativitatis Domini" privileged -- but colitur built
+ ; those three days as generic Class4 Christmastide ferias, so there was no
+ ; octave-day candidate for the feast to be commemorated OVER and colitur
+ ; emitted nothing. They are days within the Octave (RG 67, "Dies infra
+ ; octavam sunt II classis") and are now built as such, exactly as 29-31
+ ; always were. The commemoration follows from the existing machinery rather
+ ; than from a special case. Citation preserved in the register.
((id M13)
(citation "OPEN -- not adjudicated. 1962 calendarium's March table: \"Feria VI post dominicam I Passionis: Commemoratio septem Dolorum B. Mariæ Virg.\" (confirmed real, every year) -- but RG 91's plain table (entry 11-13, Joseph, I class, vs entry 22, an ordinary III-class Passiontide feria) gives Joseph the day outright, with no RG 96 collision requiring a transfer, so the primary text found here does not by itself explain missalemeum's result")
(verdict colitur)
@@ -224,8 +231,8 @@ WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel
((id M15)
(citation "docs/research/rules-register.md §4's own \"THE MAPPING, AND EXACTLY WHAT IT CANNOT RESOLVE\" note (test_oracle.ml's own header) -- not an RG citation, a comparator LIMIT: Rite_ef.Temporal_ef never sets an English [names] field on any candidate it builds (temporal_ef.ml has no \"en ...\" string anywhere in it)")
(verdict unresolvable)
- (note "17 rows (was 20 before the ef-sanctoral-audit task; three moved to new entries below, not re-adjudicated) where at least one of colitur's own admitted commemorations is TEMPORAL-origin -- there is no English name on colitur's side to compare against missalemeum's title text at all, so identity cannot be attempted for the WHOLE row, only reported as unresolved (test_oracle.ml's own [identity_diff]: any unresolved name bails the whole comparison out, regardless of how many others resolve cleanly). Not a rubric dispute and not a data gap either engine is wrong about. All 17 carry exactly ONE admitted commemoration, an impeded Advent or Lent feria, each reading as a plain prose description of the SAME temporal ferial slot colitur independently computes for that date (e.g. 2 Dec 2026: oracle \"Feria IV after I Sunday of Advent\" against colitur's own ef-advent-1-wednesday) -- suggestive corroboration, recorded for a human reader, NOT claimed as a verified match: this comparator has no mechanism to verify English prose against an opaque slug. (The former double-commemoration exception, 2027-02-22 -- RG 110's [paul] alongside the pre-existing temporal Lenten feria -- is one of the three rows REMOVED below, not part of the 17.) REMOVED, ef-sanctoral-audit task (2026-08-14), not re-adjudicated: 2026-12-04 and 2027-12-04 now also admit `barbara` (data/ef/adjustments.sexp's own new `Add`), so both carry a [Comm_count] diff instead and fall to [M22] below; 2027-02-22 now also carries a [Colour_f] diff (`chair-of-st-peter`'s own corrected colour, RG124b) and falls to [M21] below -- all three are still genuinely unresolvable on THIS axis, just no longer matched by THIS entry's own exact-shape predicate (`diffs = [ Comm_identity_unresolved ]`, [test_oracle.ml]'s own [layer_m_reason]), which never re-fires once a second diff joins it. Fixing this at the root (an English name on every temporal-cycle candidate) is a data/lectionary-bootstrap task, not something this comparator can do for itself -- register §6, neighbouring the RG 113 tie-break section, records it as an open item. The 17 dates: 2026-02-24, 2026-03-19, 2026-03-25, 2026-12-02, 2026-12-03, 2026-12-07, 2026-12-11, 2026-12-21, 2027-02-24, 2027-12-02, 2027-12-03, 2027-12-06, 2027-12-07, 2027-12-11, 2027-12-13, 2027-12-16, 2027-12-21.")
- (expected_rows 18))
+ (note "17 rows (was 20 before the ef-sanctoral-audit task; three moved to new entries below, not re-adjudicated) where at least one of colitur's own admitted commemorations is TEMPORAL-origin -- there is no English name on colitur's side to compare against missalemeum's title text at all, so identity cannot be attempted for the WHOLE row, only reported as unresolved (test_oracle.ml's own [identity_diff]: any unresolved name bails the whole comparison out, regardless of how many others resolve cleanly). Not a rubric dispute and not a data gap either engine is wrong about. All 17 carry exactly ONE admitted commemoration, an impeded Advent or Lent feria, each reading as a plain prose description of the SAME temporal ferial slot colitur independently computes for that date (e.g. 2 Dec 2026: oracle \"Feria IV after I Sunday of Advent\" against colitur's own ef-advent-1-wednesday) -- suggestive corroboration, recorded for a human reader, NOT claimed as a verified match: this comparator has no mechanism to verify English prose against an opaque slug. (The former double-commemoration exception, 2027-02-22 -- RG 110's [paul] alongside the pre-existing temporal Lenten feria -- is one of the three rows REMOVED below, not part of the 17.) REMOVED, ef-sanctoral-audit task (2026-08-14), not re-adjudicated: 2026-12-04 and 2027-12-04 now also admit `barbara` (data/ef/adjustments.sexp's own new `Add`), so both carry a [Comm_count] diff instead and fall to [M22] below; 2027-02-22 now also carries a [Colour_f] diff (`chair-of-st-peter`'s own corrected colour, RG124b) and falls to [M21] below -- all three are still genuinely unresolvable on THIS axis, just no longer matched by THIS entry's own exact-shape predicate (`diffs = [ Comm_identity_unresolved ]`, [test_oracle.ml]'s own [layer_m_reason]), which never re-fires once a second diff joins it. Fixing this at the root (an English name on every temporal-cycle candidate) is a data/lectionary-bootstrap task, not something this comparator can do for itself -- register §6, neighbouring the RG 113 tie-break section, records it as an open item. The 17 dates: 2026-02-24, 2026-03-19, 2026-03-25, 2026-12-02, 2026-12-03, 2026-12-07, 2026-12-11, 2026-12-21, 2027-02-24, 2027-12-02, 2027-12-03, 2027-12-06, 2027-12-07, 2027-12-11, 2027-12-13, 2027-12-16, 2027-12-21. WIDENED (Nativity-Octave fix, 2026-08-18): 18 -> 22. Four more dates, all the same limit: colitur now commemorates the day within the Octave of the Nativity on 26/27/28 December (RG 67/109(c), the calendarium's own Com. octavae Nativitatis), which is what closed M11 -- but that candidate is TEMPORAL-origin, so it carries no English name and its identity cannot be resolved against missalemeum's own For Octave of the Nativity. Both streams commemorate the same thing; only the comparator cannot prove it.")
+ (expected_rows 22))
((id M21)
(citation "RG 124 (\"XVIII - De coloribus paramentorum\", \"C) De colore rubro\"), both photographic scans word for word: 124(b) \"adhibetur color ruber in Officio et Missa de festis: ... Sanctorum Apostolorum et Evangelistarum, in eorum die natalicio, excepto festo S. Ioannis (27 decembris)\"; 124(e) \"Sanctorum Martyrum, quorum colitur aut martyrium\"; ef-sanctoral-audit task")
(verdict colitur)
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 727ce1b..1ba222d 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -85,8 +85,8 @@ CITATION component, new this task: Important 3(a) (tools/bootstrap_lectionary.ml
VERDICT, split by the SAME 138-row population, not two entries: on the 119 rows where 29-31 December is an ordinary WEEKDAY that year, colitur's `Tit. 3,4-7` citation is CONFIRMED CORRECT against the Missal (verdict colitur would be accurate for this subset alone). On the 19 rows where 29-31 December IS ITSELF a Sunday that year (2006-12-31, 2007-12-30, 2012-12-30, 2013-12-29, 2017-12-31, 2018-12-30, 2019-12-29, 2023-12-31, 2024-12-29, 2028-12-31, 2029-12-30, 2030-12-29, 2034-12-31, 2035-12-30, 2040-12-30, 2041-12-29, 2045-12-31, 2046-12-30, 2047-12-29 -- independently re-derived against `date -d <date> +%u` for every one of the 138 dates, not estimated), RG 69's own unconditional rule means the SUNDAY'S distinct Office should be observed instead -- colitur's `Temporal_ef` does not distinguish the two cases at the slug level at all, so it emits the weekday formulary there too, which is WRONG by this reading. This is a genuine [Temporal_ef] defect (not a lectionary/bootstrap issue, and not something this generator can fix on its own), out of this task's own safe scope -- a behaviour change to a shared, multi-round-reviewed kernel-adjacent function, the same discipline C25 below explains for its own one-hop-removed consequence of this identical gap. [verdict] is [open], not [colitur], because a single per-entry verdict cannot honestly claim BOTH sub-populations at once, and the coordinator's own instruction was explicit: mark it questioned, not leave a verdict the evidence contradicts.
-Gated on the literal date window (month=12, day in {29,30,31}) AND colitur's own slug family (`nativity_octave_day_slugs`) AND `subset diffs [ Slug_f; First_f; Gospel_f ]` (widened this task from the exact-match `diffs = [ Slug_f ]` the pre-citation-comparison entry used -- narrowing back to exact-match would have silently re-excluded the very citation divergence this task exists to surface). Derived directly from the OCaml comparator's own failure output (test_layer_c_counts_match_citations), not hand-counted first and cross-checked after: 138.")
- (expected_rows 138))
+Gated on the literal date window (month=12, day in {29,30,31}) AND colitur's own slug family (`nativity_octave_day_slugs`) AND `subset diffs [ Slug_f; First_f; Gospel_f ]` (widened this task from the exact-match `diffs = [ Slug_f ]` the pre-citation-comparison entry used -- narrowing back to exact-match would have silently re-excluded the very citation divergence this task exists to surface). Derived directly from the OCaml comparator's own failure output (test_layer_c_counts_match_citations), not hand-counted first and cross-checked after: 138. NARROWED (Nativity-Octave fix, 2026-08-18): 138 -> 119. Nineteen of these days are 26-28 December, which colitur now builds as days WITHIN the Octave of the Nativity (RG 67) rather than generic Christmastide ferias, so their temporal identity -- and with it their divergence shape -- changed. Not a re-adjudication: the same RG 69 disagreement on the days that remain.")
+ (expected_rows 119))
((id C8)
(citation "RG 87 (Minor Litanies/Rogations, Mon/Tue before Ascension); register §3c item 3")
(verdict colitur)