<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/calendar/precedence.go, branch main</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=main</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-28T12:35:24Z</updated>
<entry>
<title>fix(calendar): OF precedence/transfer + readings resolution; EF Pentecost octave</title>
<updated>2026-07-28T12:35:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T12:35:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a80e61963756a28a3963a0442a8ccc1572518373'/>
<id>urn:sha1:a80e61963756a28a3963a0442a8ccc1572518373</id>
<content type='text'>
Fixes found by validating the offline engine per-day vs the LiturgicalCalendar
API (OF) and missalemeum (EF) across 2005-2050. OF calendar is now 0 real
errors in the forward window (season/cycle already perfect).

OF precedence/transfer (calendar):
- Ash Wednesday and Holy Week Mon-Wed are band-2 privileged, so a coinciding
  feast (Chair of St Peter on Ash Wednesday) is suppressed, not observed.
- Solemnities transfer out of Holy Week / the Easter octave: the Annunciation
  defers to the Monday after the 2nd Sunday of Easter; St Joseph is anticipated
  to the Saturday before Palm Sunday; the Nativity of St John the Baptist moves
  to Jun 23 when a Lord's solemnity (Sacred Heart / Corpus Christi) falls Jun 24.
- Within a precedence band, a solemnity of the Lord/BVM outranks a saint's
  (dignity tiebreak) rather than losing an alphabetical slug tie.
- Perpetua &amp; Felicity corrected optional -&gt; obligatory memorial.

OF readings resolution (bible.OFRef + lectionary data):
- Verse-accurate Hebrew-&gt;Vulgate psalm mapping incl. the split psalms
  (9/10, 114/115, 116, 147); "+" verse joins and abbreviated ranges ("127-28")
  normalized; single-chapter books (2/3 John, Jude) get chapter 1.
- Cleaned harvest artifacts from of-lectionary.ini (descriptive-suffix gospels,
  "or Year A" alternates, "*"/"[Vulg.]"/bracket markers, slash abbreviations);
  Joel/Malachi/Zechariah/Esther book-versification citations fixed to Vulgate.
- Split a merged Ps 15:10/11 row in vul.tsv. Result: 0 unresolvable OF readings
  over 2557 rendered days (cycles A/B/C, varied Easters).

EF: the Octave of Pentecost (Whit Monday-Saturday) is red, not white.
</content>
</entry>
<entry>
<title>feat: complete OF+EF calendar coverage (movable feasts, vigils, ember days, transfers)</title>
<updated>2026-07-28T06:49:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T06:49:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=70b805018f0ae0d8424c3c7de8f1169476385a35'/>
<id>urn:sha1:70b805018f0ae0d8424c3c7de8f1169476385a35</id>
<content type='text'>
Ordinary Form:
- Add the movable Marian memorials that have no fixed date: Mary, Mother of the
  Church (Monday after Pentecost) and the Immaculate Heart (Saturday after the
  Sacred Heart), computed in computeOF.
- General Norms 60: two coinciding obligatory memorials both become optional and
  the ferial is observed -- except Mary, Mother of the Church, which keeps
  precedence per its 2018 decree.

Extraordinary Form:
- Capture fixed-date vigils in the sanctoral harvest (Christmas, the Nativity of
  St John the Baptist, Sts Peter &amp; Paul, St Lawrence, the Assumption, All Saints,
  the Immaculate Conception) -- previously filtered out.
- temporalEF: the movable vigils of the Ascension (I class eve) and Pentecost
  (Whitsun Eve), and the September/Advent Ember days (II class violet ferias).
- transferIfImpededEF: the Annunciation transfers past Holy Week/the Easter
  octave to the Monday after Low Sunday; All Souls moves to Nov 3 when Nov 2 is a
  Sunday.
- genlect harvests proper Masses for the new Ember/vigil days.

Adds TestEFCoverage + TestOFMovableMemorials. Bumps to 0.39.0.

Verified per-day: OF 0 real errors vs calapi (2026-2028, 100% correct-observed);
EF 0 real errors vs missalemeum (2025-2027), residual = deep-tail vigil-occurrence
and St Joseph Passiontide-transfer edges (~1-2 days/yr, documented).
</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>
<entry>
<title>fix(calendar): Christmas solemnity in temporal; feasts of the Lord band 5; Sunday band before solemnity-rank fallback</title>
<updated>2026-07-27T10:24:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T10:24:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a8232892b0ec94f8d077e3730143a09efcac452d'/>
<id>urn:sha1:a8232892b0ec94f8d077e3730143a09efcac452d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(calendar): Compute — build celebrations, apply precedence + transfer, cycles</title>
<updated>2026-07-27T10:21:15Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T10:21:15Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=0b68ec046c26292e368494e158cc36b342901a80'/>
<id>urn:sha1:0b68ec046c26292e368494e158cc36b342901a80</id>
<content type='text'>
Also: deterministic pick tiebreak by slug.
</content>
</entry>
<entry>
<title>feat(calendar): Universal Norms precedence bands + pick</title>
<updated>2026-07-27T10:19:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T10:19:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=4c08e94dbcce8dc7757afba3001abe509bd2b6a8'/>
<id>urn:sha1:4c08e94dbcce8dc7757afba3001abe509bd2b6a8</id>
<content type='text'>
</content>
</entry>
</feed>
