summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CLAUDE.md35
-rw-r--r--lib/rites/rite_ef/precedence_ef.ml19
-rw-r--r--lib/rites/rite_ef/precedence_ef.mli7
3 files changed, 44 insertions, 17 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index faec251..54ae709 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -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