summaryrefslogtreecommitdiff
path: root/data/ef/expected-divergences-missalemeum.sexp
blob: dfee36c438c837cf9076eea7041e36cb7722fc78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
; data/ef/expected-divergences-missalemeum.sexp -- Task 16's cited allow-list
; for colitur's oracle harness against missalemeum (test/test_oracle.ml),
; 2026-2027. A SEPARATE file from data/ef/expected-divergences.sexp (the
; lectio allow-list, Task 15): the two oracles disagree with colitur in
; different places and for different reasons, so the two lists are kept
; apart rather than merged into one with two provenances tangled together.
;
; [verdict] names which side this task's own primary-source research backs
; -- NOT always "colitur", unlike the lectio file's own convention (that
; file's header: "every entry here is colitur"). Some of these entries are
; genuine DATA GAPS this task found and could not fix here (the sanctoral
; data is bootstrapped from lectio, which is itself missing several of
; these entries -- CLAUDE.md's binding decision 3, and this task does not
; touch ~/git/projects/lectio) or genuine CODE gaps this task did not build
; (RG 110's inseparable Peter/Paul commemoration -- closed by a later task,
; see the ef-holyname-rg110 paragraph below; RG 91 entry 27's BVM-Saturday
; office -- closed by a later task still, see the ef-bvm-saturday paragraph
; further below, after M18's own). Those are honestly verdicted [missalemeum] -- colitur is
; short a feature or a row, not correct -- and each is cross-referenced
; into docs/research/rules-register.md §6 as an open item, not silently
; absorbed as if colitur were right. TWO entries (M11 and M13) are
; [verdict open] -- corrected, final fix wave, item 7: this note previously
; said "one entry (M13)", missing M11 (whose own verdict changed from
; [colitur] to [open] in fix round 1, see M11's own entry below). Task B
; (branch ef-rg16a) briefly added a THIRD, M17, adjudicated [open] as a
; "genuine same-band tie RG 113 does not resolve" -- CORRECTED, Task B fix
; round 1: M17 was wrong. The tie was manufactured by Precedence_ef.band
; lending a Commemoration_only candidate the same table entry as a genuine
; Feast of its own rank (RG 91's table has no row for a bare commemoration
; at all); fixed in band itself, and the divergence disappears entirely --
; M17 was REMOVED, not re-adjudicated to a different verdict. ONE entry
; (M15) carries a fourth verdict, [unresolvable] -- a LIMIT of this
; comparator (no English name exists on colitur's side for a temporal-
; origin commemoration to compare), not a rubric dispute or a data gap
; either engine is wrong about; see M15's own note. All remaining OPEN
; entries are adjudicated as UNRESOLVED/UNRESOLVABLE after real
; primary-source effort, not defaulted past -- see each entry's own note
; and the task report for the full search.
;
; M18 -- ef-rg112-rg110 task (Holy Family, RG 17(b)): test_oracle.ml's own
; comparator was strengthened to compare the OBSERVED day's identity, not
; only its rank and colour (the gap that let the missing Holy Family go
; unnoticed by this layer for as long as it did -- rank 2/white on both
; sides purely by coincidence). [M18] is [verdict unresolvable], the SAME
; fourth verdict as M15, for the SAME reason: colitur's own resolved name is
; [None] for any TEMPORAL-origin observed day, the large majority of this
; window. M1, M3 and M16's own subsets were each widened to absorb this axis
; where it fires alongside their pre-existing citation (see each entry's own
; note) rather than being folded into M18's own count, which covers only
; rows where [Observed_identity_unresolved] is the SOLE disagreement.
; UPDATED, ef-bvm-saturday task: M2 used to belong on this list too (RG 91
; entry 27's own BVM-Saturday office had not been built yet), but M2 is now
; CLOSED, REMOVED (see the ef-bvm-saturday paragraph below, after the FIVE
; MORE REMOVED note) -- its former 22 dates fall through to THIS entry
; instead now, moving M18's own count from 373 to 395 (see M18's own sexp
; note below for the precise derivation).
;
; ef-holyname-rg110 task (RG 110, the inseparable Peter/Paul commemoration --
; PART of RG 91 entry 27's neighbour list this file's own header names above
; as unbuilt at the time; RG 91 entry 27 itself, the BVM-on-Saturday office,
; was closed by a LATER task, see the ef-bvm-saturday paragraph below):
; [M12] CLOSED, REMOVED (same shape as
; M17's own removal above, not re-adjudicated) -- 22 February 2027 no
; longer diverges on [Comm_count], since colitur now admits Paul
; unconditionally alongside whatever else the day's own privileged
; commemoration is (precedence_ef.ml's own [rg110_additions]). [M15]'s own
; date list gained a 20th entry, 2027-02-22 -- M12's own former date, now
; reaching the comparator's IDENTITY axis for the first time (count
; agrees), and landing on M15's own PRE-EXISTING, unrelated limit (one of
; the two admitted commemorations is temporal-origin and unresolvable) --
; see M15's own note for the full account. [M19] is NEW: RG 110's other
; direction (Paul's own office commemorating Peter, not Peter's own office
; commemorating Paul), 30 June, both years -- missalemeum has the SAME gap
; this task found in lectio's own source data (checked directly, not
; assumed), so this is verdict colitur, not colitur short a feature the way
; M12 used to be.
;
; FIVE MORE REMOVED, ef-rebootstrap (2026-08-12), same shape as M17's own
; removal above -- not re-adjudicated to a different verdict, just gone,
; because the underlying divergence stopped occurring: M4 (second
; commemoration of St Agnes, 28 Jan), M6 (St Eusebius Confessor, 14 Aug),
; M7 (St Evaristus, 26 Oct), M9 (St Theodore, 9 Nov) and M14 (St Boniface
; Martyr, 14 May) were all recorded as genuine DATA GAPS traced upstream
; into lectio's own tridentine-calendar.ini and "cannot be fixed without
; touching lectio" -- true at the time, and no longer true: lectio's own
; generator was independently fixed in the same session (docs/research/
; rules-register.md's own transcription-audit record) and colitur's
; sanctoral data re-bootstrapped from the corrected source (SHA-256
; 1b303ef2..., tools/bootstrap_sanctoral.ml's own regenerated header). All
; five commemorations these entries named are now present in
; data/ef/sanctoral.sexp (agnes-secundo, boniface-martyr, eusebius-confessor,
; evaristus, theodore -- CORRECTED, fix round 1: this list previously
; dropped boniface-martyr, an omission with no other consequence, since the
; removal itself and the row-count check below were never driven by this
; prose list) and admitted through the ordinary pipeline with no code
; change -- re-run against the 2026-2027 fixture, each of the five now
; contributes ZERO rows to the comparator's own diff stream (verified: the
; day-by-day classification no longer reaches [layer_m_reason] for any of
; their dates at all, since [diffs = []] -- Matched, not Explained -- for
; every one). Removed rather than kept as a dead 0-row citation, matching
; the M17 precedent immediately below: the count pin now enforces that
; none of these five divergences can silently reappear.
;
; PROVENANCE, added ef-rebootstrap fix round 1 (F7): removing M4/M6/M7/M9/
; M14 deleted the only TRACKED primary-source citations for these five
; entries -- docs/research/ (where the full quotes and page cross-checks
; originally lived) is gitignored, and data/ef/sanctoral.sexp is generated
; data with no citations field of its own, so without this note the public
; repository would carry no record of why these five exist at all. Each
; quote below is verbatim from `missale-romanum-1962.pdf`'s own calendarium
; (the photographic scan, primary-source-verified 2026-08-12, per the same
; standard as every other citation in this file):
;   - agnes-secundo (28 Jan): "S. Petri Nolasci Conf., III classis. /
;     Com. S. Agnetis Virg. et Mart., secundo."
;   - boniface-martyr (14 May): "Com. S. Bonifatii Mart."
;   - eusebius-confessor (14 Aug): "Vigilia, II classis, Commemoratio
;     S. Eusebii Conf.", with its own proper immediately following,
;     "Eodem die 14 augusti / S. Eusebii Conf. / Commemoratio / Missa
;     Iustus, ut in festo S. Pauli primi Eremitae, die 15 ianuarii..."
;     -- the proper is also this entry's own colour citation: "Conf.", not
;     "Mart.", borrowing a CONFESSOR's Mass -- see adjustments.sexp's own
;     `Edit eusebius-confessor` entry (fix round 1, F3), which corrects the
;     colour this bootstrap inherited (Red) against this same evidence.
;   - evaristus (26 Oct): "Com. S. Evaristi Papæ et Mart."
;   - theodore (9 Nov): "IN DEDICATIONE ARCHIBASILICÆ SANCTISSIMI
;     SALVATORIS, II classis. / Com. S. Theodori Mart."
;
; ef-bvm-saturday task: RG 91 entry 27 ("Officium sanctae Mariae in
; sabbato") is now built (Rite_ef.Temporal_ef's own [bvm_saturday_names]
; citation has the full RG 78/RG 120(b) argument -- white, unconditionally,
; on every otherwise-unoccupied IV-class Saturday). [M2] is CLOSED, REMOVED
; -- same shape as M4/M6/M7/M9/M12/M14/M17's own removals above/below, not
; re-adjudicated to a different verdict: the divergence M2 used to name
; ([Colour_f], alone or alongside [Observed_identity_unresolved]) no longer
; occurs on any of its former 22 dates (checked directly: 0 of them retain
; [Colour_f] now). What is left on all 22 is [Observed_identity_unresolved]
; ALONE -- colitur's own BVM-Saturday candidate is temporal-origin and
; deliberately carries no ENGLISH name (Latin only, the same
; zero-circularity discipline Holy Family/Holy Name/the Sacred Triduum
; already established) -- which is [M18]'s own shape exactly, not a
; distinct citation any more (keeping M2 as a separate id here would have
; been the SAME "count proving cardinality where identity was required"
; trap this project's review process watches for: [subset]'s own diff-set
; test admits a SMALLER set than the one named, so M2's predicate would
; have kept silently absorbing these 22 rows under a stale "colour differs"
; citation whose own reason had stopped firing). [M18]'s own expected_rows
; therefore moves 373 -> 395 (373 + M2's former 22), derived directly from
; test_oracle.ml's own [test_layer_m_counts_match_citations] failure output
; after removing the M2 predicate branch, not computed by hand first.
;
; [expected_rows] is the exact row count this entry accounts for over the
; fixture's 2026-2027 span: a REGRESSION PIN, not documentation --
; test_oracle.ml asserts actual counts equal these exactly, so an unnoticed
; behaviour change here fails loudly instead of silently changing what the
; harness accepts.
;
; Regenerate expected_rows only after re-adjudicating the change against
; the Missal/register -- never by re-running the comparator and copying its
; output back here (that would launder a regression into a new baseline).
;
; STEP 4 (the Commons/propers, Rite_ef.Lectionary_ef.readings) HAS NO
; WITNESS HERE, Task 9 (branch ef-lectionary, layer-4 oracle): confirmed
; empirically (a scratch resolver sweep over 2026-01-01 through
; 2027-12-31, checking every one of the 15 Commons/proper saints' own
; slugs against LD.observed.slug on every civil day; not re-asserted from
; task-6-report.md's own claim without checking) that NONE of the 15 is
; ever the observed office anywhere in this window -- corroborating that
; report's own §4 independently. No entry in this file names step 4:
; layer 4 never reaches it here, the same "structurally blind" shape the
; Major Litanies task already established for layer 3 (CLAUDE.md's own
; "know what each layer cannot see" section). Chain step 4's own
; regression net rests entirely on Task 6's own unit pins
; (test_lectionary_ef.ml) -- NOT on layer 5 either: test_golden.ml's own
; [describe] carries no citation field at all, so golden pins see no
; readings whatsoever, for any office. If a future oracle refresh or a
; different 2-year window ever DOES observe one of the 15, this
; comment -- not a passing test -- is what a reader would otherwise have
; to infer the absence from.
((id M1)
 (citation "RG 33, corrected (precedence_ef.ml's own [is_omissible_vigil], primary-source-verified 2026-08-12): \"Vigilia II aut III classis penitus omittitur, si occurrat in dominica quavis...\" -- a II or III class vigil is entirely omitted if it occurs on ANY Sunday")
 (verdict colitur)
 (note "missalemeum does not implement RG 33's Sunday-omission for II/III-class vigils. 28 June 2026 (Vigil of Sts Peter & Paul, II class): still shown as a commemoration on the V Sunday after Pentecost. 9 August 2026 (Vigil of St Lawrence, III class): shown as the day's FULL OBSERVED OFFICE, displacing the XI Sunday after Pentecost entirely, not merely surviving as a commemoration.

WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel_mismatch] joined the accepted diff set on 9 August 2026 (test_oracle.ml's own [m1_dates] predicate) -- now that reading citations are compared at all, the day's own OBSERVED-identity divergence this entry already explains naturally carries a citation divergence too (colitur's own XI-Sunday-after-Pentecost reading vs missalemeum's own Vigil-of-St-Lawrence reading), the SAME \"identity already differs, so citation differs too\" consequence data/ef/expected-divergences.sexp's own C14/C15/C16/C29 already establish for the sibling lectio differential. Count unchanged: 2.")
 (expected_rows 2))
 ((id M3)
 (citation "RG 87 (Minor Litanies/Rogations, Mon/Tue before Ascension) -- the SAME citation as the lectio allow-list's own C8 (data/ef/expected-divergences.sexp)")
 (verdict colitur)
 (note "missalemeum, like lectio, computes no Rogation day at all and shows the plain paschaltide-week feria instead. Only 3 May 2027 (Rogation Monday) shows it in this window -- every other Rogation day here is won outright by a saint on both sides, so only the underlying temporal identity differs, which this comparator's axes do not expose.")
 (expected_rows 1))
 ((id M5)
 (citation "RG 80/81 (Major Litanies, Caput X \"De Litaniis maioribus et minoribus\") + RG 109(f) (Caput XVI \"De Commemorationibus\") -- now BUILT (ef-major-litanies task): Rite_ef.Precedence_ef's own [major_litanies_slug]/[disposition]/[privilege_of]/[transfer_target], data/ef/adjustments.sexp's matching `Add` entry")
 (verdict colitur)
 (note "CORRECTED (ef-major-litanies task): this entry's own PRIOR text claimed missalemeum's single admitted commemoration on 25 April 2027 was \"the Major Litanies\" -- checked directly against the raw fixture row while adjudicating a new divergence this task found (test/fixtures/missalemeum-ef-2026-2027.txt, the 2027-04-25 line: \"...|IV Sunday after Easter|-|St. Mark|Pro rogationibus|1|sancti:04-25:2:r\") and found BACKWARDS: missalemeum's own [commemorations] field there is \"St. Mark\", and \"Pro rogationibus\" (the Litanies) is the one listed in [displaced]. A genuine source-fidelity slip in this entry's own prior authorship, corrected here; see [M20] below for the divergence this correction actually motivates (2027's own now-real colitur-vs-missalemeum disagreement, adjudicated separately with its own RG citation). This entry (M5) now covers only 25 April 2026 (the ordinary, non-Sunday shape -- Mark wins the day outright on both sides, uncontested): both engines now admit a commemoration there (colitur: major-litanies; missalemeum: \"Pro rogationibus\"), so PRESENCE agrees (the register §6 gap this entry used to track is closed), but the two engines name the same real-world observance in different registers -- colitur's own English descriptive name (data/ef/adjustments.sexp's own honestly-flagged, not-primary-sourced \"The Major Litanies\") against missalemeum's Latin-ish \"Pro rogationibus\" -- never going to match as literal strings, and not a rubric dispute: RG 80/81 prescribe no English title for this observance at all. The SAME declared comparator limit M15/M18 already document for a temporal-origin candidate's identity, hit here for a different structural reason (a real candidate on BOTH sides now, just two different vocabularies, not an unresolvable name). Identity-gated (test_oracle.ml's own [m5_commemoration_matches]): pins that colitur's own sole admitted commemoration really is [major-litanies], not merely that some [Comm_identity_mismatch] diff exists on this date, the same discipline M19's own identity guard already established.")
 (expected_rows 1))
 ((id M8)
 (citation "RG 109(a) (\"of a Sunday\" is always privileged) + RG 111(a) (\"I class: none save one privileged\")")
 (verdict colitur)
 (note "When a fixed I-class feast (All Saints 1 Nov; the Assumption 15 Aug) lands on an ordinary Sunday, the impeded Sunday IS the one privileged commemoration RG 111(a) admits -- already an established, independently-tested rule (test_precedence_ef.ml's RG95/RG109(a) row). missalemeum shows no commemoration at all on either occurrence in this window. WIDENED, Task 9 (branch ef-lectionary): one of this entry's two dates, 2027-08-15, now ALSO carries M28's Judith-citation divergence -- the Assumption falls on a Sunday that year, so BOTH causes land on the identical day, and the classifier admits one entry per day. That day stays here rather than moving to M28, because THIS entry's cause is the one that decides the day's own commemoration; the gate requires [Comm_presence] to be actually present and admits [First_mismatch] only when it is exactly M28's shape with both sides pinned (test_oracle.ml's own [judith_divergence]), so neither cause is silently absorbed into the other and a citation divergence of any other shape on either M8 date still escapes to unexplained. expected_rows is unchanged at 2 for that reason; M28 declares the remaining 3 dates.")
 (expected_rows 2))

 ((id M28)
 (citation "MR1962 propers, primary-source-verified against the photographic scans (branch ef-lectionary, 2026-08-17): the Assumption at scan1.txt:35357, under \"IN ASSUMPTIONE BEATAE MARIAE VIRGINIS\" -- \"Iudith 13, 22-25; 15, 10\"; the Seven Sorrows at scan1.txt:36938, corroborated independently at scan1.txt:28468 -- \"Iudith 13, 22 et 23-25\".")
 (verdict colitur)
 (note "Two Judith citations both engines used to get wrong the same way, found by a live-missalemeum full-year sweep (2028 liturgical year) run this task, then adjudicated against the scans. lectio's generator emitted \"Judith 13:22-25; 13:15; 13:10\" for the Assumption -- a chapter carry-over defect, re-applying chapter 13 to the second citation's own \"15, 10\" and thereby INVENTING two verses -- and \"Judith 13:22; 13:25\" for the Seven Sorrows, dropping the \"et 23-\" range. colitur inherited both through its own bootstrap. This is the \"Holy Thursday was violet in both\" shared-lineage shape this project's CLAUDE.md names, and precisely why layer 3 could never have caught it: lectio IS the other side of that comparison, so the differential was structurally blind for as long as both engines agreed on the wrong answer. Fixed upstream in lectio and re-bootstrapped here; missalemeum still serves the defective form, so the divergence surfaces on layer 4 and is adjudicated colitur against the primary source. Gated on the literal date list AND on BOTH sides' citation text (test_oracle.ml's own [judith_divergence]) -- not merely the diff shape, which is the C6/C14 failure mode this file's header documents. 3 rows, not 4: the fourth affected date, 2027-08-15, is accounted under M8, which see.")
 (expected_rows 3))
 ((id M10)
 (citation "RG 109(e), unqualified text: \"de feriis Adventus, Quadragesimae et Passionis\" -- of the FERIAS of Advent (not \"the Advent ferias 17-23 December only\", which is RG 91 entry 18's separate OCCURRENCE-table dignity, not a RG 109 privilege restriction)")
 (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))
 ; 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)
 (note "19 March 2027: St Joseph (I class) falls on the Friday of Passion Week. missalemeum shows Joseph entirely displaced, with the Friday's own III-class violet office observed and the Seven Sorrows commemorated instead. Three possibilities, none confirmed: (a) colitur's plain RG 91 reading is right and missalemeum is wrong; (b) a more specific rubric attached to St Joseph's own Proprium Sanctorum entry (the same shape as the Annunciation's own Attamen clause) overrides the general table for this exact collision, and this task did not find its text; (c) the Seven Sorrows commemoration itself outranks an ordinary I-class feast on this one Friday, unsupported by anything found here either. Extensive but non-exhaustive primary-source search did not settle it -- register §6 open item, explicitly unresolved rather than defaulted to either side. Separately, but confirmed regardless: colitur does not implement the Seven-Sorrows-of-Passion-Friday commemoration at all, in any year -- a real, primary-attested gap on its own. CORRECTED 2026-08-12 (Task B, branch ef-rg16a, commemoration-identity comparison): this date now ALSO trips [Comm_identity_unresolved] (colitur's own commemorated candidate there, [ef-passiontide-1-friday], is temporal-origin and carries no English name) -- the SAME root cause as M15 below, folded into this entry's own subset check rather than a separate id, since it is the identical Seven-Sorrows gap this note already names, not a new finding.

WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel_mismatch] joined the accepted diff set (test_oracle.ml's own [m13_dates] predicate) -- colitur's own OBSERVED day here is Joseph, whose real proper (Ecclus 45:1-6/Matt 1:18-21) naturally diverges from missalemeum's own Seven-Sorrows-of-Passion-Friday reading (Jer 17:13-18/John 11:47-54) for the SAME already-named cause (the Seven Sorrows office is unimplemented, so colitur observes Joseph outright instead), not a fourth, independent divergence. Count unchanged: 1. ADJUDICATED 2026-08-17, verdict open -> colitur, by ELIMINATING possibility (b) rather than by finding new support for (a). This note listed three possibilities and (b) was the live one: that a rubric at St Joseph's own Proprium Sanctorum entry overrides the general table for this collision, the same shape as the Annunciation's own Attamen clause, its text simply not yet found. It was looked for directly this time. Joseph's entry (scan1.txt:28008) goes from its heading -- S. IOSEPH SPONSI B. MARIAE V., CONF. ET ECCLESIAE UNIVERSAE PATRONI, I classis -- straight into the Introit, with no rubric of any kind. And the claimed analogue does not exist where this note placed it: the Annunciation's entry (scan1.txt:28204) does the same, straight from heading to Introit. The Annunciation's exception is in RG 96, a GENERAL rubric about transferring an impeded I-class feast, not a propers clause -- so there is no precedent here for a propers-level override at all. With (b) eliminated and (c) still unsupported by anything found, (a) stands: RG 91 ranks a I-class feast above a III-class Lenten/Passiontide feria (entry 22), Joseph is not impeded and so RG 96 never engages, and colitur observes him. missalemeum displaces a I-class feast for a III-class feria, which nothing located supports. Stated with its limit: this is elimination of the one specific hypothesis this entry named, not a proof that no rubric anywhere says otherwise.")
 (expected_rows 1))
 ((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. 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)
 (note "The SAME closed 14-slug colour correction data/ef/expected-divergences.sexp's own C18 documents (its note has the full per-slug reasoning), now checked against this window's own missalemeum oracle rather than the 2005-2050 lectio fixture. 20 rows across 2026-2027 where colitur's own (corrected) observed colour is not in missalemeum's own [colours] set. Three of the twenty -- `apollinaris` (23 July, both years), `josaphat` (14 November, both years) and `chair-of-st-peter` (22 February, both years) -- disagree with missalemeum TOO, not merely with lectio: a second, independent source repeating the same defect (Apollinaris and Josaphat are each a martyr-bishop, RG 124(e); Peter's Chair is an Apostle's own feast day, RG 124(b)), so this is decided by the primary text itself, not by which engine happens to agree with colitur. [Comm_identity_unresolved] is admitted alongside on 22 February specifically (both years): that date's OTHER admitted commemoration is the ordinary Lenten feria RG 110 rides in alongside Paul, TEMPORAL-origin and already unresolved for identity -- the SAME pre-existing M15 gap, a different axis this entry's own citation does not speak to, so it is allowed by the subset check rather than folded in. Derived directly from the OCaml comparator's own failure output (test_layer_m_counts_match_citations), not hand-counted first and cross-checked after: 20.")
 (expected_rows 18))
 ((id M22)
 (citation "The same lectio/missalemeum upstream-gap shape M1/M3/M8/M10/M19 above already document (\"missalemeum does not implement X\"); data/ef/adjustments.sexp's own `Add barbara` comment has the full RG 124(e)/calendarium citation for the entry itself")
 (verdict colitur)
 (note "`barbara` (4 December, data/ef/adjustments.sexp's own new `Add`, ef-sanctoral-audit task) is a genuine DATA GAP in missalemeum too: both years' own 4 December row shows only the Advent feria's own temporal commemoration, Barbara absent entirely, not even listed as displaced -- missalemeum never constructed a candidate for her either, the identical absence lectio's own tridentine-calendar.ini has. Identity-gated the same way [M19] is (coordinator finding F2, that entry's own note): the predicate requires colitur's own admitted set to be exactly the temporal feria plus `barbara`, not merely that some [Comm_count] diff exists on this date. Derived directly from the OCaml comparator's own failure output: 2 (both years in the window).")
 (expected_rows 2))
 ((id M16)
 (citation "RG 111(d) (LT.txt:1777-1778): \"in diebus liturgicis III et IV classis, duae tantum admittuntur commemorationes\" -- TWO commemorations are admitted on a III-class day. RG 113 (LT.txt:1800-1802): \"Commemoratio de Tempore fit primo loco. In admittendis et ordinandis aliis commemorationibus, servetur ordo tabellae praecedentiae.\" RG 114: only a commemoration EXCEEDING the day's number is omitted. Calendarium, LT.txt:5056: \"Feria VI post dominicam I Passionis: Commemoratio septem Dolorum B. Mariae Virg.\"")
 (verdict colitur)
 (note "RE-ADJUDICATED 2026-08-17, and the verdict is REVERSED. This entry previously read verdict missalemeum: colitur admitted St John Damascene where missalemeum showed the Seven Sorrows, because the Seven Sorrows commemoration of Passion Friday was a known unimplemented office -- colitur had no candidate to admit at all. It could not be built before Date_spec grew Easter_offset, the Friday after Passion Sunday being Easter-9 and so having no (month, day) pair to anchor to. It is built now. Both streams name the Seven Sorrows, and the old identity mismatch is gone. What remains is a COUNT difference running the OTHER way: 27 March 2026 is a III-class privileged Passiontide feria, RG 111(d) admits TWO commemorations there, and colitur admits exactly two -- the Seven Sorrows (de Tempore, first, per RG 113) and John Damascene, a real III-class universal feast genuinely falling that day. missalemeum admits only one and reports John Damascene as displaced entirely, dropping a commemoration the rubric allows. Read on the primary text colitur is right. Recorded honestly: this is the fourth divergence in this file adjudicated colitur where missalemeum drops or mis-assigns something (cf. Monica, Perpetua's Common, Christ the King's week), which is a pattern worth watching rather than four coincidences. 1 row: 2026-03-27 only. The 2027 instance is M13's own, a DIFFERENT dispute about whether St Joseph is displaced from Passion Friday at all, unchanged by this work.")
 (expected_rows 1))
 ((id M18)
 (citation "test_oracle.ml's own header, \"COMMEMORATION IDENTITY\" section, restated for the OBSERVED axis (ef-rg112-rg110 task) -- not an RG citation, a comparator LIMIT: Rite_ef.Temporal_ef never sets an English [names] field on any candidate it builds, the SAME limit M15 already names for a commemoration, now visible for the OBSERVED day itself now that the observed-identity axis exists")
 (verdict unresolvable)
 (note "REVISED AGAIN, ef-major-litanies task: 394, down by exactly 1 from the ef-bvm-saturday task's own 395 (breakdown below unchanged in kind, only this one row moved). 25 April 2027 used to carry [Observed_identity_unresolved] ALONE (the Sunday itself is temporal-origin, unresolved; commemoration identity agreed by coincidence -- Mark on both sides, pre-Litanies) and so fell into this entry's own bucket; now that the Major Litanies are built, that same date ALSO carries [Comm_identity_mismatch] (colitur admits the Litanies, missalemeum still admits Mark -- see [M20]'s own new entry), so it moves OUT of this bucket and into M20's own single-row citation instead. Verified directly from the comparator's own failure output, not merely arithmetic (395-1=394 is necessary but not sufficient: the mechanism above is why it left, not merely that some count decreased).

REVISED, ef-bvm-saturday task: 395 of the 730 days in this window used to carry this shape alone (M1/M3/M16 absorb a further 4 where it fires ALONGSIDE their own pre-existing citation -- see each entry's own widened note; 395+4=399 is the axis's own full unresolved population, UNCHANGED from before that task -- only the SPLIT moved, since M2 (closed above) used to separately absorb 22 of the 26 that used to be \"elsewhere\"). Before that revision the split was 373 alone / 26 elsewhere (373+26=399) -- CORRECTED, fix round 1 (coordinator finding 8) -- the full breakdown, precisely: of 730 days, 331 are RESOLVED (colitur's own observed celebration carries a name) -- 330 resolved-and-MATCHING, 1 resolved-and-MISMATCHED (M13, Joseph vs the Seven Sorrows, already its own entry above) -- and 399 are UNRESOLVED (colitur's own name is [None]), split between this entry's own (then 395, now 394) and the 4 absorbed elsewhere. The BLIND SPOT this axis exists to close, stated precisely: a TEMPORAL-origin observed day silently replaced by a DIFFERENT temporal-origin observed day of the SAME RANK AND COLOUR -- exactly the shape that hid Holy Family from every layer before the ef-rg112-rg110 task (rank 2/white on both sides, purely coincidental). This count PIN is what stands guard against that population growing silently in either direction: an implementation change that made MORE days temporal-origin-and-unresolvable, or fewer, changes this number and fails the pin, even though the axis itself cannot say WHICH specific day moved or why -- exactly the guard that caught this task's own -1 shift, which HAD to be traced to a specific date and mechanism (above) rather than merely re-baselined. The overwhelming majority of days whose observed celebration is TEMPORAL-origin (an ordinary Sunday, a feria, a movable named feast including Holy Family itself) never carry an English name on colitur's side -- not a rubric dispute and not a data gap either engine is wrong about, a LIMIT of this comparator, honestly counted rather than silently passed, per the brief's own explicit instruction (\"a day whose observed identity cannot be resolved must be a counted, allow-listed outcome, never a silent skip\"). Gated on the diff SHAPE alone (exactly, and only, observed-identity-unresolved), not a literal date list the way every other entry in this file is -- at this population size a date list would itself be the \"pattern that could silently widen\" this file's own header warns against, for the opposite reason a date RANGE is normally risky: the predicate (colitur's own resolved name is [None]) is the precise, falsifiable evidence, the same shape M2's own title-substring predicate already uses instead of enumerating dates, just keyed on presence-of-a-name rather than a title string. Building an English name onto every temporal-cycle candidate (a data/lectionary-bootstrap task, Plan 4, out of this task's scope -- register §6, the same open item M15's own note already tracks) would resolve this entry to Matched for every one of these days it does not instead expose as a REAL divergence (Holy Family's own two dates in this window, 2026-01-11 and 2027-01-10, are counted here, not separately -- the name comparison genuinely cannot distinguish \"Holy Family\" from any other unnamed Sunday, so proving Holy Family's own correctness rests on the golden pins and the differential's own C15, not this axis).

REVISED AGAIN, Task 9 (branch ef-lectionary, layer-4 oracle): 352, down by 42 from 394. NOT a change to this entry's own guard (still, and only, [diffs = [ Observed_identity_unresolved ]] exactly) -- this task compared reading citations for the first time, and 42 of the former 394 rows now ALSO carry a real [First_mismatch]/[Gospel_mismatch] alongside the pre-existing observed-identity gap, so they escape this entry's own EXACT-match guard and move to the FIVE new entries below (M23 2, M24 4, M25 4, M26 30, M27 2 -- 2+4+4+30+2=42, exactly accounting for the drop, verified against the comparator's own failure output, not assumed from the arithmetic alone -- CORRECTED, fix round 1, coordinator review: this note previously miscounted them as \"six\").

CORRECTED, fix round 1 (coordinator review): the remaining 352 were previously described as every day whose citation \"ALREADY agreed with missalemeum before this task and still does\" -- imprecise for 18 of them. Before this task the citation axis did not exist at all, so NO row's citation was ever actually checked; \"already agreed\" wrongly implies the pre-task VALUE was correct on all 352, when for 18 it was not -- it only became correct, and therefore only started agreeing, because of this task's own three fixes (Holy Name Sunday's own two dates, 2026-01-04/2027-01-03; 12 more January-window ferias across the three RG-17(a)/Holy-Family-propers-rubric families that now resolve at step 2 instead of the walkback, one full list: 2026-01-02/05/07/08/09/12, 2027-01-04/05/07/08/11/12; and Corpus Christi/Sacred Heart in both years, 2026-06-04/06-12, 2027-05-27/06-04 -- 2+12+4=18, independently re-derived against the real resolver, not merely arithmetic). The other 334 were genuinely unaffected by this task, matching both before and after (or, more precisely, would have matched on the day this axis existed either way). WIDENED 352 -> 355 (movable-date-specs follow-up, 2026-08-17): the three Trinity-week ferias that M26 shape 2(a) used to cover now agree with the oracle on their citations and differ only on observed-identity, which is this entry own generic shape -- a temporal-origin day for which colitur sets no English name. Not a new divergence: the same three days, one of their two causes removed. WIDENED 355 -> 376 (BVM Saturday Mass, 2026-08-17): the BVM Saturday days M26 shape 1 used to cover now agree with the oracle on their citations and differ only on observed identity, which is this entry's own generic shape -- the office is temporal-origin and deliberately carries no English name. Not new divergences: the same days, their citation cause removed. CORRECTED, ef-sanctoral-status: 376 -> 373. Three rows left this entry for M30 when `ubaldus` and `didacus` were promoted to Feast on the Missal's own calendarium. They were unresolved here precisely because the observed office was TEMPORAL-origin (a feria) and carries no English name; now the observed office is the SAINT, which is sanctoral-origin and does resolve, so the comparator can state a real identity mismatch instead of declining to compare. The entry shrinks because its shape stopped occurring on those days, not because the days stopped diverging.")
 (expected_rows 373))
 ((id M19)
 (citation "RG 110's OTHER direction: \"In Officio et Missa S. Petri semper fit commemoratio S. Pauli, ET VICISSIM\" -- the SAME rule M12 used to cite, applied here to Paul's own office commemorating Peter, not Peter's own office commemorating Paul; confirmed a third time by the calendarium's own June table, both photographic scans, word for word: \"In Commemoratione S. Pauli Ap., III classis. / Commemoratio S. Petri Ap.\"")
 (verdict colitur)
 (note "30 June, both years in this window (2026-06-30, 2027-06-30): colitur now shows +commemoration-of-st-peter (data/ef/adjustments.sexp's own `Add` directive) where missalemeum shows nothing at all -- not even Peter listed under \"displaced\", meaning missalemeum's own engine never constructs a candidate for this commemoration in the first place, the SAME shape this task found in lectio's own source data (`~/git/projects/lectio/internal/caldata/tridentine-calendar.ini` has no 06-30 companion entry either -- an upstream data gap both reference engines share, not a colitur bootstrap miss). Verdict colitur, the same shape as M1/M3/M8/M10 above (each already \"missalemeum does not implement X\"): the calendarium's own text is unconditional and confirmed on both photographic scans, and colitur's own machinery for the other two RG 110 pairs (25 January, 22 February) already produces the identical shape correctly. Diff shape [Comm_presence] alone: rank/colour/observed-identity all already agreed before this fix (the OBSERVED celebration on both dates is unchanged, `in-commemoratione-sancti-pauli-apostoli`, sanctoral-origin with a resolvable name matching missalemeum's own title exactly on both rows) -- only the new commemoration's PRESENCE is new, so identity comparison is never even reached (this file's own header: identity is only attempted once presence and count already agree). 2, one per year, independently re-derived against the fixture's own two 06-30 rows before being set here, not assumed from the citation's own two-pair symmetry.")
 (expected_rows 2))
 ((id M20)
 (citation "RG 109(f) + RG 111(b), Caput XVI \"De Commemorationibus\", CORROBORATED by RG 434(b) (\"VIII - De diversis Missae partibus\", \"D) De orationibus\", \"I - De orationibus in genere\"), added fix round 1 (F5) -- all primary-source-verified word for word, all three documents (docs/research/rules-register.md §4). RG 109(f): \"de Litaniis maioribus, in Missa\" -- in the SAME closed privileged list as (a)-(e). RG 111(b): \"in dominicis II classis, una tantum admittitur commemoratio, scilicet de festo II classis, QUAE TAMEN OMITTITUR SI COMMEMORATIO PRIVILEGIATA FACIENDA SIT.\" RG 434(b), WORD-IDENTICAL, but explicitly scoped to the MASS (\"post orationem Missae\"), which is exactly where RG 109(f)'s own privilege lives (\"in Missa\"): \"in dominicis II classis, nulla alia admittitur oratio, praeter commemorationem festi II classis, quae tamen omittitur si commemoratio privilegiata facienda sit.\" The second citation answers the objection that RG 111 sits among Office-and-Mass rubrics and might be read as Office-shaped: RG 434 cannot be so read, and says the identical thing.")
 (verdict colitur)
 (note "NEW (ef-major-litanies task). 25 April 2027: RG 80's own transfer condition (25 April = Easter Sunday or Monday) does NOT fire this year, so the Litanies stay on 25 April itself -- which this year happens to be an ordinary II-class Sunday (RG 91 entry 15). St Mark (II class, entry 16) also loses to the Sunday. Two losing candidates, ONE slot (RG 111(b)/RG 434(b)): colitur admits the Litanies, not Mark; missalemeum's raw fixture row shows the reverse (verified directly against test/fixtures/missalemeum-ef-2026-2027.txt's own 2027-04-25 line -- see [M5]'s own corrected note above for the exact text, which previously mis-transcribed this same row backwards). ADJUDICATED, not merely asserted: {!Precedence_ef.admit}'s [Class2, true] branch already implements RG 111(b)'s privilege-overrides-ordinary clause exactly as quoted above, and this project's own prior work (precedence_ef.ml's \"Fix, Task 16\" comment) already primary-source-verified that same clause independently of this task -- the Litanies winning here is the SAME mechanism, not a special case written for it; St Mark meets the fate any ordinary Class2 commemoration meets when a privileged one is also due (RG 16(a)'s Transfiguration/Sixtus shape is the nearest existing witness, though there the privileged side wins the whole DAY, not merely the commemoration slot).

 SCOPE, made explicit (fix round 1, F5): RG 108 (\"Commemorationes privilegiatae fiunt in Laudibus et in Vesperis necnon in omnibus Missis; commemorationes vero ordinariae fiunt tantum in Laudibus, in Missis conventualibus et in omnibus Missis lectis\") + RG 81 (\"nihil fit in Officio, sed tantum in Missa\") together mean the Litanies' own privileged slot is due IN THE MASS specifically; nothing here computes or asserts a separate OFFICE-level answer for the same day. colitur emits ONE resolved day, not one per liturgical hour -- this adjudication, and every one of the 829 domain-wide Sunday-displacement days it governs, is the MASS answer. Defensible for a Mass-facing engine (this codebase's own stated scope, citations/readings, is Mass-oriented throughout), but stated here rather than left implicit, since it is what the whole adjudication rests on.

 HONESTLY FLAGGED, now closer to certain than first written: this is the first real (non-synthetic) data point this codebase has for \"an ordinary Class2 feast and a privileged non-feast commemoration both losing to the identical Sunday\" -- every other witness for this admit branch in test_precedence_ef.ml is hand-built. First written \"moderate-high, not certain\"; RG 434(b)'s own independent, Mass-specific repetition of RG 111(b)'s exact rule (fix round 1 finding, above) closes the main remaining doubt (that RG 111 might be Office-shaped) and moves this near-certain -- but NOT to certain, and the revisit trigger stands: no primary text anywhere names the Major Litanies in a Mass-orations-count worked example, only the general II-class-Sunday rule, twice over. RG 434(b) closes the Office-shaped doubt and nothing further. If a future primary-source pass finds textual grounds narrowing RG 109(f)'s privilege specifically, THIS is the entry to revisit first. (That sentence was dropped in the same edit that raised the label to near-certain, and is restored here: upgrading a confidence while deleting its revisit trigger is the one move this record must not make.) missalemeum's divergence remains consistent with this project's already-documented pattern of RG 108-111 gaps in that oracle (M1, M8, M10 above each already \"missalemeum does not implement X\") -- plausibly one more instance of the same generator not modelling RG 109(f)'s privilege for this rare, single-date observance. Identity-gated (test_oracle.ml's own [m20_commemoration_matches]): pins that colitur's own sole admitted commemoration really is [major-litanies].")
 (expected_rows 1))
 ((id M23)
 (citation "tools/extract_missalemeum_oracle.py's own header (the extraction script, not an RG citation): missalemeum's JSON has no \"Lectio\"/\"Evangelium\" section at all for Good Friday, a multi-lesson \"Missa Praesanctificatorum\" structure instead (\"Lectiones\"/\"Passio\") -- a comparator/fixture-structural limit, not a rubric dispute")
 (verdict colitur)
 (note "Task 9 (branch ef-lectionary, layer-4 oracle): Good Friday, both years (2026-04-03, 2027-03-26). colitur's own citation (Ex 12:1-11/John 18:1-40; 19:1-42) is Missal-verified twice, both scans, already established (tools/bootstrap_lectionary.ml's own [holy_week_entries], Task 8) -- it is missalemeum's OWN JSON, not colitur, that has nothing in the shape this schema's First/Gospel pair assumes for this one day: Good Friday's own liturgy is multiple readings without a single labelled \"Epistle\", the SAME shape colitur's own bootstrap hit and solved with a stated convention (the second of two peer lessons) rather than leaving absent. [First_unresolved]/[Gospel_unresolved] fire on the ORACLE side here (the mirror image of [Comm_identity_unresolved]'s own colitur-side absence) -- counted and cited, never silently skipped, the same discipline this file's own M15/M18 already establish for the opposite direction. Derived directly from the OCaml comparator's own failure output (test_layer_m_counts_match_citations), not hand-counted first and cross-checked after: 2.")
 (expected_rows 2))
 ((id M24)
 (citation "Not an RG citation -- a source-presentation quirk in missalemeum's own JSON, checked directly against the raw data (tools/extract_missalemeum_oracle.py's own extraction, verified by hand for these four rows): the Gospel citation embeds a LATIN book abbreviation (\"Luc\"/\"Joann\") instead of missalemeum's own usual English one (\"Luke\"/\"John\") on exactly these four Holy Week rows, nowhere else in the whole 730-day fixture")
 (verdict colitur)
 (note "Task 9 (branch ef-lectionary, layer-4 oracle): Holy Wednesday and Holy Thursday, both years (2026-04-01/04-02, 2027-03-24/03-25). Same underlying verse range on both sides, confirmed directly: colitur \"Luke 22:39-71; 23:1-53\" vs missalemeum \"Luc 22:39-71; 23:1-53\" (Holy Wednesday); colitur \"John 13:1-15\" vs missalemeum \"Joann 13:1-15\" (Holy Thursday, where the Epistle side already matches after this file's own [normalize_citation] strips the trailing full stop missalemeum's own sentence happens to end with, \"1 Cor 11:20-32.\"). Not folded into [normalize_citation] itself -- a Latin/English book-name equivalence table would be the first step of a general translation layer this project's own citation discipline deliberately does not build, the SAME comparator limit M5 already names for a different vocabulary gap (\"The Major Litanies\" vs \"Pro rogationibus\"). Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 4.")
 (expected_rows 4))
 ((id M25)
 (citation "Not an RG citation -- a punctuation-only difference in how the SAME verse range is written, checked directly: \"4 Kings 5:1-15\" (colitur) vs \"4 Kings, 5:1-15\" (missalemeum, a spurious comma with no citation content of its own); \"Dan 14:27, 28-42\" (colitur, verse 27 named separately then 28-42) vs \"Dan 14:27-42\" (missalemeum, the identical span written as one contiguous range)")
 (verdict colitur)
 (note "Task 9 (branch ef-lectionary, layer-4 oracle): four Lenten rows (2026-03-09/03-24, 2027-03-01/03-16 -- Frances of Rome and Gabriel the Archangel's own commemorated Lenten ferias, both years). Neither pair is a book/chapter/verse-NUMBER difference [normalize_citation] could safely absorb without also risking equating two GENUINELY different verse lists elsewhere in the fixture that happen to share this exact shape (a real \"12, 15-20\" vs \"12-20\" would look identical to this rule but mean different things) -- named individually instead, the same discipline M5's own identity-gated predicate already applies to a citation-vocabulary gap it also declines to generalise. Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 4.")
 (expected_rows 4))
 ((id M26)
 (citation "RG 299 (docs/research/scan1.txt:1096-1098): \"Item propriam Missam habent omnes feriae temporis Quadragesimae et Passionis necnon Quatuor Temporum Adventus et septembris. In reliquis feriis dicitur Missa dominicae praecedentis, NISI A RUBRICIS ALITER PROVISUM SIT\" -- restated in the propers (scan1.txt:4933-4935) as \"...nisi propria Missa assignetur\". Christ the King's own Mass heading, scan1.txt:39163: \"Dominica ultima octobris / D. N. IESU CHRISTI REGIS / I classis\", with NO rubric preceding or following it.")
 (verdict colitur)
 (note "REWRITTEN IN FULL 2026-08-18, replacing three layers of NARROWED/CORRECTED paragraphs -- the same discipline this entry's own fix round 1 demanded of its predecessor, in a file whose purpose is a top-down audit trail. History is in git; it is not re-layered here. The entry began at 30 rows with two shapes and one root cause. BOTH other shapes are now FIXED, not re-adjudicated: SHAPE 1 (21 rows, the rotating votive Mass of Our Lady on Saturday) was the RG 309(a) seasonal selection colitur did not implement -- the day observed Our Lady under RG 78 and then read the feria's Mass -- built 2026-08-17, register 6.13. SHAPE 2(a) (3 rows, the ferias between Trinity Sunday and Corpus Christi) was RG 299's explicit exception: the Missal prints a NAMED formula for that week, \"Missa dominicae I post Pentecosten\" (scan1.txt:21758), precisely because Trinity has taken its Sunday's own Mass -- built 2026-08-17, register 6.11. What remains is SHAPE 2(b) alone, 6 rows: the ferias of the week whose Sunday is Christ the King. VERDICT NOW COLITUR, and on a POSITIVE argument rather than an absence. RG 299's rule has an explicit escape clause, and the escape requires an assigned proper Mass. None is assigned for this week: checked directly at the source, no rubric precedes or follows Christ the King's own Mass heading (scan1.txt:39163ff), unlike Trinity's week which prints one and unlike Holy Name and Holy Family which each carry their own ferial rubric. The absence is therefore not a gap in the research but exactly the condition that triggers RG 299's DEFAULT -- and by that default the Mass of the preceding Sunday is what the ferias say, which on this week IS Christ the King's own, since RG 17(d) assigns that feast to the Sunday itself. That is what colitur emits. missalemeum emits the displaced ordinary Sunday's readings instead, which would require the exception clause to apply with no assigned Mass to invoke it. Its own limit, stated: this rests on reading a printed silence as the default rather than as an oversight, which the text cannot distinguish -- see register 6.16's own account of why that distinction is undecidable from the source. It is the same reading colitur applies everywhere else RG 299 governs, and applying it inconsistently here to match an oracle already adjudicated wrong six times would be the worse error.")
 (expected_rows 6))
 ((id M27)
 (citation "tools/extract_missalemeum_oracle.py's own header (the extraction script, not an RG citation): Christmas Day has THREE Masses in the 1962 Missal (Midnight/Dawn/Day), each with its own distinct Epistle+Gospel; this fixture's own entry[0] convention (verified, and documented, for every OTHER field it reads) takes the Midnight Mass, while colitur's own citation (bootstrapped from lectio) reflects the Day Mass -- two DIFFERENT, both genuine, Masses of the identical civil day")
 (verdict colitur)
 (note "Task 9 (branch ef-lectionary, layer-4 oracle): 25 December, both years. colitur: Heb 1:1-12/John 1:1-14 (\"Missa in die\"); missalemeum's own entry[0]: Titus 2:11-15/Luke 2:1-14 (\"Missa in nocte\"). Both are real, correct, Missal-verifiable citations for 25 December -- this is not a rubric dispute or a data gap either engine is wrong about, a comparator/fixture-extraction artefact (which of several equally-real Masses a multi-Mass day's own JSON array entry[0] happens to be). NOT fixed by changing the extractor's own array-index convention: that convention is deliberate and already verified, in the extraction script's own header, for every OTHER field this fixture reads on a multi-Mass day (rank/colours/tempora/commemorations/displaced, confirmed IDENTICAL across a day's own multiple Masses on all 4 such days, Christmas and All Souls, both years) -- only the CITATION fields are not identical across a day's own Masses, discovered by this task, and changing the index for citations alone while keeping it for everything else would be a second, undeclared convention, not a fix. Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 2.")
 (expected_rows 2))
 ((id M29)
 (citation "RG 128, transcribed in docs/research/rules-register.md 3b: violet for vigils of II and III class outside Paschaltide. The Vigil of St Lawrence (9 August, III class) and the Vigil of the Assumption (14 August, II class) both qualify. missalemeum keeps red and white respectively. Corroborated against O'Connell, The Celebration of Mass, 4th ed. (1964, revised to the Codex Rubricarum 1960 and the 1962 Missal), section 4(c), whose footnote 169 names the sole exception -- the Ascension's vigil, inside Eastertide, white -- which colitur already emitted correctly")
 (verdict colitur)
 (note "ef-oconnell-rubrics branch. Unlike every other entry in this file, the oracle here is not an independent witness against colitur: it is colitur's own discarded ancestor. colitur was bootstrapped from lectio, lectio's ini is generated from missalemeum, and missalemeum uses Divinum Officium's data files, so all three carried the same two wrong colours and no layer sharing that lineage could see it (CLAUDE.md's own lineage note, register 6.20). The defect surfaced only against the Missal's own RG 128 -- transcribed in the register since 2026-08-11 and disagreeing with the shipped data all along -- plus O'Connell and a published 1962 Ordo. Same fix as C37 in the lectio differential, seen from the oracle side. 3 rows in this window: 2026-08-14, 2027-08-09, 2027-08-14. 2026-08-09 is absent because it is a Sunday that year and the vigil never occurs, checked with date -d. Gated on the exact dates and Colour_f alone, so any other divergence on these days would still surface unexplained.")
 (expected_rows 3))
 ((id M30)
 (citation "The 1962 Missal's own universal CALENDARIUM. 16 May: 'S. Ubaldi Ep. et Conf., III classis' (docs/research/scan1.txt:2801, corroborated scan2.txt:3197). 13 November: 'S. Didaci Conf., III classis' (scan1.txt:3091, corroborated scan2.txt:3532). Neither carries a Commemoratio rubric, and each has its own Mass entry in the Proprium Sanctorum taking its readings from a Common with only its Oratio proper -- which a bare commemoration never has. The calendarium carries no 'pro aliquibus locis' marker anywhere, so an entry in it is universal by construction. The published 1962 Ordo (register 6.21) independently lists both as the day's III-class office. Full account and method in C38, data/ef/expected-divergences.sexp")
 (verdict colitur)
 (note "ef-sanctoral-status branch. As with M29, the oracle here is not an independent witness against colitur but colitur's own discarded ancestor: colitur was bootstrapped from lectio, lectio's ini is generated from missalemeum, and missalemeum uses Divinum Officium's data files, so all three carried the same wrong status. Found by auditing ALL 290 fixed-date sanctoral entries against the calendarium; these two were the only status defects in the file. 3 rows in this window: 2026-05-16, 2026-11-13, 2027-11-13. Where colitur now observes the saint the oracle still observes the feria, so rank, observed identity and both citations differ together and the commemoration colitur used to emit is gone. Colour differs only on 13 November, the ferial green giving way to the confessor's white; 16 May is in Paschaltide and already white. Gated on the exact dates and on a subset of that named field list, so a divergence of any other shape on these days would still surface unexplained. Three rows also leave M18 (376 to 373): they were unresolved there only because the observed office was a temporal-origin feria with no English name, and the observed office is now sanctoral and resolves.")
 (expected_rows 3))