<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/scripts/gen-sanctoral.go, branch v0.45.0</title>
<subtitle>offline Catholic daily readings and liturgical calendar in Go, with CLI, TUI and web clients</subtitle>
<id>https://git.labunix.xyz/lectio.git/atom?h=v0.45.0</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=v0.45.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-28T06:32:35Z</updated>
<entry>
<title>fix(of): recover season-commemorated saints + correct Irenaeus rank</title>
<updated>2026-07-28T06:32:35Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T06:32:35Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=d3b7f41c7a823bda6b7bafae3a156348c4ce687f'/>
<id>urn:sha1:d3b7f41c7a823bda6b7bafae3a156348c4ce687f</id>
<content type='text'>
Audit of the OF sanctoral vs calapi's full celebration list (2026-2028) found
saints that calapi only ever shows as 'commemoration' in a privileged season
(Lent, late Advent, the Christmas octave) were dropped by the generator, and
'first-year-wins' froze a stale rank.

- gen-sanctoral.go: map calapi 'commemoration' -&gt; optional memorial; keep the
  HIGHEST rank per saint across an expanded 2025-2029 reference span (so a saint
  is seen at its true rank on an ordinary weekday, e.g. Polycarp as a memorial
  when Feb 23 falls in Ordinary Time).
- Recovers 15 saints: Polycarp, Perpetua &amp; Felicity, John of God, Frances of
  Rome, Patrick, Cyril of Jerusalem, Turibius, Isidore, Vincent Ferrer, Peter
  Canisius, John of Kanty, Thomas Becket, Sylvester I, and others (197-&gt;212).
- Corrects St Irenaeus (June 28) optional -&gt; obligatory memorial (2022 change).

Verified vs calapi per-day 2026-2028: remaining diffs are only the 3 skipped
movable memorials and name-phrasing of temporal days.
</content>
</entry>
<entry>
<title>fix(of): sanctoral generation — exclude temporal &amp; movable, keep transferred-fixed</title>
<updated>2026-07-27T23:05:56Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T23:05:56Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=b12d59b094246163a75f4a4f5ce7f9fb487614bf'/>
<id>urn:sha1:b12d59b094246163a75f4a4f5ce7f9fb487614bf</id>
<content type='text'>
- Skip ALL dates the temporal engine owns (Sundays + its solemnities/feasts), so
  Christ the King / Trinity no longer leak into the sanctoral as duplicate
  fixed-date entries; saints are captured on their weekday occurrences.
- Explicit skip-list for genuinely movable memorials (Mary Mother of the Church,
  Immaculate Heart, BVM-on-Saturday) that a fixed-date calendar cannot represent
  -- a documented gap needing temporal-engine support.
- 'first year wins' keeps a transferred-but-fixed feast (Annunciation Mar 25) on
  its proper date. Lord-feast class inference fixed earlier.

Calendar rank vs calapi: 2026 1/86, 2027 2/86, 2028 2/92 mismatches (~98-99%);
residual = the skipped movable memorials.
</content>
</entry>
<entry>
<title>fix(of): correct memorial readings (ferial fallback) + Lord-feast class</title>
<updated>2026-07-27T22:57:07Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T22:57:07Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=6b7e8dbd26cc34a19a858794a02f1c0ba577a58b'/>
<id>urn:sha1:6b7e8dbd26cc34a19a858794a02f1c0ba577a58b</id>
<content type='text'>
Validation vs USCCB (Catholic Readings API) caught two bugs:
- Obligatory memorials were keyed by their own slug, freezing ONE year's ferial
  (a memorial's fixed date lands in a different Ordinary-Time week each year), so
  most weekday memorials showed the wrong week's reading. Now memorials are
  skipped in the harvest and fall back to the day's ferial slug at runtime -&gt; the
  correct week's reading. (Proper-reading memorials show the permitted ferial;
  their propers are a later refinement.)
- gen-sanctoral classOf missed feasts of the Lord whose title says 'Holy Cross'
  (not 'of the Cross') etc., so the Exaltation of the Cross (and Transfiguration,
  Presentation) did not displace an Ordinary Sunday. Fixed the Lord/BVM class
  inference; the Cross now correctly displaces the Sunday and shows its proper.

USCCB agreement on the sampled 2025 window rose to ~92%; residual diffs are
proper-reading memorials (Guardian Angels/Sorrows gospels), citation-granularity
(same reading, different verse range), and week numbering around feast-displaced
Sundays -- documented as known refinements.
</content>
</entry>
<entry>
<title>feat(of): full sanctoral calendar + weekday/memorial readings</title>
<updated>2026-07-27T22:47:16Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T22:47:16Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=e829b48b08c683d9dcef5e4b9502c1c42bc895f1'/>
<id>urn:sha1:e829b48b08c683d9dcef5e4b9502c1c42bc895f1</id>
<content type='text'>
Populate the OF General Roman Calendar sanctoral and extend the OF readings to
weekdays and sanctoral days.

Sanctoral calendar (roman-calendar.ini: 29 -&gt; 202 celebrations):
- scripts/gen-sanctoral.go generates it from calapi.inadiutorium.cz (authoritative
  General Roman Calendar) -- English name/rank/colour from general-en, Latin from
  general-la, Polish from niedziela DayInfo (obligatory celebrations). Fixed dates
  the temporal engine already computes are excluded. VALIDATED: my engine's
  observed rank agrees with calapi on all 86 obligatory sanctoral days of 2026
  (0 mismatches).

Precedence fix (precedence.go): an optional memorial no longer displaces the
weekday as the DEFAULT observed celebration (it sorts below the ferial, shown as
an option) -- matching the General Roman Calendar / calapi.

Readings (of-lectionary.ini: 254 -&gt; 1018 entries) via genlect-of.go:
- Weekday (ferial) 2-year cycle I/II, keyed &lt;ferial-slug&gt;-&lt;WeekdayCycle&gt;, harvested
  from niedziela over 2020-2025 (multiple years per cycle; retry-on-failure so a
  glitch year never poisons a key; only TRUE ferials + optional-memorial days,
  where niedziela shows the ferial).
- Obligatory memorials keyed by their OWN slug (niedziela shows their proper, e.g.
  Barnabas -&gt; Acts 11, or the ferial for memorials without a proper) -- never
  miskeyed to a ferial position.
- caldata.Readings: OF resolves slug+SundayCycle | slug+WeekdayCycle, else a
  memorial falls back to the day's ferial readings.
- Source-glitch normalisation (1J-&gt;1 J, PnP-&gt;Pnp).

books.ini: canonical names "Song of Solomon" and "The Acts" added as their own
[en] forms (ToEnglishRef emits the canonical; it must resolve). Fixes ~32
cross-chapter Song-of-Songs/Acts citations.

Coverage: 359/365 days of 2026 render (98.4%); 6 residual ferial positions never a
true-ferial in 2020-2025. EF sanctoral and OF psalm renumbering still pending.
</content>
</entry>
</feed>
