<feed xmlns='http://www.w3.org/2005/Atom'>
<title>colitur.git/data/ef/expected-divergences.sexp, branch v0.2.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.2.0</id>
<link rel='self' href='https://git.labunix.xyz/colitur.git/atom?h=v0.2.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/'/>
<updated>2026-08-17T12:13:02Z</updated>
<entry>
<title>fix(lectionary): two Judith citations wrong in both engines</title>
<updated>2026-08-17T12:13:02Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T12:13:02Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=3565ebd1608a7d87e0d890f9953845efcfe743ca'/>
<id>urn:sha1:3565ebd1608a7d87e0d890f9953845efcfe743ca</id>
<content type='text'>
A live-missalemeum sweep over a full liturgical year (2028, 364 days)
returned 333 matching and 31 differing days: 17 already-known or pure
notation, 3 new. All three now adjudicated against the photographic
scans of the 1962 Missal.

The Assumption's Epistle reads "Iudith 13, 22-25; 15, 10" (scan1:35357).
Both engines carried "Judith 13:22-25; 13:15; 13:10" -- a chapter
carry-over defect that re-applied chapter 13 to the second citation and
so invented two verses the Missal never cites. The Seven Sorrows reads
"Iudith 13, 22 et 23-25" (scan1:36938, corroborated at 28468); both
carried "Judith 13:22; 13:25", dropping the range. The third, St Monica,
resolves the other way: the Missal gives 1 Timothy (scan2:32679, heading
and incipit both legible; scan1:29524 agrees) where missalemeum serves
the Common of Holy Women's Proverbs -- colitur is right, no change.

Layer 3 could not have found either citation defect. colitur's data is
bootstrapped from lectio, and lectio is the other side of that
differential, so while both engines produced the identical wrong answer
the comparison held it against itself and reported agreement -- the
shared-lineage blindness CLAUDE.md names, now with a second live witness
beside Holy Thursday's colour. Only an external oracle could see it, and
only outside the committed fixture's own window.

Fixed upstream in lectio, re-bootstrapped here (provenance SHA-256 moved
to 54f6bfc5, verified against the source), fixture regenerated.

The upstream fix inverted layer 3 from blind to load-bearing here:
reverting the Assumption citation now reddens both layers, where before
it would have reddened neither. Verified by mutation, both directions.

Allow-lists:
- C22 closed and removed (128 rows -&gt; 0), not re-adjudicated -- the other
  engine was fixed to agree, the same shape as the C2-C5/C7/C9-C13/C21
  closures. Its own note had already flagged the Lenten Ember dead-key
  bug for upstream; lectio now also fails its build on any unreachable
  lectionary key rather than serving a plausible wrong Mass.
- M28 opened (3 rows, verdict colitur), pinning both sides' citation
  text rather than the date and diff shape alone, so a different
  divergence landing on the same date cannot be swallowed.
- M8's gate widened, expected_rows unchanged at 2: 2027-08-15 carries
  both its cause and M28's, and one entry is admitted per day. It stays
  under M8, which now requires its own commemoration difference to be
  present and admits the citation difference only when it satisfies
  M28's two-sided predicate. Neither cause absorbs the other.

layer_m_reason's oracle-row parameter, kept named since M2 closed for
exactly such a future reader, is live again.

Register: docs/research/rules-register.md section 6.6.
</content>
</entry>
<entry>
<title>test(oracle): fix round 1 -- C30 disclosure, RG 17(a) misattribution, M26 shapes</title>
<updated>2026-08-17T11:02:39Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T11:02:39Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=5d236c75c557a7e9ed4a8a852b8089aca48b594e'/>
<id>urn:sha1:5d236c75c557a7e9ed4a8a852b8089aca48b594e</id>
<content type='text'>
Three Important findings from coordinator review of 8d1eb25, all fixed.

1. C30's own note claimed its 91-row population "is C25's OWN former
   population, before this task narrowed it" -- false. Independently
   re-derived against the real resolver (pre-fix vs post-fix binary) and
   the lectio fixture: only 44 of the 91 rows were ever in C25 (Wed 6/
   Thu 19/Fri 19, matching C25's own fix-round-3 breakdown exactly); the
   other 47 (all of Monday/Tuesday, plus part of Wednesday/Friday)
   previously matched lectio outright -- both engines independently
   landing on the same wrong value -- and are newly allow-listed only
   because colitur is now right. Rewritten to the same "both engines
   silently agreed on the wrong answer" pattern C33/C34 already used.

2. "Diebus ferialibus" is not RG 17(a) -- RG 17(a) states only the
   day-identity privilege; the ferial-Mass rubrics are Mass-propers
   rubrics, a distinction the register's own §6.3 already drew before
   this task's first pass blurred it in code/allow-list comments. A
   further slip: C31/C32 called their own rubric "RG 17(a)'s own next/
   third sentence" when it is a different rubric block ~230 lines away,
   in Holy Family's (not Holy Name's) own feast propers. Fixed the
   attribution chain throughout tools/bootstrap_lectionary.ml,
   data/ef/expected-divergences.sexp's C29-C34, and (gitignored, outside
   this commit) docs/research/rules-register.md -- closed the §6.3 park,
   added §6.5 recording all four citations with corrected attribution.
   Quotes and line numbers were already right; only the chain of custody
   to RG 17(a) was wrong.

3. M26's own 30 rows classify into two nameable shapes, not "three
   confirmed shapes" with an unexplained 23-row residue that was in fact
   empty: 21 rows are RG 78's own already-documented BVM votive-Mass
   gap; 9 rows are a second, distinct gap -- a week whose own Sunday was
   displaced by a movable named feast (Trinity-&gt;Corpus Christi, "Missa
   Dominicae I post Pentecosten"; Christ the King), where the Missal
   requires the displaced Sunday's own Mass to keep informing that
   week's ferias but step 3 walks back to the displacing feast's citation
   instead -- proven directly by colitur's own citation on the Christ-
   the-King rows being literally that feast's own Gospel. verdict open
   unchanged (not fixed here); the shape is now named instead of buried.

Minors: section count corrected 1458-&gt;1456 (four places); "exactly one
candidate, zero ambiguous" corrected to "correctness rests on ordering,
not uniqueness" (2 of 1456 sections genuinely yield two candidates,
Holy Saturday's own Lectio, both years); the stale "nothing in layers
3-5 compares citations" claim corrected (only layer 5 still doesn't);
M18's note corrected (five new entries not six; ~18 of its remaining
352 rows only agree now because of this task's own fixes, not "already"
before it); "five" corrected to "six" otherwise-unoccupied Saturdays in
bootstrap_lectionary.ml; scan2 quotes softened where OCR-garbled.

Also done outside the git-tracked files: the step-4 (Commons) coverage
gap is now recorded in data/ef/expected-divergences-missalemeum.sexp's
own header, not only the commit body and the (gitignored) report.

dune test: 358 tests green. COLITUR_EXHAUSTIVE_SWEEP=1 dune test
--force: 359 tests green, 95.7s.
</content>
</entry>
<entry>
<title>test(oracle): compare reading citations against missalemeum</title>
<updated>2026-08-17T10:28:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-17T10:28:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=8d1eb25a311e16ddb7bf89d2b21fb1ca0aa058a7'/>
<id>urn:sha1:8d1eb25a311e16ddb7bf89d2b21fb1ca0aa058a7</id>
<content type='text'>
Layer 4 (test_oracle.ml) now extracts and compares the Epistle/Gospel
citation for every one of the 730 days in the 2026-2027 fixture, the
same axis Task 8 already added to layer 3. tools/
extract_missalemeum_oracle.py gained a structural citation-span
detector (the first "*...*"-wrapped span under 40 chars containing a
chapter:verse-shaped digit pair), verified exhaustively over all 1 458
Lectio/Evangelium sections. 728 of 730 days are comparable; the 2 that
are not (Good Friday, both years) have no such section in missalemeum's
own JSON at all -- a structural limit on the oracle's own side (M23),
not a colitur gap. 451 of 730 days differ and are all explained across
19 cited entries; 0 unexplained. Chain step 4 (the Commons) has no
layer-4 witness: confirmed empirically (a scratch sweep, not merely
re-asserted from Task 6's own report) that none of the 15 Commons/proper
saints is ever the observed office in this window.

The comparison surfaced three genuine colitur bugs in
data/ef/lectionary.sexp, all fixed at the source in
tools/bootstrap_lectionary.ml:

1. Holy Name of Jesus (ef-holy-name-sunday/ef-holy-name) carried a
   mis-derived citation, borrowed by analogy from an unrelated ini
   section ("ef-christmas-sunday-0", the Sunday-within-the-Octave's own
   Mass) on the wrong assumption the two share a Mass. Disproved by
   missalemeum's own extraction for both real Holy Name Sundays in its
   window, confirmed against the Missal itself, twice, both scans
   (Acts 4:8-12/Luke 2:21, not Gal 4:1-7/Luke 2:33-40).
2. RG 17(a)'s own "diebus ferialibus" rubric (immediately following the
   Holy Name heading, both scans) was never implemented: 2-5 January
   ferias repeat 1 January's Mass, 7-12 January ferias before Holy
   Family Sunday repeat Epiphany's, and Holy Family's own week has a
   named formula ("Missa Dominicae Primae post Epiphaniam"). All three
   fell to step 3's undifferentiated Sunday walkback instead. Fixed for
   three 5-weekday families, deliberately excluding Saturday from all
   three -- RG 78's BVM Saturday Office wins there unconditionally,
   confirmed against missalemeum's own title on this window's own such
   Saturdays.
3. Corpus Christi and Sacred Heart (both real, never-impeded I-class
   movable feasts) had no lectionary entry at all. Both engines
   independently fell back to Trinity Sunday's own citation and
   silently agreed on the wrong answer -- the "Holy Thursday violet in
   both" shape CLAUDE.md names for exactly this reason.

Because lectionary.sexp is shared with layer 3 (the lectio differential,
2005-2050), these fixes changed colitur's output for the whole domain,
not only 2026-2027. data/ef/expected-divergences.sexp and
test_differential.ml needed matching updates: C1 narrowed 361-&gt;173 and
C25 narrowed 57-&gt;13 (rows that now resolve correctly moved to new
entries), C16's note corrected (count unchanged), and six new entries
added (C29-C34, 397 rows total, all verdict colitur). test_lectionary.ml
and test_lectionary_ef.ml's own pins were updated to match (entry count
131-&gt;148; one step-3 regression test re-pointed to a date that still
genuinely exercises that step).

One entry, M26 (30 rows, verdict open), is a genuine unfixed gap: colitur's
step-3 "resume the preceding Sunday" fallback is its only ferial-Mass
mechanism, and missalemeum's own selection is more granular in three
confirmed ways (a rotating votive Mass of the BVM, a named weekly
formula for at least one week, and later Time-after-Pentecost weeks this
task's own investigation did not narrow to a single rule) -- the same
"needs a season-keyed selection mechanism, new behaviour not new data"
shape data/ef/expected-divergences.sexp's own C6/C25 and Task 6's own
residual concern already name, out of this task's own scope to build.

dune test: 358 tests green. COLITUR_EXHAUSTIVE_SWEEP=1 dune test
--force: 359 tests green, 89.5s.
</content>
</entry>
<entry>
<title>test(differential): fix round 3 -- two more Ember Saturdays, doc fixes</title>
<updated>2026-08-15T02:48:59Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-15T02:48:59Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=9947a28f3a40bd8ac36892dcf5aad59d9e6f847c'/>
<id>urn:sha1:9947a28f3a40bd8ac36892dcf5aad59d9e6f847c</id>
<content type='text'>
Two Ember Saturdays shipped an apostle's Mass verbatim from lectio's
own ini, the exact shape already found and fixed for Passion Tuesday
(C26): ef-advent-ember-sat carried St Thomas the Apostle's Mass (Eph
2:19-22 / John 20:24-29, 21 December) instead of the real "Sabbato
Quatuor Temporum Adventus" (2 Thess 2:1-8 / Luke 3:1-6); ef-september-
ember-sat carried St Matthew's Mass (Ezek 1:10-14 / Matt 9:9-13, 21
September) instead of the real "Sabbato Quatuor Temporum septembris"
(Heb 9:2-12 / Luke 13:6-17). Both verified against both primary-source
scans independently. Both readings are explicitly labelled "Lectio
Epistolae" in the Missal on both days, so neither needed the "last
lesson before the Gospel" convention Holy Wednesday/Good Friday relied
on -- a textual fact, not an editorial choice.

Fixed at the source in tools/bootstrap_lectionary.ml: colitur_keys
excludes both wrong ini sections; a new ember_saturday_corrections list
hand-authors the real citations. New allow-list entries C27/C28 (40
rows each, not the naive 46 -- traced to the identical 6 civil years
where 21 September and 21 December, always exactly 91 days apart, land
on a Saturday and the fixed saint's feast wins outright). Both values
pinned in test_lectionary.ml and mutation-tested.

Also: C25's per-weekday breakdown was mislabelled (right multiset,
rotated weekday labels) in both test_differential.ml and expected-
divergences.sexp -- corrected to Wednesday 6/Thursday 19/Friday
19/Saturday 13, and the claim that this split came directly from the
comparator's own output is narrowed to what's actually true (only the
total, 57, does). C26's scan2 citation range was extended to include
the Gospel (previously stopped after the Epistle).

lib/kernel/liturgical_day.mli's "citations always empty until Plan 4"
comment is now stale on this branch -- left untouched (Task 11's own
documentation pass), noted in the task report so it isn't lost.

dune test: 358 tests green; COLITUR_EXHAUSTIVE_SWEEP=1: 359 green.
</content>
</entry>
<entry>
<title>test(differential): fix round 2 -- Good Friday, Passion Tuesday, stale header</title>
<updated>2026-08-15T02:16:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-15T02:16:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=96bf100a4de32bd5f3887ffdb15b59b8bbd0376b'/>
<id>urn:sha1:96bf100a4de32bd5f3887ffdb15b59b8bbd0376b</id>
<content type='text'>
Critical, and worse than what it replaced: removing a lectionary key does
not mean "no reading" to Lectionary_ef.readings -- it means step 3 silently
resumes the preceding Sunday. Good Friday, which has no Mass at all, was
emitting Palm Sunday's own Epistle and Passion narrative every year; Holy
Wednesday had the same defect. Fixed by authoring both days fully: the
Gospel was always unambiguous and is now always authored; the Epistle uses
the same "last lesson before the Gospel" convention this file's own Lenten
Ember Wednesday entry already established for an identical two-peer-lesson
shape, applied for consistency rather than invented to close this gap. C24
is retired, folded into a widened C23 covering all six Holy Week days.

Important: Passion Tuesday was shipping Holy Tuesday's Mass, a defect the
previous round's own footnote had found and left unrecorded. Fixed at the
source -- colitur_keys now excludes lectio's own (wrong) ini section for
this one weekday rather than translating it; a new passion_tuesday_entry
hand-authors the real Missal citation (Dan 14:27, 28-42 / John 7:1-13, both
scans). New entry C26 records the resulting divergence, 43 of 46 years,
traced (not merely counted) to three years where a competing I-class feast
impedes the day entirely.

Important: the allow-list header was stale one level up, still naming and
restating the diagnosis of an id (C21) retired in the previous round.
Rewritten in full rather than layered with another correction.

Minors: all three Lent Ember values now pinned (only Wednesday was before);
C22's citation corrected to attribute the date-anchor text and the rank
text to their own separate sources; assert_reachable's own comment no
longer overclaims what it can catch; C25's falsified reasoning replaced
with the directly observed fact (a first replacement derivation was itself
found wrong on a second reading and is recorded as rejected, not silently
discarded); hand-authored citations standardised to English book names
with a colon, matching this file's own dominant convention, with one
stated exception where a value must stay byte-identical to lectio's own
data rather than be reformatted.

dune test: 358/358. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359/359.
</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>test(differential): compare reading citations, 16 801 days</title>
<updated>2026-08-15T00:58:00Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-15T00:58:00Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=459d2c74711e6a152fb338f88d2327f12180b61f'/>
<id>urn:sha1:459d2c74711e6a152fb338f88d2327f12180b61f</id>
<content type='text'>
Layer 3 is NOT blind to the ferial resumption rule, unusually for this
project: lectio implements the same rubric independently, so the differential
checks colitur's rule against a second implementation rather than against
silence.

It IS blind to the Commons -- lectio has no such concept -- so chain step 4
rests on layer 4 alone.

Divergence triage, 1 532 of 16 801 days differ (15 269 match exactly),
0 unexplained:

- A genuine colitur bug found and fixed: data/ef/lectionary.sexp carried
  lectio's own ini section names verbatim, never translated into the slugs
  Temporal_ef actually computes for the identical office. Data the bootstrap
  already held (Passiontide both weeks, the Pentecost Ember days, Holy Name
  Sunday) was unreachable by chain step 2, silently falling through to a
  wrong step-3 answer -- invisible until citation content became comparable.
  tools/bootstrap_lectionary.ml gained colitur_keys (rename/widen), a
  hand-authored ef-nativity-vigil entry cross-sourced from lectio's own
  sanctoral calendar and corroborated by colitur's own (overlay-suppressed)
  sanctoral bootstrap of the same source, and a derived ef-holy-name entry
  (RG 17(a)'s single Mass heading covers both the Sunday and 2-January
  shapes). One guess (giving the fixed Nativity-Octave days Holy Name
  Sunday's own citation uniformly) was tried and reverted once measured
  against the fixture -- Missal-verified to be right only for the genuine
  "Sunday within the Octave" case, wrong whenever the true preceding Sunday
  is Christmas Day or Advent IV instead.

- 10 existing/widened Layer C entries (C1/C6/C8/C14/C15/C16/C17/C18 --
  C6 and C17 narrowed with the removed population accounted for, not
  silently re-absorbed) plus two new ones: C19 (the already-adjudicated
  Time-after-Epiphany week-numbering offset, now visible in citation
  content), C20 (lectio computes no reading at all for the seven
  readingless saints Task 6 gave a Common or proper -- colitur is more
  complete, not wrong).

- One entry, C21, is a genuine colitur LOGIC limitation found but not
  fixed: Lectionary_ef.readings' step 3 is a single hop to the preceding
  Sunday, insufficient for a run of colitur-only fixed Christmastide slugs
  whose own preceding Sunday is itself another entry-less fixed slug.
  Recorded verdict open (data/ef/expected-divergences-missalemeum.sexp's
  own established precedent for this shape), not left silently failing --
  fully diagnosed in task-8-report.md, recommended as a dedicated
  follow-up task rather than a hasty fix to a shared, multi-round-reviewed
  kernel-adjacent function.
</content>
</entry>
<entry>
<title>fix(ef): three colour corrections that contradicted the Missal by name</title>
<updated>2026-08-14T10:40:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-14T10:40:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=112781d6e3b92310d9d657c53a7e0fc789aefdfb'/>
<id>urn:sha1:112781d6e3b92310d9d657c53a7e0fc789aefdfb</id>
<content type='text'>
The sanctoral audit set chair-of-st-peter (22 Feb), conversion-of-st-paul
(25 Jan) and peter (25 Jan, commemoration) to Red on RG 124(b). All three
are reverted to White.

RG 120(f), fifteen lines above RG 124(b) in the same column of the same
page, names two of them in its enumeration of white: "Cathedrae S. Petri
(22 februarii); Conversionis S. Pauli (25 ianuarii)". RG 124(b)'s own
qualifier "in eorum die natalicio" independently excludes them, and RG
475(e) confirms it a third time by naming the Chair separately from
"natalician feasts of Apostles". lectio and missalemeum both said white
because both were right. peter rested on "match the host day's Red",
whose host is white by that same clause, so the precedent inverts.

Root cause: the audit's page-image method, its real advance, was applied
to the calendarium and not to the rubric. RG 124 was read from the OCR
text layer, where the two-column interleave shreds RG 120(f) across rows
belonging to RG 115 and hyphen-splits Cathedrae, so a text-layer grep
for it returns nothing while RG 124's enumeration survives cleanly. That
read finds 124 and structurally cannot find 120(f).

Two sentinels had been reporting this correctly and were overridden. The
golden pin at 1902-02-22 asserted colour=white, was changed to red, and
had its comment rewritten to guard against "a regression back to the old
one" -- the only pin asserting a colour for any of the 21 slugs. And C18
and M21 both listed the two slugs under an RG 124(b) citation where both
oracles were right. Pin restored; slugs dropped; C18 re-derived 526-&gt;450
from the observed-day counts, M21 20-&gt;18, M15 17-&gt;18.

The audit's own discriminator would have isolated these. Its stated
corroboration was that lectio's name.pl contradicts lectio's colour; run
as a gate across all 21 that splits 17 genuine defects from 4 needing
adjudication, and three of those four are these. It was quoted as
illustration rather than used as a gate.

18 of 21 corrections stand, and the twelve whites are recited to RG
120(e) "Sanctorum non Martyrum" rather than to RG 117's negative
residual. Also records Anastasia's deliberate non-fix in the tracked
tree beside barbara, where the next auditor will be standing.
</content>
</entry>
<entry>
<title>data(ef): sanctoral audit — one genuine gap, 21 wrong colours (RG124)</title>
<updated>2026-08-14T10:00:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-14T10:00:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/colitur.git/commit/?id=bf326ab963f46c42dc1a3b5141f2022bed81756d'/>
<id>urn:sha1:bf326ab963f46c42dc1a3b5141f2022bed81756d</id>
<content type='text'>
Full re-extraction of the primary CALENDARIUM (both photographic scans,
missale-romanum-1962.pdf and Missale Romanum 1962_text.pdf, rendered page
images read directly rather than trusting either PDF's own OCR text
layer) against all 327 base sanctoral entries plus the two prior overlay
Adds. Both scans agree throughout; no OCR ambiguity required adjudication
this round.

Add `barbara` (4 December): both scans carry a Commemoratio nested under
Peter Chrysologus's own entry, absent from data/ef/sanctoral.sexp AND
from lectio's own tridentine-calendar.ini (confirmed directly) — the same
upstream-gap shape as the five entries the ef-rebootstrap task already
added (agnes-secundo/boniface-martyr/eusebius-confessor/evaristus/
theodore).

Correct 21 sanctoral colours against RG 124 ("De coloribus paramentorum"),
scan-verified word for word: 124(b) red for an Apostle/Evangelist's own
feast day except John's (27 December, already correct); 124(e) red for a
Martyr's own martyrdom; RG 117's five-colour residual otherwise white.
Every one of the 21 is a confirmed lectio/missalemeum bootstrap defect —
checked individually against lectio's own ini, several of whose Polish
name fields already contradict that same record's own colour tag (e.g.
`martha`: "Dziewicy", Virgin, no "Męczennicy", yet `colour = red`) — the
identical root cause and mechanism the `eusebius-confessor` fix already
established. Colour is confirmed read nowhere in Precedence_ef's
resolution logic (grep), so these are output-correctness fixes with zero
observed-office blast radius; three (apollinaris/josaphat/chair-of-st-
peter) additionally disagree with missalemeum's own oracle, not only with
lectio, so they are adjudicated from RG 124's text directly rather than
by which engine happens to agree.

Both corrections applied via data/ef/adjustments.sexp's established
Overlay mechanism (data/ef/sanctoral.sexp stays generated, untouched).

Pinned: test_rite_ef.ml (two new tests, verified to fail against the
pre-fix data); test_differential.ml's new C18 predicate (526 rows,
2005-2050) and test_oracle.ml's new M21/M22 predicates (20 + 2 rows,
2026-2027), each with data/ef/expected-divergences{,-missalemeum}.sexp
entries citing RG124 or the matching upstream-gap precedent;
test_golden.ml's 1902-02-22 pin corrected (chair-of-st-peter was white in
the stale pin, RG124(b) makes it red). All 329 tests green, including the
full 1583-9999 exhaustive sweep.

Full method, per-entry adjudication table and corrected bucket counts:
docs/research/rules-register.md (gitignored) and
.superpowers/sdd/2026-08-12-colitur-rg16a/sanctoral-audit-report.md
(gitignored).
</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>
</feed>
