aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rites/rite_of/precedence_of.ml57
1 files changed, 38 insertions, 19 deletions
diff --git a/lib/rites/rite_of/precedence_of.ml b/lib/rites/rite_of/precedence_of.ml
index ab5e394..0587f0a 100644
--- a/lib/rites/rite_of/precedence_of.ml
+++ b/lib/rites/rite_of/precedence_of.ml
@@ -140,25 +140,44 @@ let band (ctx : Vocab_of.season Precedence.context)
30 (* Tabula I.3 -- universal or temporal-origin, never proper; see the
[is_proper] comment above for why this is not [is_universal].
- ENTRY 3 HAS A SECOND CLAUSE THIS BRANCH DOES NOT IMPLEMENT (transcription
- line 840, identical in the 1969 Calendarium at OCR line 936):
- "Commemoratio omnium fidelium defunctorum" -- All Souls, 2 November.
- Nothing constructs it: there is no sanctoral data yet (Phase 3), and
- Vocab_of.rank has no constructor for it -- the 2002 Calendarium prints
- 2 November UNGRADED ("Omnium Fidelium defunctorum" / "Commemoratio
- omnium Fidelium defunctorum"), so the natural rank tag is ambiguous:
- Memoria_obligatoria (band 100, loses to a per annum Sunday, WRONG),
- Memoria_ad_libitum (band 120, worse), or Sollemnitas (band 30, the
- right precedence but a rank word the source never applies to this
- day). The 1969 Calendarium's own printing of this clause additionally
- carries a qualifier the 2002 text drops -- "quae tamen locum cedit
- dominicae occurrenti" -- an edition difference Phase 3 will also need.
- PHASE 3 HAZARD: transcribing 2 November with the natural ungraded
- rank will silently make it an ordinary weekday whenever it falls on a
- Sunday, with every test in this branch still green, because no test
- here knows entry 3 has a second clause. Phase 3 must settle how this
- day is tagged (or add a dedicated slug test here, mirroring
- [entry_2_named]) before shipping OF sanctoral data. *)
+ ENTRY 3'S SECOND CLAUSE -- RESOLVED, fix round 2, Task 1
+ (2026-08-25; transcription line 840, identical in the 1969
+ Calendarium at OCR line 936): "Commemoratio omnium fidelium
+ defunctorum" -- All Souls, 2 November. The 2002 Calendarium
+ prints 2 November UNGRADED ("Commemoratio omnium Fidelium
+ defunctorum"), so no grade word could be transcribed literally;
+ data/of/calendar-2002.sexp (tools/extract_of_calendar.py's own
+ ALL_SOULS_OVERRIDE) tags it [Sollemnitas] anyway, on this table's
+ own authority -- entry 3 itself names "Commemoratio omnium
+ fidelium defunctorum" in the SAME line as "Sollemnitates ...
+ Sanctorum in Calendario generali inscriptae", i.e. this table
+ places it at THIS precedence tier regardless of what word the
+ calendar page prints next to it. (For the record, the two
+ rejected alternatives were Memoria_obligatoria, band 100, loses
+ to a per annum Sunday, WRONG; and Memoria_ad_libitum, band 120,
+ worse.) Proved, not merely asserted:
+ test/test_precedence_of.ml's [test_all_souls_beats_an_ordinary_
+ sunday] loads the SHIPPED "all-souls" entry and resolves it
+ against a real per-annum Sunday (2 November 2025, itself a
+ Sunday) through {!Colitur_kernel.Precedence.resolve} and
+ [rules] below -- not [band] in isolation -- confirming All Souls
+ is [observed], not the Sunday.
+
+ STILL OPEN, deliberately out of this task's scope: the 1969
+ Calendarium's own printing of this clause carries a qualifier
+ the 2002 text drops -- "quae tamen locum cedit dominicae
+ occurrenti" -- an edition difference not reconciled here.
+
+ A LOSING All Souls -- unreachable on universal data (nothing
+ shipped outranks a Tabula I.3 Sollemnitas except the Triduum's
+ own Easter-bound window, which can never reach 2 November) but
+ real the moment an overlay puts something higher there --
+ would be TRANSFERRED, not omitted: [disposition] below sends
+ any losing Sollemnitas forward via Normae n. 60, and nothing
+ distinguishes "Commemoratio" from an ordinary Sollemnitas for
+ that purpose. The same shape as [Rite_ef.Precedence_ef]'s own
+ [entry_14_movable_band] (CLAUDE.md, "Carried into Plan 4") --
+ recorded here rather than built defensively against. *)
else if c.cel.rank = Vocab_of.Sollemnitas && is_proper layer then
40 (* Tabula I.4 *)
else if c.cel.rank = Vocab_of.Festum && c.cel.subject = Subject.Lord