<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/lib/rites/rite_ef/temporal_ef.ml, branch v0.8.0</title>
<subtitle>deterministic OCaml engine to compute and validate liturgical calendars for multiple rites, template-driven output to year 9999</subtitle>
<id>https://git.labunix.xyz/colitur.git/atom?h=v0.8.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.8.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-18T09:26:04Z</updated>
<entry>
<title>fix(ef): Good Friday is black, not violet (RG 128(b), RG 132)</title>
<updated>2026-08-18T09:26:04Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T09:26:04Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=01219763c87c84175fcfa469882c6f30a56720d5'/>
<id>urn:sha1:01219763c87c84175fcfa469882c6f30a56720d5</id>
<content type='text'>
RG 128(b)'s own exception list, transcribed in the rules register and
primary-source-verified since Task 16, excepts "Actione liturgica feria VI
in Passione et Morte Domini usque ad Communionem exclusive" from the violet
that otherwise runs from Septuagesima to the Easter Vigil. RG 132 assigns
black there. The register recorded this as an acknowledged gap rather than a
disputed reading -- the code comment beside the Holy Thursday exception says
so in as many words -- and it is closed here.

Found by two witnesses outside the Divinum Officium lineage that colitur,
lectio and missalemeum all share: O'Connell, The Celebration of Mass, 4th ed.
(1964), revised throughout to the Codex Rubricarum (1960) and the 1962
Missal, and a published 1962 Ordo. Both say black. So does missalemeum's own
colour set, which orders the day "bv".

The rubric is per-action ("usque ad Communionem exclusive") and the model
emits one colour per day; black is the day's principal one, the same
acknowledged limit RG 126's Palm Sunday blessing already carries.

Blast radius: one day per year, colour only, across the whole 1583-9999
domain. Two golden pins re-pinned. Good Friday's 46 differential rows leave
C23 for a new C36 gated on the exact triple [First_f; Gospel_f; Colour_f],
so C23's own exact-pair gate still means what its note says for its
remaining four days: 184 + 46 = 230, no residue, both counts from the
comparator rather than hand-counted.
</content>
</entry>
<entry>
<title>fix(ef): days within the Octave of the Nativity, and RG 69 for 29-31 Dec</title>
<updated>2026-08-18T08:21:39Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T08:21:39Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=e25558fee984837389d0e53cd6e17a3820f8e5ea'/>
<id>urn:sha1:e25558fee984837389d0e53cd6e17a3820f8e5ea</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>test(differential): fix round 1 -- Holy Week, Lent Ember, RG 69</title>
<updated>2026-08-15T01:40:19Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-15T01:40:19Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=b0ff86ae552b90613be21c52433f4180deba7758'/>
<id>urn:sha1:b0ff86ae552b90613be21c52433f4180deba7758</id>
<content type='text'>
Two Critical findings, both real: Holy Week (including the entire Sacred
Triduum) was reading Passion Week's Masses -- the original colitur_keys
widened lectio's single, conflated ini section into both weeks instead of
Passion week alone. Narrowed to Passion week only; Holy Week's own four
cleanest days (Monday, Tuesday, Thursday, Saturday) are hand-authored
directly from the Missal, verified twice against both scans (C23); Holy
Wednesday and Good Friday are genuinely multi-lesson liturgies with no
single Epistle slot and are deliberately left unanswered, not guessed (C24).

The Lenten Ember days were still dead keys: Temporal_ef computes
ef-lent-ember-{wed,fri,sat}, lectio's ini names the same data
ef-lent-1-{wednesday,friday,saturday}, and colitur_keys never translated
it -- both engines independently fell through to the same wrong ferial
answer, so even the differential stayed green (C22, a genuine lectio bug
recorded for upstream). Fixed the instance and the class: colitur_keys
gained the rename, and tools/bootstrap_lectionary.ml gained
assert_reachable, sweeping Rite_ef.Temporal_ef.temporal at generation time
so a translation table entry naming a slug colitur never computes dies
loudly instead of shipping silently, plus an informational log of every
real slug with no entry at all.

C21 ("colitur's step 3 cannot reach a correct answer for the fixed
Christmastide slugs") is retired, superseded rather than merely patched:
the Nativity-Octave days now have their own direct Missal formulary
(Tit. 3,4-7/Luc. 2,15-20, "Diebus infra octavam Nativitatis Domini"),
resolved at step 2, not step 3 at all. That surfaced a real RG 69 gap
underneath it: a Sunday landing 26-31 December should keep its own Office,
not the fixed weekday placeholder, which Temporal_ef does not currently
distinguish. C6's verdict is re-opened (open, not colitur) for the 19 of
its 138 rows where this applies directly, and a new entry C25 (57 rows)
records the same gap propagating one hop further through step 3 into Holy
Name week. Both are out of this task's own scope -- a behaviour change to
a shared, multi-round-reviewed kernel-adjacent function -- and recorded,
not fixed, per the coordinator's own instruction.

C6's own note is rewritten in full rather than layered with another
correction; C18's stale trailing count is fixed to match its own pin; the
Vigil-misapplication risk flagged as a Minor closed itself once the
Nativity-Octave fix landed, confirmed by inspection rather than assumed.

dune test: 358/358. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359/359.
</content>
</entry>
<entry>
<title>docs: an invented Caput, a list that was not closed, and a blind spot</title>
<updated>2026-08-13T15:37:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T15:37:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=c63e37b8cbef1480b6f5677420425d22fe7061d9'/>
<id>urn:sha1:c63e37b8cbef1480b6f5677420425d22fe7061d9</id>
<content type='text'>
Three corrections from the fix-round re-review, none changing behaviour.

RG 431(e) was attributed to "Caput XX, De hymno Gloria in excelsis".
There is no Caput XX -- the Rubricae Generales' Caput series ends at
XIX. The paragraph number, letter and subsection title were all right;
only the containing division was invented. It sits under "VIII -- De
diversis Missae partibus", subsection "C) De hymno Gloria in excelsis".
Shipping a new invented structural citation in the very round that
corrected a source-fidelity overclaim is what the gate exists to catch.

marian_slugs claimed TWO entries found and deliberately excluded after
individual consideration, "not merely omitted". There was a third:
vigil-of-the-assumption, 14 August, which is de B. Maria Virg. and whose
collect implores her protection. It was merely omitted. Added to the
list -- behaviourally inert, verified: it wins 7196 times domain-wide,
always with the non-Marian eusebius-confessor as its only commemoration,
and never loses -- but a closed list's whole value is its enumeration
claim, and that claim was false as written.

And the new rule has no comparison-layer witness at all. Reverting it
reddens three tests, none of them a comparison layer: the differential's
row type carries no commemorations, and the oracle's window has no
16-July Saturday. Worse, lectio's fixture DOES carry commemorations and
prints +our-lady-of-mt-carmel on all 8 in-window dates where colitur now
prints nothing -- a real divergence, neither fixed nor cited, swallowed
by a blind spot, which binding decision 1 forbids. Recorded, with the
note that colitur's reading here has no reference confirmation anywhere
and only extending the oracle fixture to 2033 or later would settle it.

Also records the RG 112(d) branch's ordering constraint: it precedes RG
95's Transfer branch, which it does not need to, and must move below it
if a Class1 Marian entry is ever added.
</content>
</entry>
<entry>
<title>docs(ef): fix round 1 citation corrections in temporal_ef.ml (F5b, F6)</title>
<updated>2026-08-13T15:10:00Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T15:10:00Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=f389e57e965e7bc7ea46ad1f37203d00f22e25a7'/>
<id>urn:sha1:f389e57e965e7bc7ea46ad1f37203d00f22e25a7</id>
<content type='text'>
bvm_saturday_names's own comment: the "Missae de S. Maria in sabbato"
heading quote corrected from an overclaimed "both scans, word for word"
to showing both scans' own raw OCR (noisy, and genuinely differing in
abbreviation from each other) side by side, with the substance-only
corroboration stated plainly.

Colour citation tightened: RG 431(e) (the Missal's own classification
of this Mass as a "Missa votiva IV classis... de B. Maria Virg.") -&gt; RG
121(a) (votive Masses take the colour of the feast-type they
correspond to) -&gt; RG 120(b) (BVM feasts are white), replacing RG 120(b)
alone as the primary citation -- this Office is not itself a festum, so
RG 120(b)'s own "in Officio et Missa de festis" was a stretch as the
sole basis. Conclusion (white) unchanged.
</content>
</entry>
<entry>
<title>temporal(ef): the votive Office of the BVM on Saturday, RG 91 entry 27</title>
<updated>2026-08-13T13:57:00Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T13:57:00Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=044aa0dccbfe76ac9afd299af6074296eeb2cca3'/>
<id>urn:sha1:044aa0dccbfe76ac9afd299af6074296eeb2cca3</id>
<content type='text'>
RG 91 entry 27, "Officium sanctae Mariae in sabbato", sits in the Table
of Precedence between entry 26 (III-class vigils) and entry 28 (IV-class
ferias). Precedence_ef.band already routed a plain IV-class Saturday
feria to entry 27's own band value, but nothing in Temporal_ef.temporal
ever constructed the office itself, so an otherwise-unoccupied Saturday
still surfaced with a bare ferial slug and its season's ordinary colour.

Established from Caput IX of the Rubricae Generales, both photographic
scans and the electronic transcription, word for word (no
scan-vs-transcription conflict: RG 78/79 are General Rubrics prose, not
the Mass-propers body text the transcription is documented elsewhere as
missing almost all of):

  "78. In sabbatis, in quibus occurrit Officium de feria IV classis, fit
  de sancta Maria in sabbato.
  79. Officium sanctae Mariae in sabbato incipit a Matutino et explicit
  post Nonam."

RG 78's own protasis IS "otherwise unoccupied IV-class Saturday" --
every Saturday whose temporal candidate would otherwise be Class4,
across every season that rank reaches (Christmastide, Septuagesima,
Time after Epiphany, Time after Pentecost, ordinary Paschaltide).
Nothing else was needed to decide "otherwise unoccupied": band's own
entry-27 branch already reads rank/weekday on the temporal candidate
unconditionally and only wins the day when nothing outranks it -- RG
78's own condition, decided by the existing occurrence machinery.

Colour is white, unconditionally, per RG 120(b) ("Adhibetur color albus
in Officio et Missa de festis: ... b) B. Mariae Virg."), not RG 119/127/
128's seasonal rules -- this office is never "de Tempore" for colour
purposes, so it overrides the season's own violet/green.

The slug is deliberately left UNCHANGED (reused from whatever the
generic &lt;season&gt;-&lt;week&gt;-&lt;weekday&gt; ferial fallback would already have
produced), for two independent reasons: it matches the Sacred Triduum's
own precedent (identified structurally, off rank/weekday, never off the
slug), and a bespoke uniform slug would have broken
Colitur_kernel.Validate's own slug-uniqueness-per-liturgical-year
invariant, sighted zero times before this task -- confirmed directly by
writing it that way first and watching the landmark-years test fail.

Subject is tagged Bvm (currently inert for precedence -- only Lord is
ever read by band/disposition/admit) and the name is the Latin
"Officium sanctae Mariae in sabbato" (RG 91 entry 27's own table title
and RG 79's own heading), deliberately not English, the same
zero-circularity discipline Holy Family/Holy Name/the Sacred Triduum
already established.

The I-V numbered "Missae de sancta Maria in sabbato" (both scans) are a
Mass-propers selection detail (RG 309(a): "iuxta temporum diversitatem")
governing which readings/texts are said, not which office is kept --
colitur computes no citations yet (Plan 4), so this is deliberately not
modelled here.

Two pre-existing tests needed correction, not because they were wrong
before, but because RG 78 genuinely changes their dates' own facts: a
Saturday inside the Holy Name of Jesus window (3 January) and two
Saturdays inside christmastide_feria_slug's own "-0-"/"-2-" stretches
(26 December, 10 January) are all otherwise-unoccupied Class4 Saturdays,
so they now legitimately carry the BVM office instead of staying a bare
Temporal-subject feria.
</content>
</entry>
<entry>
<title>docs: a name that matched no scan, and a blocker that was not real</title>
<updated>2026-08-13T11:45:46Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T11:45:46Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=67855ae3125148116df870bf1a9abeac5b501d5b'/>
<id>urn:sha1:67855ae3125148116df870bf1a9abeac5b501d5b</id>
<content type='text'>
Two corrections from the fix-round review, both to the record.

"Sabbato Sancto" is attested zero times in either photographic scan. The
scans print SABBATO SANCTO as the heading (once) and "Sabbato sancto" as
the running header (28x and 30x); the shipped casing appears only in the
electronic transcription's table of contents -- the source this
project's own methodology rule deprecates -- while the comment beside it
called the value "both photographic scans, word for word". Recased to
the running-header form, which is the convention the other three Latin
names in the file already follow, with a source note recording the
count. Third source-fidelity slip this week, and the first where the
wrong value came from the deprecated source itself.

The Major Litanies deferral was recorded with two false blockers. It
claimed a kernel signature extension was needed to suppress the feast in
transfer years: admit already takes ~temporal and disposition already
takes ~winner, both carrying the Easter office on 25 April, so a
rite-local slug test does it with zero kernel surface. And it implied
Easter Monday is unmarkable: ef-easter-1-monday occurs exactly 8417
times in 8417 years, as reliable as ef-easter-sunday. So the guarded
build -- never scored -- is a strict improvement, 8223 years newly
correct against 194 unchanged, and "worse than the gap" was true only of
the unguarded one.

Deferring is still right, for a reason nobody had found: 25 April is St
Mark, II class, so under RG 111(c) a privileged Litanies commemoration
would displace the day's existing ordinary commemoration in ~97.7% of
years -- an unmeasured blast radius through layers 3 and 4. That
measurement is the prerequisite. The 194 figure is exact and reproduces.

Also corrects a subject-audit list that named five months for six
entries, omitting the Precious Blood on 1 July.
</content>
</entry>
<entry>
<title>temporal(ef): the Sacred Triduum's own Latin identity, RG 91 entry 2</title>
<updated>2026-08-13T11:12:01Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T11:12:01Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=d2bfeb3c9b5cff163ed9cd9e86eb0e1849117f67'/>
<id>urn:sha1:d2bfeb3c9b5cff163ed9cd9e86eb0e1849117f67</id>
<content type='text'>
Holy Thursday, Good Friday and Holy Saturday resolved to the generic
Passiontide ferial slugs with no distinct identity of their own -- rank
and colour were already correct (RG 91 entry 2; Holy Thursday's white
per RG 128(b)/RG 122), only Celebration.names/subject were missing.

Keeps the slug (RG 91 entry 2 is identified structurally, off rank and
Easter offset, by Precedence_ef.band -- never off the slug -- so
renaming it would touch precedence for no reason and break the lectio
differential's own slug mapping for these three lectionary keys, the
same reasoning already given for Holy Family/Holy Name). Carries the
identity in Celebration.names instead, the same treatment those two
established: Latin, not English, to avoid reading the oracle this axis
is compared against.

Names sourced from both photographic scans, word for word, corroborated
by the electronic transcription's own table-of-contents-style listing at
the identical three headings (three-way agreement, nothing to
adjudicate): "Feria V in Cena Domini" (Holy Thursday), "Feria VI in
Passione et Morte Domini" (Good Friday -- not the transcription's own
informal "Feria VI Parasceve" used in passing elsewhere), "Sabbato
Sancto" (Holy Saturday).

Also tags subject = Lord, going further than Holy Family/Holy Name
strictly required (they needed it only because band's entry 14 reads
subject to outrank a colliding fixed feast; entry 2 here needs no such
thing). Safe: disposition's RG 112(a) branch only fires when both sides
of an occurrence are tagged Lord, and no Lord-subject sanctoral entry
has a fixed civil date inside Holy Week's own movable range; any Class1
sanctoral entry landing there (e.g. a transferred Annunciation) reaches
disposition's earlier, subject-blind Transfer branch first regardless.
Verified against the full 1583-9999 domain: zero
observed/commemorations/transferred_* difference traceable to the tag.

test_golden.ml's describe gains a name_la field alongside subject, for
the same reason subject was added: a names-only change is otherwise
invisible to every pin whose rank/colour/slug are already correct (this
task's own catalogued vacuity flavour #1). Six existing pins move from
subject=temporal to subject=lord (the three Easter-extreme Holy Saturday
pins, 2016's Good Friday, and the 2026 Holy Thursday/Good Friday pair);
the rest gain name_la=- by construction (no other temporal-cycle
candidate carries a name yet).

Mutation-tested: reverting temporal_ef.ml alone (keeping the tests)
reddens the new Rite_ef unit test plus five golden pins across two
independent layers.
</content>
</entry>
<entry>
<title>fix round 1: RG 110(c)'s ordering was inverted; M19 lacked an identity gate</title>
<updated>2026-08-13T10:01:25Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T10:01:25Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=853351fad8aebc71c5341e6ff90371ca0caf8cf9'/>
<id>urn:sha1:853351fad8aebc71c5341e6ff90371ca0caf8cf9</id>
<content type='text'>
RG 110(c), word for word: "quoties vero oratio unius Apostoli addenda
est ad modum commemorationis, huic orationi additur altera immediate,
ante omnes alias commemorationes." "Huic orationi" (dative, "to this
oration") refers to the trigger's own oration; "additur altera" means
the companion is added to it, i.e. follows it. "Ante omnes alias
commemorationes" governs the pair's position relative to other,
unrelated commemorations, not the pair's own internal order. The
previous build prepended the companion uniformly in both RG 110
shapes, citing this same clause for both -- correct for (a)/(b) (the
day's own oration, not a list member, has nothing to order against),
backwards for (c), where the trigger is itself a list member and the
companion belongs after it. Fixed in rg110_additions: shape (a)/(b)
still prepends; shape (c) now splices the companion in immediately
after its own trigger. Re-pinned the unit test that had asserted the
wrong order, and corrected both rows' comments to cite the clause that
actually governs each shape.

No layer in this codebase compares commemoration order: the lectio
differential never compares commemorations, the oracle sorts both
sides into a multiset, and the golden tests' own describe function
sorts its commemorations field too. Recorded as a new, permanent blind
spot in CLAUDE.md and the register, not merely fixed around -- the
admit_cases unit table is the only place order is asserted at all.

Re-measured the full blast radius against the same pre-change binary:
same 14,627 differing days, same four shapes and counts, confirming
the fix changed only the content of the 593 shape-(c) rows and nothing
else. Mutation-tested: reverting the splice back to a uniform prepend
reddens exactly the shape-(c) unit test; a new golden pin for a real
shape-(c) day (2004-02-22) stays green under the same mutation, living
proof that golden pins cannot see this axis, not merely a claim.

Separately, M19's own predicate checked a date and a diff shape but
not which candidate -- proved insufficient by fabricating a second,
bogus companion on 30 June and confirming the whole suite stayed
green. Fixed by requiring the admitted commemoration to be exactly
commemoration-of-st-peter, mirroring C16's own identity guard. Added a
golden pin for 30 June, the only assertion of that entry's identity
outside the allow-list.

Also: corrected a false claim in the task report that the electronic
transcription carries no corroboration of the Holy Name fallback --
its own table of contents does, at a line not checked on the first
pass. Added two further citations, both re-verified against the scan:
RG 17's own closing paragraph, settling the Sunday shape's Sunday-
exclusion at the rubric level rather than only in the propers; RG
124(c), which assigns red to 30 June by paragraph number rather than
by the generic apostle/martyr default. Noted the fragility of deriving
the Sunday shape's RG 109(a) privilege from a slug-substring match
rather than from a citation. Cosmetic: a stray blank line and an
indentation inconsistency.
</content>
</entry>
<entry>
<title>temporal(ef): Holy Name of Jesus, RG 17(a) -- fallback + Lord subject</title>
<updated>2026-08-13T08:40:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-13T08:40:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=b5dcdd8d4048295cfbdf1606f4cafd39b3c433e6'/>
<id>urn:sha1:b5dcdd8d4048295cfbdf1606f4cafd39b3c433e6</id>
<content type='text'>
RG 17(a): "festum Ss.mi Nominis Iesu, celebrandum dominica quae occurrit
a die 2 ad 5 ianuarii (secus die 2 ianuarii)" -- both photographic scans,
confirmed on the calendarium's own January table and the Mass propers'
own heading. Two defects closed together, since they interact through
RG 91 entry 14/RG 16(a):

1. The Sunday shape (2-5 January) now tags subject = Lord, matching
   RG 91 entry 14 ("Festa Domini II classis") -- previously subject =
   Temporal, the same defect shape Holy Family had before it.
2. The fallback (RG 17(a)'s own "secus die 2 ianuarii", the calendarium's
   "vel, ea deficiente, die 2 ianuarii") is now built: 2 January carries
   the feast whenever no Sunday falls 2-5 January that year. Before this
   fix colitur emitted no Holy Name office at all in such a year -- a
   real II-class feast simply missing, on 3,619 of 8,417 years in the
   domain (43%; 20 of the 46 years 2005-2050, independently re-derived
   against `date -d`).

Both shapes band identically at RG 91 entry 14's MOVABLE half
(Precedence_ef.entry_14_movable_band) -- one feast, not two differently
classified ones, per the Mass propers' own single heading covering both
dates. No live collision exists in the current sanctoral data (nothing
fixed-date falls 2-5 January besides a Commemoration_only entry on 5
Jan), so the RG 16(a)/RG 112(a) interaction is proved with synthetic
precedence-level fixtures mirroring Holy Family's own precedent, not a
live-data regression. One asymmetry the synthetic tests found and kept
honest rather than forced: a losing Holy-Name-Sunday is privileged
(RG 109(a), "of a Sunday") and survives RG 111(a)'s cap; a losing
Holy-Name-fallback is not (2 January is not a Sunday, and no other
RG 109(a)-(f) category applies to it), so it gets no commemoration at
all if ever outranked -- both individually correct readings of RG 109/111's
closed lists.

Golden pins follow the brief's own vacuity warning: the Sunday shape
already emitted the right slug/rank/colour before this fix (an ordinary
Sunday and Holy Name coincide on those fields), so its pin asserts
subject explicitly rather than pinning the whole line uncritically; the
fallback pin (2029-01-02) is the one with teeth against the larger
defect, reddening on slug/rank/subject together if reverted.

Mutation-tested: each half of the fix reverted separately reddens
exactly its own tests (Sunday subject: the dedicated unit test, the
golden pin's subject field, one precedence end-to-end test; fallback:
the fallback unit/anchor/golden tests, the new C16 differential count,
and both shapes of the precedence end-to-end tests) and nothing else.

Adds data/ef/expected-divergences.sexp's C16 (lectio has no fallback for
this window at all) -- the lectio differential's own count, independently
re-derived against `date -d` for the fixture's 2005-2050 span, not
transcribed from the domain-wide figure. The missalemeum oracle window
(2026-2027) exercises only the Sunday shape and needed no new entry:
subject is not one of its compared fields, and both years' rows already
corroborate the Sunday-shape ranking (missalemeum's own 2026-01-04 and
2027-01-03 rows: rank 2, white, title "Holy Name of Jesus").
</content>
</entry>
</feed>
