diff options
| -rw-r--r-- | CLAUDE.md | 35 | ||||
| -rw-r--r-- | lib/rites/rite_ef/precedence_ef.ml | 19 | ||||
| -rw-r--r-- | lib/rites/rite_ef/precedence_ef.mli | 7 |
3 files changed, 44 insertions, 17 deletions
@@ -339,17 +339,32 @@ nowhere in git (`docs/` is gitignored). window can never be empty of a Sunday (unlike RG 17(a)'s Holy Name, which carries an explicit calendarium fallback for its own narrower window) — checked, not assumed; no fallback built. `Precedence_ef.band` - gained a movable-half priority for entry 14 (`entry_14_movable_band`, - negative so it can never collide with a real table position) — without - it, Holy Family would tie with the fixed Commemoration of the Baptism of - the Lord (13 January) at the literal integer 14 and lose the kernel's own - alphabetical tie-break, backwards from RG 91's own stated order. + gained a movable-half priority for entry 14 — without it, Holy Family + would tie with the fixed Commemoration of the Baptism of the Lord + (13 January) and lose the kernel's alphabetical tie-break, backwards + from RG 91's own stated order. **The whole table is now scaled ×10** + (entry *n* → 10*n*), so a half-row is expressed as an ordinary position + between its neighbours. *(CORRECTED: this paragraph previously described + `entry_14_movable_band` as "negative so it can never collide with a real + table position". That was the bug, not the design — a negative sentinel + avoids **collision** but also inverts **ordering**, making a movable + II-class feast of the Lord outrank every I-class day. Unreachable on + universal data; live the moment a diocesan overlay puts a I-class proper + or indult feast, RG 91 entries 12–13, in the 7–13 January window. Do not + re-derive the sentinel approach.)* `disposition` gained RG 112(a) (a mystery of one Divine Person excludes a - commemoration of another mystery of the SAME Divine Person) — directly - confirmed by a MORE SPECIFIC primary source found while building this, - the Holy Family Mass propers' own 13-January rubric (both photographic - scans, absent from the electronic transcription along with RG 112(a)'s - own worked example — the transcription-defect pattern found again, §6.-1). + commemoration of another mystery of the SAME Divine Person). The primary + authority is **RG 95 ¶2** — *"Si vero duo festa eiusdem Divinæ Personæ… + fit de festo, quod in tabella præcedentiæ superiorem obtinet locum, et + aliud omittitur"* — an occurrence-level rule present in all three + documents; RG 112(a) and the Holy Family Mass propers' own 13-January + rubric corroborate it. *(CORRECTED: this previously called the propers' + rubric a further instance of the transcription defect. It is not. The + transcription carries RG 112 in full; RG 112 has no worked example in + either scan; and the propers' note is absent because that document is a + partial 2006 web capture containing almost no propers text — one + `Introitus` in 26 322 lines against 52 in a scan. Diagnose the cause of a + silence before invoking the rule.)* **Blast radius, measured (`git archive` pre-change binary vs HEAD, full 1583–9999 sweep, diffed): 1 220 days, every single one the identical shape, cross-verified against `date -d` independently (exactly 1 220 diff --git a/lib/rites/rite_ef/precedence_ef.ml b/lib/rites/rite_ef/precedence_ef.ml index 635a69f..374e9a4 100644 --- a/lib/rites/rite_ef/precedence_ef.ml +++ b/lib/rites/rite_ef/precedence_ef.ml @@ -74,11 +74,20 @@ let unclassified = max_int TIMES TEN (entry 1 -> 10, entry 28 -> 280, {!unclassified} untouched at [max_int]) instead of the bare 1..28 -- not an arbitrary rescale, a deliberate one: RG 91's own text records a "primum mobilia, deinde - fixa" (movable-then-fixed) split at THREE rows, not only this one -- - entry 12's own ninth sub-item ("Festa indulta I classis, primum - mobilia, deinde fixa"), entry 14 (this one), and entry 20 ("indult - II-class feasts (movable then fixed)", register §4's own summary) -- - and only entry 14 has a live witness in this codebase's data today. The + fixa" (movable-then-fixed) split at FIVE rows, not only this one -- + entry 13 ("Festa indulta I classis, primum mobilia, deinde fixa", its + own numbered row on both scans), entry 14 (this one), entry 20, entry + 23's third sub-item ("deinde festa indulta, primum mobilia, deinde + fixa"), and entry 24 ("Festa III classis, in calendario Ecclesiae + universae inscripta, primum mobilia, deinde fixa") -- and only entry 14 + has a live witness in this codebase's data today. NOTE, corrected by the + fix-round re-review: this comment previously said THREE rows and + attributed the first to "entry 12's own ninth sub-item". Both scans, and + the register's own §4 table, put that clause at entry 13; entry 12 has + eight sub-items and no such clause. Entry 24's split is the notable + omission -- it is the most-evaluated band in the whole domain and is + unsplit here, which is exactly the kind of sub-rank this headroom exists + for. The ×10 scale reserves nine integers of genuine headroom immediately BEFORE each real entry's own value for exactly this kind of sub-rank, without requiring a second rescale if entry 12's or entry 20's own movable half diff --git a/lib/rites/rite_ef/precedence_ef.mli b/lib/rites/rite_ef/precedence_ef.mli index 7d0bc98..6a96c4e 100644 --- a/lib/rites/rite_ef/precedence_ef.mli +++ b/lib/rites/rite_ef/precedence_ef.mli @@ -80,8 +80,11 @@ val entry_14_fixed_band : int was built to beat. {!band}'s own entries now use the real RG 91 number TIMES TEN throughout, reserving genuine headroom before every entry -- see precedence_ef.ml's own comment for the full citation, the counter- - example that found this, and why entries 12 and 20 may need the same - treatment if their own "movable then fixed" halves ever get a witness. *) + example that found this, and why entries 13, 20, 23 and 24 may need the + same treatment if their own "movable then fixed" halves ever get a + witness. (Corrected: this previously said "entries 12 and 20". RG 91 + puts that clause at entry 13, not 12, and the split occurs at five rows + in all -- 13, 14, 20, 23's third sub-item and 24.) *) val entry_14_movable_band : int (** [band ctx c]: RG 91's Table of Precedence. Returns the table's own entry |
