Skip to content

Retag 86 commemorations oca.org keeps; rank the calendar grid's saints - #234

Merged
brianglass merged 2 commits into
mainfrom
oca-retag-greek
Sep 14, 2026
Merged

brianglass merged 2 commits into
mainfrom
oca-retag-greek

Conversation

@brianglass

@brianglass brianglass commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Summary

Retag. tools/oca/oca_vs_app.py is new. It checks the reverse of #225: which of oca.org's 2,968 commemorations for 2026 the Slavic page lacks. 93 were found only on the Greek page. Reading them one at a time:

  • 90 are the same saints, hidden by transliteration (Eulogios/Eulogius, Vassianos/Bassian). Their 86 rows move from greek to common (greek goes from 630 to 544).
  • 3 are held back, because the row names someone oca.org doesn't keep that day:
    • Apr 9: Olympias
    • Apr 20: Patriarch Anastasios
    • May 19: Kyriake

oca.org entries matched on the Slavic page go from 822 to 914.

Ordering fix. Day.minimal_saints (the calendar grid, summary_title, RSS and iCal) was the first three names of Day.saints. That list puts every day_native row first, so the retag let bare harvested names displace storied saints on 50 Slavic days, e.g. "Martyr Mertios" over Benedict Biscop and "Marinos the Martyr" over St Patrick. minimal_saints now keeps three by _display_priority, stable within each tier:

  1. ranked (rank > 0 or high_rank)
  2. saints with a story
  3. everything else

Across 2026 a retagged row still holds a slot on 34 Slavic and 21 Greek days, and no ranked or storied saint is left out on any of them.

Sixth Ecumenical Council. The traditions keep this council on different days: Slavic on Jan 23 (oca.org), Greek on Sep 14 (antiochian.org). The app had only the Greek Sep 14 row, so Slavic readers never saw it. A new slavic row on Jan 23 (no story) links to the same Saint record, so the saint page lists both dates. The other councils already match oca.org.

Alexa. The skill will now speak the 86 retagged names in both traditions: _speech_worthy only mutes story-less rows tagged greek. That's roughly one extra name on each affected day, the same trade #225 made.

Remaining gap

The screen also found about 1,485 oca.org commemorations with no counterpart in the app. 233 of them are icons. They're listed in data/oca_raw/oca_vs_app-2026.tsv and are not addressed here.

Test plan

  • Full suite: 219 tests, OK (1 skipped)
  • New tests: storied saints win the grid slots (Jan 12, Mar 17), _display_priority tiers, and the Sixth Council appears on each tradition's own date only
  • january.json regenerated; the diff is the added saints plus re-ranked summaries
  • oca_vs_app.py re-run: the Greek-only bucket is down to the 3 held

🤖 Generated with Claude Code

https://claude.ai/code/session_019nQRjJpPqW89xqzAf1vsEX

brianglass and others added 2 commits September 14, 2026 11:30
A new reverse screen, tools/oca/oca_vs_app.py, asks which of oca.org's 2,968
commemorations for 2026 the Slavic page lacks. #225 asked the opposite
question and never looked this way. Of the 93 entries it found only on the
Greek page, 90 were read individually and are the same saints under Greek
transliterations (Eulogios/Eulogius, Neophytos/Neophytus,
Vassianos/Bassian, Kalliniki/Callinica). The 86 rows behind them move from
greek to common; greek goes from 630 to 544. oca.org entries matched on
the Slavic page go from 822 to 914.

Three are held back because the row names someone oca.org does not keep
that day:

  04-09  Raphael, Nicholas, Irene, & Olympias -- oca.org has no Olympias
  04-20  Gregory & Anastasios, Patriarchs of Antioch -- oca.org's Anastasius
         that day is the Sinaite, not the patriarch
  05-19  Theotima & Kyriake -- oca.org has no Kyriake

The retag showed up a display problem. Day.minimal_saints, the three names
on the calendar grid and in summary_title (and so in RSS and iCal), was a
plain truncation of Day.saints. That list puts every day_native row before
every additive one, and most storied saints are additive. So on 50 Slavic
days a bare harvested name took a storied saint's slot: "Martyr Mertios"
over Benedict Biscop on Jan 12, "Marinos the Martyr" over St Patrick on
Mar 17. minimal_saints now keeps three by _display_priority, stable within
each tier:

  1. ranked (rank > 0 or high_rank)
  2. with a story
  3. the rest

Across 2026 a retagged row now holds a slot on 34 Slavic and 21 Greek
days, and on none of them is a ranked or storied saint left out.

The Alexa skill will now speak the 86 names in both traditions, because
_speech_worthy only mutes story-less rows tagged greek. That is about one
extra name on each affected day, the same trade #225's retags made.

calendarium/tests/data/january.json is regenerated: nine January days gain
saints, and several summary_titles change under the new ranking.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nQRjJpPqW89xqzAf1vsEX
The traditions keep this council on different days. oca.org lists "the
Holy Fathers of the Sixth Ecumenical Council" on Jan 23 and has no
council on Sep 14. antiochian.org puts it on Sep 14 in both harvested
years. The app had only the Greek Sep 14 row, so Slavic readers never
saw it. Retagging that row common would have put it on the wrong day for
them. This is the Catherine pattern again: Nov 24 for Slavic readers,
Nov 25 for Greek.

This adds a slavic row on Jan 23 with oca.org's wording and no story. It
links to the same Saint (pk 6846) as the Greek row, so the saint page
lists both occasions. The other councils (First, Second, Third, Fifth,
Seventh, and the Sunday of the first six) were checked and already
match oca.org.

A test pins all four combinations of tradition and date.
calendarium/tests/data/january.json is regenerated for the extra Jan 23
name.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nQRjJpPqW89xqzAf1vsEX
@brianglass
brianglass merged commit ee9deab into main Sep 14, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant