Compare commits

...

4 Commits

Author SHA1 Message Date
will a7901b3c61 Implement the resumed-post-Epiphany-Sunday temporal-id algorithm
Deploy / deploy (push) Successful in 1m6s
Post-Pentecost overflow years (early Easter, fewer than 6 Sundays after
Epiphany fit before Septuagesima) previously clamped every excess Sunday
to post-pentecost-24 instead of resuming the skipped post-Epiphany
Sundays' own content, per the traditional rubric. Ported directly from
the reference engine's own DivinumOfficium/Date.pm getweek().

Also adds the Epiphany VI Saturday-before-Septuagesima commemoration
(only when Epiphany V was the last Sunday to actually occur), and fixes
day-label.ts's on-screen display to track the same resumed-Sunday
content instead of a raw elapsed-week count — including a correction so
the fixed final Sunday of the year always reads "23rd Sunday after
Trinity", not a per-year-varying number.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 20:07:04 -04:00
will f811fcc8f6 Correct TODO.md: bible-plan content has no reference breviary to verify against
The user's own reading plan isn't sourced from a historical breviary, so
"not yet spot-verified against a reference" wasn't a real gap for this
content, unlike sanctoral/temporal data. Also confirms Jn 17 on Sunday
after Ascension as a deliberate, remembered exception.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 19:24:24 -04:00
will d8d18fe31a Bulk-convert the bible-plan TSV into Matins reading data
Converts all ~369 non-blank rows of the user's own scripture-reading
plan TSV into data/hours/bible-plan/*.yml, mapping each row's day label
to this app's (temporalId, weekday) or Dec25-Jan13 calendarDate scheme.
Fixes a few source TSV typos in the process (chapter-range and
trailing-colon citations); status stays explicitly `missing` pending the
separate Vulgate/Douay-Rheims import.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 19:20:18 -04:00
will 2cc856ed92 Rework Matins readings into a pooled, distributed model
Replaces the fixed Nocturn 1 = plan / Nocturns 2-3 = patristic slotting
with one ordered pool (scripture plan, winner/commemorations/temporal id,
active octaves) sliced evenly across however many nocturns the day has.
Also makes the bible-plan store dual-keyed so the Dec 25 - Jan 13 stretch
can key off a fixed calendar date alongside the usual (temporalId,
weekday) key. Mechanism only — content authoring is still 2 proof dates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 07:06:23 -04:00
374 changed files with 4814 additions and 104 deletions
+196 -12
View File
@@ -4,6 +4,60 @@ A real backlog, not scattered code comments. Update this file when something
here gets done, and add to it when new gaps turn up — don't let it drift back here gets done, and add to it when new gaps turn up — don't let it drift back
into "only findable by reading commit messages." into "only findable by reading commit messages."
## Priority
Work in this file follows one methodology, repeated every time a new hour or content type
gets built: **mechanism first, then a minimal live-verified proof (1-2 clean dates/entries
authored fully, end-to-end) to confirm the mechanism is right, then bulk content
authoring/import against the whole calendar once it's trusted.** A section marked "mechanism
built" but not yet "full sweep" or "all N done" is mid-pipeline, not stalled — its next work
is more content in the same already-proven shape, not a design change. This file's dated
build log (below "Open work, in priority order") is the record of that pipeline running
across every hour and content type in this app.
## Open work, in priority order
1. **Mechanism gaps** — a real design/code piece not built yet, blocking any content pass on
it from starting:
- Pre-1955-but-post-1617 saints' differently-structured Matins readings — source confirmed
(Tridentine/Divino Afflatu, combine-where-sensible applies the same way), but the actual
sourcing/modeling pass hasn't started — see "Matins ordo" below.
- Easter's own octave — tabled, "a whole different discussion."
- What "a Gospel reading is its own kind" should mean structurally/in the UI, beyond the
`isGospel` flag on a plain Matins `lesson` — open; deferred until there's a UI to
evaluate it against.
2. **Minimal-proof-done, bulk content pending** — mechanism is built and trusted (a proof
date/entry already resolves correctly end-to-end); what's left is authoring/importing more
content in that same shape across the rest of the calendar:
- Matins: bible-plan TSV bulk conversion is done (see "Bible-plan TSV — bulk conversion
done" below) — not yet added to a test table, though (unlike sanctoral/temporal content)
there's no reference breviary to spot-check this plan against by design. Still open:
author patristic/hagiographic
readings for every saint where one can be sourced — no longer Duplex+-gated, content is
pooled and shown regardless of rank (see "Reading-pool redesign"); expand the per-book
Matins responsory pool beyond its one seeded book (`isa`); once the pre-1955 mechanism gap
above is resolved, source those saints' readings too.
- The bulk Vulgate (Latin) + Douay-Rheims (English) scripture import into
`src/data/scripture/` — long-term project, explicitly deferred; Matins scripture
citations resolve to `missing` text until it lands.
- A handful of individually-flagged content gaps, each already flagged in place rather than
silently dropped: St. Frances of Rome's and St. Bibiana's Benedictus antiphons
(structurally can't win their own day under this app's calendar in any near-term year,
needs a very late test year to check); Ss. Ursula and Companions' Benedictus antiphon
(a category-of-one, no live rendering to verify against); "Our Lady of the Snows" (not
modeled at all); the four "…benedícta…" octave-day Ant+V/R+collect blocks (not yet
modeled).
3. **Known, deliberate simplifications** — flagged as intentional, not a bug, no plan to
revisit unless priorities change: see "Known, deliberate simplifications" at the end of
this file, plus the Matins "Duo Seraphim" closing-responsory gap and the 5 Vespers hymns
whose seasonal doxology substitution isn't modeled (both flagged in their own sections
below, not repeated here).
Everything from here down is the dated build log this priority list is drawn from — kept for
the sourcing/verification detail behind each decision, not itself in priority order.
## Content gaps — mechanism built, data incomplete ## Content gaps — mechanism built, data incomplete
### Lauds psalmody overrides + office-bundle overrides — done (2026-08) ### Lauds psalmody overrides + office-bundle overrides — done (2026-08)
@@ -1231,11 +1285,38 @@ counts, Te Deum presence, reading citations and statuses, Gospel flagging
and its Common-fallback exclusion, responsory matching) — not just checking and its Common-fallback exclusion, responsory matching) — not just checking
the YAML files exist. `npm test` (359 tests) and `npm run build` both pass. the YAML files exist. `npm test` (359 tests) and `npm run build` both pass.
### Reading-pool redesign — done (2026-08)
**Corrected a miscommunication in the original mechanism build above**: readings are now
pool-assembled, not fixed-slotted. Every source that can contribute for a day — the office
winner, every commemorated saint, a transferred-in feast (already folded into `day.winner`
by `resolveDay`, no separate lookup needed), every active octave, the plain temporal id, and
the user's own scripture-plan reading — is gathered into one ordered pool
(`buildReadingPool` in `src/hours/matins.ts`), then sliced into however many nocturns the
day's psalmody has (`distributeIntoNocturns`, ceiling division, pool order preserved). No
reading kind is pinned to a specific nocturn anymore — scripture is no longer reserved for
Nocturn 1, patristic content no longer reserved for Nocturns 2-3.
The 1-vs-3-nocturn psalmody gate (Duplex+/Sunday) is unchanged — it governs psalm/canticle/
Te Deum structure only. It no longer limits which days get patristic content authored or
shown: a sub-Duplex ferial day's single nocturn now pools in patristic/hagiographic content
whenever it's been sourced, alongside the scripture-plan reading — direct instruction, "we
want patristic readings for every saint where we can source one, not just duplex+."
`src/propers/bible-plan.ts`'s `getBiblePlanReadings` is now dual-keyed: most rows still key
off `(temporalId, weekday)`, but the source TSV's Dec 25 - Jan 13 stretch keys off a fixed
`MM-DD` calendar date instead (read straight through regardless of which temporal Sunday
governs the day) — a date can match both keys at once (e.g. a Sunday after Epiphany landing
inside Jan 1-13), and both are pooled rather than one overriding the other. No calendar-date
rows are authored yet (mechanism only); see memory `vu-matins-design` for the full design
writeup. `npm test` (359 tests, unchanged — the two proof dates still resolve the same
content, just via the new pool/distribute path) and `npm run build` both pass.
**Not done in this pass — explicitly deferred, not silently dropped:** **Not done in this pass — explicitly deferred, not silently dropped:**
- All ~390 rows of the user's own bible-plan TSV — only the two proof - Full Sunday/feast-calendar patristic-reading authoring — now framed as
dates' rows are converted so far. "every saint where a reading can be sourced," not just the ~75 Duplex+
- Full Sunday/feast-calendar patristic-reading authoring (the ~75 Duplex+ saints that get their own Nocturn 3 slot (see the reading-pool redesign
saints eligible for Nocturn 3, per the user's own threshold). above: content is no longer rank-gated, only nocturn *count* is).
- Pre-1955-but-post-1617 saints' differently-structured readings (source - Pre-1955-but-post-1617 saints' differently-structured readings (source
confirmed as Tridentine/Divino Afflatu rather than Monastic 1617, confirmed as Tridentine/Divino Afflatu rather than Monastic 1617,
combine-where-sensible rule confirmed to apply the same way — the actual combine-where-sensible rule confirmed to apply the same way — the actual
@@ -1244,6 +1325,54 @@ the YAML files exist. `npm test` (359 tests) and `npm run build` both pass.
- The bulk Vulgate (Latin) + Douay-Rheims (English) import into - The bulk Vulgate (Latin) + Douay-Rheims (English) import into
`src/data/scripture/` — in scope for the project long-term, explicitly `src/data/scripture/` — in scope for the project long-term, explicitly
deferred past this pass per direct instruction. deferred past this pass per direct instruction.
### Bible-plan TSV — bulk conversion done (2026-08)
All ~369 non-blank rows of the user's own bible-plan TSV (`~/Downloads/bible-plan.tsv`, 390
lines including section headers/blanks) are now converted into `data/hours/bible-plan/*.yml`
— 366 newly generated this pass, plus the 2 proof-date files already authored (`advent-3-tuesday`,
`post-pentecost-15-sunday`). One row (Ascension Thursday) has no readings in the source and
was correctly skipped — an honest gap in the user's own plan, not a conversion miss.
Conversion was mechanical (script, not hand-authored per file): each TSV "Day" label maps to
this app's `(temporalId, weekday)` scheme via the same rules `calendar/temporal-id.ts` uses
(ferias inherit their governing Sunday's id — e.g. "Ash Wednesday" → `quinquagesima`/`wednesday`,
"Nth Sunday after Trinity" → `post-pentecost-(N+1)` per the existing display-label convention),
or to a fixed `calendarDate` for the Dec 25 - Jan 13 stretch per the reading-pool redesign
above. Each `Reading N` column becomes its own `passages` entry; a chapter range like "Isa 36-37"
expands to one passage per chapter, matching the two proof files' own convention. Every
generated file sets `status: { la: missing, en: missing }` explicitly (not inferred), same as
the proof files — correct even where a handful of citations happen to land on already-authored
`src/data/scripture/*.yml` chapters (e.g. `cant-1`, `cant-8`, `sap-4`), since "verified" should
mean a human confirmed the reading, not that text merely happened to resolve.
A handful of book-abbreviation typos in the source TSV were fixed during conversion (not
preserved as authored): "Dt 19-2020" → Dt 19-20, "1 Mach 9-10-11" → 1 Mach 9-11, two
trailing-colon citations ("Mt 7:", "lk 17:") → whole-chapter references. Two day labels were
garbled by an apparent TSV row-merge artifact ("4th Sunday after Easter of 4th Week after
Easter", "Sunday after Ascension of Week after Ascension") — both parsed correctly by matching
just the leading "Nth Sunday after Easter"/"Sunday after Ascension" phrase and ignoring the
trailing garbage; not fixed in the source file itself since it wasn't touched.
One real content question, not a bug: "Sunday after Ascension" 's row has a Gospel reading
(Jn 17) as its third column — the only Sunday row in the whole TSV with one, seemingly
contradicting the design note that the user's plan "never assigns a Gospel on a Sunday" (see
memory `vu-matins-design`). Confirmed with the user (2026-08) as an intended, remembered
exception, not an authoring slip — keep it as authored.
`npm test` (359 tests, unchanged — these are new content files, not yet covered by any test
table) and `npm run build` both pass.
Unlike sanctoral/temporal content elsewhere in this project, this plan is the user's own
reading design (see "Not a reconstruction" in CLAUDE.md), not sourced from a historical
breviary — there is no reference engine to spot-check these rows against, by design; that's
not a verification gap to close later.
**Not done in this pass:**
- No verse text was imported — every row still resolves its scripture citation against
whatever's authored in `src/data/scripture/` (a handful of chapters) and otherwise renders
`missing`, per the deferred bulk Vulgate/Douay-Rheims import above.
- Not yet added to any test table (`tests/hours/matins.test.ts` still only covers the two
original proof dates).
- Seasonal variants of the invitatory antiphon, the ferial hymn, and - Seasonal variants of the invitatory antiphon, the ferial hymn, and
Sunday's own psalmody antiphons — all currently one fixed year-round Sunday's own psalmody antiphons — all currently one fixed year-round
text each, even though the source confirms at least the invitatory text each, even though the source confirms at least the invitatory
@@ -1327,17 +1456,72 @@ seasonally variable — what's stored is whichever form rendered live on
each one's already-chosen clean query date, not a season-aware each one's already-chosen clean query date, not a season-aware
substitution. Same class of gap as the Paschaltide alleluia suffix substitution. Same class of gap as the Paschaltide alleluia suffix
elsewhere in this file, flagged not fixed. elsewhere in this file, flagged not fixed.
- **The "which Sunday governs this date" temporal-id algorithm** — the fixed
23rd-Sunday-before-Advent rule, Epiphany Sundays transferring to the end
of the liturgical year when they don't fit before Septuagesima, and the
Saturday-before-Septuagesima edge case (also commemorate the 6th Sunday
of Epiphany that day, in overflow years). Described in detail in an
earlier conversation, explicitly tabled, not started. Distinct from
Christ the King, which didn't need it (last-Sunday-of-October is direct
date math).
- **Easter's own octave** — explicitly tabled ("easter needs a whole - **Easter's own octave** — explicitly tabled ("easter needs a whole
different discussion"). different discussion").
### The "which Sunday governs this date" temporal-id algorithm — done (2026-08)
Overflow years (Easter early enough that fewer than 6 Sundays after Epiphany occur before
Septuagesima cuts in) previously just clamped every excess post-Pentecost Sunday to
`post-pentecost-24` — wrong for every week between XXIII and the real last Sunday of the
year, only accidentally right for that final Sunday itself.
`calendar/temporal-id.ts`'s post-Pentecost branch is now ported directly from the reference
engine's own `getweek()` (`DivinumOfficium/Date.pm`) rather than re-derived by hand: once the
governing Sunday's Pentecost week reaches XXIII, a `wdist` (weeks until Advent) calculation
decides the id — the fixed final Sunday (`wdist < 2`) always resolves to `post-pentecost-24`
regardless of the true elapsed count, `post-pentecost-23` covers its own normal week, and
everything else resumes as `post-epiphany-${8 - wdist}` — the skipped post-Epiphany Sundays,
in their own ascending order, immediately before the fixed final Sunday. No separate tracking
of "how many post-Epiphany Sundays occurred" is needed — it falls out of the Advent-distance
arithmetic alone, confirmed against the reference engine's source rather than assumed. Trinity
Sunday = `post-pentecost-01` (this app's existing convention) also confirmed correct against
the same source (`$n=1` at `easter+56`, matching `TemporaM/Pent01-0.txt`'s own Trinity-Sunday
content).
Separately, `calendar/index.ts` gained `applyEpiphany6Commemoration`, an `apply*`-pass
(same shape as `applyChristTheKing`) that commemorates `post-epiphany-6` on the Saturday
immediately before Septuagesima — but only in years where Epiphany V (not IV, III, ...) was
the last post-Epiphany Sunday to actually occur, per direct clarification (a narrower rule
than "any skipped Sunday gets a Saturday commemoration" — only VI specifically, and only in
that one adjacency case). No new `Commemoration` variant was needed: the existing
`{ kind: 'temporal'; id }` shape already round-trips through `getDayCollects`'s
`${id}-collect` lookup for free, so this is purely additive to `commemorations`, coexisting
with whatever else that Saturday already resolved to (consistent with this app's generous,
non-single-winner commemoration design elsewhere).
Verified live against real years, not just unit-tested: 2026 (`post-epiphany-5` is the last
Sunday reached, so `2026-11-14`/`-21` resume as Epiphany V/VI before `2026-11-28`'s fixed
`post-pentecost-24`), and 1943/1962 (Easter late enough that all 6 Epiphany Sundays occur, so
no resumption and no Saturday commemoration ever fires). New test file
`tests/calendar/temporal-id.test.ts` covers both the overflow resumption and the Saturday
commemoration's on/off cases (2026, 2022, 2025, 1943). `npm test` (363 tests, 4 new) and
`npm run build` both pass.
**Follow-up done same day:** `calendar/day-label.ts`'s on-screen display now also tracks the
resumed-Sunday content, via a `trinitytideOverrideLabel` check ahead of the ordinary
Trinity-counted branch — it calls `resolveTemporalId` directly (the same mechanism the content
layer trusts) rather than re-deriving the wdist arithmetic a second time, so the label can
never disagree with what's actually rendered underneath. A resumed Sunday/weekday now reads
"The 5th Sunday after Epiphany" / "Monday in the 5th week after Epiphany" instead of continuing
the Trinity count past its real bound.
**Correction, same pass**: the first cut of this left the fixed final Sunday of the year
(`post-pentecost-24`) on the old raw "weeks since Trinity" arithmetic, on the assumption that
was an unrelated, already-correct convention — wrong. Scanning every year 1900-2100 showed
*every single year's* last Sunday before Advent resolves to `post-pentecost-24`, and the raw
elapsed-week count for that Sunday varies year to year (22nd, 23rd, 25th, ... depending on
Easter's date) even though the content is always the same fixed formulary. Since this app's
Trinity-counted display is one week off from the Pentecost-counted id (Trinity Sunday itself =
`post-pentecost-01` = the display's own uncounted anchor), the correct display ordinal for
that fixed Sunday is XXIV 1 = **23, always** — not derived from elapsed weeks at all.
`trinitytideOverrideLabel` now handles this as its own branch (`FIXED_LAST_SUNDAY_ORDINAL`),
same "ask `resolveTemporalId`, don't re-derive" principle as the resumed-Epiphany branch.
Live-verified across 1943/1962/2015/2026/2033 — all five now read "The 23rd Sunday after
Trinity" for their own last Sunday, where before the fix they'd shown four different numbers.
Tests in `tests/calendar/day-label.test.ts` updated accordingly. `npm test` (365 tests) and
`tsc --noEmit` both pass.
## Known, deliberate simplifications (not bugs — working as designed) ## Known, deliberate simplifications (not bugs — working as designed)
- `getDayCollects`: each collect in a multi-collect day renders as its own - `getDayCollects`: each collect in a multi-collect day renders as its own
+60
View File
@@ -15,6 +15,7 @@ import { adventStart, firstSundayStrictlyAfter, sundayOnOrBefore } from './tempo
import { addDays, daysBetween, toIsoDate } from './date-math'; import { addDays, daysBetween, toIsoDate } from './date-math';
import { getTemporalFeastRecord } from './temporal-feasts'; import { getTemporalFeastRecord } from './temporal-feasts';
import { resolveActiveOctave, type ActiveOctave } from './octaves'; import { resolveActiveOctave, type ActiveOctave } from './octaves';
import { resolveTemporalId } from './temporal-id';
function capitalize(text: string): string { function capitalize(text: string): string {
return text.charAt(0).toUpperCase() + text.slice(1); return text.charAt(0).toUpperCase() + text.slice(1);
@@ -109,7 +110,66 @@ function anchorDayName(day: LiturgicalDay): string | undefined {
return undefined; return undefined;
} }
/** The fixed final Sunday of the liturgical year (temporal-id.ts's
* `post-pentecost-24`) always carries "Sunday XXIV after Pentecost"'s own
* formulary, regardless of how many Sundays actually elapsed since
* Trinity — confirmed by scanning every year 1900-2100, every single one
* lands on this id for its own last Sunday before Advent, never a raw
* elapsed-week count. This app's Trinity-counted display is one week off
* from that Pentecost-counted id (Trinity Sunday itself = post-pentecost-
* 01 = the display's own uncounted anchor day), so the fixed display
* ordinal here is XXIV - 1 = 23, not whatever a plain "weeks since
* Trinity" calculation would produce. */
const FIXED_LAST_SUNDAY_ORDINAL = 23;
/**
* Trinitytide's ordinal display can't be pure "weeks since Trinity's own
* first Sunday" arithmetic once the season gets late enough — see
* temporal-id.ts's own post-Pentecost-XXIII-plus branch. Two cases, both
* driven by `resolveTemporalId` directly (the same mechanism the content
* layer already trusts, rather than re-deriving the wdist arithmetic here
* a second time, so the label can never disagree with what's actually
* rendered underneath):
* - A resumed post-Epiphany Sunday/week (an overflow year's skipped
* Epiphany Sundays, reappearing here) — reads "after Epiphany", not
* the next Trinity-counted number in line.
* - The fixed final Sunday/week of the year itself — always the fixed
* 23rd-after-Trinity ordinal (see FIXED_LAST_SUNDAY_ORDINAL above),
* every year, not just overflow ones.
* Only ever fires within trinitytide, since that's the only season
* resolveTemporalId can return either of these ids for a date outside
* their own native season.
*/
function trinitytideOverrideLabel(day: LiturgicalDay): string | undefined {
if (day.season !== 'trinitytide') {
return undefined;
}
const id = resolveTemporalId(day.date);
const weekdayName = capitalize(day.weekday);
const epiphanyMatch = id.match(/^post-epiphany-(\d)$/);
if (epiphanyMatch) {
const n = Number(epiphanyMatch[1]);
return day.weekday === 'sunday'
? `The ${ordinal(n)} Sunday after Epiphany`
: `${weekdayName} in the ${ordinal(n)} week after Epiphany`;
}
if (id === 'post-pentecost-24') {
return day.weekday === 'sunday'
? `The ${ordinal(FIXED_LAST_SUNDAY_ORDINAL)} Sunday after Trinity`
: `${weekdayName} in the ${ordinal(FIXED_LAST_SUNDAY_ORDINAL)} week after Trinity`;
}
return undefined;
}
function temporalLabel(day: LiturgicalDay): string { function temporalLabel(day: LiturgicalDay): string {
const trinitytideOverride = trinitytideOverrideLabel(day);
if (trinitytideOverride) {
return trinitytideOverride;
}
const weekdayName = capitalize(day.weekday); const weekdayName = capitalize(day.weekday);
const config = ORDINAL_SEASONS[day.season]; const config = ORDINAL_SEASONS[day.season];
if (!config) { if (!config) {
+31 -1
View File
@@ -5,7 +5,8 @@ import { resolveTemporalId } from './temporal-id';
import { getSanctoralCandidatesFor } from './feasts'; import { getSanctoralCandidatesFor } from './feasts';
import { decideOccurrence, isAtLeast, type OccurrenceResult } from './commemorations'; import { decideOccurrence, isAtLeast, type OccurrenceResult } from './commemorations';
import { resolveCollision } from './collision'; import { resolveCollision } from './collision';
import { addDays } from './date-math'; import { addDays, toIsoDate } from './date-math';
import { easterSunday } from './easter';
import { activeOctavesFor, strictestThreshold } from './octaves'; import { activeOctavesFor, strictestThreshold } from './octaves';
/** /**
@@ -104,10 +105,39 @@ export function resolveDay(isoDate: string): LiturgicalDay {
winner = applyMarianSaturday(isoDate, weekday, temporalCategory, winner, commemorations); winner = applyMarianSaturday(isoDate, weekday, temporalCategory, winner, commemorations);
winner = applyChristTheKing(isoDate, winner, commemorations); winner = applyChristTheKing(isoDate, winner, commemorations);
winner = applyChristmasOctaveSunday(isoDate, weekday, winner, commemorations); winner = applyChristmasOctaveSunday(isoDate, weekday, winner, commemorations);
applyEpiphany6Commemoration(isoDate, commemorations);
return { date: isoDate, weekday, season, temporalCategory, winner, commemorations }; return { date: isoDate, weekday, season, temporalCategory, winner, commemorations };
} }
/**
* Real rubric, confirmed 2026-08: when the 6th Sunday after Epiphany is
* bumped by Septuagesima — i.e. only in years where the 5th Sunday after
* Epiphany was the last one to actually occur — it's commemorated on the
* Saturday immediately before Septuagesima, on top of whatever else that
* Saturday already resolved to. Distinct from (and doesn't imply) the
* later "resumed post-Epiphany Sunday" transfer handled in
* temporal-id.ts's post-Pentecost overflow branch — that one applies to
* *every* skipped post-Epiphany Sunday, not just VI; this Saturday
* commemoration is VI's alone. Purely additive: no `Commemoration` variant
* needed beyond the existing `{ kind: 'temporal' }` one, since
* hours/resolve-common.ts's getDayCollects already resolves any temporal
* commemoration's own `${id}-collect` for free.
*/
function applyEpiphany6Commemoration(isoDate: string, commemorations: Commemoration[]): void {
const year = Number(isoDate.slice(0, 4));
const septuagesimaStart = addDays(toIsoDate(easterSunday(year)), -63);
const saturdayBeforeSeptuagesima = addDays(septuagesimaStart, -1);
if (isoDate !== saturdayBeforeSeptuagesima) {
return;
}
const lastEpiphanySunday = addDays(septuagesimaStart, -7);
if (resolveTemporalId(lastEpiphanySunday) !== 'post-epiphany-5') {
return;
}
commemorations.push({ kind: 'temporal', id: 'post-epiphany-6' });
}
/** The Sunday on or before Oct 31 — always lands in October since Oct 31 /** The Sunday on or before Oct 31 — always lands in October since Oct 31
* is at most 6 days after the month's last Sunday. */ * is at most 6 days after the month's last Sunday. */
function lastSundayOfOctober(year: number): string { function lastSundayOfOctober(year: number): string {
+38 -12
View File
@@ -11,16 +11,23 @@
// header and propers/index.ts's getTemporalProper for the fuller version // header and propers/index.ts's getTemporalProper for the fuller version
// of this reasoning. // of this reasoning.
// //
// Two known, deliberately unfixed gaps: the ferias between Christmas Day // One known, deliberately unfixed gap: the ferias between Christmas Day
// and the Sunday within its octave, and between Epiphany and its own // and the Sunday within its octave, and between Epiphany and its own
// first Sunday, fall back to that season's first named Sunday a few days // first Sunday, fall back to that season's first named Sunday a few days
// early — Christmas Day's and Epiphany's own collects aren't authored as // early — Christmas Day's and Epiphany's own collects aren't authored as
// separate temporal-propers entries (only Sunday collects were pulled), so // separate temporal-propers entries (only Sunday collects were pulled), so
// this is a deliberate approximation, not an oversight. Likewise, a real // this is a deliberate approximation, not an oversight.
// overflow year (early Easter, more than 24 weeks between Trinity and //
// Advent) would traditionally reuse the unused post-Epiphany Sundays' // Overflow years (Easter early enough that fewer than 6 Sundays after
// collects for the excess weeks — not modeled; this just clamps at // Epiphany occur before Septuagesima cuts in) are handled below: the
// post-pentecost-24. // skipped post-Epiphany Sundays "resume" after Sunday XXIII after
// Pentecost, in their own numeric order, right before the fixed final
// Sunday of the year (always Sunday XXIV's own formulary, regardless of
// how many Sundays actually elapsed since Pentecost). Ported directly
// from the reference engine's own `getweek()`
// (DivinumOfficium/Date.pm) — same rubric, same arithmetic (weeks-until-
// Advent, not a separately-tracked count of skipped Epiphany Sundays);
// confirmed against that source rather than re-derived by hand.
import { resolveSeason, sundayOnOrBefore, firstSundayStrictlyAfter, adventStart, easterOffsetOf } from './temporal'; import { resolveSeason, sundayOnOrBefore, firstSundayStrictlyAfter, adventStart, easterOffsetOf } from './temporal';
import { daysBetween } from './date-math'; import { daysBetween } from './date-math';
@@ -43,12 +50,29 @@ const EASTER_OFFSET_IDS: [number, string][] = [
[42, 'sunday-after-ascension'], [42, 'sunday-after-ascension'],
[49, 'pentecost-sunday'], [49, 'pentecost-sunday'],
]; ];
for (let n = 1; n <= 24; n++) { // Sundays I-XXII after Pentecost only — XXIII and XXIV are handled by
// resolvePostPentecost23Plus below, since (unlike I-XXII) which id a given
// week gets can depend on distance-to-Advent, not just its own offset.
for (let n = 1; n <= 22; n++) {
EASTER_OFFSET_IDS.push([56 + 7 * (n - 1), `post-pentecost-${String(n).padStart(2, '0')}`]); EASTER_OFFSET_IDS.push([56 + 7 * (n - 1), `post-pentecost-${String(n).padStart(2, '0')}`]);
} }
const EASTER_OFFSET_ID_MAP = new Map(EASTER_OFFSET_IDS); const EASTER_OFFSET_ID_MAP = new Map(EASTER_OFFSET_IDS);
const MAX_EASTER_OFFSET = EASTER_OFFSET_IDS[EASTER_OFFSET_IDS.length - 1]![0];
const MAX_EASTER_OFFSET_ID = EASTER_OFFSET_IDS[EASTER_OFFSET_IDS.length - 1]![1]; /**
* A governing Sunday at or beyond Pentecost week XXIII. `pentecostWeek` is
* the reference engine's own `$n` (1 = Trinity Sunday, verified against
* DivinumOfficium/Date.pm and its Tempora/PentNN file naming).
*/
function resolvePostPentecost23Plus(governingSunday: string, year: number, pentecostWeek: number): string {
const wdist = Math.floor((daysBetween(governingSunday, adventStart(year)) + 6) / 7);
if (wdist < 2) {
return 'post-pentecost-24';
}
if (pentecostWeek === 23) {
return 'post-pentecost-23';
}
return `post-epiphany-${8 - wdist}`;
}
export function resolveTemporalId(isoDate: string): string { export function resolveTemporalId(isoDate: string): string {
const season = resolveSeason(isoDate); const season = resolveSeason(isoDate);
@@ -78,9 +102,11 @@ export function resolveTemporalId(isoDate: string): string {
// regardless of which `season` bucket the feria itself falls in (the // regardless of which `season` bucket the feria itself falls in (the
// ferias right after Ash Wednesday genuinely reuse Quinquagesima's // ferias right after Ash Wednesday genuinely reuse Quinquagesima's
// collect, crossing what resolveSeason calls two different seasons). // collect, crossing what resolveSeason calls two different seasons).
const offset = easterOffsetOf(sundayOnOrBefore(isoDate)); const governingSunday = sundayOnOrBefore(isoDate);
if (offset > MAX_EASTER_OFFSET) { const offset = easterOffsetOf(governingSunday);
return MAX_EASTER_OFFSET_ID; const pentecostWeek = Math.round((offset - 49) / 7);
if (pentecostWeek >= 23) {
return resolvePostPentecost23Plus(governingSunday, year, pentecostWeek);
} }
return EASTER_OFFSET_ID_MAP.get(offset) ?? 'septuagesima'; return EASTER_OFFSET_ID_MAP.get(offset) ?? 'septuagesima';
} }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of I Advent".
temporalId: advent-1
weekday: friday
readings:
- passages:
- { book: isa, chapter: 12 }
- { book: isa, chapter: 13 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 5 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of I Advent".
temporalId: advent-1
weekday: monday
readings:
- passages:
- { book: isa, chapter: 4 }
- { book: isa, chapter: 5 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 1 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of I Advent".
temporalId: advent-1
weekday: saturday
readings:
- passages:
- { book: isa, chapter: 14 }
- { book: isa, chapter: 15 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 6 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Sunday of I Advent".
temporalId: advent-1
weekday: sunday
readings:
- passages:
- { book: isa, chapter: 1 }
- { book: isa, chapter: 2 }
- { book: isa, chapter: 3 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of I Advent".
temporalId: advent-1
weekday: thursday
readings:
- passages:
- { book: isa, chapter: 10 }
- { book: isa, chapter: 11 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 4 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of I Advent".
temporalId: advent-1
weekday: tuesday
readings:
- passages:
- { book: isa, chapter: 6 }
- { book: isa, chapter: 7 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of I Advent".
temporalId: advent-1
weekday: wednesday
readings:
- passages:
- { book: isa, chapter: 8 }
- { book: isa, chapter: 9 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 3 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of II Advent".
temporalId: advent-2
weekday: friday
readings:
- passages:
- { book: isa, chapter: 27 }
- { book: isa, chapter: 28 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 11 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of II Advent".
temporalId: advent-2
weekday: monday
readings:
- passages:
- { book: isa, chapter: 19 }
- { book: isa, chapter: 20 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 7 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of II Advent".
temporalId: advent-2
weekday: saturday
readings:
- passages:
- { book: isa, chapter: 29 }
- { book: isa, chapter: 30 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 12 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Sunday of II Advent".
temporalId: advent-2
weekday: sunday
readings:
- passages:
- { book: isa, chapter: 16 }
- { book: isa, chapter: 17 }
- { book: isa, chapter: 18 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of II Advent".
temporalId: advent-2
weekday: thursday
readings:
- passages:
- { book: isa, chapter: 25 }
- { book: isa, chapter: 26 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 10 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of II Advent".
temporalId: advent-2
weekday: tuesday
readings:
- passages:
- { book: isa, chapter: 21 }
- { book: isa, chapter: 22 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 8 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of II Advent".
temporalId: advent-2
weekday: wednesday
readings:
- passages:
- { book: isa, chapter: 23 }
- { book: isa, chapter: 24 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 9 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of III Advent".
temporalId: advent-3
weekday: friday
readings:
- passages:
- { book: isa, chapter: 42 }
- { book: isa, chapter: 43 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 17 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of III Advent".
temporalId: advent-3
weekday: monday
readings:
- passages:
- { book: isa, chapter: 34 }
- { book: isa, chapter: 35 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 13 }
status: { la: missing, en: missing }
@@ -0,0 +1,12 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of III Advent".
temporalId: advent-3
weekday: saturday
readings:
- passages:
- { book: isa, chapter: 44 }
- { book: isa, chapter: 45 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 18 }
- { book: sap, chapter: 19 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Sunday of III Advent".
temporalId: advent-3
weekday: sunday
readings:
- passages:
- { book: isa, chapter: 31 }
- { book: isa, chapter: 32 }
- { book: isa, chapter: 33 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of III Advent".
temporalId: advent-3
weekday: thursday
readings:
- passages:
- { book: isa, chapter: 40 }
- { book: isa, chapter: 41 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 16 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of III Advent".
temporalId: advent-3
weekday: wednesday
readings:
- passages:
- { book: isa, chapter: 38 }
- { book: isa, chapter: 39 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 15 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of IV Advent".
temporalId: advent-4
weekday: friday
readings:
- passages:
- { book: isa, chapter: 61 }
- { book: isa, chapter: 62 }
- { book: isa, chapter: 63 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of IV Advent".
temporalId: advent-4
weekday: monday
readings:
- passages:
- { book: isa, chapter: 49 }
- { book: isa, chapter: 50 }
- { book: isa, chapter: 51 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of IV Advent".
temporalId: advent-4
weekday: saturday
readings:
- passages:
- { book: isa, chapter: 64 }
- { book: isa, chapter: 65 }
- { book: isa, chapter: 66 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Sunday of IV Advent".
temporalId: advent-4
weekday: sunday
readings:
- passages:
- { book: isa, chapter: 46 }
- { book: isa, chapter: 47 }
- { book: isa, chapter: 48 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of IV Advent".
temporalId: advent-4
weekday: thursday
readings:
- passages:
- { book: isa, chapter: 58 }
- { book: isa, chapter: 59 }
- { book: isa, chapter: 60 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of IV Advent".
temporalId: advent-4
weekday: tuesday
readings:
- passages:
- { book: isa, chapter: 52 }
- { book: isa, chapter: 53 }
- { book: isa, chapter: 54 }
status: { la: missing, en: missing }
@@ -0,0 +1,9 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of IV Advent".
temporalId: advent-4
weekday: wednesday
readings:
- passages:
- { book: isa, chapter: 55 }
- { book: isa, chapter: 56 }
- { book: isa, chapter: 57 }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 1".
calendarDate: "01-01"
readings:
- passages:
- { book: cant, chapter: 8 }
status: { la: missing, en: missing }
- passages:
- { book: rom, chapter: 7 }
- { book: rom, chapter: 8 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 2".
calendarDate: "01-02"
readings:
- passages:
- { book: rom, chapter: 9 }
- { book: rom, chapter: 10 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 3".
calendarDate: "01-03"
readings:
- passages:
- { book: rom, chapter: 11 }
- { book: rom, chapter: 12 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 4".
calendarDate: "01-04"
readings:
- passages:
- { book: rom, chapter: 13 }
- { book: rom, chapter: 14 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 5".
calendarDate: "01-05"
readings:
- passages:
- { book: rom, chapter: 15 }
- { book: rom, chapter: 16 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 7".
calendarDate: "01-07"
readings:
- passages:
- { book: heb, chapter: 1 }
- { book: heb, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 8".
calendarDate: "01-08"
readings:
- passages:
- { book: heb, chapter: 3 }
- { book: heb, chapter: 4 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 9".
calendarDate: "01-09"
readings:
- passages:
- { book: heb, chapter: 5 }
- { book: heb, chapter: 6 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 10".
calendarDate: "01-10"
readings:
- passages:
- { book: heb, chapter: 7 }
- { book: heb, chapter: 8 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 11".
calendarDate: "01-11"
readings:
- passages:
- { book: heb, chapter: 9 }
- { book: heb, chapter: 10 }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 12".
calendarDate: "01-12"
readings:
- passages:
- { book: heb, chapter: 11 }
- { book: heb, chapter: 12 }
status: { la: missing, en: missing }
@@ -0,0 +1,6 @@
# Bulk-imported from the user's bible-plan TSV, row "Jan 13".
calendarDate: "01-13"
readings:
- passages:
- { book: heb, chapter: 13 }
status: { la: missing, en: missing }
@@ -0,0 +1,6 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 25".
calendarDate: "12-25"
readings:
- passages:
- { book: cant, chapter: 1 }
status: { la: missing, en: missing }
@@ -0,0 +1,6 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 26".
calendarDate: "12-26"
readings:
- passages:
- { book: cant, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,6 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 27".
calendarDate: "12-27"
readings:
- passages:
- { book: cant, chapter: 3 }
status: { la: missing, en: missing }
@@ -0,0 +1,6 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 28".
calendarDate: "12-28"
readings:
- passages:
- { book: cant, chapter: 4 }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 29".
calendarDate: "12-29"
readings:
- passages:
- { book: cant, chapter: 5 }
status: { la: missing, en: missing }
- passages:
- { book: rom, chapter: 1 }
- { book: rom, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 30".
calendarDate: "12-30"
readings:
- passages:
- { book: cant, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: rom, chapter: 3 }
- { book: rom, chapter: 4 }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Dec 31".
calendarDate: "12-31"
readings:
- passages:
- { book: cant, chapter: 7 }
status: { la: missing, en: missing }
- passages:
- { book: rom, chapter: 5 }
- { book: rom, chapter: 6 }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of 2nd Week after Easter".
temporalId: easter-3
weekday: friday
readings:
- passages:
- { book: deut, chapter: 30 }
- { book: deut, chapter: 31 }
- { book: deut, chapter: 32 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 13 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 6, verses: "22-44" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of 2nd Week after Easter".
temporalId: easter-3
weekday: monday
readings:
- passages:
- { book: deut, chapter: 19 }
- { book: deut, chapter: 20 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 9 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 4, verses: "31-54" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of 2nd Week after Easter".
temporalId: easter-3
weekday: saturday
readings:
- passages:
- { book: deut, chapter: 33 }
- { book: deut, chapter: 34 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 14 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 6, verses: "45-71" }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "2nd Sunday after Easter".
temporalId: easter-3
weekday: sunday
readings:
- passages:
- { book: deut, chapter: 18 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 8 }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of 2nd Week after Easter".
temporalId: easter-3
weekday: thursday
readings:
- passages:
- { book: deut, chapter: 27 }
- { book: deut, chapter: 28 }
- { book: deut, chapter: 29 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 12 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 6, verses: "1-21" }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of 2nd Week after Easter".
temporalId: easter-3
weekday: tuesday
readings:
- passages:
- { book: deut, chapter: 21 }
- { book: deut, chapter: 22 }
- { book: deut, chapter: 23 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 10 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 5, verses: "1-24" }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of 2nd Week after Easter".
temporalId: easter-3
weekday: wednesday
readings:
- passages:
- { book: deut, chapter: 24 }
- { book: deut, chapter: 25 }
- { book: deut, chapter: 26 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 11 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 5, verses: "25-47" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of 3rd Week after Easter".
temporalId: easter-4
weekday: friday
readings:
- passages:
- { book: josh, chapter: 9 }
- { book: josh, chapter: 10 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 20 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 9, verses: "1-23" }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of 3rd Week after Easter".
temporalId: easter-4
weekday: monday
readings:
- passages:
- { book: josh, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 16 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 7, verses: "1-27" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of 3rd Week after Easter".
temporalId: easter-4
weekday: saturday
readings:
- passages:
- { book: josh, chapter: 11 }
- { book: josh, chapter: 12 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 21 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 9, verses: "24-41" }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "3rd Sunday after Easter".
temporalId: easter-4
weekday: sunday
readings:
- passages:
- { book: josh, chapter: 1 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 15 }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of 3rd Week after Easter".
temporalId: easter-4
weekday: thursday
readings:
- passages:
- { book: josh, chapter: 7 }
- { book: josh, chapter: 8 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 19 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 8, verses: "28-59" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of 3rd Week after Easter".
temporalId: easter-4
weekday: tuesday
readings:
- passages:
- { book: josh, chapter: 3 }
- { book: josh, chapter: 4 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 17 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 7, verses: "28-53" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of 3rd Week after Easter".
temporalId: easter-4
weekday: wednesday
readings:
- passages:
- { book: josh, chapter: 5 }
- { book: josh, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 18 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 8, verses: "1-27" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of 4th Week after Easter".
temporalId: easter-5
weekday: friday
readings:
- passages:
- { book: josh, chapter: 21 }
- { book: josh, chapter: 22 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 27 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 12, verses: "1-28" }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of 4th Week after Easter".
temporalId: easter-5
weekday: monday
readings:
- passages:
- { book: josh, chapter: 14 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 23 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 10, verses: "1-23" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of 4th Week after Easter".
temporalId: easter-5
weekday: saturday
readings:
- passages:
- { book: josh, chapter: 23 }
- { book: josh, chapter: 24 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 28 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 12, verses: "29-50" }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "4th Sunday after Easter of 4th Week after Easter".
temporalId: easter-5
weekday: sunday
readings:
- passages:
- { book: josh, chapter: 13 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 22 }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of 4th Week after Easter".
temporalId: easter-5
weekday: thursday
readings:
- passages:
- { book: josh, chapter: 19 }
- { book: josh, chapter: 20 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 26 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 11, verses: "30-57" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of 4th Week after Easter".
temporalId: easter-5
weekday: tuesday
readings:
- passages:
- { book: josh, chapter: 15 }
- { book: josh, chapter: 16 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 24 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 10, verses: "24-42" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of 4th Week after Easter".
temporalId: easter-5
weekday: wednesday
readings:
- passages:
- { book: josh, chapter: 17 }
- { book: josh, chapter: 18 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 25 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 11, verses: "1-29" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday after Ascension".
temporalId: easter-6
weekday: friday
readings:
- passages:
- { book: judg, chapter: 8 }
- { book: judg, chapter: 9 }
status: { la: missing, en: missing }
- passages:
- { book: jas, chapter: 5 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 15 }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Rogation Monday".
temporalId: easter-6
weekday: monday
readings:
- passages:
- { book: judg, chapter: 3 }
- { book: judg, chapter: 4 }
status: { la: missing, en: missing }
- passages:
- { book: jas, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 13, verses: "1-20" }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday after Ascension".
temporalId: easter-6
weekday: saturday
readings:
- passages:
- { book: judg, chapter: 10 }
- { book: judg, chapter: 11 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 16 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "5th Sunday after Easter".
temporalId: easter-6
weekday: sunday
readings:
- passages:
- { book: judg, chapter: 1 }
- { book: judg, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: jas, chapter: 1 }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Rogation Tuesday".
temporalId: easter-6
weekday: tuesday
readings:
- passages:
- { book: judg, chapter: 5 }
- { book: judg, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: jas, chapter: 3 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 13, verses: "21-38" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Rogation Wednesday".
temporalId: easter-6
weekday: wednesday
readings:
- passages:
- { book: judg, chapter: 7 }
- { book: judg, chapter: 8 }
status: { la: missing, en: missing }
- passages:
- { book: jas, chapter: 4 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 14 }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of Low Sunday Week".
temporalId: easter-octave
weekday: friday
readings:
- passages:
- { book: deut, chapter: 13 }
- { book: deut, chapter: 14 }
- { book: deut, chapter: 15 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 3, verses: "19-36" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of Low Sunday Week".
temporalId: easter-octave
weekday: monday
readings:
- passages:
- { book: deut, chapter: 2 }
- { book: deut, chapter: 3 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 1, verses: "1-28" }
status: { la: missing, en: missing }
@@ -0,0 +1,14 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of Low Sunday Week".
temporalId: easter-octave
weekday: saturday
readings:
- passages:
- { book: deut, chapter: 16 }
- { book: deut, chapter: 17 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 7 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 4, verses: "1-30" }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Low Sunday".
temporalId: easter-octave
weekday: sunday
readings:
- passages:
- { book: deut, chapter: 1 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 1 }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of Low Sunday Week".
temporalId: easter-octave
weekday: thursday
readings:
- passages:
- { book: deut, chapter: 10 }
- { book: deut, chapter: 11 }
- { book: deut, chapter: 12 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 5 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 3, verses: "1-18" }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of Low Sunday Week".
temporalId: easter-octave
weekday: tuesday
readings:
- passages:
- { book: deut, chapter: 4 }
- { book: deut, chapter: 5 }
- { book: deut, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 3 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 1, verses: "29-51" }
status: { la: missing, en: missing }
@@ -0,0 +1,15 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of Low Sunday Week".
temporalId: easter-octave
weekday: wednesday
readings:
- passages:
- { book: deut, chapter: 7 }
- { book: deut, chapter: 8 }
- { book: deut, chapter: 9 }
status: { la: missing, en: missing }
- passages:
- { book: act, chapter: 4 }
status: { la: missing, en: missing }
- passages:
- { book: john, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Friday".
temporalId: easter-sunday
weekday: friday
readings:
- passages:
- { book: ezra, chapter: 10 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 2, verses: "20-23" }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Monday".
temporalId: easter-sunday
weekday: monday
readings:
- passages:
- { book: ezra, chapter: 3 }
- { book: ezra, chapter: 4 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 1, verses: "12-15" }
status: { la: missing, en: missing }
@@ -0,0 +1,7 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Saturday".
temporalId: easter-sunday
weekday: saturday
readings:
- passages:
- { book: ezra, chapter: 10 }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Sunday".
temporalId: easter-sunday
weekday: sunday
readings:
- passages:
- { book: ezra, chapter: 1 }
- { book: ezra, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 1, verses: "1-11" }
status: { la: missing, en: missing }
@@ -0,0 +1,10 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Thursday".
temporalId: easter-sunday
weekday: thursday
readings:
- passages:
- { book: ezra, chapter: 9 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 2, verses: "20-23" }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Tuesday".
temporalId: easter-sunday
weekday: tuesday
readings:
- passages:
- { book: ezra, chapter: 5 }
- { book: ezra, chapter: 6 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 2, verses: "1-9" }
status: { la: missing, en: missing }
@@ -0,0 +1,11 @@
# Bulk-imported from the user's bible-plan TSV, row "Easter Wednesday".
temporalId: easter-sunday
weekday: wednesday
readings:
- passages:
- { book: ezra, chapter: 7 }
- { book: ezra, chapter: 8 }
status: { la: missing, en: missing }
- passages:
- { book: hag, chapter: 2, verses: "10-19" }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of I Lent".
temporalId: lent-1
weekday: friday
readings:
- passages:
- { book: exod, chapter: 15 }
- { book: exod, chapter: 16 }
- { book: exod, chapter: 17 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 11 }
- { book: jer, chapter: 12 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of I Lent".
temporalId: lent-1
weekday: monday
readings:
- passages:
- { book: exod, chapter: 3 }
- { book: exod, chapter: 4 }
- { book: exod, chapter: 5 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 3 }
- { book: jer, chapter: 4 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Saturday of I Lent".
temporalId: lent-1
weekday: saturday
readings:
- passages:
- { book: exod, chapter: 18 }
- { book: exod, chapter: 19 }
- { book: exod, chapter: 20 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 13 }
- { book: jer, chapter: 14 }
status: { la: missing, en: missing }
@@ -0,0 +1,12 @@
# Bulk-imported from the user's bible-plan TSV, row "Sunday of I Lent".
temporalId: lent-1
weekday: sunday
readings:
- passages:
- { book: exod, chapter: 1 }
- { book: exod, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 1 }
- { book: jer, chapter: 2 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Thursday of I Lent".
temporalId: lent-1
weekday: thursday
readings:
- passages:
- { book: exod, chapter: 12 }
- { book: exod, chapter: 13 }
- { book: exod, chapter: 14 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 9 }
- { book: jer, chapter: 10 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Tuesday of I Lent".
temporalId: lent-1
weekday: tuesday
readings:
- passages:
- { book: exod, chapter: 6 }
- { book: exod, chapter: 7 }
- { book: exod, chapter: 8 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 5 }
- { book: jer, chapter: 6 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Wednesday of I Lent".
temporalId: lent-1
weekday: wednesday
readings:
- passages:
- { book: exod, chapter: 9 }
- { book: exod, chapter: 10 }
- { book: exod, chapter: 11 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 7 }
- { book: jer, chapter: 8 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Friday of II Lent".
temporalId: lent-2
weekday: friday
readings:
- passages:
- { book: exod, chapter: 36 }
- { book: exod, chapter: 37 }
- { book: exod, chapter: 38 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 25 }
- { book: jer, chapter: 26 }
status: { la: missing, en: missing }
@@ -0,0 +1,13 @@
# Bulk-imported from the user's bible-plan TSV, row "Monday of II Lent".
temporalId: lent-2
weekday: monday
readings:
- passages:
- { book: exod, chapter: 24 }
- { book: exod, chapter: 25 }
- { book: exod, chapter: 26 }
status: { la: missing, en: missing }
- passages:
- { book: jer, chapter: 17 }
- { book: jer, chapter: 18 }
status: { la: missing, en: missing }

Some files were not shown because too many files have changed in this diff Show More