mirror of
https://git.pumpin.online/funkpower/typikon.git
synced 2026-10-22 18:57:13 +00:00
stop lending Ruthenian law to churches it was never written for
Three Eastern Catholic jurisdictions borrowed the Ruthenian ruleset, so a Melkite, a Romanian Greek Catholic and a Ukrainian Greek Catholic were each told that fourteen days a year bound them under the particular law of the Metropolia of Pittsburgh. That is the exact error the level/obligation split exists to prevent, committed by the library itself. Every Eastern Catholic church legislates its own fasting discipline. Those three are now shown at the Typikon with nothing reported as binding, which is the honest position: the calendar is known, the law is not. Their entries say so and a test holds it, asserting both that no jurisdiction but ruthenian carries that ruleset and that the three claim no binding days. The README gains a section on these churches, since supporting them was never meant to be something a reader had to infer from the jurisdiction list.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
# typikon
|
||||
|
||||
The Orthodox liturgical day: feasts, seasons and the fast, computed rather
|
||||
than fetched.
|
||||
than fetched. The Byzantine Catholic churches are here too, on their own
|
||||
calendars and, where the law has been sourced, under their own particular law.
|
||||
|
||||
Everything derives from the paschalion and the fixed calendar, so it needs no
|
||||
network, cannot go stale, and answers for any year you ask about. No API key,
|
||||
@@ -149,6 +150,30 @@ Bulgaria, Cyprus, Albania, Ukraine), the Finnish Orthodox Church, alone among
|
||||
the Orthodox in keeping the Gregorian Paschalion, and, as an add-on, four
|
||||
Byzantine Catholic churches.
|
||||
|
||||
## The Byzantine Catholic churches
|
||||
|
||||
Four are modelled, and they are not a footnote on the Orthodox ones: they keep
|
||||
different paschalions, and their fasting is a different kind of thing.
|
||||
|
||||
| | calendar | fasting |
|
||||
|---|---|---|
|
||||
| `ruthenian` | Gregorian throughout | Ruthenian particular law, sourced |
|
||||
| `ugcc` | Revised Julian feasts, Julian Pascha since 2023 | its own; not modelled |
|
||||
| `melkite` | Gregorian; Middle Eastern parishes often keep Julian Pascha | its own; not modelled |
|
||||
| `romanian-catholic` | Gregorian throughout | its own; not modelled |
|
||||
|
||||
**A church's law is never borrowed from another.** Ruthenian particular law is
|
||||
sourced from the Metropolia of Pittsburgh and is reported for that church only.
|
||||
The rest are shown at the Typikon's discipline with **nothing reported as
|
||||
binding**, because their own law has not been sourced and inventing one would
|
||||
tell a Melkite that fourteen days a year oblige him under a law that was never
|
||||
his. When a church's law is added, its entry will say so and its obligations
|
||||
will appear. A test holds that line.
|
||||
|
||||
See [the law and the fast](#the-law-and-the-fast-are-not-the-same-question)
|
||||
for what `--typikon` does with this, which is the flag most Byzantine Catholics
|
||||
will want.
|
||||
|
||||
## The fast
|
||||
|
||||
Six levels, ordered from strictest to laxest. They are the Typikon's own
|
||||
|
||||
@@ -201,11 +201,12 @@ pub const JURISDICTIONS: &[Jurisdiction] = &[
|
||||
// eastern catholic
|
||||
Jurisdiction { key: "ruthenian", name: "Byzantine Catholic Metropolia of Pittsburgh", paschalion: GregP, menologion: RevJul, rule: Ruth, discipline: None, tradition: Sl, menaia: RUTHENIAN_MENAIA,
|
||||
note: "Gregorian throughout. Fasting is reported under Ruthenian particular law, which binds far less than the Typikon prescribes." },
|
||||
Jurisdiction { key: "ugcc", name: "Ukrainian Greek Catholic Church", paschalion: JulP, menologion: RevJul, rule: Ruth, discipline: None, tradition: Sl, menaia: RUTHENIAN_MENAIA,
|
||||
note: "Moved the fixed feasts to the Revised Julian calendar on 1 September 2023, keeping the Julian Paschalion. Eparchies outside Ukraine vary; several keep the Gregorian Paschalion." },
|
||||
Jurisdiction { key: "melkite", name: "Melkite Greek Catholic Church", paschalion: GregP, menologion: RevJul, rule: Ruth, discipline: None, tradition: Gk, menaia: NO_MENAIA,
|
||||
note: "Practice is not uniform: parishes in the Middle East commonly keep the Julian Paschalion for the sake of the local Orthodox." },
|
||||
Jurisdiction { key: "romanian-catholic", name: "Romanian Greek Catholic Church", paschalion: GregP, menologion: RevJul, rule: Ruth, discipline: None, tradition: Gk, menaia: NO_MENAIA, note: "" },
|
||||
Jurisdiction { key: "ugcc", name: "Ukrainian Greek Catholic Church", paschalion: JulP, menologion: RevJul, rule: Orth, discipline: None, tradition: Sl, menaia: RUTHENIAN_MENAIA,
|
||||
note: "Moved the fixed feasts to the Revised Julian calendar on 1 September 2023, keeping the Julian Paschalion. Eparchies outside Ukraine vary; several keep the Gregorian Paschalion. Its particular law on fasting is its own and is not modelled here, so the days are shown at the Typikon and nothing is reported as binding." },
|
||||
Jurisdiction { key: "melkite", name: "Melkite Greek Catholic Church", paschalion: GregP, menologion: RevJul, rule: Orth, discipline: None, tradition: Gk, menaia: NO_MENAIA,
|
||||
note: "Practice is not uniform: parishes in the Middle East commonly keep the Julian Paschalion for the sake of the local Orthodox. Its particular law on fasting is its own and is not modelled here, so the days are shown at the Typikon and nothing is reported as binding." },
|
||||
Jurisdiction { key: "romanian-catholic", name: "Romanian Greek Catholic Church", paschalion: GregP, menologion: RevJul, rule: Orth, discipline: None, tradition: Gk, menaia: NO_MENAIA,
|
||||
note: "Its particular law on fasting is its own and is not modelled here, so the days are shown at the Typikon and nothing is reported as binding." },
|
||||
];
|
||||
|
||||
/// A jurisdiction key, a calendar name, or `None` for the default.
|
||||
|
||||
@@ -27,9 +27,15 @@
|
||||
//! only Great and Holy Wednesday turns on the reading. If your eparchy reads it
|
||||
//! the other way, that Wednesday binds too.
|
||||
//!
|
||||
//! Source: the Byzantine Catholic Metropolitan Church of Pittsburgh. Other
|
||||
//! Eastern Catholic churches legislate their own; where this library maps them
|
||||
//! onto this ruleset it is an approximation, and the jurisdiction entry says so.
|
||||
//! Source: the Byzantine Catholic Metropolitan Church of Pittsburgh, and that
|
||||
//! church only.
|
||||
//!
|
||||
//! Every Eastern Catholic church legislates its own fasting discipline, and
|
||||
//! this ruleset is **not** lent to the others. Borrowing it told a Melkite
|
||||
//! that fourteen days a year bound him under a law that was never his, which
|
||||
//! is precisely the error the level/obligation split exists to prevent. A
|
||||
//! church whose particular law has not been sourced is shown at the Typikon
|
||||
//! with no obligation claimed, and its entry says so.
|
||||
|
||||
use super::{Context, Rule, Vocabulary};
|
||||
use crate::calendars::{Date, Weekday};
|
||||
|
||||
@@ -625,3 +625,38 @@ fn the_config_round_trips_all_three_axes() {
|
||||
}
|
||||
let _ = std::fs::remove_dir_all(&dir);
|
||||
}
|
||||
|
||||
// ─────────────── no church is told another church's law binds ─────────────
|
||||
|
||||
#[test]
|
||||
fn only_the_church_whose_law_was_sourced_reports_an_obligation() {
|
||||
use typikon::jurisdictions::{RuleKind, JURISDICTIONS};
|
||||
// Ruthenian particular law is sourced from the Metropolia of Pittsburgh.
|
||||
// No other jurisdiction may borrow it: telling a Melkite that fourteen
|
||||
// days a year bind him under a law that was never his is the error the
|
||||
// level/obligation split exists to prevent.
|
||||
for jur in JURISDICTIONS.iter() {
|
||||
if jur.rule == RuleKind::Ruthenian {
|
||||
assert_eq!(jur.key, "ruthenian", "{} borrows another church's law", jur.key);
|
||||
}
|
||||
}
|
||||
|
||||
for key in ["melkite", "romanian-catholic", "ugcc"] {
|
||||
let jur = resolve(Some(key)).unwrap();
|
||||
let binding = week(d("2026-01-01"), 365, jur)
|
||||
.into_iter()
|
||||
.filter(|x| x.is_obligatory())
|
||||
.count();
|
||||
assert_eq!(binding, 0, "{key} claims {binding} binding days it has no source for");
|
||||
// And the entry has to say why nothing binds.
|
||||
assert!(jur.note.contains("not modelled"), "{key}: the note must say so");
|
||||
}
|
||||
|
||||
// The one church whose law is sourced still reports it.
|
||||
let ruthenian = resolve(Some("ruthenian")).unwrap();
|
||||
let binding = week(d("2026-01-01"), 365, ruthenian)
|
||||
.into_iter()
|
||||
.filter(|x| x.is_obligatory())
|
||||
.count();
|
||||
assert_eq!(binding, 14);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user